+ ////////////////////////////////////////////////////////////
+ // rigid bodies
+ ////////////////////////////////////////////////////////////
+ w.writeValue<DWORD>(rigidbodies.size());
+ for(size_t i=0; i<rigidbodies.size(); ++i){
+ RigidBody &rb=rigidbodies[i];
+ w.writeArray<char>(rb.name, 20);
+ w.writeValue<WORD>(rb.boneIndex);
+ w.writeValue<BYTE>(rb.group);
+ w.writeValue<WORD>(rb.target);
+ w.writeValue<BYTE>(rb.shapeType);
+ w.writeValue<float>(rb.w);
+ w.writeValue<float>(rb.h);
+ w.writeValue<float>(rb.d);
+ w.writeValue<float>(rb.position.x);
+ w.writeValue<float>(rb.position.y);
+ w.writeValue<float>(rb.position.z);
+ w.writeValue<float>(rb.rotation.x);
+ w.writeValue<float>(rb.rotation.y);
+ w.writeValue<float>(rb.rotation.z);
+ w.writeValue<float>(rb.weight);
+ w.writeValue<float>(rb.linearDamping);
+ w.writeValue<float>(rb.angularDamping);
+ w.writeValue<float>(rb.restitution);
+ w.writeValue<float>(rb.friction);
+ w.writeValue<BYTE>(rb.processType);
+ }
+
+ ////////////////////////////////////////////////////////////
+ // constraints
+ ////////////////////////////////////////////////////////////
+ w.writeValue<DWORD>(constraints.size());
+ for(size_t i=0; i<constraints.size(); ++i){
+ Constraint &c=constraints[i];
+ w.writeArray<char>(c.name, 20);
+ w.writeValue<DWORD>(c.rigidA);
+ w.writeValue<DWORD>(c.rigidB);
+ w.writeValue<float>(c.pos.x);
+ w.writeValue<float>(c.pos.y);
+ w.writeValue<float>(c.pos.z);
+ w.writeValue<float>(c.rot.x);
+ w.writeValue<float>(c.rot.y);
+ w.writeValue<float>(c.rot.z);
+ w.writeValue<float>(c.constraintPosMin.x);
+ w.writeValue<float>(c.constraintPosMin.y);
+ w.writeValue<float>(c.constraintPosMin.z);
+ w.writeValue<float>(c.constraintPosMax.x);
+ w.writeValue<float>(c.constraintPosMax.y);
+ w.writeValue<float>(c.constraintPosMax.z);
+ w.writeValue<float>(c.constraintRotMin.x);
+ w.writeValue<float>(c.constraintRotMin.y);
+ w.writeValue<float>(c.constraintRotMin.z);
+ w.writeValue<float>(c.constraintRotMax.x);
+ w.writeValue<float>(c.constraintRotMax.y);
+ w.writeValue<float>(c.constraintRotMax.z);
+ w.writeValue<float>(c.springPos.x);
+ w.writeValue<float>(c.springPos.y);
+ w.writeValue<float>(c.springPos.z);
+ w.writeValue<float>(c.springRot.x);
+ w.writeValue<float>(c.springRot.y);
+ w.writeValue<float>(c.springRot.z);
+ }
+