Example #1
0
 public Waypoint(Entity entity, MetersPerSecond speed, Vector3 position, Vector3 lookAt)
 {
     this.Entity   = entity;
     this.Speed    = speed;
     this.Position = position;
     this.LookAt   = lookAt;
 }
Example #2
0
        public Entity BuildCutScene()
        {
            var entity = this.EntityController.CreateEntity();

            this.DebugInfoFactory.Construct(entity);

            var speeds = new MetersPerSecond[]
            {
                new MetersPerSecond(15.0f),
                new MetersPerSecond(15.0f),
                new MetersPerSecond(15.0f),
                new MetersPerSecond(6.0f),
                new MetersPerSecond(15.0f),
                new MetersPerSecond(15.0f),
                new MetersPerSecond(15.0f),
                new MetersPerSecond(15.0f),
                new MetersPerSecond(5.0f),
                new MetersPerSecond(5.0f)
            };

            var positions = new Vector3[]
            {
                new Vector3(60, 10, 20),   // start position
                new Vector3(-60, 10, 20),  // near fireplace
                new Vector3(-50, 15, 0),   // side stepping column
                new Vector3(-10, 40, 0),   // center stage
                new Vector3(-30, 13, -10), // inspect windows
                new Vector3(-25, 34, -10), // side step to upper row
                new Vector3(-10, 34, -10), // in upper row
                new Vector3(20, 25, -7),   // in upper row
                new Vector3(49, 10, -7),   // pass lion
                new Vector3(49, 10, 20),   // start position
            };

            var lookAts = new Vector3[]
            {
                new Vector3(-60, 10, 20),
                new Vector3(-60, 0, 20),
                new Vector3(-60, 30, 20),
                new Vector3(-40, 0, 20),
                new Vector3(-50, 30, 10),
                new Vector3(-10, 40, 20),
                new Vector3(60, 40, 20),
                new Vector3(60, 10, 0),
                new Vector3(60, 10, 0),
                new Vector3(60, 10, 0)
            };

            for (var i = 0; i < positions.Length; i++)
            {
                var speed    = speeds[i];
                var position = positions[i];
                var lookAt   = lookAts[i];

                this.WaypointFactory.Construct(entity, speed, position, lookAt);
            }

            return(entity);
        }
Example #3
0
        public void Construct(Entity entity, MetersPerSecond speed, Vector3 position, Vector3 lookAt)
        {
            var waypoint = new Waypoint(entity, speed, position, lookAt);

            this.Container.Add(waypoint);
        }
Example #4
0
 public void Meterspersecond_2_feetpersecond()
 {
     FloatCompare(3.28084f, MetersPerSecond.FeetPerSecond(1));
 }
Example #5
0
 public void Meterspersecond_2_kilometersperhour()
 {
     FloatCompare(3.6f, MetersPerSecond.KilometersPerHour(1), 5);
 }
Example #6
0
 public void Meterspersecond_2_milesperhour()
 {
     FloatCompare(2.2369363f, MetersPerSecond.MilesPerHour(1));
 }
Example #7
0
        public void Update(PerspectiveCamera camera, Seconds elapsed)
        {
            var position = camera.Position;

            this.forward = Vector3.Normalize(camera.LookAt - camera.Position);

            var translate = TranslateSpeed * elapsed;

            if (this.Mouse.Hold(MouseButtons.Middle))
            {
                var rotation = new Vector2(this.Mouse.Movement.X, this.Mouse.Movement.Y) * RotateFactor;
                var matrix   = Matrix.CreateFromAxisAngle(this.up, rotation.X) * Matrix.CreateFromAxisAngle(this.left, -rotation.Y);

                this.forward = Vector3.Transform(this.forward, matrix);
                this.left    = Vector3.Cross(this.up, this.forward);
            }

            if (this.Keyboard.Hold(Keys.A))
            {
                position += this.left * translate;
            }
            else if (this.Keyboard.Hold(Keys.D))
            {
                position -= this.left * translate;
            }

            if (this.Keyboard.Hold(Keys.W))
            {
                position += this.forward * translate;
            }
            else if (this.Keyboard.Hold(Keys.S))
            {
                position -= this.forward * translate;
            }

            if (this.Keyboard.Hold(Keys.C))
            {
                position -= this.up * translate;
            }
            else if (this.Keyboard.Hold(Keys.Space))
            {
                position += this.up * translate;
            }

            if (this.Keyboard.Click(Keys.R))
            {
                position = Vector3.Backward * 10;

                this.forward = Vector3.Forward;
                this.left    = Vector3.Left;
                this.up      = Vector3.Up;
            }

            if (this.Mouse.ScrolledUp)
            {
                this.TranslateSpeed = Math.Min(this.TranslateSpeed + 1, MaxTranslateSpeed);
            }
            else if (this.Mouse.ScrolledDown)
            {
                this.TranslateSpeed = Math.Max(this.TranslateSpeed - 1, MinTranslateSpeed);
            }

            camera.Move(position, position + this.forward);
        }