public void Force(Vector3 direction, ForceType forceType) { switch (forceType) { case ForceType.CentralForce: rigidBodyObject.ApplyCentralForce(direction); break; case ForceType.CentralImpulse: rigidBodyObject.ApplyCentralImpulse(direction); break; case ForceType.Torque: rigidBodyObject.ApplyTorque(direction); break; case ForceType.TorqueImpulse: rigidBodyObject.ApplyTorqueImpulse(direction); break; default: rigidBodyObject.ApplyForce(direction, gameObject._transform.Position); break; } }
protected override void Apply(RigidBody obj, int slice) { Vector3D pos = this.FPosition[slice]; Vector3D force = this.FForce[slice]; obj.ApplyForce(new Vector3((float)force.x, (float)force.y, (float)force.z), new Vector3((float)pos.x, (float)pos.y, (float)pos.z)); }
public unsafe static void ApplyForce(this RigidBody obj, ref OpenTK.Vector3 force, ref OpenTK.Vector3 rel_pos) { fixed(OpenTK.Vector3 *forcePtr = &force) { fixed(OpenTK.Vector3 *rel_posPtr = &rel_pos) { obj.ApplyForce(ref *(BulletSharp.Math.Vector3 *)forcePtr, ref *(BulletSharp.Math.Vector3 *)rel_posPtr); } } }