Ejemplo n.º 1
0
        public static int CreateCamera(GraphicsDevice gd, int entityTrackId)
        {
            ComponentManager cm = ComponentManager.GetInstance();

            TransformComponent transform = new TransformComponent()
            {
                Position = new Vector3(-10, 350, -170),
                Rotation = Vector3.Right,
                Up       = Vector3.Up
            };

            CameraComponent camera = new CameraComponent()
            {
                FieldOfView       = 45,
                NearPlaneDistance = 1,
                FarPlaneDistance  = 10000,
                AspectRatio       = gd.DisplayMode.AspectRatio,
            };

            TrackingCameraComponent trackComp = new TrackingCameraComponent(entityTrackId, new Vector3(0, 10, 20));

            int cam = cm.AddEntityWithComponents(new IComponent[] { camera, trackComp, transform });

            return(cam);
        }
Ejemplo n.º 2
0
        public void Update(GameTime gametime)
        {
            foreach (var tracker in cm.GetComponentsOfType <TrackingCameraComponent>())
            {
                TrackingCameraComponent trackComp = (TrackingCameraComponent)tracker.Value;
                TransformComponent      trackPos  = cm.GetComponentForEntity <TransformComponent>(trackComp.Target);
                TransformComponent      camPos    = cm.GetComponentForEntity <TransformComponent>(tracker.Key);
                CameraComponent         camComp   = cm.GetComponentForEntity <CameraComponent>(tracker.Key);

                Matrix  rotationMatrix    = Matrix.CreateRotationY(trackPos.Rotation.X);
                Vector3 transformedOffset = Vector3.Transform(trackComp.Offset, rotationMatrix);
                camPos.Position = trackPos.Position + transformedOffset;
                camPos.Rotation = trackPos.Position - camPos.Position;
            }
        }
Ejemplo n.º 3
0
        public static int CreateTrackingCamera(GraphicsDevice gd, int entityTrackId)
        {
            TransformComponent transform = new TransformComponent()
            {
                Position = new Vector3(-10, 350, -170),
                Rotation = Vector3.Right,
                Up       = Vector3.Up
            };

            CameraComponent camera = new CameraComponent()
            {
                FieldOfView       = 45,
                NearPlaneDistance = 1,
                FarPlaneDistance  = 10000,
                AspectRatio       = gd.DisplayMode.AspectRatio,
            };

            TrackingCameraComponent trackingCamera = new TrackingCameraComponent(entityTrackId, new Vector3(0, 3, 10));

            return(cm.AddEntityWithComponents(camera, trackingCamera, transform));
        }