public override void Render(GameTime gameTime) { SystemCore.GraphicsDevice.Clear(Color.CornflowerBlue); DebugText.Write(SystemCore.GetSubsystem <FPSCounter>().FPS.ToString()); base.Render(gameTime); }
public override void Render(GameTime gameTime) { SystemCore.GraphicsDevice.Clear(Color.Gray); DebugText.Write(cameraGameObject.Transform.WorldMatrix.Translation.ToString()); DebugShapeRenderer.VisualiseAxes(5f); base.Render(gameTime); }
public override void Render(GameTime gameTime) { SystemCore.GraphicsDevice.Clear(Color.Black); DebugShapeRenderer.VisualiseAxes(5f); RenderLineDefs(); RenderFloodFill(); RenderPath(); //RenderPartition(); if (playerObj != null) { DoomComponent playerDoomComponent = playerObj.GetComponent <DoomComponent>(); Color forwardColor = Color.Red; Color leftColor = Color.Red; Color rightColor = Color.Red; if (playerDoomComponent.ForwardHitVector) { forwardColor = Color.Blue; } if (playerDoomComponent.LeftHitVector) { leftColor = Color.Blue; } if (playerDoomComponent.RightHightVector) { rightColor = Color.Blue; } Vector3 pos = playerObj.Transform.AbsoluteTransform.Translation; Vector3 forwardVec = playerObj.Transform.AbsoluteTransform.Translation + playerObj.Transform.AbsoluteTransform.Forward * playerDoomComponent.HitVectorSize; Vector3 rightVec = MonoMathHelper.RotateAroundPoint(forwardVec, playerObj.Transform.AbsoluteTransform.Translation, Vector3.Up, MathHelper.PiOver4); Vector3 leftVec = MonoMathHelper.RotateAroundPoint(forwardVec, playerObj.Transform.AbsoluteTransform.Translation, Vector3.Up, -MathHelper.PiOver4); DebugShapeRenderer.AddLine(pos, forwardVec, forwardColor); DebugShapeRenderer.AddLine(pos, leftVec, leftColor); DebugShapeRenderer.AddLine(pos, rightVec, rightColor); DebugText.Write(playerObj.Transform.AbsoluteTransform.Translation.ToString()); DebugText.Write(playerAngle.ToString()); } base.Render(gameTime); }
public override void Update(GameTime gameTime) { SystemCore.ActiveScene.SetDiffuseLightDir(0, Vector3.Normalize(Vector3.Zero - earth.CurrentCenterPosition)); foreach (MiniPlanet miniPlanet in planets) { float distanceFromSurface = (cameraGameObject.Transform.WorldMatrix.Translation - miniPlanet.CurrentCenterPosition).Length(); miniPlanet.Update(gameTime, distanceFromSurface, cameraGameObject.Transform.WorldMatrix.Translation); } if (SystemCore.Input.KeyPress(Microsoft.Xna.Framework.Input.Keys.Enter)) { GenerateSystem(); } int currentIndex = 0; PlanetParameters currentParameter = null; foreach (KeyValuePair <string, PlanetParameters> pair in NoiseGenerator.miniPlanetParameters) { if (currentIndex == currentParameterIndex) { currentParameter = pair.Value; break; } currentIndex++; } DebugText.Write(currentParameter.Name + " : " + currentParameter.Value.ToString()); if (SystemCore.Input.KeyPress(Keys.OemPlus)) { currentParameterIndex++; if (currentParameterIndex >= NoiseGenerator.miniPlanetParameters.Count) { currentParameterIndex = 0; } } if (SystemCore.Input.KeyPress(Keys.OemMinus)) { currentParameterIndex--; if (currentParameterIndex < 0) { currentParameterIndex = NoiseGenerator.miniPlanetParameters.Count - 1; } } //double if (SystemCore.Input.KeyPress(Keys.NumPad1)) { currentParameter.Value *= 2; GenerateSystem(); } //half if (SystemCore.Input.KeyPress(Keys.NumPad2)) { currentParameter.Value /= 2f; GenerateSystem(); } // if (SystemCore.Input.KeyPress(Keys.NumPad3)) { currentTestLod--; planets[0].SetLOD(currentTestLod); } if (SystemCore.Input.KeyPress(Keys.NumPad4)) { currentTestLod++; planets[0].SetLOD(currentTestLod); } base.Update(gameTime); }
public override void Update(GameTime gameTime) { if (input.KeyPress(Microsoft.Xna.Framework.Input.Keys.Escape)) { SystemCore.ScreenManager.AddAndSetActive(new MainMenuScreen()); } if (input.KeyPress(Microsoft.Xna.Framework.Input.Keys.O)) { heading -= 10; playerObj.GetComponent <DoomMovementComponent>().TurnRightToHeading(heading); } if (input.KeyPress(Microsoft.Xna.Framework.Input.Keys.P)) { heading += 10; playerObj.GetComponent <DoomMovementComponent>().TurnRightToHeading(heading); } if (heading > 360) { heading = 0; } if (heading < 0) { heading = 360; } if (input.MouseLeftPress()) { //PathToMousePoint(); } UpdateCamera(); if (!mapHandler.FloodFillComplete) { mapHandler.FloodFillStep(); } if (mapHandler.FloodFillComplete && playerObj.GetComponent <DoomMovementComponent>().path == null && !doNothing) { playerObj.GetComponent <DoomMovementComponent>().PathToPoint(mapHandler.LevelEnd); endOfLevelSeeking = true; } //check if we can see anything. If so, path to it. if (!doNothing) { if (collectItems) { PickUpObjects(); } } apiHandler.Update(); if (playerObj != null) { DebugText.Write(playerObj.Transform.AbsoluteTransform.Translation.ToString()); } base.Update(gameTime); }
public void WriteState(Side side) { DebugText.Write($"attackState: {this.state}", 1, 2, Color.red, side); }
public void Update(GameTime gameTime) { if (path == null) { return; } if (path.Count > 0) { if (path.Count > 1) { OptimisePath(); } NavigationNode currentNode = path[0]; //check we can still see our node. Sometimes we can't, after //applying an unexpectedly large move. if (!CanStillPathToNode(currentNode) && currentNode.WorldPosition != mapHandler.LevelEnd) { PathToPoint(path[path.Count - 1].WorldPosition); } Vector3 toTarget = currentNode.WorldPosition - ParentObject.Transform.AbsoluteTransform.Translation; if (toTarget.Length() < minDistanceToNode) { path.RemoveAt(0); return; } toTarget.Y = 0; toTarget.Normalize(); Vector3 rightV = ParentObject.Transform.AbsoluteTransform.Right; rightV.Y = 0; rightV.Normalize(); Vector3 forwardVec = ParentObject.Transform.AbsoluteTransform.Forward; forwardVec.Y = 0; forwardVec.Normalize(); float dot = Vector3.Dot(toTarget, rightV); //game units are roughly 105 in a circle. //so 1 unit = 360 / 105 degrees //1 degree = 105 / 360 var angle = MathHelper.ToDegrees(MonoMathHelper.GetAngleBetweenVectors(toTarget, forwardVec)); float spinAmount = angle * (105f / 360); float heading = MathHelper.ToDegrees(MonoMathHelper.GetHeadingFromVector((currentNode.WorldPosition - ParentObject.Transform.AbsoluteTransform.Translation).ToVector2XZ())); heading = (heading + 360) % 360; //DebugText.Write(dot.ToString()); // DebugText.Write(angle.ToString()); // DebugText.Write(spinAmount.ToString()); DebugText.Write("Heading: " + heading.ToString()); if (dot > 0.1f) { if (!turning) { //TurnLeft(2); TurnLeftToHeading(heading); } } if (dot < -0.1f) { if (!turning) { //TurnRight(2); TurnRightToHeading(heading); } } if (dot > -movementRangeThreshold && dot < movementRangeThreshold) { //the node we need is right behind us. Instigate a turn. if (MonoMathHelper.AlmostEquals(180d, angle, 10)) { TurnLeft(3); return; } if (!moving) { //we're likely stuck. Try moving back if (movementAttemptsWithNoPositionChange > 50) { MoveBackward(4); movementAttemptsWithNoPositionChange = 0; } else { MoveForward(4); } } } FeelForward(); } else { path = null; } }
public override void Render(GameTime gameTime) { DebugText.Write(SystemCore.ActiveCamera.Position.ToString()); base.Render(gameTime); }
public void WriteState(Side side) { DebugText.Write($"defenseState: {this.state}", 1, 3, Color.red, side); }
public void WriteState(Side side) { DebugText.Write($"adState: {this.state}", 0, 1, Color.red, side); attackController.WriteState(side); defenseController.WriteState(side); }
public void WriteState(Side side) { DebugText.Write($"movementState: {this.state}", 0, 0, Color.green, side); }