private HardPoint(HardPointPosition position) { Position = position; Speed = 0.5d; CalculateHardPoint(position, out _origin, out _radiansOfMovement); Orientation = _origin; }
private HardPoint(HardPointPosition position) { Position = position; Speed = 0.5d; switch (Position) { case HardPointPosition.Front: this.origin = new Vector(0, 1, 0); Rotation = Math.PI; break; case HardPointPosition.Rear: this.origin = new Vector(0, -1, 0); Rotation = Math.PI; break; case HardPointPosition.Left: this.origin = new Vector(-1, 0, 0); Rotation = Math.PI / 2; break; case HardPointPosition.Right: this.origin = new Vector(1, 0, 0); Rotation = Math.PI / 2; break; case HardPointPosition.Top: this.origin = new Vector(0, 1, 0); Rotation = Math.PI * 2; break; case HardPointPosition.Bottom: this.origin = new Vector(0, 1, 0); Rotation = Math.PI * 2; break; default: throw new ArgumentOutOfRangeException(); } Orientation = this.origin; }
public HardPoint(Ship ship, HardPointPosition position) : this(position) { Ship = ship; }
public static HardPoint FactoryHardPoint(HardPointPosition position) { return new HardPoint(position); }
public static Vector CalculateOrientation(HardPointPosition position) { double radiansOfMovement; Vector origin; CalculateHardPoint(position, out origin, out radiansOfMovement); return origin; }
public static void CalculateHardPoint(HardPointPosition position, out Vector origin, out double radiansOfMovement) { switch ( position ) { case HardPointPosition.Front: origin = new Vector(0, 1, 0); radiansOfMovement = Math.PI; break; case HardPointPosition.Rear: origin = new Vector(0, -1, 0); radiansOfMovement = Math.PI; break; case HardPointPosition.Left: origin = new Vector(-1, 0, 0); radiansOfMovement = Math.PI / 2; break; case HardPointPosition.Right: origin = new Vector(1, 0, 0); radiansOfMovement = Math.PI / 2; break; case HardPointPosition.Top: origin = new Vector(0, 1, 0); radiansOfMovement = Math.PI * 2; break; case HardPointPosition.Bottom: origin = new Vector(0, 1, 0); radiansOfMovement = Math.PI * 2; break; default: throw new ArgumentOutOfRangeException(); } }
private void CanTrack(Vector shipHeading, HardPointPosition position, CanTrackResult expected) { _ship.Heading = shipHeading; CanTrack(position, expected); }
private void CanTrack(HardPointPosition position, CanTrackResult expected) { var hp = new HardPoint(_ship, position); Assert.That(hp.CanTrack(_leftTarget), Is.EqualTo(expected.Left), "Can track left"); Assert.That(hp.CanTrack(_rightTarget), Is.EqualTo(expected.Right), "Can track right"); Assert.That(hp.CanTrack(_frontTarget), Is.EqualTo(expected.Front), "Can track front"); Assert.That(hp.CanTrack(_rearTarget), Is.EqualTo(expected.Rear), "Can track rear"); Assert.That(hp.CanTrack(_sideTarget), Is.EqualTo(expected.LeftTop), "Can track left-top"); }
public void RotateHardPointToHeading(HardPointPosition hardPointPosition, string heading, string expected) { var hp = HardPoint.CalculateOrientation(hardPointPosition); var headingVector = Vector.Parse(heading); var upVector = new Vector(0, 1); var rightVector = (headingVector * upVector); var rotate = Vector.Angle(upVector, headingVector); var newHp = rightVector.Z >= 0d ? hp.RotateZ(-rotate) : hp.RotateZ(rotate); Assert.That(newHp, Is.EqualTo(Vector.Parse(expected))); }