public void Render(PerspectiveCamera camera, Viewport viewport, GameTime gameTime) { if (this.setCamera) { camera.Move(this.State.EditorState.CameraPosition, this.State.EditorState.CameraLookAt); this.setCamera = false; } // Do not handle input if game window is not activated if (!this.GameLoop.IsActive) { return; } var elapsed = (Seconds)gameTime.ElapsedGameTime; this.KeyboardInput.Update(); this.MouseInput.Update(); this.CameraController.Update(camera, elapsed); if (this.KeyboardInput.Click(Keys.F12)) { this.State.EditorState.ShowGui = !this.State.EditorState.ShowGui; } if (this.KeyboardInput.Click(Keys.Escape)) { this.GameLoop.Exit(); } this.RenderOverlay(viewport); this.RenderUI(camera, gameTime); }
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.Right)) { 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; } camera.Move(position, position + this.forward); }
public ShadowCastingLight Construct(Entity entity, Vector3 position, Vector3 lookAt, Color color, int resolution = DefaultResolution) { var viewPoint = new PerspectiveCamera(new Viewport(0, 0, resolution, resolution)); viewPoint.Move(position, lookAt); var shadowMap = this.ShadowMapFactory.Construct(entity, viewPoint, resolution); var light = new ShadowCastingLight(entity, viewPoint, shadowMap, color); this.Container.Add(light); return(light); }
public DynamicTexture Construct(Entity entity, Vector3 position, Vector3 lookAt, int width, int height, string label, PassType type = PassType.Opaque) { var pipeline = new RenderPipeline(this.Device, new NullMeterRegistry()); var gBuffer = new GBuffer(this.Device, width, height); var viewPoint = new PerspectiveCamera(gBuffer.AspectRatio); viewPoint.Move(position, lookAt); var pass = new Pass(type, 0); var dynamicTexture = new DynamicTexture(entity, pipeline, viewPoint, gBuffer, pass, label); this.Container.Add(dynamicTexture); return(dynamicTexture); }
private void DoStart(PerspectiveCamera camera) { this.distanceCovered = 0.0f; this.beforeIndex = 0; this.targetIndex = 1; var before = this.Waypoints[this.beforeIndex]; var target = this.Waypoints[this.targetIndex]; this.CameraSpring.Reset(before.Position); this.LookAtSpring.Reset(before.LookAt); camera.Move(before.Position, before.LookAt); this.state = CutsceneState.Running; }
public void Render(IScene currentScene, PerspectiveCamera camera, Viewport viewport, GameTime gameTime) { if (this.setCamera) { camera.Move(this.State.EditorState.CameraPosition, this.State.EditorState.CameraLookAt); this.CameraController.TranslateSpeed = this.State.EditorState.CameraSpeed; this.setCamera = false; } // Do not handle input if game window is not activated if (!this.GameLoop.IsActive) { return; } var elapsed = (Seconds)gameTime.ElapsedGameTime; this.KeyboardInput.Update(); this.MouseInput.Update(); if (this.KeyboardInput.Click(Keys.F12)) { this.State.EditorState.ShowGui = !this.State.EditorState.ShowGui; } if (this.KeyboardInput.Click(Keys.Escape)) { this.GameLoop.Exit(); } this.RenderOverlay(viewport); this.RenderUI(currentScene, camera, gameTime); var io = ImGui.GetIO(); if (!io.WantCaptureKeyboard) { this.CameraController.Update(camera, elapsed); if (!io.WantCaptureMouse) { currentScene.HandleInput(camera, this.KeyboardInput, this.MouseInput); } } }
private void DoRun(PerspectiveCamera camera, Seconds elapsed) { var before = this.Waypoints[this.beforeIndex]; var target = this.Waypoints[this.targetIndex]; var speed = before.Speed; var distance = Vector3.Distance(before.Position, target.Position); if (distance <= this.distanceCovered) { this.Next(); if (this.beforeIndex == 0) { this.state = CutsceneState.Stopped; return; } this.distanceCovered -= distance; before = this.Waypoints[this.beforeIndex]; target = this.Waypoints[this.targetIndex]; speed = before.Speed; distance = Vector3.Distance(before.Position, target.Position); } var direction = Vector3.Normalize(target.Position - before.Position); var step = elapsed * speed; this.distanceCovered += step; var position = before.Position + (this.distanceCovered * direction); var desiredPosition = position + (direction * step); this.CameraSpring.Update(elapsed, desiredPosition); this.LookAtSpring.Update(elapsed, before.LookAt); camera.Move(this.CameraSpring.Position, this.LookAtSpring.Position); }