I’m trying to upgrade from 2.7 to 3.2.2, but I’m running into problems. First of all it seems the force field functionality is completely gone, fine, I guess that can be solved client side with triggers. But the larger issue is that NX_BF_FROZEN_* seems to be completely gone?
I didn´t use anything like field functionality in my previous project so I cant help you there.
But I can help you with the NX_BF_FROZEN_* problem:
You have to use joints for limiting rotation / movement.
Look at the documentation, there are varius joints for different needs.
But dont use joints for freezing the position - enable the kinematic flag instead.
Most advanced joint is the D6Joint: You can enable/disable all axis, for what ever you need.
You create the D6 Joint like this:
PxD6Joint* mJoint = PxD6JointCreate(*mPhysic->getSDK(), mActor, PxTransform::createIdentity(), NULL, mActor->getGlobalPose());
Look at the paramter NULL - it should be an another actor, ( when you are making a chain …), when the
paramter is NULL like here, it is “attached to nothing”. Thus its possible to limit the mActor to one rotation axis or something similar.
By default, all axis are frozen. Enable just the axis you need.
mJoint->setMotion(PxD6Axis::eX,PxD6Motion::eFREE); mJoint->setMotion(PxD6Axis::eY,PxD6Motion::eFREE); mJoint->setMotion(PxD6Axis::eZ,PxD6Motion::eFREE);
As I said before, look at the documentation to understand the joints. ( And their difference )