public Camera(TipoCamera tipoCamera) { this.costoPerNotte = 50; this.serviziDisponibili = new List <Servizio> { new Servizio("bibita al frigo bar", 3), new Servizio("Noleggio biciclette", 15), new Servizio("Ristorante", 30) }; this.tipo = tipoCamera; switch (tipoCamera) { case TipoCamera.Superior: this.costoPerNotte = 120; this.serviziDisponibili.Add(new Servizio("Servizio in camera", 45)); break; case TipoCamera.Suite: this.costoPerNotte = 250; this.serviziDisponibili.Add(new Servizio("Servizio in camera", 45)); this.serviziDisponibili.Add(new Servizio("SPA", 10)); this.serviziDisponibili.Add(new Servizio("Accesso in piscina", 7)); break; } this.occupata = false; }
/// <summary> /// Inicializa os componentes da camara /// </summary> /// <param name="graphics">Instância de GraphicsDevice</param> static public void Initialize(GraphicsDevice graphics) { tipoCamera = TipoCamera.Free; //Posição inicial da camâra position = new Vector3(0, 0, 30); //Inicializar as matrizes world, view e projection UpdateViewMatrix(); Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45), graphics.Viewport.AspectRatio, nearPlane, farPlane); //Coloca o rato no centro do ecrã Mouse.SetPosition(graphics.Viewport.Width / 2, graphics.Viewport.Height / 2); }
static public void Initialize(GraphicsDevice graphics) { tipoCamera = TipoCamera.ThirdPerson; //farPlane = Terrain.altura + (Terrain.altura / 2); farPlane = 10000f; //Posição inicial da camâra position = new Vector3(30, 20, 30); //Vector de direção inicial direction = new Vector3(0, 0, -1f); //Colocar o rato no centro do ecrã Mouse.SetPosition(graphics.Viewport.Height / 2, graphics.Viewport.Width / 2); //Guardar a posição original do rato mouseStateOriginal = Mouse.GetState(); //Inicializar as matrizes world, view e projection World = Matrix.Identity; Foward(); Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45), graphics.Viewport.AspectRatio, nearPlane, farPlane); //Criar e definir os resterizerStates a utilizar para desenhar a geometria //SOLID rasterizerStateSolid = new RasterizerState(); rasterizerStateSolid.CullMode = CullMode.None; rasterizerStateSolid.MultiSampleAntiAlias = true; rasterizerStateSolid.FillMode = FillMode.Solid; rasterizerStateSolid.SlopeScaleDepthBias = 0.1f; graphics.RasterizerState = rasterizerStateSolid; //WIREFRAME rasterizerStateWireFrame = new RasterizerState(); rasterizerStateWireFrame.CullMode = CullMode.None; rasterizerStateWireFrame.MultiSampleAntiAlias = true; rasterizerStateWireFrame.FillMode = FillMode.WireFrame; currentRasterizerState = rasterizerStateSolid; frustum = new BoundingFrustum(Matrix.Identity); }
public static void Update(GameTime gameTime, GraphicsDevice graphics, Tank tank) { KeyboardState kb = Keyboard.GetState(); MouseState mouseState = Mouse.GetState(); if (tipoCamera == TipoCamera.SurfaceFollow || tipoCamera == TipoCamera.Free) { //Controlos do teclado if (kb.IsKeyDown(Keys.W)) { Foward(); } if (kb.IsKeyDown(Keys.S)) { Backward(); } if (kb.IsKeyDown(Keys.A)) { strafeLeft(gameTime, moveSpeed / 2); } if (kb.IsKeyDown(Keys.D)) { strafeRight(gameTime, moveSpeed / 2); } if (kb.IsKeyDown(Keys.Q)) { Up(); } if (kb.IsKeyDown(Keys.E)) { Down(); } if (mouseState.ScrollWheelValue > mouseStateAnterior.ScrollWheelValue) { if (moveSpeed < 2f) moveSpeed += (mouseState.ScrollWheelValue - mouseStateAnterior.ScrollWheelValue) / 10000f; } if (Mouse.GetState().ScrollWheelValue < mouseStateAnterior.ScrollWheelValue) { if (moveSpeed > 0.05f) moveSpeed -= (mouseStateAnterior.ScrollWheelValue - mouseState.ScrollWheelValue) / 10000f; } //Controlo da rotação com o rato if (mouseState != mouseStateOriginal) { mouseMoved.X = mouseState.Position.X - mouseStateOriginal.Position.X; mouseMoved.Y = mouseState.Position.Y - mouseStateOriginal.Position.Y; rotateLeftRight(); rotateUpDown(); try { Mouse.SetPosition(graphics.Viewport.Height / 2, graphics.Viewport.Width / 2); } catch (Exception e) { Console.WriteLine(e); } } } if (kb.IsKeyDown(Keys.O) && !keyStateAnterior.IsKeyDown(Keys.O)) { if (graphics.RasterizerState == rasterizerStateSolid) { graphics.RasterizerState = rasterizerStateWireFrame; currentRasterizerState = rasterizerStateWireFrame; } else { graphics.RasterizerState = rasterizerStateSolid; currentRasterizerState = rasterizerStateSolid; } } if (kb.IsKeyDown(Keys.C) && !keyStateAnterior.IsKeyDown(Keys.C)) { switch (tipoCamera) { case TipoCamera.SurfaceFollow: tipoCamera = TipoCamera.Free; break; case TipoCamera.Free: tipoCamera = TipoCamera.ThirdPerson; break; case TipoCamera.ThirdPerson: tipoCamera = TipoCamera.SurfaceFollow; break; default: tipoCamera = TipoCamera.Free; break; } } if (kb.IsKeyDown(Keys.N) && !keyStateAnterior.IsKeyDown(Keys.N)) { drawNormals = !drawNormals; } position = LimitarCameraTerreno(position); UpdateViewMatrix(tank); mouseStateAnterior = mouseState; keyStateAnterior = kb; positionAnterior = position; }
public static void Initialize(GraphicsDevice graphics) { tipoCamera = TipoCamera.ThirdPerson; farPlane = Terrain.altura + (Terrain.altura / 2); //Posição inicial da camâra position = new Vector3(30, 20, 30); //Vector de direção inicial direction = new Vector3(0, 0, -1f); //Colocar o rato no centro do ecrã Mouse.SetPosition(graphics.Viewport.Height / 2, graphics.Viewport.Width / 2); //Guardar a posição original do rato mouseStateOriginal = Mouse.GetState(); //Inicializar as matrizes world, view e projection World = Matrix.Identity; Foward(); Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45), graphics.Viewport.AspectRatio, nearPlane, farPlane); //Criar e definir os resterizerStates a utilizar para desenhar a geometria //SOLID rasterizerStateSolid = new RasterizerState(); rasterizerStateSolid.CullMode = CullMode.None; rasterizerStateSolid.MultiSampleAntiAlias = true; rasterizerStateSolid.FillMode = FillMode.Solid; rasterizerStateSolid.SlopeScaleDepthBias = 0.1f; graphics.RasterizerState = rasterizerStateSolid; //WIREFRAME rasterizerStateWireFrame = new RasterizerState(); rasterizerStateWireFrame.CullMode = CullMode.None; rasterizerStateWireFrame.MultiSampleAntiAlias = true; rasterizerStateWireFrame.FillMode = FillMode.WireFrame; currentRasterizerState = rasterizerStateSolid; frustum = new BoundingFrustum(Matrix.Identity); }
static public void SetCameraType(TipoCamera tipo) { tipoCamera = tipo; }
public Camera FactoryMethod(TipoCamera tipoCamera) { return(new Camera(tipoCamera)); }
static public void Update(GameTime gameTime, GraphicsDevice graphics, Ship ship) { KeyboardState kb = Keyboard.GetState(); MouseState mouseState = Mouse.GetState(); if (tipoCamera == TipoCamera.Free) { //Controlos do teclado if (kb.IsKeyDown(Keys.W)) { Foward(); } if (kb.IsKeyDown(Keys.S)) { Backward(); } if (kb.IsKeyDown(Keys.A)) { strafeLeft(gameTime, moveSpeed / 2); } if (kb.IsKeyDown(Keys.D)) { strafeRight(gameTime, moveSpeed / 2); } if (kb.IsKeyDown(Keys.Q)) { Up(); } if (kb.IsKeyDown(Keys.E)) { Down(); } if (mouseState.ScrollWheelValue > mouseStateAnterior.ScrollWheelValue) { if (moveSpeed < 2f) { moveSpeed += (mouseState.ScrollWheelValue - mouseStateAnterior.ScrollWheelValue) / 10000f; } } if (Mouse.GetState().ScrollWheelValue < mouseStateAnterior.ScrollWheelValue) { if (moveSpeed > 0.05f) { moveSpeed -= (mouseStateAnterior.ScrollWheelValue - mouseState.ScrollWheelValue) / 10000f; } } //Controlo da rotação com o rato if (mouseState != mouseStateOriginal) { mouseMoved.X = mouseState.Position.X - mouseStateOriginal.Position.X; mouseMoved.Y = mouseState.Position.Y - mouseStateOriginal.Position.Y; rotateLeftRight(); rotateUpDown(); try { Mouse.SetPosition(graphics.Viewport.Height / 2, graphics.Viewport.Width / 2); } catch (Exception e) { Console.WriteLine(e); } } } if (kb.IsKeyDown(Keys.O) && !keyStateAnterior.IsKeyDown(Keys.O)) { if (graphics.RasterizerState == rasterizerStateSolid) { graphics.RasterizerState = rasterizerStateWireFrame; currentRasterizerState = rasterizerStateWireFrame; } else { graphics.RasterizerState = rasterizerStateSolid; currentRasterizerState = rasterizerStateSolid; } } if (kb.IsKeyDown(Keys.C) && !keyStateAnterior.IsKeyDown(Keys.C)) { switch (tipoCamera) { case TipoCamera.Free: tipoCamera = TipoCamera.ThirdPerson; break; case TipoCamera.ThirdPerson: tipoCamera = TipoCamera.Free; break; default: tipoCamera = TipoCamera.Free; break; } } if (kb.IsKeyDown(Keys.N) && !keyStateAnterior.IsKeyDown(Keys.N)) { drawNormals = !drawNormals; } UpdateViewMatrix(ship); mouseStateAnterior = mouseState; keyStateAnterior = kb; positionAnterior = position; }