Example #1
0
        private HardPoint(HardPointPosition position)
        {
            Position = position;
            Speed = 0.5d;

            CalculateHardPoint(position, out _origin, out _radiansOfMovement);
            Orientation = _origin;
        }
Example #2
0
        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;
        }
Example #3
0
 public HardPoint(Ship ship, HardPointPosition position)
     : this(position)
 {
     Ship = ship;
 }
Example #4
0
 public static HardPoint FactoryHardPoint(HardPointPosition position)
 {
     return new HardPoint(position);
 }
Example #5
0
        public static Vector CalculateOrientation(HardPointPosition position)
        {
            double radiansOfMovement;
            Vector origin;

            CalculateHardPoint(position, out origin, out radiansOfMovement);
            return origin;
        }
Example #6
0
 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();
     }
 }
Example #7
0
 private void CanTrack(Vector shipHeading, HardPointPosition position, CanTrackResult expected)
 {
     _ship.Heading = shipHeading;
     CanTrack(position, expected);
 }
Example #8
0
 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");
 }
Example #9
0
        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)));
        }