Add serialization for btRigidBody (all work-in-progress)
This commit is contained in:
@@ -315,3 +315,39 @@ void btRigidBody::removeConstraintRef(btTypedConstraint* c)
|
|||||||
m_constraintRefs.remove(c);
|
m_constraintRefs.remove(c);
|
||||||
m_checkCollideWith = m_constraintRefs.size() > 0;
|
m_checkCollideWith = m_constraintRefs.size() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int btRigidBody::calculateSerializeBufferSize() const
|
||||||
|
{
|
||||||
|
int sz = sizeof(btRigidBodyData);
|
||||||
|
return sz;
|
||||||
|
}
|
||||||
|
|
||||||
|
///fills the dataBuffer and returns the struct name (and 0 on failure)
|
||||||
|
const char* btRigidBody::serialize(void* dataBuffer) const
|
||||||
|
{
|
||||||
|
btRigidBodyData* rbd = (btRigidBodyData*) dataBuffer;
|
||||||
|
m_invInertiaTensorWorld.serialize(rbd->m_invInertiaTensorWorld);
|
||||||
|
m_linearVelocity.serialize(rbd->m_linearVelocity);
|
||||||
|
m_angularVelocity.serialize(rbd->m_angularVelocity);
|
||||||
|
rbd->m_inverseMass = m_inverseMass;
|
||||||
|
m_angularFactor.serialize(rbd->m_angularFactor);
|
||||||
|
m_linearFactor.serialize(rbd->m_linearFactor);
|
||||||
|
m_gravity.serialize(rbd->m_gravity);
|
||||||
|
m_gravity_acceleration.serialize(rbd->m_gravity_acceleration);
|
||||||
|
m_invInertiaLocal.serialize(rbd->m_invInertiaLocal);
|
||||||
|
m_totalForce.serialize(rbd->m_totalForce);
|
||||||
|
m_totalTorque.serialize(rbd->m_totalTorque);
|
||||||
|
rbd->m_linearDamping = m_linearDamping;
|
||||||
|
rbd->m_angularDamping = m_angularDamping;
|
||||||
|
rbd->m_additionalDamping = m_additionalDamping;
|
||||||
|
rbd->m_additionalDampingFactor = m_additionalDampingFactor;
|
||||||
|
rbd->m_additionalLinearDampingThresholdSqr = m_additionalLinearDampingThresholdSqr;
|
||||||
|
rbd->m_additionalAngularDampingThresholdSqr = m_additionalAngularDampingThresholdSqr;
|
||||||
|
rbd->m_additionalAngularDampingFactor = m_additionalAngularDampingFactor;
|
||||||
|
rbd->m_linearSleepingThreshold=m_linearSleepingThreshold;
|
||||||
|
rbd->m_angularSleepingThreshold = m_angularSleepingThreshold;
|
||||||
|
|
||||||
|
btCollisionObject::serialize(&rbd->m_collisionObjectData);
|
||||||
|
|
||||||
|
return "btRigidBodyData";
|
||||||
|
}
|
||||||
@@ -75,7 +75,6 @@ class btRigidBody : public btCollisionObject
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
||||||
///The btRigidBodyConstructionInfo structure provides information to create a rigid body. Setting mass to zero creates a fixed (non-dynamic) rigid body.
|
///The btRigidBodyConstructionInfo structure provides information to create a rigid body. Setting mass to zero creates a fixed (non-dynamic) rigid body.
|
||||||
///For dynamic objects, you can use the collision shape to approximate the local inertia tensor, otherwise use the zero vector (default argument)
|
///For dynamic objects, you can use the collision shape to approximate the local inertia tensor, otherwise use the zero vector (default argument)
|
||||||
///You can use the motion state to synchronize the world transform between physics and graphics objects.
|
///You can use the motion state to synchronize the world transform between physics and graphics objects.
|
||||||
@@ -495,6 +494,46 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
int m_debugBodyId;
|
int m_debugBodyId;
|
||||||
|
|
||||||
|
virtual int calculateSerializeBufferSize() const;
|
||||||
|
|
||||||
|
///fills the dataBuffer and returns the struct name (and 0 on failure)
|
||||||
|
virtual const char* serialize(void* dataBuffer) const;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
//@todo add m_optionalMotionState and m_constraintRefs to btRigidBodyData
|
||||||
|
///btRigidBodyData is used for btRigidBody serialization
|
||||||
|
struct btRigidBodyData
|
||||||
|
{
|
||||||
|
btMatrix3x3Data m_invInertiaTensorWorld;
|
||||||
|
btVector3Data m_linearVelocity;
|
||||||
|
btVector3Data m_angularVelocity;
|
||||||
|
btScalar m_inverseMass;
|
||||||
|
btVector3Data m_angularFactor;
|
||||||
|
btVector3Data m_linearFactor;
|
||||||
|
|
||||||
|
btVector3Data m_gravity;
|
||||||
|
btVector3Data m_gravity_acceleration;
|
||||||
|
btVector3Data m_invInertiaLocal;
|
||||||
|
btVector3Data m_totalForce;
|
||||||
|
btVector3Data m_totalTorque;
|
||||||
|
|
||||||
|
btScalar m_linearDamping;
|
||||||
|
btScalar m_angularDamping;
|
||||||
|
|
||||||
|
int m_additionalDamping;
|
||||||
|
btScalar m_additionalDampingFactor;
|
||||||
|
btScalar m_additionalLinearDampingThresholdSqr;
|
||||||
|
btScalar m_additionalAngularDampingThresholdSqr;
|
||||||
|
btScalar m_additionalAngularDampingFactor;
|
||||||
|
|
||||||
|
|
||||||
|
btScalar m_linearSleepingThreshold;
|
||||||
|
btScalar m_angularSleepingThreshold;
|
||||||
|
|
||||||
|
btCollisionObjectData m_collisionObjectData;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user