public override void Render() { PreRender(); //FIX IT SOLO CON COLISION. if (selecting) { selectionBox.BoundingBox.render(); } //Render suelo.render(); foreach (var mesh in modelos) { mesh.Transform = Matrix.Scaling(mesh.Scale) * Matrix.RotationYawPitchRoll(mesh.Rotation.Y, mesh.Rotation.X, mesh.Rotation.Z) * Matrix.Translation(mesh.Position); mesh.render(); } //Renderizar BB de los modelos seleccionados foreach (var mesh in modelosSeleccionados) { mesh.BoundingBox.render(); } PostRender(); }
public override void Render() { PreRender(); //Obtener boolean para saber si hay que mostrar Bounding Box var showBB = (bool)Modifiers.getValue("showBoundingBox"); DrawText.drawText(text, 5, 20, System.Drawing.Color.Red); //Render piso piso.render(); //Render obstaculos foreach (var obstaculo in obstaculos) { obstaculo.render(); if (showBB) { obstaculo.BoundingBox.render(); } } //Render personaje personaje.animateAndRender(ElapsedTime); if (showBB) { personaje.BoundingBox.render(); } PostRender(); }
public override void Render() { PreRender(); //Actualizar valrores de pared updatePlane(); //Renderizar pared plane.render(); PostRender(); }
public override void Render() { PreRender(); DrawText.drawText("Camera pos: " + Core.Utils.TgcParserUtils.printVector3(Camara.Position), 5, 20, System.Drawing.Color.Red); DrawText.drawText("Camera LookAt: " + Core.Utils.TgcParserUtils.printVector3(Camara.LookAt), 5, 40, System.Drawing.Color.Red); //Renderizar suelo suelo.render(); //Renderizar instancias foreach (var mesh in meshes) { mesh.render(); } PostRender(); }
public override void Render() { PreRender(); //Render piso piso.render(); //Render de obstaculos foreach (var obstaculo in obstaculos) { obstaculo.render(); } personaje.Transform = Matrix.Scaling(personaje.Scale) * Matrix.RotationYawPitchRoll(personaje.Rotation.Y, personaje.Rotation.X, personaje.Rotation.Z) * Matrix.Translation(personaje.Position); //Render personaje personaje.animateAndRender(ElapsedTime); PostRender(); }
public override void Render() { PreRender(); //Si hacen clic con el mouse, ver si hay colision con el suelo if (Input.buttonPressed(TgcD3dInput.MouseButtons.BUTTON_LEFT)) { //Actualizar Ray de colisión en base a posición del mouse pickingRay.updateRay(); //Detectar colisión Ray-AABB if (TgcCollisionUtils.intersectRayAABB(pickingRay.Ray, suelo.BoundingBox, out newPosition)) { //Fijar nueva posición destino applyMovement = true; collisionPointMesh.Position = newPosition; directionArrow.PEnd = new Vector3(newPosition.X, 30f, newPosition.Z); //Rotar modelo en base a la nueva dirección a la que apunta var direction = Vector3.Normalize(newPosition - mesh.Position); var angle = FastMath.Acos(Vector3.Dot(originalMeshRot, direction)); var axisRotation = Vector3.Cross(originalMeshRot, direction); meshRotationMatrix = Matrix.RotationAxis(axisRotation, angle); } } var speed = (float)Modifiers["speed"]; //Interporlar movimiento, si hay que mover if (applyMovement) { //Ver si queda algo de distancia para mover var posDiff = newPosition - mesh.Position; var posDiffLength = posDiff.LengthSq(); if (posDiffLength > float.Epsilon) { //Movemos el mesh interpolando por la velocidad var currentVelocity = speed * ElapsedTime; posDiff.Normalize(); posDiff.Multiply(currentVelocity); //Ajustar cuando llegamos al final del recorrido var newPos = mesh.Position + posDiff; if (posDiff.LengthSq() > posDiffLength) { newPos = newPosition; } //Actualizar flecha de movimiento directionArrow.PStart = new Vector3(mesh.Position.X, 30f, mesh.Position.Z); directionArrow.updateValues(); //Actualizar posicion del mesh mesh.Position = newPos; //Como desactivamos la transformacion automatica, tenemos que armar nosotros la matriz de transformacion mesh.Transform = meshRotationMatrix * Matrix.Translation(mesh.Position); //Actualizar camara camaraInterna.Target = mesh.Position; } //Se acabo el movimiento else { applyMovement = false; } } //Mostrar caja con lugar en el que se hizo click, solo si hay movimiento if (applyMovement) { collisionPointMesh.render(); directionArrow.render(); } suelo.render(); mesh.render(); PostRender(); }
public void Render() { foreach (TgcMesh mesh in this.getAllMeshes()) { //rendereo solo lo que esta dentro del frustrum var c = TgcCollisionUtils.classifyFrustumAABB(this.env.Frustum, mesh.BoundingBox); if (c != TgcCollisionUtils.FrustumResult.OUTSIDE) { mesh.render(); } } //Renderizar suelo suelo.render(); //calle.render(); //Renderizar SkyBox skyBox.render(); //Renderizar instancias // foreach (var mesh in meshes) // mesh.render(); //Renderizar items int nroItem = 0; foreach (var item in items) { if (itemsTiempoInvisibilidad[nroItem] < 380) { //posEncontrada = nroItem; itemsTiempoInvisibilidad[nroItem] = itemsTiempoInvisibilidad[nroItem]++; } else { if (item.Position.Y < 10) { item.move(0, 50, 0); } } item.render(); nroItem++; } //Renderizado de cordones foreach (var cordon in cordones) { cordon.render(); } //Renderizado de veredas foreach (var v in veredas) { v.render(); } //Renderizado de paredes foreach (var p in paredes) { p.render(); } //Renderizado de calles foreach (var c in calles) { c.render(); } /* foreach (var vehiculo in vehiculos) * { * vehiculo.getMesh().render(); * }*/ //mostrarBounding(); }