dCollisionBoxNodeInfo::dCollisionBoxNodeInfo(NewtonCollision* box) :dCollisionNodeInfo () { NewtonCollisionInfoRecord record; NewtonCollisionGetInfo(box, &record); _ASSERTE (record.m_collisionType == SERIALIZE_ID_BOX); dMatrix& offsetMatrix = *((dMatrix*) record.m_offsetMatrix); SetName ("box collision"); m_size = dVector (record.m_box.m_x, record.m_box.m_z, record.m_box.m_y); SetTransform (offsetMatrix); SetShapeId (record.m_collisionUserID); CalculateGeometryProperies (box, m_geometricInertia, m_geometricCenterAndVolume); }
dCollisionCompoundNodeInfo::dCollisionCompoundNodeInfo(NewtonCollision* const compound) :dCollisionNodeInfo () { NewtonCollisionInfoRecord record; NewtonCollisionGetInfo(compound, &record); dAssert (record.m_collisionType == SERIALIZE_ID_COMPOUND); dMatrix& offsetMatrix = *((dMatrix*) record.m_offsetMatrix); SetName ("compound collision"); SetTransform (offsetMatrix); SetShapeId (record.m_collisionUserID); CalculateGeometryProperies (compound, m_geometricInertia, m_geometricCenterAndVolume); }
dCollisionConeNodeInfo::dCollisionConeNodeInfo(NewtonCollision* const cylinder) :dCollisionNodeInfo () { NewtonCollisionInfoRecord record; NewtonCollisionGetInfo(cylinder, &record); dAssert (record.m_collisionType == SERIALIZE_ID_CONE); dMatrix& offsetMatrix = *((dMatrix*) record.m_offsetMatrix); SetName ("cone collision"); m_radius = record.m_cone.m_radio; m_height = record.m_cone.m_height; SetTransform (offsetMatrix); SetShapeId (record.m_collisionUserID); CalculateGeometryProperies (cylinder, m_geometricInertia, m_geometricCenterAndVolume); }