Class TCastleAbstractJoint

Unit

Declaration

type TCastleAbstractJoint = class(TCastleBehavior)

Description

Base class for physics joints, that connects two physics bodies and constraints their relative movement.

This class provides useful virtual methods to create joints (observing the existence of rigid body and parent) and some common properties to all joints (allowing all joints to be breakable).

Hierarchy

Overview

Fields

Protected FParentRigidBody: TCastleRigidBody;
Protected FBreakThresholdForce: Single;
Protected FBreakThresholdTorque: Single;
Protected FBreakable: Boolean;

Methods

Protected procedure CreateKraftJoint; virtual; abstract;
Protected function GetKraftJoint: TKraftConstraintJoint; virtual; abstract;
Protected procedure RecreateKraftJoint;
Protected procedure InitializeKraftJoint; virtual;
Protected procedure DeinitializeKraftJoint; virtual; abstract;
Protected function AllNeededKraftObjectsInitialized: Boolean; virtual;
Protected procedure OnParentTransformAddBehavior(const Component: TComponent); virtual;
Protected procedure OnBeforeParentTransfromRemoveBehavior(const Component: TComponent); virtual;
Protected procedure OnParentRigidBodyInitialized(const Component: TComponent); virtual;
Protected procedure OnBeforeParentRigidBodyDeinitialized(const Component: TComponent); virtual;
Protected procedure SetParentRigidBodyEvents;
Protected procedure RemoveParentRigidBodyEvents;
Protected procedure UpdateBreakThresholdForceInKraft;
Protected procedure UpdateBreakThresholdTorqueInKraft;
Protected procedure UpdateBreakableInKraft;
Protected procedure SetBreakThresholdForce(const AValue: Single);
Protected procedure SetBreakThresholdTorque(const AValue: Single);
Protected procedure SetBreakable(const AValue: Boolean);
Public destructor Destroy; override;
Public procedure WorldAfterAttach; override;
Public procedure WorldBeforeDetach; override;
Public function PropertySections(const PropertyName: String): TPropertySections; override;
Public procedure InternalCreateGizmos; virtual;
Public procedure InternalDestroyGizmos; virtual;

Properties

Published property Breakable: Boolean read FBreakable write SetBreakable default false;
Published property BreakThresholdForce: Single read FBreakThresholdForce write SetBreakThresholdForce default 0.0;
Published property BreakThresholdTorque: Single read FBreakThresholdTorque write SetBreakThresholdTorque default 0.0;

Description

Fields

Protected FParentRigidBody: TCastleRigidBody;

When joint is added to world we need to find parent rigid body and set callbacks for its initialize/deinitialize events. If this pointer is not nil that means that we've done that.

Protected FBreakThresholdForce: Single;
 
Protected FBreakThresholdTorque: Single;
 
Protected FBreakable: Boolean;
 

Methods

Protected procedure CreateKraftJoint; virtual; abstract;

Create physics engine (Kraft) joint and set its specialized properties.

Protected function GetKraftJoint: TKraftConstraintJoint; virtual; abstract;

Get physics engine (Kraft) joint instance.

Protected procedure RecreateKraftJoint;
 
Protected procedure InitializeKraftJoint; virtual;
 
Protected procedure DeinitializeKraftJoint; virtual; abstract;
 
Protected function AllNeededKraftObjectsInitialized: Boolean; virtual;

Can we create joint object.

Protected procedure OnParentTransformAddBehavior(const Component: TComponent); virtual;

Event callback when TCastleRigidBody is added to the parent transform.

Protected procedure OnBeforeParentTransfromRemoveBehavior(const Component: TComponent); virtual;

Event callback when TCastleRigidBody is removed from the parent transform.

Protected procedure OnParentRigidBodyInitialized(const Component: TComponent); virtual;

Event callback when TCastleRigidBody behavior is initialized.

Protected procedure OnBeforeParentRigidBodyDeinitialized(const Component: TComponent); virtual;

Event callback when TCastleRigidBody behavior is deinitialized.

Protected procedure SetParentRigidBodyEvents;

Sets TCastleRigidBody behavior initialize/deinitialize callbacks.

Protected procedure RemoveParentRigidBodyEvents;

Removes TCastleRigidBody behavior initialize/deinitialize callbacks.

Protected procedure UpdateBreakThresholdForceInKraft;
 
Protected procedure UpdateBreakThresholdTorqueInKraft;
 
Protected procedure UpdateBreakableInKraft;
 
Protected procedure SetBreakThresholdForce(const AValue: Single);
 
Protected procedure SetBreakThresholdTorque(const AValue: Single);
 
Protected procedure SetBreakable(const AValue: Boolean);
 
Public destructor Destroy; override;
 
Public procedure WorldAfterAttach; override;
 
Public procedure WorldBeforeDetach; override;
 
Public function PropertySections(const PropertyName: String): TPropertySections; override;
 
Public procedure InternalCreateGizmos; virtual;

Create design-time transformations that are displayed in the hierarchy to visualize physics joints 3D points. If you want to visualize the behavior using a visible TCastleTransform, then create and add to Parent a descendant of TCastleJointTool, and set InternalCastleDesignInvalidate to True.

Public procedure InternalDestroyGizmos; virtual;

Destroy design-time stuff. You can destroy any component, just be sure to set InternalCastleDesignInvalidate to True.

Properties

Published property Breakable: Boolean read FBreakable write SetBreakable default false;

Makes the joint breakable when force is greater than BreakThresholdForce or torque is greater than BreakThresholdTorque.

Published property BreakThresholdForce: Single read FBreakThresholdForce write SetBreakThresholdForce default 0.0;

Force threshold to break joint.

Published property BreakThresholdTorque: Single read FBreakThresholdTorque write SetBreakThresholdTorque default 0.0;

Torque threshold to break joint.


Generated by PasDoc 0.16.0.