public Vector3 GetVelocity(Vector3 position, CoordinateSpace positionSpace = CoordinateSpace.Global, CoordinateSpace velocitySpace = CoordinateSpace.Global) { Vector3 result = positionSpace == CoordinateSpace.Global ? _rigidBody.WrappedActor.GetPointVelocity(position.ToPhysX()).ToStandard() : _rigidBody.WrappedActor.GetLocalPointVelocity(position.ToPhysX()).ToStandard(); return ToCorrectSpace(velocitySpace, result); }
public void SetLinearVelocity(Vector3 velocity, CoordinateSpace velocitySpace = CoordinateSpace.Global) { if (velocitySpace == CoordinateSpace.Local) { velocity = _rigidBody.Pose.ToGlobalDirection(velocity); } _rigidBody.WrappedActor.LinearVelocity = velocity.ToPhysX(); }
public Vector3 GetVelocity(Vector3 position, CoordinateSpace positionSpace = CoordinateSpace.Global, CoordinateSpace velocitySpace = CoordinateSpace.Global) { Vector3 result = positionSpace == CoordinateSpace.Global ? _rigidBody.WrappedActor.GetPointVelocity(position.ToPhysX()).ToStandard() : _rigidBody.WrappedActor.GetLocalPointVelocity(position.ToPhysX()).ToStandard(); return(ToCorrectSpace(velocitySpace, result)); }
public void ApplyLinearImpulse(Vector3 impulse, CoordinateSpace impulseSpace = CoordinateSpace.Global) { if (impulseSpace == CoordinateSpace.Local) { impulse = _rigidBody.Pose.ToGlobalDirection(impulse); } _rigidBody.WrappedActor.AddForce(impulse.ToPhysX(), ForceMode.Impulse); }
public void AddTorque(Vector3 torque, CoordinateSpace torqueSpace = CoordinateSpace.Global) { if (torqueSpace == CoordinateSpace.Local) { torque = _rigidBody.Pose.ToGlobalDirection(torque); } _rigidBody.WrappedActor.AddTorque(torque.ToPhysX(), ForceMode.Force); }
public void AddForce(Vector3 force, CoordinateSpace forceSpace = CoordinateSpace.Global) { if (forceSpace == CoordinateSpace.Local) { force = _rigidBody.Pose.ToGlobalDirection(force); } _rigidBody.WrappedActor.AddForce(force.ToPhysX(), ForceMode.Force); }
public void ApplyImpulse(Vector3 impulse, Vector3 position, CoordinateSpace impulseSpace = CoordinateSpace.Global, CoordinateSpace positionSpace = CoordinateSpace.Global) { if (impulseSpace == CoordinateSpace.Local) { impulse = _rigidBody.Pose.ToGlobalDirection(impulse); } if (positionSpace == CoordinateSpace.Local) { position = _rigidBody.Pose.ToGlobalPosition(position); } _rigidBody.WrappedActor.AddForceAtPosition(impulse.ToPhysX(), position.ToPhysX(), ForceMode.Impulse); }
public void AddForce(Vector3 force, Vector3 position, CoordinateSpace forceSpace = CoordinateSpace.Global, CoordinateSpace positionSpace = CoordinateSpace.Global) { if (forceSpace == CoordinateSpace.Local) { force = _rigidBody.Pose.ToGlobalDirection(force); } if (positionSpace == CoordinateSpace.Local) { position = _rigidBody.Pose.ToGlobalPosition(position); } _rigidBody.WrappedActor.AddForceAtPosition(force.ToPhysX(), position.ToPhysX(), ForceMode.Force); }
private void UpdatePlane() { Vector3 p = DistanceFromOrigin * _normal; Vector4 pWith1 = new Vector4(p.X, p.Y, p.Z, 1); Vector4 pPrimeWiht1 = GMath.mul(pWith1, _pose); Vector3 pPrime = new Vector3(pPrimeWiht1.X, pPrimeWiht1.Y, pPrimeWiht1.Z); Vector4 nWith0 = new Vector4(_normal.X, _normal.Y, _normal.Z, 0); Vector4 nPrimeWith0 = GMath.mul(nWith0, _pose.Transpose.Inverse); Vector3 nPrime = new Vector3(nPrimeWith0.X, nPrimeWith0.Y, nPrimeWith0.Z); float d = GMath.dot(pPrime, nPrime); _wrappedPlaneShape.Normal = nPrime.ToPhysX(); _wrappedPlaneShape.Distance = d; }
public void SetLinearVelocity(Vector3 velocity, CoordinateSpace velocitySpace = CoordinateSpace.Global) { if (velocitySpace == CoordinateSpace.Local) velocity = _rigidBody.Pose.ToGlobalDirection(velocity); _rigidBody.WrappedActor.LinearVelocity = velocity.ToPhysX(); }