Update() public method

public Update ( ) : void
return void
Ejemplo n.º 1
0
        protected override void Initialize()
        {
            int distance = int.Parse(ConfigurationSettings.AppSettings["g.camera.initialDistance"]);

            camera = new MovingCamera
            {
                Position        = new Vector3(0, distance, distance),
                Target          = new Vector3(0, 0, 0),
                UpVector        = -Vector3.UnitZ,
                InitialPosition = new Vector3(0, distance, distance),
                InitialTarget   = new Vector3(0, 0, 0)
            };

            camera.Update();

            egm = Content.Load <Texture2D>("index");
            LoadEGMs();

            thr_update = new Thread(new ThreadStart(UpdateThread));
            thr_update.Start();

            quad_piso = new Quad(Vector3.Zero, Vector3.Backward, Vector3.Up, 1, 1);
            quad_test = new Quad(Vector3.Zero, Vector3.Backward, Vector3.Up, 1, 1);
            base.Initialize();
        }
Ejemplo n.º 2
0
        protected override void Update(GameTime gameTime)
        {
            if (DateTime.Now.Subtract(last_blink).TotalMilliseconds > 1000)
            {
                last_blink = DateTime.Now;
                blink      = !blink;
            }

            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            {
                this.Exit();
            }

            KeyboardState state = Keyboard.GetState();

            if (state.IsKeyDown(Keys.Space))
            {
                disparo.Disparar(150, 100);
            }

            if (state.IsKeyDown(Keys.R))
            {
                camera.Position -= new Vector3(0, 1, 1);
            }
            else if (state.IsKeyDown(Keys.F))
            {
                camera.Position += new Vector3(0, 1, 1);
            }
            else if (state.IsKeyDown(Keys.A))
            {
                camera.Position += new Vector3(-1, 0, 0);
                camera.Target   += new Vector3(-1, 0, 0);
            }
            else if (state.IsKeyDown(Keys.D))
            {
                camera.Position += new Vector3(1, 0, 0);
                camera.Target   += new Vector3(1, 0, 0);
            }
            else if (state.IsKeyDown(Keys.W))
            {
                camera.Position += new Vector3(0, 0, -1);
                camera.Target   += new Vector3(0, 0, -1);
            }
            else if (state.IsKeyDown(Keys.S))
            {
                camera.Position += new Vector3(0, 0, 1);
                camera.Target   += new Vector3(0, 0, 1);
            }
            else if (state.IsKeyDown(Keys.Q))
            {
                Exit();
            }
            else if (state.IsKeyDown(Keys.C))
            {
                camera.MoveToOrigin();
            }
            else if (state.IsKeyDown(Keys.B))
            {
                show_only_blinking = true;
            }
            else if (state.IsKeyDown(Keys.N))
            {
                show_only_blinking = false;
            }
            else if (state.IsKeyDown(Keys.D0))
            {
                e.Tipo = null;
            }
            else if (state.IsKeyDown(Keys.D1))
            {
                e.Tipo = 1;
            }
            else if (state.IsKeyDown(Keys.D2))
            {
                e.Tipo = 2;
            }
            else if (state.IsKeyDown(Keys.D3))
            {
                e.Tipo = 3;
            }
            else if (state.IsKeyDown(Keys.D4))
            {
                e.Tipo = 4;
            }
            else if (state.IsKeyDown(Keys.D5))
            {
                e.Tipo = 5;
            }

            MouseState mstate = Mouse.GetState();

            if (mstate.LeftButton == ButtonState.Pressed &&
                IsInside(mstate, gear_rectangle))
            {
                ctrl.WindowState = System.Windows.Forms.FormWindowState.Normal;
            }
            else if (mstate.LeftButton == ButtonState.Pressed)
            {
                Vector3 nearsource = new Vector3((float)mstate.X, (float)mstate.Y, 0f);
                Vector3 farsource  = new Vector3((float)mstate.X, (float)mstate.Y, 1f);

                Matrix world = Matrix.CreateTranslation(0, 0, 0);

                Vector3 nearPoint = GraphicsDevice.Viewport.Unproject(nearsource,
                                                                      projection, camera.View, world);

                Vector3 farPoint = GraphicsDevice.Viewport.Unproject(farsource,
                                                                     projection, camera.View, world);

                Vector3 direction = farPoint - nearPoint;
                direction.Normalize();
                Ray pickRay = new Ray(nearPoint, direction);

                float min_distance = float.MaxValue;
                foreach (SceneObject obj in scene_objects)
                {
                    float?distance = pickRay.Intersects(obj.BoundingBox);
                    if (distance != null)
                    {
                        if (distance < min_distance)
                        {
                            min_distance = (float)distance;
                            uid          = obj.Name;
                            last_uid     = DateTime.Now;
                        }
                    }
                }
            }

            camera.Update();
            lock (lock_scene_objects)
                foreach (SceneObject o in scene_objects)
                {
                    o.Location += o.LinearSpeed;
                    o.Angle    += o.RotationalSpeed;
                }

            base.Update(gameTime);
        }