139 lines
5.1 KiB
Ucode
139 lines
5.1 KiB
Ucode
/**
|
|
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
|
|
*/
|
|
class RB_ConstraintInstance extends Object
|
|
hidecategories(Object)
|
|
native(Physics);
|
|
|
|
cpptext
|
|
{
|
|
// Object interface
|
|
virtual void FinishDestroy();
|
|
|
|
// RB_ConstraintInstance interface
|
|
|
|
UBOOL TermConstraint(FRBPhysScene* Scene, UBOOL bFireBrokenEvent);
|
|
|
|
void CopyInstanceParamsFrom(class URB_ConstraintInstance* fromInstance);
|
|
}
|
|
|
|
/**
|
|
* Actor that owns this constraint instance.
|
|
* Could be a ConstraintActor, or an actor using a PhysicsAsset containing this constraint.
|
|
* Due to the way the ConstraintInstance pooling works, this MUST BE FIRST PROPERTY OF THE CLASS.
|
|
*/
|
|
var const transient Actor Owner;
|
|
|
|
/** PrimitiveComponent containing this constraint. */
|
|
var const transient PrimitiveComponent OwnerComponent;
|
|
|
|
/**
|
|
* Indicates position of this constraint within the array in an PhysicsAssetInstance.
|
|
* Will correspond to RB_ConstraintSetup position in PhysicsAsset.
|
|
*/
|
|
var const int ConstraintIndex;
|
|
|
|
|
|
/** Physics scene index. */
|
|
var native const int SceneIndex;
|
|
|
|
/** Whether we are in the hardware or software scene. */
|
|
var native const bool bInHardware;
|
|
|
|
/** Internal use. Physics-engine representation of this constraint. */
|
|
/* PX3TODO:
|
|
var const native pointer ConstraintData{class NxJoint};*/
|
|
|
|
var const native pointer ConstraintData{class PxJoint};
|
|
var const native pointer PulleyJoint{class CustomPulleyJoint};
|
|
|
|
|
|
var(Linear) const bool bLinearXPositionDrive;
|
|
var(Linear) const bool bLinearXVelocityDrive;
|
|
|
|
var(Linear) const bool bLinearYPositionDrive;
|
|
var(Linear) const bool bLinearYVelocityDrive;
|
|
|
|
var(Linear) const bool bLinearZPositionDrive;
|
|
var(Linear) const bool bLinearZVelocityDrive;
|
|
|
|
var(Linear) const vector LinearPositionTarget;
|
|
var(Linear) const vector LinearVelocityTarget;
|
|
var(Linear) const float LinearDriveSpring;
|
|
var(Linear) const float LinearDriveDamping;
|
|
var(Linear) const float LinearDriveForceLimit;
|
|
|
|
var(Angular) const bool bSwingPositionDrive;
|
|
var(Angular) const bool bSwingVelocityDrive;
|
|
|
|
var(Angular) const bool bTwistPositionDrive;
|
|
var(Angular) const bool bTwistVelocityDrive;
|
|
|
|
var(Angular) const bool bAngularSlerpDrive;
|
|
|
|
var(Angular) const quat AngularPositionTarget;
|
|
var(Angular) const vector AngularVelocityTarget; // Revolutions per second
|
|
var(Angular) const float AngularDriveSpring;
|
|
var(Angular) const float AngularDriveDamping;
|
|
var(Angular) const float AngularDriveForceLimit;
|
|
|
|
/** Indicates that this constraint has been terminated */
|
|
var bool bTerminated;
|
|
|
|
/**
|
|
* If bMakeKinForBody1 is true, this is the kinematic body that is made for Body1.
|
|
* Due to the way the ConstraintInstance pooling works, this MUST BE LAST PROPERTY OF THE CLASS.
|
|
*/
|
|
/* PX3TODO */
|
|
/*var const native private pointer DummyKinActor;*/
|
|
var const native pointer DummyKinActor{class PxRigidDynamic};
|
|
|
|
/**
|
|
* Create physics engine constraint.
|
|
* If bMakeKinForBody1 is TRUE, then a non-colliding kinematic body is created for Body1 and used instead.
|
|
*/
|
|
final native function InitConstraint(PrimitiveComponent PrimComp1, PrimitiveComponent PrimComp2, RB_ConstraintSetup Setup, float Scale, Actor InOwner, PrimitiveComponent InPrimComp, bool bMakeKinForBody1);
|
|
|
|
final native noexport function TermConstraint();
|
|
|
|
/** Returns the PhysicsAssetInstance that owns this RB_ConstraintInstance (if there is one) */
|
|
final native function PhysicsAssetInstance GetPhysicsAssetInstance();
|
|
|
|
/** Get the position of this constraint in world space. */
|
|
final native function vector GetConstraintLocation();
|
|
|
|
final native function SetLinearPositionDrive(bool bEnableXDrive, bool bEnableYDrive, bool bEnableZDrive);
|
|
final native function SetLinearVelocityDrive(bool bEnableXDrive, bool bEnableYDrive, bool bEnableZDrive);
|
|
final native function SetAngularPositionDrive(bool bEnableSwingDrive, bool bEnableTwistDrive);
|
|
final native function SetAngularVelocityDrive(bool bEnableSwingDrive, bool bEnableTwistDrive);
|
|
|
|
final native function SetLinearPositionTarget(vector InPosTarget);
|
|
final native function SetLinearVelocityTarget(vector InVelTarget);
|
|
final native function SetLinearDriveParams(float InSpring, float InDamping, float InForceLimit);
|
|
|
|
final native function SetAngularPositionTarget(const out quat InPosTarget);
|
|
final native function SetAngularVelocityTarget(vector InVelTarget);
|
|
final native function SetAngularDriveParams(float InSpring, float InDamping, float InForceLimit);
|
|
|
|
/** Scale Angular Limit Constraints (as defined in RB_ConstraintSetup) */
|
|
final native function SetAngularDOFLimitScale(float InSwing1LimitScale, float InSwing2LimitScale, float InTwistLimitScale, RB_ConstraintSetup InSetup);
|
|
|
|
/** Allows you to dynamically change the size of the linear limit 'sphere'. */
|
|
final native function SetLinearLimitSize(float NewLimitSize);
|
|
|
|
/** If bMakeKinForBody1 was used, this function allows the kinematic body to be moved. */
|
|
final native function MoveKinActorTransform(out matrix NewTM);
|
|
|
|
defaultproperties
|
|
{
|
|
LinearDriveSpring=50.0
|
|
LinearDriveDamping=1.0
|
|
|
|
bAngularSlerpDrive=false
|
|
|
|
AngularPositionTarget=(W=1.0)
|
|
|
|
AngularDriveSpring=50.0
|
|
AngularDriveDamping=1.0
|
|
}
|