Ejemplo n.º 1
0
        public override void Update(Timer timer)
        {
            Entity[] entities = GetEntities();

            SingletonConfigVar  configVar  = WorldRef.GetSingletonComponent <SingletonConfigVar>();
            SingletonInput      input      = WorldRef.GetSingletonComponent <SingletonInput>();
            SingletonFrameScene frameScene = WorldRef.GetSingletonComponent <SingletonFrameScene>();

            frameScene.FrameData.Reset();

            Transform transform;
            Camera    camera;

            foreach (var entity in entities)
            {
                camera    = entity.GetComponent <Camera>();
                transform = entity.GetComponent <Transform>();

                UpdateCamera(timer.DeltaTime, camera, transform, input, configVar);
                frameScene.FrameData.AddCameraData(new StandardFrameData.CameraData()
                {
                    View                   = camera.View,
                    Projection             = camera.Projection,
                    ViewProjection         = camera.ViewProjection,
                    PreviousView           = camera.PreviousView,
                    PreviousViewProjection = camera.PreviousViewProjection,
                    Position               = transform.Position,
                    Forward                = transform.Direction,
                    Frustrum               = new BoundingFrustum(camera.ViewProjection),
                });
            }
        }
Ejemplo n.º 2
0
        public override void Update(Timer timer)
        {
            SingletonInput input = WorldRef.GetSingletonComponent <SingletonInput>();

            Entity[] entities = GetEntities();

            Transform     transform;
            TestComponent test;

            foreach (Entity entity in entities)
            {
                test = entity.GetComponent <TestComponent>();

                /* if (input.IsButtonDown(SingletonInput.Buttons.LEFT))
                 * {
                 *   test.HorizontalDirection = -1;
                 * }
                 * if (input.IsButtonDown(SingletonInput.Buttons.RIGHT))
                 * {
                 *   test.HorizontalDirection = 1;
                 * }
                 *
                 * if (input.IsButtonDown(SingletonInput.Buttons.DOWN))
                 * {
                 *   test.VerticalDirection = -1;
                 * }
                 * if (input.IsButtonDown(SingletonInput.Buttons.UP))
                 * {
                 *   test.VerticalDirection = 1;
                 * }*/

                transform           = entity.GetComponent <Transform>();
                transform.Rotation *= Quaternion.RotationYawPitchRoll(timer.DeltaTime * test.HorizontalDirection, 0, 0);//timer.DeltaTime * test.VerticalDirection
                //transform.Scale = Vector3.One * ((float)Math.Sin(timer.Time * 3f) * 0.05f + 0.2f);
                transform.Position += (Vector3.ForwardLH + Vector3.Left) * 4 * (float)Math.Cos(timer.Time) * 0.01f;
            }
        }
Ejemplo n.º 3
0
        private void UpdateCamera(float DeltaTime, Camera camera, Transform transform, SingletonInput input, SingletonConfigVar configVar)
        {
            #region Test free camera
            camera.Yaw   += input.MouseXOffset * 10f * DeltaTime;
            camera.Pitch += input.MouseYOffset * 10f * DeltaTime;
            if (camera.Pitch >= 90f)
            {
                camera.Pitch = 89.0001f;
            }

            if (camera.Pitch <= -90f)
            {
                camera.Pitch = -89.0001f;
            }

            transform.Rotation = Quaternion.RotationYawPitchRoll(MathUtil.DegreesToRadians(camera.Yaw), MathUtil.DegreesToRadians(camera.Pitch), 0f);

            Vector3 left = Vector3.Cross(Vector3.Normalize(transform.Direction), Vector3.Up);
            left = Vector3.Normalize(left);
            float speed = 2f;
            if (input.IsButtonDown(SingletonInput.Buttons.LSHIFT))
            {
                speed *= 5f;
            }
            if (input.IsButtonDown(SingletonInput.Buttons.LEFT))
            {
                transform.Position += left * DeltaTime * speed;
            }
            if (input.IsButtonDown(SingletonInput.Buttons.RIGHT))
            {
                transform.Position += -left * DeltaTime * speed;
            }
            if (input.IsButtonDown(SingletonInput.Buttons.DOWN))
            {
                transform.Position += -Vector3.Normalize(transform.Direction) * DeltaTime * speed;
            }
            if (input.IsButtonDown(SingletonInput.Buttons.UP))
            {
                transform.Position += Vector3.Normalize(transform.Direction) * DeltaTime * speed;
            }
            #endregion

            camera.PreviousView           = camera.View;
            camera.PreviousViewProjection = camera.ViewProjection;
            camera.View = Matrix.LookAtLH(
                transform.Position,
                transform.Position + transform.Direction,
                Vector3.Up
                );

            if (camera.IsScreenView)
            {
                camera.AspectRatio = configVar.ScreenAspectRatio;
            }

            if (configVar.IsInvertedDepthBuffer)
            {
                camera.Projection = Matrix.PerspectiveFovLH(camera.FOV, camera.AspectRatio, camera.FarClippingPlane, camera.NearClippingPlane);
            }
            else
            {
                camera.Projection = Matrix.PerspectiveFovLH(camera.FOV, camera.AspectRatio, camera.NearClippingPlane, camera.FarClippingPlane);
            }
            camera.ViewProjection = camera.View * camera.Projection;
        }