public void NewRigidStateTest() { Rigid r = new Rigid (1, new Matrix (1, 1, 1)); RigidState rs = new RigidState (r); Assert.AreEqual (0, rs.CenterOfMass.X); Assert.AreEqual (0, rs.CenterOfMass.Y); Assert.AreEqual (0, rs.CenterOfMass.Z); }
public void SimulateMovementTest() { Rigid r = new Rigid (1, new Matrix (1, 1, 1)); RigidState rs = new RigidState (r); rs.LinearAcceleration = new Vector (1, 0, 0); rs.SimulateMovement (1, new Euler ()); Assert.AreEqual (1, rs.CenterOfMass.X, 0.01); Assert.AreEqual (0, rs.CenterOfMass.Y, 0.01); Assert.AreEqual (0, rs.CenterOfMass.Z, 0.01); }
public void SetRecordedInfo(string rigidBodyName, Vector3 pos, Quaternion rot) { if (initialState == null) { return; } int num = 0; while (true) { if (num < initialState.Length) { string gameObjectPath = GetGameObjectPath(initialState[num].rigid.transform); if (gameObjectPath == rigidBodyName) { break; } num++; continue; } return; } RigidState rigidState = initialState[num]; rigidState.recorded = true; rigidState.recordedPosition = pos; rigidState.recordedRotation = rot; initialState[num] = rigidState; rigidState.rigid.MovePosition(pos); rigidState.rigid.MoveRotation(rot); rigidState.rigid.transform.position = pos; rigidState.rigid.transform.rotation = rot; Rigidbody rigid = rigidState.rigid; Vector3 zero = Vector3.zero; rigidState.rigid.velocity = zero; rigid.angularVelocity = zero; rigidState.rigid.Sleep(); }
/// <summary> /// Creates for each <see cref="Rigid"/> in the World a <see cref="RigidState"/> /// </summary> public void InitState() { foreach (IRigid r in World.Rigids) { RigidStates [r] = new RigidState (r); } UpdateStateForces (); }