This is a constraint for sharing the rotation of one object along an angular axis with another. More...
#include <universalconstraint.h>
Public Member Functions | |
UniversalConstraint (const UInt32 ID, RigidProxy *ProxyA, RigidProxy *ProxyB, const Vector3 &Anchor, const Vector3 &Axis1, const Vector3 &Axis2, PhysicsManager *Creator) | |
Convenience axis constructor. More... | |
UniversalConstraint (const UInt32 ID, RigidProxy *ProxyA, RigidProxy *ProxyB, const Transform &TransA, const Transform &TransB, PhysicsManager *Creator) | |
Class constructor. More... | |
UniversalConstraint (const XML::Node &SelfRoot, PhysicsManager *Creator) | |
XML constructor. More... | |
virtual | ~UniversalConstraint () |
Class destructor. | |
virtual String | GetDerivedSerializableName () const |
Gets the most derived serializable name of this Constraint. More... | |
virtual void | SetLowerLimit (const Real Ang1Min, const Real Ang2Min) |
Sets the minimum angular limits of this constraint. More... | |
virtual void | SetUpperLimit (const Real Ang1Max, const Real Ang2Max) |
Sets the maximum angular limits of this constraint. More... | |
Public Member Functions inherited from Mezzanine::Physics::Generic6DofConstraint | |
Generic6DofConstraint (const UInt32 ID, RigidProxy *ProxyA, RigidProxy *ProxyB, const Transform &TransA, const Transform &TransB, PhysicsManager *Creator) | |
Dual body constructor. More... | |
Generic6DofConstraint (const UInt32 ID, RigidProxy *ProxyB, const Transform &TransB, PhysicsManager *Creator) | |
Single body constructor. More... | |
Generic6DofConstraint (const XML::Node &SelfRoot, PhysicsManager *Creator) | |
XML constructor. More... | |
virtual | ~Generic6DofConstraint () |
Class destructor. | |
virtual btTypedConstraint * | _GetConstraintBase () const |
Get the Bullet constraint that this class encapsulates. More... | |
virtual Whole | ConvertAngularTo6Axis (const Whole Axis) const |
Convert an angular Axis from a 3 digit range to a full 6 digit range. More... | |
virtual Whole | ConvertFrom6AxisTo3Axis (const Whole Axis) const |
Convert an Axis from a full 6 digit range to a 3 digit range. More... | |
virtual Vector3 | GetAngularLimitLower () const |
Get the Upper limits on rotation. More... | |
Real | GetAngularLimitLowerOnAxis (Whole RotationAxis) const |
Get a specific lower rotation limit. More... | |
virtual Vector3 | GetAngularLimitMaxForce () const |
Get the Maximimum amount of force applied to ensure limits are not surpassed. More... | |
virtual Real | GetAngularLimitMaxForceOnAxis (Whole Axis) const |
Get the Maximimum amount of force applied to ensure a limit one axis is not surpassed. More... | |
virtual Vector3 | GetAngularLimitUpper () const |
Get the Power limits on rotation. More... | |
Real | GetAngularLimitUpperOnAxis (Whole RotationAxis) const |
Get a specific upper rotation limit. More... | |
virtual Vector3 | GetAngularMotorDamping () const |
Get the Damping for all Angular Axis. More... | |
virtual Real | GetAngularMotorDampingOnAxis (Whole Axis) const |
Get the Damping for one given Axis. More... | |
virtual Vector3 | GetAngularMotorEnabled () const |
Get a Vector3 with 3 zero or nonzero values that store whether or not a given rotational motor is enable. More... | |
virtual Boole | GetAngularMotorEnabledOnAxis (Whole Axis) const |
Is a specific rotational motor enabled. More... | |
virtual Vector3 | GetAngularMotorMaxForce () const |
Get the Max Motor Force for each Axis. More... | |
virtual Real | GetAngularMotorMaxForceOnAxis (Whole Axis) const |
Get the Max motor Force on a certain Axis. More... | |
virtual Vector3 | GetAngularMotorRestitution () const |
Get the Restitution values for all three axis. More... | |
virtual Real | GetAngularMotorRestitutionOnAxis (Whole Axis) const |
Get the Restitution/Bounciness for a single Axis. More... | |
virtual Vector3 | GetAngularMotorTargetVelocity () const |
Get the target velocity for all angular Axis. More... | |
virtual Real | GetAngularMotorTargetVelocityOnAxis (Whole Axis) const |
Get the Target Velocity for one axis. More... | |
virtual Real | GetLinearLimitDamping () const |
Get the Damping of the linear Limits. More... | |
virtual Vector3 | GetLinearLimitLower () const |
Get the Upper limits on translation. More... | |
Real | GetLinearLimitLowerOnAxis (Whole TranslationAxis) const |
Get a specific lower translation limit. More... | |
virtual Real | GetLinearLimitRestitution () const |
Get the Restitution of the linear Limits. More... | |
virtual Real | GetLinearLimitSoftness () const |
Get the Softness of the linear Limits. More... | |
virtual Vector3 | GetLinearLimitUpper () const |
Get the lower limits on translation. More... | |
Real | GetLinearLimitUpperOnAxis (Whole TranslationAxis) const |
Get a specific upper translation limit. More... | |
virtual Vector3 | GetLinearMotorEnabled () const |
Get a Vector3 with 3 zero or nonzero values that store whether or not a given rotational motor is enable. More... | |
virtual Boole | GetLinearMotorEnabledOnAxis (Whole Axis) const |
Is a specific Linear motor enabled. More... | |
virtual Vector3 | GetLinearMotorMaxForce () const |
Get the Max Motor Force for each Axis. More... | |
virtual Real | GetLinearMotorMaxForceOnAxis (Whole Axis) const |
Get the Max motor Force on a certain Axis. More... | |
virtual Vector3 | GetLinearMotorTargetVelocity () const |
Get the target velocity for all Linear Axis. More... | |
virtual Real | GetLinearMotorTargetVelocityOnAxis (Whole Axis) const |
Get the Target Velocity for one axis. More... | |
virtual Vector3 | GetPivotALocation () const |
Gets the location of the pivot relative to ProxA's Center of gravity. More... | |
virtual Quaternion | GetPivotARotation () const |
Gets the relative rotation for ProxA. More... | |
virtual Transform | GetPivotATransform () const |
Gets the current Rotation and Location of ProxyA. More... | |
virtual Vector3 | GetPivotBLocation () const |
Gets the location of the pivot relative to ProxB's Center of gravity. More... | |
virtual Quaternion | GetPivotBRotation () const |
Gets the relative rotation for ProxB. More... | |
virtual Transform | GetPivotBTransform () const |
Gets the current Rotation and Location of ProxyB. More... | |
virtual Boole | GetUseFrameOffset () const |
Gets whether or not an offset of the constraint frame should be used to calculate internal data. More... | |
Boole | GetUseLinearReferenceFrameA () const |
Gets whether or not to perform linear math from ProxyA's perspective. More... | |
virtual Constraint::AxisList | GetValidAngularAxes () const |
Get A list sorted (low to high) of all axis that operate Angularly (that lock sliding/translation) More... | |
virtual Constraint::AxisList | GetValidLinearAxes () const |
Get a sorted (low to high) list of all axis that operate linearly (that lock sliding/translation) More... | |
virtual Constraint::ParamList | GetValidParamsOnAxis (int Axis) const |
Get a sorted (low to high) list of Parameters that are valid on this Axis. More... | |
virtual Boole | HasParamBeenSet (ConstraintParam Param, int Axis) const |
virtual void | ProtoDeSerializeProperties (const XML::Node &SelfRoot) |
Take the data stored in an XML Node and overwrite the properties of this object with it. More... | |
virtual void | ProtoSerializeProperties (XML::Node &SelfRoot) const |
Convert the properties of this class to an XML::Node ready for serialization. More... | |
virtual void | SetAngularLimitLower (const Vector3 &Limit) |
Set the Lower limits on rotation. More... | |
void | SetAngularLimitLowerOnAxis (const Real Limit, Whole RotationAxis) |
Sets the lower rotation limit on a specific axis of the constraint. More... | |
virtual void | SetAngularLimitMaxForce (const Vector3 &MaxLimitForces) |
Set the Maximimum amount of force applied to ensure limits are not surpassed. More... | |
virtual void | SetAngularLimitMaxForceOnAxis (const Real MaxLimitForce, Whole Axis) |
Set the Maximimum amount of force applied to ensure a limit on one axis is not surpassed. More... | |
virtual void | SetAngularLimitUpper (const Vector3 &Limit) |
Set the Upper limits on rotation. More... | |
void | SetAngularLimitUpperOnAxis (const Real Limit, Whole RotationAxis) |
Sets the upper rotation limit on a specific axis of the constraint. More... | |
virtual void | SetAngularMotorDamping (const Vector3 &Dampings) |
Set the Angular Motor Damping for each Angular Axis. More... | |
virtual void | SetAngularMotorDampingOnAxis (const Real Damping, Whole Axis) |
For one Axis, set the Damping. More... | |
virtual void | SetAngularMotorEnabled (const Vector3 &Enableds) |
Set whether or not the motor is enabled for all Axis Simultaneously. More... | |
virtual void | SetAngularMotorEnabledOnAxis (const Boole Enabled, Whole Axis) |
For one Axis, set whether or not the motor is enabled. More... | |
virtual void | SetAngularMotorMaxForce (const Vector3 &Forces) |
Set the Angular Motor Maximum force on all 3 rotational axis. More... | |
virtual void | SetAngularMotorMaxForceOnAxis (const Real Force, Whole Axis) |
For one Axis, set the Maximimum Motor Force. More... | |
virtual void | SetAngularMotorRestitution (const Vector3 &Restitutions) |
Set the Bounciness/Restition for rotation on all three Axis. More... | |
virtual void | SetAngularMotorRestitutionOnAxis (const Real Restitution, Whole Axis) |
For one Axis, set the Restitution/Bounciness/. More... | |
virtual void | SetAngularMotorTargetVelocity (const Vector3 &Velocities) |
Set the Target velocity of the motor on each anuglar axis. More... | |
virtual void | SetAngularMotorTargetVelocityOnAxis (const Real Velocity, Whole Axis) |
For one Axis, set the target velocity of the angular motor. More... | |
virtual void | SetLimit (Whole Axis, Real Lower, Real Upper) |
Change the upper and lower limit for one axis of translation or rotation limit. More... | |
virtual void | SetLinearLimitDamping (const Real Damping) |
Set the Damping of the linear Limits. More... | |
virtual void | SetLinearLimitLower (const Vector3 &Limit) |
Set the Upper limits on translation. More... | |
void | SetLinearLimitLowerOnAxis (const Real Limit, Whole TranslationAxis) |
Sets the lower linear limit on a specific axis of the constraint. More... | |
virtual void | SetLinearLimitRestitution (const Real Restitution) |
Set the Restitution of the linear Limits. More... | |
virtual void | SetLinearLimitSoftness (const Real Softness) |
Set the Softness of the linear Limits. More... | |
virtual void | SetLinearLimitUpper (const Vector3 &Limit) |
Set the lower limits on translation. More... | |
void | SetLinearLimitUpperOnAxis (const Real Limit, Whole TranslationAxis) |
Sets the upper linear limit on a specific axis of the constraint. More... | |
virtual void | SetLinearMotorEnabled (const Vector3 &Enableds) |
Set whether or not the motor is enabled for all Linear Axis Simultaneously. More... | |
virtual void | SetLinearMotorEnabledOnAxis (const Boole Enabled, Whole Axis) |
For one Axis, set whether or not the motor is enabled. More... | |
virtual void | SetLinearMotorMaxForce (const Vector3 &Forces) |
Set the Linear Motor Maximum force on all 3 translation axis. More... | |
virtual void | SetLinearMotorMaxForceOnAxis (const Real Force, Whole Axis) |
For one Axis, set the Maximimum Motor Force. More... | |
virtual void | SetLinearMotorTargetVelocity (const Vector3 &Velocities) |
Set the Target velocity of the motor on each anuglar axis. More... | |
virtual void | SetLinearMotorTargetVelocityOnAxis (const Real Velocity, Whole Axis) |
For one Axis, set the target velocity of the Linear motor. More... | |
virtual void | SetPivotALocation (const Vector3 &Location) |
Sets The relative location of the pivot from ProxA's Center of gravity. More... | |
virtual void | SetPivotARotation (const Quaternion &Rotation) |
Sets The relative rotation of ProxA. More... | |
virtual void | SetPivotATransform (const Transform &TransA) |
Sets the Position and Rotation for the first body using a Transform. More... | |
virtual void | SetPivotBLocation (const Vector3 &Location) |
Sets The relative location of the pivot from ProxB's Center of gravity. More... | |
virtual void | SetPivotBRotation (const Quaternion &Rotation) |
Sets The relative rotation of ProxB. More... | |
virtual void | SetPivotBTransform (const Transform &TransB) |
Sets the Position and Rotation for the second body using a Transform. More... | |
virtual void | SetPivotTransforms (const Transform &TransA, const Transform &TransB) |
Sets the Position and Rotation for the first and second body using a Transform. More... | |
virtual void | SetUseFrameOffset (const Boole FrameOffset) |
Sets whether or not an offset of the constraint frame should be used to calculate internal data. More... | |
void | SetUseLinearReferenceFrameA (const Boole UseRefFrameA) |
Sets whether or not to perform linear math from ProxyA's perspective. More... | |
Public Member Functions inherited from Mezzanine::Physics::DualTransformConstraint | |
virtual | ~DualTransformConstraint () |
Class destructor. | |
virtual void | ProtoDeSerializeInitData (const XML::Node &SelfRoot) |
Take the data stored in an XML Node and initializes a new internal object with it. More... | |
virtual void | ProtoSerializeInitData (XML::Node &SelfRoot) const |
Convert the data needed to initialize this class to an XML::Node ready for serialization. More... | |
Public Member Functions inherited from Mezzanine::Physics::Constraint | |
virtual | ~Constraint () |
Class destructor. | |
virtual void | EnableConstraint (const Boole Enable) |
Enables or disables this constraint. More... | |
virtual Boole | GetAllowCollisions () const |
Gets whether or not collisions can/will occur between the two constrained bodies. More... | |
virtual UInt32 | GetConstraintID () const |
Gets the unique ID of this constraint. More... | |
virtual Real | GetParam (ConstraintParam Param, int Axis=-1) const |
Gets value of constraint parameters. More... | |
virtual RigidProxy * | GetProxyA () const |
Gets the first Proxy this constraint applies to. More... | |
virtual RigidProxy * | GetProxyB () const |
Gets the second Proxy this constraint applies to. More... | |
virtual AxisList | GetValidAxes () const |
Get a sorted (low to high) list of All Valid Axis. More... | |
virtual ParamList | GetValidParams () const |
Get A sorted (low to high) list of Parameters that are valid on all Axis. More... | |
virtual Boole | IsConstraintEnabled () const |
Gets whether or not this constraint is enabled. More... | |
virtual Boole | IsParamValidOnAxis (ConstraintParam Param, int Axis) const |
Is a certain Parameter valid on a certain axis. More... | |
virtual void | ProtoDeSerialize (const XML::Node &SelfRoot) |
Take the data stored in an XML Node and overwrite this object with it. More... | |
virtual void | ProtoDeSerializeGlobalOverrides (const XML::Node &SelfRoot) |
Take the data stored in an XML Node and overwrite the global overrides of this object with it. More... | |
virtual void | ProtoSerialize (XML::Node &ParentNode) const |
Convert this class to an XML::Node ready for serialization. More... | |
virtual void | ProtoSerializeGlobalOverrides (XML::Node &SelfRoot) const |
Convert the global overrides of this class to an XML::Node ready for serialization. More... | |
virtual void | SetAllowCollisions (const Boole Allow) |
Sets whether collisions between the two constrained bodies should occur. More... | |
virtual void | SetParam (ConstraintParam Param, Real Value, int Axis=-1) |
Provides override of constraint parameters. More... | |
Static Public Member Functions | |
static String | GetSerializableName () |
Get the name of the the XML tag the class will leave behind as its instances are serialized. More... | |
Static Public Member Functions inherited from Mezzanine::Physics::Generic6DofConstraint | |
static String | GetSerializableName () |
Get the name of the the XML tag the class will leave behind as its instances are serialized. More... | |
Static Public Member Functions inherited from Mezzanine::Physics::DualTransformConstraint | |
static String | GetSerializableName () |
Get the name of the the XML tag the class will leave behind as its instances are serialized. More... | |
Static Public Member Functions inherited from Mezzanine::Physics::Constraint | |
static String | GetSerializableName () |
Get the name of the the XML tag the class will leave behind as its instances are serialized. More... | |
Protected Member Functions | |
virtual void | CreateConstraint (RigidProxy *RigidA, RigidProxy *RigidB, const Transform &TransA, const Transform &TransB) |
Creates the internal constraint. More... | |
virtual void | CreateConstraint (RigidProxy *RigidA, RigidProxy *RigidB, const Vector3 &Anchor, const Vector3 &Axis1, const Vector3 &Axis2) |
Conveniece method used primarily for serialization to create an internal constraint. More... | |
virtual btUniversalConstraint * | Universal () const |
Protected Member Functions inherited from Mezzanine::Physics::Generic6DofConstraint | |
Generic6DofConstraint (const UInt32 ID, RigidProxy *Prox1, PhysicsManager *Creator) | |
Single body inheritance constructor. More... | |
Generic6DofConstraint (const UInt32 ID, RigidProxy *Prox1, RigidProxy *Prox2, PhysicsManager *Creator) | |
Dual body inheritance constructor. More... | |
virtual void | DestroyConstraint () |
Destroys the internal constraint. More... | |
Protected Member Functions inherited from Mezzanine::Physics::DualTransformConstraint | |
DualTransformConstraint (const UInt32 ID, RigidProxy *Prox1, PhysicsManager *Creator) | |
Single body inheritance constructor. More... | |
DualTransformConstraint (const UInt32 ID, RigidProxy *Prox1, RigidProxy *Prox2, PhysicsManager *Creator) | |
Dual body inheritance constructor. More... | |
Protected Member Functions inherited from Mezzanine::Physics::Constraint | |
Constraint (const UInt32 ID, PhysicsManager *Creator) | |
Zero body constructor. More... | |
Constraint (const UInt32 ID, RigidProxy *Prox1, PhysicsManager *Creator) | |
Single body constructor. More... | |
Constraint (const UInt32 ID, RigidProxy *Prox1, RigidProxy *Prox2, PhysicsManager *Creator) | |
Dual body constructor. More... | |
Additional Inherited Members | |
Public Types inherited from Mezzanine::Physics::Generic6DofConstraint | |
enum | UsableAxis { LinearStart = 0, LinearX = 0, LinearY = 1, LinearZ = 2, LinearEnd = 3, AngularStart = 3, AngularX = 3, AngularY = 4, AngularZ = 5, AngularEnd = 6, AngularXAsRotationAxis = 0, AngularYAsRotationAxis = 1, AngularZAsRotationAxis = 2 } |
Identify the Axis a bit easier when iterating over them is less convienent than typing an Identifier. More... | |
Public Types inherited from Mezzanine::Physics::Constraint | |
typedef std::vector< int > | AxisList |
Used to Store lists of Int Axis for return types. More... | |
typedef std::vector< ConstraintParam > | ParamList |
Used to Store lists of param for return types. | |
Protected Attributes inherited from Mezzanine::Physics::Generic6DofConstraint | |
btGeneric6DofConstraint * | Generic6dof |
The internal constraint that this class encapsulates. More... | |
Protected Attributes inherited from Mezzanine::Physics::Constraint | |
Boole | AllowCollisions |
Whether or not collisions will be allowed to occure between the constrained bodies. More... | |
UInt32 | ConstraintID |
The unique ID used to identify this constraint. More... | |
Boole | Enabled |
Whether or not the constraint is currently taking effect. More... | |
PhysicsManager * | Manager |
This is a pointer to the physics manager that created and owns this constraint. More... | |
RigidProxy * | ProxA |
The first Collidable this constraint applies to. More... | |
RigidProxy * | ProxB |
The second Collidable this constraint applies to. More... | |
This is a constraint for sharing the rotation of one object along an angular axis with another.
The UniversalConstriant shares some similarities with the Gear and Hinge2 constraints, but it is distinct in the nuance of it's behaviors.
With the Gear constraint you can set a ratio on which the amount of rotation that is transferred from the parent object to it's child. With the UniversalConstraint the amount of rotation is evenly matched.
With the Hinge2 constraint the axes provided must always be orthogonal and rotations along those axis aren't really related. The child can spin about it's own axis without really disrupting the parent whatsoever. With the Universal constraint you must define two axes, one on the parent and one on the child, however those axes must be perpendicular to the axis you wish to rotate the object around.
After the constraint is constructed the constraint will attempt to keep the axes provided at 90 degrees apart, forcing the parent or child to rotate as needed to maintain that angular distance.
Definition at line 64 of file universalconstraint.h.
Mezzanine::Physics::UniversalConstraint::UniversalConstraint | ( | const UInt32 | ID, |
RigidProxy * | ProxyA, | ||
RigidProxy * | ProxyB, | ||
const Vector3 & | Anchor, | ||
const Vector3 & | Axis1, | ||
const Vector3 & | Axis2, | ||
PhysicsManager * | Creator | ||
) |
Convenience axis constructor.
ID | The unique identifier assigned to this constraint. |
ProxyA | A pointer to the first proxy that will be constrained. |
ProxyB | A pointer to the second proxy that will be constrained. |
Anchor | The central point around both Axis1 and Axis 2 will connect and spin. |
Axis1 | An axis perpendicular to the axis you wish to have the ProxyA spin. |
Axis2 | An axis perpendicular to the axis you wish to have the ProxyB spin. |
Creator | A pointer to the manager that created this constraint. |
Definition at line 58 of file universalconstraint.cpp.
Mezzanine::Physics::UniversalConstraint::UniversalConstraint | ( | const UInt32 | ID, |
RigidProxy * | ProxyA, | ||
RigidProxy * | ProxyB, | ||
const Transform & | TransA, | ||
const Transform & | TransB, | ||
PhysicsManager * | Creator | ||
) |
Class constructor.
ID | The unique identifier assigned to this constraint. |
ProxyA | A pointer to the first proxy that will be constrained. |
ProxyB | A pointer to the second proxy that will be constrained. |
TransA | The offset and rotation from ProxyAs center of gravity to get to match an offset from ProxyB. |
TransB | The offset and rotation from ProxyBs center of gravity. |
Creator | A pointer to the manager that created this constraint. |
Definition at line 62 of file universalconstraint.cpp.
Mezzanine::Physics::UniversalConstraint::UniversalConstraint | ( | const XML::Node & | SelfRoot, |
PhysicsManager * | Creator | ||
) |
XML constructor.
SelfRoot | An XML::Node containing the data to populate this class with. |
Creator | A pointer to the manager that created this constraint. |
Definition at line 66 of file universalconstraint.cpp.
|
protectedvirtual |
Creates the internal constraint.
RigidA | A pointer to the first Proxy to be constrained. |
RigidB | A pointer to the second Proxy to be constrained. |
TransA | The offset to place the constraint in the first proxys local space. |
TransB | The offset to place the constraint in the second proxys local space. |
Reimplemented from Mezzanine::Physics::Generic6DofConstraint.
Definition at line 76 of file universalconstraint.cpp.
|
protectedvirtual |
Conveniece method used primarily for serialization to create an internal constraint.
RigidA | A pointer to the first proxy that will be constrained. |
RigidB | A pointer to the second proxy that will be constrained. |
Anchor | The central point around both Axis1 and Axis 2 will connect and spin. |
Axis1 | An axis perpendicular to the axis you wish to have the ProxyA spin. |
Axis2 | An axis perpendicular to the axis you wish to have the ProxyB spin. |
Definition at line 87 of file universalconstraint.cpp.
|
virtual |
Gets the most derived serializable name of this Constraint.
Reimplemented from Mezzanine::Physics::Generic6DofConstraint.
Definition at line 109 of file universalconstraint.cpp.
|
static |
Get the name of the the XML tag the class will leave behind as its instances are serialized.
Definition at line 112 of file universalconstraint.cpp.
|
virtual |
Sets the minimum angular limits of this constraint.
Ang1Min | The minimum angle allowed on Axis1. |
Ang2Min | The minimum angle allowed on Axis2. |
Definition at line 103 of file universalconstraint.cpp.
|
virtual |
Sets the maximum angular limits of this constraint.
Ang1Max | The maximum angle allowed on Axis1. |
Ang2Max | The maximum angle allowed on Axis2. |
Definition at line 100 of file universalconstraint.cpp.
|
protectedvirtual |
Definition at line 73 of file universalconstraint.cpp.