21#ifndef GENERATED_AGX_PHYSICS_RIGIDBODY_H_PLUGIN
22#define GENERATED_AGX_PHYSICS_RIGIDBODY_H_PLUGIN
24#define AGX_ENTITY_WRAPPER 1
30# pragma warning( disable : 4505 )
32# pragma warning( disable : 4251 )
34# pragma warning( disable : 4355 )
36# pragma warning( disable: 4714 )
59namespace agx {
class RigidBody; }
61namespace agx {
namespace Physics {
class GeometryPtr; }}
62namespace agx {
namespace Physics {
class GraphNodePtr; }}
72 class RigidBodyInstance;
73 class RigidBodySemantics;
148 virtual void configure(agx::TiXmlElement* eEntity)
override;
156 #ifndef AGX_PHYSICS_RIGIDBODY_DATA_SET_OVERRIDE
157 #define AGX_PHYSICS_RIGIDBODY_DATA_SET
161 RigidBodyInstance operator[] (
size_t index);
209 typedef agx::RigidBodyState stateType;
214 typedef agx::Vec3 effectiveMassCoefficientsType;
215 typedef agx::Vec3 effectiveMassTransformDiagonalType;
218 typedef agx::Vec3 effectiveInertiaCoefficientsType;
237 typedef agx::Vec3 linearAccelerationType;
238 typedef agx::Vec3 angularAccelerationType;
240 typedef agx::Vec3f angularVelocityDampingType;
241 typedef agx::Vec3f linearVelocityZeroDampingType;
242 typedef agx::Vec3f angularVelocityZeroDampingType;
255 virtual ~RigidBodyData() {}
256 virtual void setNumElements(
agx::Index numElements)
override;
259 RigidBodyData& operator= (
const RigidBodyData&) {
return *
this; }
273 agx::RigidBodyState
const& getState()
const;
277 agx::Vec3 const& getEffectiveMass()
const;
278 agx::Vec3 const& getEffectiveMassCoefficients()
const;
279 agx::Vec3 const& getEffectiveMassTransformDiagonal()
const;
282 agx::Vec3 const& getEffectiveInertiaCoefficients()
const;
300 agx::Vec3 const& getAngularVelocity()
const;
301 agx::Vec3 const& getLinearAcceleration()
const;
302 agx::Vec3 const& getAngularAcceleration()
const;
303 agx::Vec3f const& getLinearVelocityDamping()
const;
304 agx::Vec3f const& getAngularVelocityDamping()
const;
305 agx::Vec3f const& getLinearVelocityZeroDamping()
const;
306 agx::Vec3f const& getAngularVelocityZeroDamping()
const;
318 void setState(agx::RigidBodyState
const& value);
322 void setEffectiveMass(
agx::Vec3 const& value);
323 void setEffectiveMassCoefficients(
agx::Vec3 const& value);
324 void setEffectiveMassTransformDiagonal(
agx::Vec3 const& value);
327 void setEffectiveInertiaCoefficients(
agx::Vec3 const& value);
338 void setLastForce(
agx::Vec3 const& value);
339 void setLastTorque(
agx::Vec3 const& value);
344 void setVelocity(
agx::Vec3 const& value);
345 void setAngularVelocity(
agx::Vec3 const& value);
346 void setLinearAcceleration(
agx::Vec3 const& value);
347 void setAngularAcceleration(
agx::Vec3 const& value);
348 void setLinearVelocityDamping(
agx::Vec3f const& value);
349 void setAngularVelocityDamping(
agx::Vec3f const& value);
350 void setLinearVelocityZeroDamping(
agx::Vec3f const& value);
351 void setAngularVelocityZeroDamping(
agx::Vec3f const& value);
361 friend class RigidBodyPtr;
362 friend class RigidBodyInstance;
363 RigidBodySemantics();
611 RigidBodyInstance(RigidBodyData* data,
agx::Index index);
616 RigidBodyData* getData();
617 const RigidBodyData* getData()
const;
626 agx::RigidBodyState& state();
628 agx::RigidBodyState
const& state()
const;
653 agx::Vec3 const& effectiveMassCoefficients()
const;
656 agx::Vec3& effectiveMassTransformDiagonal();
658 agx::Vec3 const& effectiveMassTransformDiagonal()
const;
671 agx::Vec3& effectiveInertiaCoefficients();
673 agx::Vec3 const& effectiveInertiaCoefficients()
const;
763 agx::Vec3 const& angularVelocity()
const;
768 agx::Vec3 const& linearAcceleration()
const;
773 agx::Vec3 const& angularAcceleration()
const;
778 agx::Vec3f const& linearVelocityDamping()
const;
783 agx::Vec3f const& angularVelocityDamping()
const;
788 agx::Vec3f const& linearVelocityZeroDamping()
const;
793 agx::Vec3f const& angularVelocityZeroDamping()
const;
839 inline RigidBodyInstance
agx::Physics::RigidBodyData::operator[] (
size_t index) {
return RigidBodyInstance(
this, (
agx::Index)index); }
846 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
853 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
861 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
862 EntityPtr::getModel()->fullPath().c_str(), RigidBodyModel::instance()->fullPath().c_str());
870 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
871 EntityPtr::getModel()->fullPath().c_str(), RigidBodyModel::instance()->fullPath().c_str());
877 AGX_FORCE_INLINE RigidBodySemantics* RigidBodyPtr::operator->() {
return (RigidBodySemantics* )
this; }
878 AGX_FORCE_INLINE const RigidBodySemantics* RigidBodyPtr::operator->()
const {
return (
const RigidBodySemantics* )
this; }
885 AGX_FORCE_INLINE agx::RigidBodyState& RigidBodyPtr::state() { verifyIndex();
return getData()->state[calculateIndex()]; }
886 AGX_FORCE_INLINE agx::RigidBodyState
const& RigidBodyPtr::state()
const { verifyIndex();
return getData()->state[calculateIndex()]; }
889 AGX_FORCE_INLINE agx::Name const& RigidBodyPtr::name()
const { verifyIndex();
return getData()->name[calculateIndex()]; }
892 AGX_FORCE_INLINE agx::Real const& RigidBodyPtr::mass()
const { verifyIndex();
return getData()->mass[calculateIndex()]; }
895 AGX_FORCE_INLINE agx::Real const& RigidBodyPtr::invMass()
const { verifyIndex();
return getData()->invMass[calculateIndex()]; }
897 AGX_FORCE_INLINE agx::Vec3& RigidBodyPtr::effectiveMass() { verifyIndex();
return getData()->effectiveMass[calculateIndex()]; }
898 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyPtr::effectiveMass()
const { verifyIndex();
return getData()->effectiveMass[calculateIndex()]; }
900 AGX_FORCE_INLINE agx::Vec3& RigidBodyPtr::effectiveMassCoefficients() { verifyIndex();
return getData()->effectiveMassCoefficients[calculateIndex()]; }
901 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyPtr::effectiveMassCoefficients()
const { verifyIndex();
return getData()->effectiveMassCoefficients[calculateIndex()]; }
903 AGX_FORCE_INLINE agx::Vec3& RigidBodyPtr::effectiveMassTransformDiagonal() { verifyIndex();
return getData()->effectiveMassTransformDiagonal[calculateIndex()]; }
904 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyPtr::effectiveMassTransformDiagonal()
const { verifyIndex();
return getData()->effectiveMassTransformDiagonal[calculateIndex()]; }
912 AGX_FORCE_INLINE agx::Vec3& RigidBodyPtr::effectiveInertiaCoefficients() { verifyIndex();
return getData()->effectiveInertiaCoefficients[calculateIndex()]; }
913 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyPtr::effectiveInertiaCoefficients()
const { verifyIndex();
return getData()->effectiveInertiaCoefficients[calculateIndex()]; }
916 AGX_FORCE_INLINE agx::Matrix3x3 const& RigidBodyPtr::worldMassMatrix()
const { verifyIndex();
return getData()->worldMassMatrix[calculateIndex()]; }
919 AGX_FORCE_INLINE agx::Matrix3x3 const& RigidBodyPtr::invWorldMassMatrix()
const { verifyIndex();
return getData()->invWorldMassMatrix[calculateIndex()]; }
921 AGX_FORCE_INLINE agx::Matrix3x3& RigidBodyPtr::effectiveWorldMassMatrix() { verifyIndex();
return getData()->effectiveWorldMassMatrix[calculateIndex()]; }
922 AGX_FORCE_INLINE agx::Matrix3x3 const& RigidBodyPtr::effectiveWorldMassMatrix()
const { verifyIndex();
return getData()->effectiveWorldMassMatrix[calculateIndex()]; }
924 AGX_FORCE_INLINE agx::Matrix3x3& RigidBodyPtr::effectiveInvWorldMassMatrix() { verifyIndex();
return getData()->effectiveInvWorldMassMatrix[calculateIndex()]; }
925 AGX_FORCE_INLINE agx::Matrix3x3 const& RigidBodyPtr::effectiveInvWorldMassMatrix()
const { verifyIndex();
return getData()->effectiveInvWorldMassMatrix[calculateIndex()]; }
931 AGX_FORCE_INLINE agx::Matrix3x3 const& RigidBodyPtr::invWorldInertia()
const { verifyIndex();
return getData()->invWorldInertia[calculateIndex()]; }
933 AGX_FORCE_INLINE agx::Matrix3x3& RigidBodyPtr::effectiveWorldInertia() { verifyIndex();
return getData()->effectiveWorldInertia[calculateIndex()]; }
934 AGX_FORCE_INLINE agx::Matrix3x3 const& RigidBodyPtr::effectiveWorldInertia()
const { verifyIndex();
return getData()->effectiveWorldInertia[calculateIndex()]; }
936 AGX_FORCE_INLINE agx::Matrix3x3& RigidBodyPtr::effectiveInvWorldInertia() { verifyIndex();
return getData()->effectiveInvWorldInertia[calculateIndex()]; }
937 AGX_FORCE_INLINE agx::Matrix3x3 const& RigidBodyPtr::effectiveInvWorldInertia()
const { verifyIndex();
return getData()->effectiveInvWorldInertia[calculateIndex()]; }
940 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyPtr::force()
const { verifyIndex();
return getData()->force[calculateIndex()]; }
943 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyPtr::torque()
const { verifyIndex();
return getData()->torque[calculateIndex()]; }
946 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyPtr::lastForce()
const { verifyIndex();
return getData()->lastForce[calculateIndex()]; }
948 AGX_FORCE_INLINE agx::Vec3& RigidBodyPtr::lastTorque() { verifyIndex();
return getData()->lastTorque[calculateIndex()]; }
949 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyPtr::lastTorque()
const { verifyIndex();
return getData()->lastTorque[calculateIndex()]; }
964 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyPtr::velocity()
const { verifyIndex();
return getData()->velocity[calculateIndex()]; }
966 AGX_FORCE_INLINE agx::Vec3& RigidBodyPtr::angularVelocity() { verifyIndex();
return getData()->angularVelocity[calculateIndex()]; }
967 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyPtr::angularVelocity()
const { verifyIndex();
return getData()->angularVelocity[calculateIndex()]; }
969 AGX_FORCE_INLINE agx::Vec3& RigidBodyPtr::linearAcceleration() { verifyIndex();
return getData()->linearAcceleration[calculateIndex()]; }
970 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyPtr::linearAcceleration()
const { verifyIndex();
return getData()->linearAcceleration[calculateIndex()]; }
972 AGX_FORCE_INLINE agx::Vec3& RigidBodyPtr::angularAcceleration() { verifyIndex();
return getData()->angularAcceleration[calculateIndex()]; }
973 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyPtr::angularAcceleration()
const { verifyIndex();
return getData()->angularAcceleration[calculateIndex()]; }
975 AGX_FORCE_INLINE agx::Vec3f& RigidBodyPtr::linearVelocityDamping() { verifyIndex();
return getData()->linearVelocityDamping[calculateIndex()]; }
976 AGX_FORCE_INLINE agx::Vec3f const& RigidBodyPtr::linearVelocityDamping()
const { verifyIndex();
return getData()->linearVelocityDamping[calculateIndex()]; }
978 AGX_FORCE_INLINE agx::Vec3f& RigidBodyPtr::angularVelocityDamping() { verifyIndex();
return getData()->angularVelocityDamping[calculateIndex()]; }
979 AGX_FORCE_INLINE agx::Vec3f const& RigidBodyPtr::angularVelocityDamping()
const { verifyIndex();
return getData()->angularVelocityDamping[calculateIndex()]; }
981 AGX_FORCE_INLINE agx::Vec3f& RigidBodyPtr::linearVelocityZeroDamping() { verifyIndex();
return getData()->linearVelocityZeroDamping[calculateIndex()]; }
982 AGX_FORCE_INLINE agx::Vec3f const& RigidBodyPtr::linearVelocityZeroDamping()
const { verifyIndex();
return getData()->linearVelocityZeroDamping[calculateIndex()]; }
984 AGX_FORCE_INLINE agx::Vec3f& RigidBodyPtr::angularVelocityZeroDamping() { verifyIndex();
return getData()->angularVelocityZeroDamping[calculateIndex()]; }
985 AGX_FORCE_INLINE agx::Vec3f const& RigidBodyPtr::angularVelocityZeroDamping()
const { verifyIndex();
return getData()->angularVelocityZeroDamping[calculateIndex()]; }
993 AGX_FORCE_INLINE agx::Range6& RigidBodyPtr::velocityRanges() { verifyIndex();
return getData()->velocityRanges[calculateIndex()]; }
994 AGX_FORCE_INLINE agx::Range6 const& RigidBodyPtr::velocityRanges()
const { verifyIndex();
return getData()->velocityRanges[calculateIndex()]; }
1000 AGX_FORCE_INLINE agx::UInt32 const& RigidBodyPtr::solveIndex()
const { verifyIndex();
return getData()->solveIndex[calculateIndex()]; }
1002 AGX_FORCE_INLINE agx::UInt16& RigidBodyPtr::numConstraints() { verifyIndex();
return getData()->numConstraints[calculateIndex()]; }
1003 AGX_FORCE_INLINE agx::UInt16 const& RigidBodyPtr::numConstraints()
const { verifyIndex();
return getData()->numConstraints[calculateIndex()]; }
1012 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
1019 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
1030 AGX_FORCE_INLINE agx::RigidBodyState& RigidBodyInstance::state() { verifyIndex();
return getData()->state[getIndex()]; }
1031 AGX_FORCE_INLINE agx::RigidBodyState
const& RigidBodyInstance::state()
const { verifyIndex();
return getData()->state[getIndex()]; }
1034 AGX_FORCE_INLINE agx::Name const& RigidBodyInstance::name()
const { verifyIndex();
return getData()->name[getIndex()]; }
1037 AGX_FORCE_INLINE agx::Real const& RigidBodyInstance::mass()
const { verifyIndex();
return getData()->mass[getIndex()]; }
1040 AGX_FORCE_INLINE agx::Real const& RigidBodyInstance::invMass()
const { verifyIndex();
return getData()->invMass[getIndex()]; }
1042 AGX_FORCE_INLINE agx::Vec3& RigidBodyInstance::effectiveMass() { verifyIndex();
return getData()->effectiveMass[getIndex()]; }
1043 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyInstance::effectiveMass()
const { verifyIndex();
return getData()->effectiveMass[getIndex()]; }
1045 AGX_FORCE_INLINE agx::Vec3& RigidBodyInstance::effectiveMassCoefficients() { verifyIndex();
return getData()->effectiveMassCoefficients[getIndex()]; }
1046 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyInstance::effectiveMassCoefficients()
const { verifyIndex();
return getData()->effectiveMassCoefficients[getIndex()]; }
1048 AGX_FORCE_INLINE agx::Vec3& RigidBodyInstance::effectiveMassTransformDiagonal() { verifyIndex();
return getData()->effectiveMassTransformDiagonal[getIndex()]; }
1049 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyInstance::effectiveMassTransformDiagonal()
const { verifyIndex();
return getData()->effectiveMassTransformDiagonal[getIndex()]; }
1057 AGX_FORCE_INLINE agx::Vec3& RigidBodyInstance::effectiveInertiaCoefficients() { verifyIndex();
return getData()->effectiveInertiaCoefficients[getIndex()]; }
1058 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyInstance::effectiveInertiaCoefficients()
const { verifyIndex();
return getData()->effectiveInertiaCoefficients[getIndex()]; }
1061 AGX_FORCE_INLINE agx::Matrix3x3 const& RigidBodyInstance::worldMassMatrix()
const { verifyIndex();
return getData()->worldMassMatrix[getIndex()]; }
1064 AGX_FORCE_INLINE agx::Matrix3x3 const& RigidBodyInstance::invWorldMassMatrix()
const { verifyIndex();
return getData()->invWorldMassMatrix[getIndex()]; }
1066 AGX_FORCE_INLINE agx::Matrix3x3& RigidBodyInstance::effectiveWorldMassMatrix() { verifyIndex();
return getData()->effectiveWorldMassMatrix[getIndex()]; }
1067 AGX_FORCE_INLINE agx::Matrix3x3 const& RigidBodyInstance::effectiveWorldMassMatrix()
const { verifyIndex();
return getData()->effectiveWorldMassMatrix[getIndex()]; }
1069 AGX_FORCE_INLINE agx::Matrix3x3& RigidBodyInstance::effectiveInvWorldMassMatrix() { verifyIndex();
return getData()->effectiveInvWorldMassMatrix[getIndex()]; }
1070 AGX_FORCE_INLINE agx::Matrix3x3 const& RigidBodyInstance::effectiveInvWorldMassMatrix()
const { verifyIndex();
return getData()->effectiveInvWorldMassMatrix[getIndex()]; }
1076 AGX_FORCE_INLINE agx::Matrix3x3 const& RigidBodyInstance::invWorldInertia()
const { verifyIndex();
return getData()->invWorldInertia[getIndex()]; }
1078 AGX_FORCE_INLINE agx::Matrix3x3& RigidBodyInstance::effectiveWorldInertia() { verifyIndex();
return getData()->effectiveWorldInertia[getIndex()]; }
1079 AGX_FORCE_INLINE agx::Matrix3x3 const& RigidBodyInstance::effectiveWorldInertia()
const { verifyIndex();
return getData()->effectiveWorldInertia[getIndex()]; }
1081 AGX_FORCE_INLINE agx::Matrix3x3& RigidBodyInstance::effectiveInvWorldInertia() { verifyIndex();
return getData()->effectiveInvWorldInertia[getIndex()]; }
1082 AGX_FORCE_INLINE agx::Matrix3x3 const& RigidBodyInstance::effectiveInvWorldInertia()
const { verifyIndex();
return getData()->effectiveInvWorldInertia[getIndex()]; }
1085 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyInstance::force()
const { verifyIndex();
return getData()->force[getIndex()]; }
1088 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyInstance::torque()
const { verifyIndex();
return getData()->torque[getIndex()]; }
1091 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyInstance::lastForce()
const { verifyIndex();
return getData()->lastForce[getIndex()]; }
1093 AGX_FORCE_INLINE agx::Vec3& RigidBodyInstance::lastTorque() { verifyIndex();
return getData()->lastTorque[getIndex()]; }
1094 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyInstance::lastTorque()
const { verifyIndex();
return getData()->lastTorque[getIndex()]; }
1109 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyInstance::velocity()
const { verifyIndex();
return getData()->velocity[getIndex()]; }
1111 AGX_FORCE_INLINE agx::Vec3& RigidBodyInstance::angularVelocity() { verifyIndex();
return getData()->angularVelocity[getIndex()]; }
1112 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyInstance::angularVelocity()
const { verifyIndex();
return getData()->angularVelocity[getIndex()]; }
1114 AGX_FORCE_INLINE agx::Vec3& RigidBodyInstance::linearAcceleration() { verifyIndex();
return getData()->linearAcceleration[getIndex()]; }
1115 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyInstance::linearAcceleration()
const { verifyIndex();
return getData()->linearAcceleration[getIndex()]; }
1117 AGX_FORCE_INLINE agx::Vec3& RigidBodyInstance::angularAcceleration() { verifyIndex();
return getData()->angularAcceleration[getIndex()]; }
1118 AGX_FORCE_INLINE agx::Vec3 const& RigidBodyInstance::angularAcceleration()
const { verifyIndex();
return getData()->angularAcceleration[getIndex()]; }
1120 AGX_FORCE_INLINE agx::Vec3f& RigidBodyInstance::linearVelocityDamping() { verifyIndex();
return getData()->linearVelocityDamping[getIndex()]; }
1121 AGX_FORCE_INLINE agx::Vec3f const& RigidBodyInstance::linearVelocityDamping()
const { verifyIndex();
return getData()->linearVelocityDamping[getIndex()]; }
1123 AGX_FORCE_INLINE agx::Vec3f& RigidBodyInstance::angularVelocityDamping() { verifyIndex();
return getData()->angularVelocityDamping[getIndex()]; }
1124 AGX_FORCE_INLINE agx::Vec3f const& RigidBodyInstance::angularVelocityDamping()
const { verifyIndex();
return getData()->angularVelocityDamping[getIndex()]; }
1126 AGX_FORCE_INLINE agx::Vec3f& RigidBodyInstance::linearVelocityZeroDamping() { verifyIndex();
return getData()->linearVelocityZeroDamping[getIndex()]; }
1127 AGX_FORCE_INLINE agx::Vec3f const& RigidBodyInstance::linearVelocityZeroDamping()
const { verifyIndex();
return getData()->linearVelocityZeroDamping[getIndex()]; }
1129 AGX_FORCE_INLINE agx::Vec3f& RigidBodyInstance::angularVelocityZeroDamping() { verifyIndex();
return getData()->angularVelocityZeroDamping[getIndex()]; }
1130 AGX_FORCE_INLINE agx::Vec3f const& RigidBodyInstance::angularVelocityZeroDamping()
const { verifyIndex();
return getData()->angularVelocityZeroDamping[getIndex()]; }
1138 AGX_FORCE_INLINE agx::Range6& RigidBodyInstance::velocityRanges() { verifyIndex();
return getData()->velocityRanges[getIndex()]; }
1139 AGX_FORCE_INLINE agx::Range6 const& RigidBodyInstance::velocityRanges()
const { verifyIndex();
return getData()->velocityRanges[getIndex()]; }
1145 AGX_FORCE_INLINE agx::UInt32 const& RigidBodyInstance::solveIndex()
const { verifyIndex();
return getData()->solveIndex[getIndex()]; }
1147 AGX_FORCE_INLINE agx::UInt16& RigidBodyInstance::numConstraints() { verifyIndex();
return getData()->numConstraints[getIndex()]; }
1148 AGX_FORCE_INLINE agx::UInt16 const& RigidBodyInstance::numConstraints()
const { verifyIndex();
return getData()->numConstraints[getIndex()]; }
1161# pragma warning(pop)
1164#undef AGX_ENTITY_WRAPPER
1165#undef AGX_ENTITY_NAMESPACE
#define AGX_DECLARE_POINTER_TYPES(type)
#define AGX_TYPE_BINDING(_Type, _Name)
#define AGXPHYSICS_EXPORT
Type-specific Array used for fast access into the data held by a Buffer.
Entity instance provides access to a single instance in an EntityStorage.
bool isInstanceOf(agxData::EntityModel *model) const
agxData::EntityData * getData()
Accessor to a entity instance stored in a EntityStorage, to allow SOA (structure of arrays) data to b...
EntityPtr & operator=(const EntityPtr &other)=default
bool isInstanceOf(agxData::EntityModel *model) const
agxData::EntityData * getData()
agxData::EntityInstance instance()
Data storage for a collection of entity instances of a specified EntityModel.
agx::String fullPath() const
Representation of a name string.
Pointer to a entity instance of type Physics.Geometry.
Pointer to a entity instance of type Physics.GraphNode.
Abstract description of the data attributes for the Physics.RigidBody entity.
static agxData::ScalarAttributeT< agx::Vec3 > * velocityAttribute
static agxData::ScalarAttributeT< agx::Vec3f > * linearVelocityZeroDampingAttribute
static agxData::ScalarAttributeT< agx::AffineMatrix4x4 > * cmTransformAttribute
static agxData::ScalarAttributeT< agx::Vec3 > * angularVelocityAttribute
static RigidBodyModel * instance()
RigidBodyModel(const agx::String &name="RigidBody")
static agxData::ScalarAttributeT< agx::Matrix3x3 > * invWorldInertiaAttribute
static agxData::ScalarAttributeT< agx::Matrix3x3 > * invWorldMassMatrixAttribute
static agxData::ScalarAttributeT< agx::Matrix3x3 > * effectiveWorldInertiaAttribute
static agxData::ScalarAttributeT< agx::Vec3 > * forceAttribute
static agxData::ScalarAttributeT< agx::Real > * invMassAttribute
static agxData::ScalarAttributeT< agx::Vec3 > * torqueAttribute
static agxData::EntityStorage * defaultStorage()
virtual void initAttributeAccessors() override
static agxData::ScalarAttributeT< agx::Range6 > * velocityRangesAttribute
static agxData::ScalarAttributeT< agx::Matrix3x3 > * worldMassMatrixAttribute
static agxData::PointerAttributeT< agx::RigidBody * > * modelAttribute
static agxData::ScalarAttributeT< agx::UInt32 > * solveIndexAttribute
virtual ~RigidBodyModel()
virtual agxData::EntityData * createData(agxData::EntityStorage *storage) override
static agxData::ScalarAttributeT< agx::Matrix3x3 > * effectiveWorldMassMatrixAttribute
static agxData::ScalarAttributeT< agx::Physics::GeometryPtr > * geometryAttribute
virtual void construct(agxData::EntityPtr instance) override
static agxData::ScalarAttributeT< agx::Matrix3x3 > * effectiveInvWorldInertiaAttribute
static agxData::ScalarAttributeT< agx::RigidBodyState > * stateAttribute
static agxData::ScalarAttributeT< agx::Vec3f > * angularVelocityDampingAttribute
static agxData::ScalarAttributeT< agx::Vec3 > * linearAccelerationAttribute
static agxData::ScalarAttributeT< agx::Matrix3x3 > * worldInertiaAttribute
static agxData::ScalarAttributeT< agx::Vec3 > * effectiveMassTransformDiagonalAttribute
void construct(agx::Physics::RigidBodyPtr rigidBody)
static agxData::ScalarAttributeT< agx::Vec3 > * lastForceAttribute
static agxData::ScalarAttributeT< agx::Name > * nameAttribute
static agxData::ScalarAttributeT< agx::Vec3 > * angularAccelerationAttribute
static agxData::ScalarAttributeT< agx::Vec3 > * effectiveInertiaCoefficientsAttribute
virtual void configure(agx::TiXmlElement *eEntity) override
static agxData::ScalarAttributeT< agx::UInt32 > * idAttribute
static agxData::ScalarAttributeT< agx::Vec3f > * angularVelocityZeroDampingAttribute
static RigidBodyPtr createInstance()
Create and return a pointer to a new instance in the default storage for this entity model.
static agxData::ScalarAttributeT< agx::UInt16 > * numConstraintsAttribute
static agxData::ScalarAttributeT< agx::Vec3 > * effectiveMassCoefficientsAttribute
static agxData::ScalarAttributeT< agx::Vec3 > * effectiveMassAttribute
static agxData::ScalarAttributeT< agx::AffineMatrix4x4 > * localModelTransformAttribute
virtual void shutdownCleanup() override
This is part of internal cleanup and should not be called by users.
static agxData::ScalarAttributeT< agx::SPDMatrix3x3 > * inertiaAttribute
static agxData::ScalarAttributeT< agx::Vec3 > * lastTorqueAttribute
static agxData::ScalarAttributeT< agx::Vec3f > * linearVelocityDampingAttribute
static agxData::ScalarAttributeT< agx::Real > * massAttribute
static agxData::ScalarAttributeT< agx::AffineMatrix4x4 > * localCmTransformAttribute
static agxData::ScalarAttributeT< agx::AffineMatrix4x4 > * modelTransformAttribute
static agxData::ScalarAttributeT< agx::Physics::GraphNodePtr > * graphNodeAttribute
static agxData::ScalarAttributeT< agx::Matrix3x3 > * effectiveInvWorldMassMatrixAttribute
static agxData::ScalarAttributeT< agx::SPDMatrix3x3 > * effectiveInertiaAttribute
Pointer to a entity instance of type Physics.RigidBody.
AGXPHYSICS_EXPORT agx::RigidBody *& model()
AGXPHYSICS_EXPORT agx::SPDMatrix3x3 const & effectiveInertia() const
AGXPHYSICS_EXPORT agx::Vec3 const & lastTorque() const
AGXPHYSICS_EXPORT agx::Matrix3x3 & effectiveWorldInertia()
AGXPHYSICS_EXPORT agx::Range6 & velocityRanges()
AGXPHYSICS_EXPORT agx::Vec3 const & linearAcceleration() const
AGXPHYSICS_EXPORT agx::AffineMatrix4x4 & localModelTransform()
AGXPHYSICS_EXPORT const RigidBodyInstance instance() const
AGXPHYSICS_EXPORT agx::UInt32 & id()
AGXPHYSICS_EXPORT agx::AffineMatrix4x4 const & localCmTransform() const
AGXPHYSICS_EXPORT agx::Matrix3x3 const & effectiveWorldMassMatrix() const
AGXPHYSICS_EXPORT agx::Vec3f const & angularVelocityDamping() const
AGXPHYSICS_EXPORT const RigidBodySemantics * operator->() const
AGXPHYSICS_EXPORT agx::Vec3 const & lastForce() const
AGXPHYSICS_EXPORT agx::AffineMatrix4x4 const & localModelTransform() const
AGXPHYSICS_EXPORT agx::Matrix3x3 const & effectiveInvWorldInertia() const
AGXPHYSICS_EXPORT agx::Matrix3x3 & worldMassMatrix()
AGXPHYSICS_EXPORT RigidBodyPtr(agxData::EntityStorage *storage, agx::Index id)
AGXPHYSICS_EXPORT agx::Real & mass()
AGXPHYSICS_EXPORT agx::Vec3f & linearVelocityDamping()
AGXPHYSICS_EXPORT agx::Vec3f const & angularVelocityZeroDamping() const
AGXPHYSICS_EXPORT agx::UInt16 const & numConstraints() const
AGXPHYSICS_EXPORT agx::Vec3f & angularVelocityZeroDamping()
AGXPHYSICS_EXPORT agx::Vec3 & velocity()
AGXPHYSICS_EXPORT agx::Vec3f const & linearVelocityDamping() const
AGXPHYSICS_EXPORT agx::Physics::GeometryPtr const & geometry() const
AGXPHYSICS_EXPORT agx::RigidBody *const & model() const
AGXPHYSICS_EXPORT agx::RigidBodyState const & state() const
AGXPHYSICS_EXPORT RigidBodyPtr()
AGXPHYSICS_EXPORT agx::Real const & mass() const
const RigidBodyData * getData() const
AGXPHYSICS_EXPORT agx::Vec3 const & torque() const
AGXPHYSICS_EXPORT agx::Vec3f & angularVelocityDamping()
AGXPHYSICS_EXPORT agx::Matrix3x3 const & worldInertia() const
AGXPHYSICS_EXPORT agx::Vec3 const & effectiveInertiaCoefficients() const
AGXPHYSICS_EXPORT agx::AffineMatrix4x4 const & modelTransform() const
AGXPHYSICS_EXPORT agx::Vec3 const & angularVelocity() const
AGXPHYSICS_EXPORT agx::AffineMatrix4x4 & localCmTransform()
AGXPHYSICS_EXPORT agx::Matrix3x3 & invWorldInertia()
AGXPHYSICS_EXPORT agx::Vec3 & angularVelocity()
AGXPHYSICS_EXPORT agx::Vec3 & effectiveInertiaCoefficients()
AGXPHYSICS_EXPORT RigidBodyPtr(const agxData::EntityInstance &instance)
AGXPHYSICS_EXPORT agx::UInt32 const & id() const
AGXPHYSICS_EXPORT agx::Real & invMass()
AGXPHYSICS_EXPORT agx::Vec3 & effectiveMassTransformDiagonal()
AGXPHYSICS_EXPORT agx::Vec3 & lastTorque()
AGXPHYSICS_EXPORT agx::UInt32 const & solveIndex() const
AGXPHYSICS_EXPORT agx::Vec3 & effectiveMass()
AGXPHYSICS_EXPORT agx::Vec3f & linearVelocityZeroDamping()
RigidBodyData * getData()
AGXPHYSICS_EXPORT agx::Name & name()
AGXPHYSICS_EXPORT agx::Vec3 const & angularAcceleration() const
AGXPHYSICS_EXPORT agx::SPDMatrix3x3 & effectiveInertia()
AGXPHYSICS_EXPORT agx::Vec3 const & velocity() const
AGXPHYSICS_EXPORT agx::Matrix3x3 & worldInertia()
AGXPHYSICS_EXPORT agx::SPDMatrix3x3 const & inertia() const
AGXPHYSICS_EXPORT RigidBodyPtr(const agxData::EntityPtr &ptr)
AGXPHYSICS_EXPORT agx::Vec3f const & linearVelocityZeroDamping() const
AGXPHYSICS_EXPORT agx::UInt16 & numConstraints()
AGXPHYSICS_EXPORT agx::AffineMatrix4x4 const & cmTransform() const
AGXPHYSICS_EXPORT agx::Vec3 & effectiveMassCoefficients()
RigidBodyInstance InstanceType
AGXPHYSICS_EXPORT agx::Real const & invMass() const
AGXPHYSICS_EXPORT agx::Matrix3x3 const & effectiveWorldInertia() const
AGXPHYSICS_EXPORT agx::Matrix3x3 const & invWorldMassMatrix() const
AGXPHYSICS_EXPORT agx::Vec3 & torque()
AGXPHYSICS_EXPORT agx::Matrix3x3 const & worldMassMatrix() const
AGXPHYSICS_EXPORT agx::Vec3 const & effectiveMass() const
AGXPHYSICS_EXPORT agx::Vec3 const & effectiveMassTransformDiagonal() const
AGXPHYSICS_EXPORT agx::Matrix3x3 & effectiveInvWorldMassMatrix()
AGXPHYSICS_EXPORT agx::Matrix3x3 & invWorldMassMatrix()
AGXPHYSICS_EXPORT agx::Vec3 & lastForce()
AGXPHYSICS_EXPORT agx::RigidBodyState & state()
AGXPHYSICS_EXPORT agx::AffineMatrix4x4 & modelTransform()
AGXPHYSICS_EXPORT RigidBodyInstance instance()
AGXPHYSICS_EXPORT agx::SPDMatrix3x3 & inertia()
AGXPHYSICS_EXPORT agx::Vec3 & linearAcceleration()
AGXPHYSICS_EXPORT agx::Matrix3x3 const & effectiveInvWorldMassMatrix() const
AGXPHYSICS_EXPORT agx::UInt32 & solveIndex()
AGXPHYSICS_EXPORT agx::Vec3 & force()
AGXPHYSICS_EXPORT agx::Physics::GraphNodePtr const & graphNode() const
AGXPHYSICS_EXPORT agx::Vec3 const & force() const
AGXPHYSICS_EXPORT agx::Name const & name() const
AGXPHYSICS_EXPORT agx::Matrix3x3 & effectiveWorldMassMatrix()
AGXPHYSICS_EXPORT agx::Range6 const & velocityRanges() const
AGXPHYSICS_EXPORT agx::Matrix3x3 const & invWorldInertia() const
AGXPHYSICS_EXPORT agx::Vec3 & angularAcceleration()
AGXPHYSICS_EXPORT agx::Matrix3x3 & effectiveInvWorldInertia()
AGXPHYSICS_EXPORT agx::AffineMatrix4x4 & cmTransform()
AGXPHYSICS_EXPORT RigidBodySemantics * operator->()
AGXPHYSICS_EXPORT agx::Physics::GeometryPtr & geometry()
AGXPHYSICS_EXPORT agx::Physics::GraphNodePtr & graphNode()
AGXPHYSICS_EXPORT agx::Vec3 const & effectiveMassCoefficients() const
Abstract description of the data attributes for the Referenced entity.
Pointer to a entity instance of type Referenced.
The rigid body class, combining a geometric model and a frame of reference.
Specialized type of matrices for holding symmetric positive definite matrices.
Vector containing 'raw' data.
#define agxAssertN(expr, format,...)
#define DOXYGEN_END_INTERNAL_BLOCK()
#define DOXYGEN_START_INTERNAL_BLOCK()
Contains classes for low level data storage for AGX.
agxData::EntityRef< RigidBodyPtr > RigidBodyRef
The agx namespace contains the dynamics/math part of the AGX Dynamics API.
AGXCORE_EXPORT Model * getModel(const Path &path, const Path &_namespace=Path())