public override void Render() { PreRender(); //Obtener boolean para saber si hay que mostrar Bounding Box var showBB = showBoundingBoxModifier.Value; 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(); //FIX IT SOLO CON COLISION. if (selecting) { selectionBox.BoundingBox.Render(); } //Render suelo.Render(); foreach (var mesh in modelos) { mesh.Transform = TGCMatrix.Scaling(mesh.Scale) * TGCMatrix.RotationYawPitchRoll(mesh.Rotation.Y, mesh.Rotation.X, mesh.Rotation.Z) * TGCMatrix.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(); //Actualizar valrores de pared updateTGCPlane(); //Renderizar pared plane.Render(); PostRender(); }
public void Render() { //Obtenemos la matrix de directx con la transformacion que corresponde a la caja. boxMesh.Transform = new TGCMatrix(boxBody.InterpolationWorldTransform); boxMesh.Render(); //Obtenemos la transformacion de la pelota, en este caso se ve como se puede escalar esa transformacion. sphereMesh.Transform = TGCMatrix.Scaling(10, 10, 10) * new TGCMatrix(ballBody.InterpolationWorldTransform); sphereMesh.Render(); floorMesh.Render(); }
public void RenderObject(TgcPlane x) { var t = x.Technique; if (useShadows) { x.Effect = shadowEffect; x.Technique = doingShadowRender ? "RenderShadow" : "RenderScene"; } x.Render(); x.Technique = t; }
public override void Render() { PreRender(); //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(); }
/// <summary> /// Metodo que se invoca todo el tiempo. Es el render-loop de una aplicacion grafica. /// En este metodo se deben dibujar todos los objetos que se desean mostrar. /// Antes de llamar a este metodo el framework limpia toda la pantalla. /// Por lo tanto para que un objeto se vea hay volver a dibujarlo siempre. /// La variable elapsedTime indica la cantidad de segundos que pasaron entre esta invocacion /// y la anterior de render(). Es util para animar e interpolar valores. /// </summary> public override void Render() { var count = boxBodys.Count; var count4 = boxBodys.Count / 4; for (var i = 0; i < count; i++) { RigidBody boxBody = boxBodys[i]; if (i % 4 == 1) { //Obtenemos la matrix de directx con la transformacion que corresponde a la caja. boxMesh1.Transform = new TGCMatrix(boxBody.InterpolationWorldTransform); //Dibujar las cajas en pantalla boxMesh1.Render(); } if (i % 4 == 2) { //Obtenemos la matrix de directx con la transformacion que corresponde a la caja. boxMesh2.Transform = new TGCMatrix(boxBody.InterpolationWorldTransform); //Dibujar las cajas en pantalla boxMesh2.Render(); } if (i % 4 == 3) { //Obtenemos la matrix de directx con la transformacion que corresponde a la caja. boxMesh3.Transform = new TGCMatrix(boxBody.InterpolationWorldTransform); //Dibujar las cajas en pantalla boxMesh3.Render(); } if (i % 4 == 0) { //Obtenemos la matrix de directx con la transformacion que corresponde a la caja. boxMesh4.Transform = new TGCMatrix(boxBody.InterpolationWorldTransform); //Dibujar las cajas en pantalla boxMesh4.Render(); } } foreach (RigidBody ballBody in ballBodys) { //Obtenemos la transformacion de la pelota, en este caso se ve como se puede escalar esa transformacion. sphereMesh.Transform = TGCMatrix.Scaling(10, 10, 10) * new TGCMatrix(ballBody.InterpolationWorldTransform); sphereMesh.Render(); } floorMesh.Render(); }
public override void Render() { PreRender(); DrawText.drawText("Camera pos: " + TGCVector3.PrintVector3(Camara.Position), 5, 20, System.Drawing.Color.Red); DrawText.drawText("Camera LookAt: " + TGCVector3.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.UpdateMeshTransform(); //Render personaje personaje.animateAndRender(ElapsedTime); PostRender(); }
/// <summary> /// Metodo que se invoca todo el tiempo. Es el render-loop de una aplicacion grafica. /// En este metodo se deben dibujar todos los objetos que se desean mostrar. /// Antes de llamar a este metodo el framework limpia toda la pantalla. /// Por lo tanto para que un objeto se vea hay volver a dibujarlo siempre. /// La variable elapsedTime indica la cantidad de segundos que pasaron entre esta invocacion /// y la anterior de render(). Es util para animar e interpolar valores. /// </summary> public override void Render() { foreach (RigidBody boxBody in boxBodys) { //Obtenemos la matrix de directx con la transformacion que corresponde a la caja. boxMesh.Transform = new TGCMatrix(boxBody.InterpolationWorldTransform); //Dibujar las cajas en pantalla boxMesh.Render(); } foreach (RigidBody ballBody in ballBodys) { //Obtenemos la transformacion de la pelota, en este caso se ve como se puede escalar esa transformacion. sphereMesh.Transform = TGCMatrix.Scaling(10, 10, 10) * new TGCMatrix(ballBody.InterpolationWorldTransform); sphereMesh.Render(); } floorMesh.Render(); }
public override void Render() { PreRender(); //Render piso piso.Render(); //Render de obstaculos foreach (var obstaculo in obstaculos) { obstaculo.Render(); } personaje.Transform = TGCMatrix.Scaling(personaje.Scale) * TGCMatrix.RotationYawPitchRoll(personaje.Rotation.Y, personaje.Rotation.X, personaje.Rotation.Z) * TGCMatrix.Translation(personaje.Position); //Render personaje personaje.animateAndRender(ElapsedTime); PostRender(); }
public override void render() { mesh.Render(); }
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 TGCVector3(newPosition.X, 30f, newPosition.Z); //Rotar modelo en base a la nueva dirección a la que apunta var direction = TGCVector3.Normalize(newPosition - mesh.Position); var angle = FastMath.Acos(TGCVector3.Dot(originalMeshRot, direction)); var axisRotation = TGCVector3.Cross(originalMeshRot, direction); meshRotationMatrix = TGCMatrix.RotationAxis(axisRotation, angle); } } var speed = speedModifier.Value; //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 TGCVector3(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 * TGCMatrix.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 override void Render(float elapsedTime) { TexturesManager.Instance.clearAll(); var device = D3DDevice.Instance.Device; var pOldRT = device.GetRenderTarget(0); var pSurf = g_pRenderTarget.GetSurfaceLevel(0); device.SetRenderTarget(0, pSurf); var pOldDS = device.DepthStencilSurface; device.DepthStencilSurface = g_pDepthStencil; device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0); time += elapsedTime; wavesEffect.SetValue("time", time); recoltableItemEffect.SetValue("time", time); bulletManager.Render(); collectModel.Render(elapsedTime); //Render SkyBox //if (playerModel.UnderSurface()) //{ // skyBoxUndersea.Render(); //} //else //{ // skyBox.Render(); //} fogEffect.SetValue("ColorFog", 2304311); fogEffect.SetValue("CameraPos", TGCVector3.Vector3ToFloat4Array(Camera.Position)); fogEffect.SetValue("StartFogDistance", 2000); fogEffect.SetValue("EndFogDistance", 7000); fogEffect.SetValue("Density", 0.0025f); var heighmap = TgcTexture.createTexture(MediaDir + "Level1\\Textures\\perli2.jpg"); fogEffect.SetValue("texHeighmap", heighmap.D3dTexture); fogEffect.SetValue("time", time); fogEffect.SetValue("spotLightDir", TGCVector3.Vector3ToFloat3Array(new TGCVector3(0, -1f, 0))); fogEffect.SetValue("spotLightAngleCos", FastMath.ToRad(55)); foreach (var mesh in skyBox.Faces) { mesh.Effect = fogEffect; mesh.Technique = "RenderScene"; //mesh.Render(); } skyBox.Render(); underseaTerrain.Effect = fogEffect; underseaTerrain.Technique = "RenderScene2"; underseaTerrain.Render(); //Render Surface surfacePlane.Render(); //Render Meshes foreach (var item in meshes) { item.Mesh.Effect = fogEffect; item.Mesh.Technique = "RenderScene"; item.Mesh.Render(); } if (playerModel.InventoryModel.RenderShipHelm) { foreach (var item in shipHelmMesh) { item.Render(); } } if (playerModel.InventoryModel.ShowShipHelm) { shipHelmPoster.Render(); } playerModel.ShowHistory = historyModel.ShowHistory; if (historyModel.ShowHistory) { historyModel.Render(elapsedTime); } if (playerModel.Win) { youWinModel.Render(elapsedTime); } // restuaro el render target y el stencil device.DepthStencilSurface = pOldDS; device.SetRenderTarget(0, pOldRT); effect.Technique = "PostProcess"; effect.SetValue("time", time); device.VertexFormat = CustomVertex.PositionTextured.Format; device.SetStreamSource(0, g_pVBV3D, 0); effect.SetValue("g_RenderTarget", g_pRenderTarget); device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0); effect.Begin(FX.None); effect.BeginPass(0); device.DrawPrimitives(PrimitiveType.TriangleStrip, 0, 2); effect.EndPass(); effect.End(); hudModel.Render(); playerModel.Render(elapsedTime); }