public static void LockRotation(ref Quaternion rotation, Vector3 lockedRots) { lockedRots -= -Vector3.One; Vector3 rots = GameComponentHelper.QuaternionToEulerAngleVector3(rotation) * lockedRots; rotation = Quaternion.CreateFromRotationMatrix(Matrix.CreateRotationX(rots.X) * Matrix.CreateRotationY(rots.Y) * Matrix.CreateRotationX(rots.Z)); }
/// <summary> /// Method to revolve and object /// </summary> /// <param name="target"></param> /// <param name="axis"></param> /// <param name="angle"></param> /// <param name="position"></param> /// <param name="rotation"></param> public static void Revolve(Vector3 target, Vector3 axis, float angle, ref Vector3 position, ref Quaternion rotation) { GameComponentHelper.Rotate(axis, angle, ref rotation); Vector3 revolveAxis = Vector3.Transform(axis, Matrix.CreateFromQuaternion(rotation)); Quaternion rotate = Quaternion.CreateFromAxisAngle(revolveAxis, angle); position = Vector3.Transform(target - position, Matrix.CreateFromQuaternion(rotate)); }
/// <summary> /// Method to rotate object /// </summary> /// <param name="axis"></param> /// <param name="angle"></param> public virtual void Rotate(Vector3 axis, float angle) { GameComponentHelper.Rotate(axis, angle, ref rotation); }
public virtual void TranslateAA(Vector3 distance) { Position += GameComponentHelper.Translate3D(distance); }
public virtual void LookAtLockRotation(Vector3 target, float speed, Vector3 fwd, Vector3 lockedRots) { GameComponentHelper.LookAtLockRotation(target, speed, Position, ref rotation, fwd, lockedRots); }
/// <summary> /// Method to turn the camera at a target. /// </summary> /// <param name="target"></param> /// <param name="speed"></param> public virtual void LookAt(Vector3 target, float speed, Vector3 fwd) { GameComponentHelper.LookAt(target, speed, Position, ref rotation, fwd); }