1
0
KF2-Dev-Scripts/Engine/Classes/RB_ConstraintInstance.uc
2020-12-13 18:01:13 +03:00

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
}