public override void render(float elapsedTime) { Device d3dDevice = GuiController.Instance.D3dDevice; //Obtener rotacion de mesh (pasar a radianes) float rotation = FastMath.ToRad((float)GuiController.Instance.Modifiers["rotation"]); //Rotar mesh y rotar OBB. A diferencia del AABB, nosotros tenemos que mantener el OBB actualizado segun cada movimiento del mesh Vector3 lastRot = mesh.Rotation; float rotationDiff = rotation - lastRot.Y; mesh.rotateY(rotationDiff); obb.rotate(new Vector3(0, rotationDiff, 0)); //Actualizar posicion Vector3 position = (Vector3)GuiController.Instance.Modifiers["position"]; Vector3 lastPos = mesh.Position; Vector3 posDiff = position - lastPos; mesh.move(posDiff); obb.move(posDiff); //Renderizar modelo mesh.render(); //Renderizar obb obb.render(); }
public override void Render() { PreRender(); //Obtener rotacion de mesh (pasar a radianes) var rotation = FastMath.ToRad((float)Modifiers["rotation"]); //Rotar mesh y rotar OBB. A diferencia del AABB, nosotros tenemos que mantener el OBB actualizado segun cada movimiento del mesh var lastRot = mesh.Rotation; var rotationDiff = rotation - lastRot.Y; mesh.rotateY(rotationDiff); obb.rotate(new Vector3(0, rotationDiff, 0)); //Actualizar posicion var position = (Vector3)Modifiers["position"]; var lastPos = mesh.Position; var posDiff = position - lastPos; mesh.move(posDiff); obb.move(posDiff); //Renderizar modelo mesh.render(); //Renderizar obb obb.render(); PostRender(); }
public override void Render(Item item, Effect shader) { if (Game.Current.IsColliderVisible) { //TODO:Obb.Effect = shader; Obb.render(); } }
public override void Render() { PreRender(); if (generate) { generateObb(); generate = false; } for (var i = 0; i < vertices.Length; i++) { vertices[i].render(); } obb.render(); PostRender(); }
public override void render(float elapsedTime) { Device d3dDevice = GuiController.Instance.D3dDevice; if (generate) { generateObb(); generate = false; } for (int i = 0; i < vertices.Length; i++) { vertices[i].render(); } obb.render(); }
public override void Render() { PreRender(); var velocidadCaminar = 50f * ElapsedTime; //Calcular proxima posicion de personaje segun Input var d3dInput = TgcD3dInput.Instance; var moving = false; var movement = new Vector3(0, 0, 0); //Adelante if (d3dInput.keyDown(Key.W)) { movement.Z = velocidadCaminar; moving = true; } //Atras if (d3dInput.keyDown(Key.S)) { movement.Z = -velocidadCaminar; moving = true; } //Derecha if (d3dInput.keyDown(Key.D)) { movement.X = velocidadCaminar; moving = true; } //Izquierda if (d3dInput.keyDown(Key.A)) { movement.X = -velocidadCaminar; moving = true; } //Salto if (d3dInput.keyDown(Key.Space)) { movement.Y = velocidadCaminar; moving = true; } //Agachar if (d3dInput.keyDown(Key.LeftControl)) { movement.Y = -velocidadCaminar; moving = true; } //Si hubo desplazamiento if (moving) { //Aplicar movimiento box.move(movement); } //Hacer que la camara siga al personaje en su nueva posicion camaraInterna.Target = box.Position; //Detectar colision con triangulo if (TgcCollisionUtils.testTriangleAABB(triangle[0].Position, triangle[1].Position, triangle[2].Position, box.BoundingBox)) { box.BoundingBox.render(); triagleAABB.render(); } //Detectar colision con el otro AABB if (TgcCollisionUtils.testAABBAABB(box.BoundingBox, box2.BoundingBox)) { box.BoundingBox.render(); box2.BoundingBox.render(); } //Detectar colision con la esfera if (TgcCollisionUtils.testSphereAABB(sphere, box.BoundingBox)) { box.BoundingBox.render(); sphere.setRenderColor(Color.Red); } else { sphere.setRenderColor(Color.Yellow); } //Detectar colision con la obb if (TgcCollisionUtils.testObbAABB(obb, box.BoundingBox)) { box.BoundingBox.render(); obb.setRenderColor(Color.Red); } else { obb.setRenderColor(Color.Yellow); } //Dibujar box.render(); box2.render(); sphere.render(); obb.render(); //triangulo D3DDevice.Instance.Device.Transform.World = Matrix.Identity; D3DDevice.Instance.Device.VertexFormat = CustomVertex.PositionColored.Format; D3DDevice.Instance.Device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, triangle); PostRender(); }