PxRigidDynamic* PxCloneDynamic(PxPhysics& physicsSDK, const PxTransform& transform, const PxRigidDynamic& from) { PxRigidDynamic* to = physicsSDK.createRigidDynamic(transform); if(!to) return NULL; copyStaticProperties(*to, from); to->setRigidDynamicFlags(from.getRigidDynamicFlags()); to->setMass(from.getMass()); to->setMassSpaceInertiaTensor(from.getMassSpaceInertiaTensor()); to->setCMassLocalPose(from.getCMassLocalPose()); to->setLinearVelocity(from.getLinearVelocity()); to->setAngularVelocity(from.getAngularVelocity()); to->setLinearDamping(from.getAngularDamping()); to->setAngularDamping(from.getAngularDamping()); to->setMaxAngularVelocity(from.getMaxAngularVelocity()); PxU32 posIters, velIters; from.getSolverIterationCounts(posIters, velIters); to->setSolverIterationCounts(posIters, velIters); to->setSleepThreshold(from.getSleepThreshold()); to->setContactReportThreshold(from.getContactReportThreshold()); return to; }
PxRigidDynamic* CloneDynamic(PxPhysics& physicsSDK, const PxTransform& transform, const PxRigidDynamic& from, NxMirrorScene::MirrorFilter &mirrorFilter) { PxRigidDynamic* to = physicsSDK.createRigidDynamic(transform); if(!to) return NULL; if ( !copyStaticProperties(*to, from, mirrorFilter) ) { to->release(); to = NULL; return NULL; } to->setRigidDynamicFlags(from.getRigidDynamicFlags()); to->setMass(from.getMass()); to->setMassSpaceInertiaTensor(from.getMassSpaceInertiaTensor()); to->setCMassLocalPose(from.getCMassLocalPose()); if ( !(to->getRigidDynamicFlags() & PxRigidDynamicFlag::eKINEMATIC) ) { to->setLinearVelocity(from.getLinearVelocity()); to->setAngularVelocity(from.getAngularVelocity()); } to->setLinearDamping(from.getAngularDamping()); to->setAngularDamping(from.getAngularDamping()); to->setMaxAngularVelocity(from.getMaxAngularVelocity()); PxU32 posIters, velIters; from.getSolverIterationCounts(posIters, velIters); to->setSolverIterationCounts(posIters, velIters); to->setSleepThreshold(from.getSleepThreshold()); to->setContactReportThreshold(from.getContactReportThreshold()); return to; }