public override void Render() { //Inicio el render de la escena, para ejemplos simples. Cuando tenemos postprocesado o shaders es mejor realizar las operaciones según nuestra conveniencia. PreRender(); if (estaEnMenu) { drawer2D.BeginDrawSprite(); drawer2D.DrawSprite(menu); drawer2D.EndDrawSprite(); reproducirSonido("st.mp3"); } if (finDePartida) { System.Drawing.Font font = new System.Drawing.Font("Arial", 15, FontStyle.Bold); DrawText.changeFont(font); DrawText.drawText("HAS PERDIDO", D3DDevice.Instance.Width / 2, D3DDevice.Instance.Height / 2, Color.OrangeRed); } if (!estaEnMenu && !finDePartida) { //DrawText.drawText("[G]-Habilita GodMod ", 0, 20, Color.OrangeRed); //DrawText.drawText("Posicion camara actual: " + TgcParserUtils.printVector3(Camara.Position), 0, 150, Color.Blue); //DrawText.drawText(luz.getNombreYEnergia(), 0, 90, Color.Blue); drawer2D.BeginDrawSprite(); //Dibujar sprite (si hubiese mas, deberian ir todos aquí) drawer2D.DrawSprite(barra); drawer2D.DrawSprite(energia); //Finalizar el dibujado de Sprites drawer2D.EndDrawSprite(); #region ComentoCheckPoint DrawText.drawText("Checkpoint Id: " + DestinoMonstruo.id, 0, 40, Color.OrangeRed); //DESCOMENTAR PARA VER EL CAMINO CheckpointHelper.renderAll(); #endregion if (!activoVisionNoctura) { foreach (var mesh in meshEscenario) { //Nos ocupamos solo de las mallas habilitadas if (mesh.Enabled) { //Solo mostrar la malla si colisiona contra el Frustum var r = TgcCollisionUtils.classifyFrustumAABB(Frustum, mesh.BoundingBox); if (r != TgcCollisionUtils.FrustumResult.OUTSIDE) { if (flagGod) { luz.deshabilitarEfecto(mesh); } else { luz.aplicarEfecto(mesh, Camara.Position, direccionLookAt); } mesh.render(); } } } if (monstruo.Enabled) { var r = TgcCollisionUtils.classifyFrustumAABB(Frustum, monstruo.BoundingBox); if (r != TgcCollisionUtils.FrustumResult.OUTSIDE) { if (flagGod) { luz.deshabilitarEfecto(monstruo); } else { luz.aplicarEfecto(monstruo, Camara.Position, direccionLookAt); } } } monstruo.animateAndRender(ElapsedTime); } else { visionNoctura(); D3DDevice.Instance.Device.BeginScene(); } } //Finaliza el render y presenta en pantalla, al igual que el preRender se debe para casos puntuales es mejor utilizar a mano las operaciones de EndScene y PresentScene PostRender(); }
public override void Init() { //Para la creacion de checkpoints, borrar en el futuro System.Globalization.CultureInfo customCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone(); customCulture.NumberFormat.NumberDecimalSeparator = "."; System.Threading.Thread.CurrentThread.CurrentCulture = customCulture; Clipboard.Clear(); this.inicializarCamara(); //Seteo el personaje seteoDePersonaje(); //Seteo del monsturo seteoDelMonstruo(); //Seteo el escenario escenario = new TgcSceneLoader().loadSceneFromFile(MediaDir + "Mapa\\mapaProjectMarble-TgcScene.xml"); //initPuertaGiratoria(); //Almacenar volumenes de colision del escenario objetosColisionables.Clear(); CollisionManager.obstaculos = new List <BoundingBoxCollider>(); foreach (var mesh in escenario.Meshes) { if (mesh.Name.Contains("Recarga")) { BoundingBoxCollider recarga = BoundingBoxCollider.fromBoundingBox(mesh.BoundingBox); string[] nombre = Regex.Split(mesh.Name, "-"); recarga.nombre = nombre[1]; recarga.mesh = mesh; objetosRecarga.Add(recarga); } else { if (mesh.Name.Contains("Puerta")) { mesh.AutoTransformEnable = true; BoundingBoxCollider puerta = BoundingBoxCollider.fromBoundingBox(mesh.BoundingBox); puertas.Add(puerta); } if (mesh.Name.Contains("Placard") || mesh.Name.Contains("Locker")) { armarios.Add(BoundingBoxCollider.fromBoundingBox(mesh.BoundingBox)); } BoundingBoxCollider obj = BoundingBoxCollider.fromBoundingBox(mesh.BoundingBox); obj.nombre = mesh.Name; objetosColisionables.Add(obj); CollisionManager.obstaculos.Add(BoundingBoxCollider.fromBoundingBox(mesh.BoundingBox)); } meshEscenario.Add(mesh); } CheckpointHelper.BuildCheckpoints(); DestinoMonstruo = CheckpointHelper.checkpoints[0]; //Crear manejador de colisiones collisionManager = new ElipsoidCollisionManager(); collisionManager.SlideFactor = 2; collisionManager.GravityEnabled = false; colisionadorMonstruo = new ElipsoidCollisionManager(); colisionadorMonstruo.SlideFactor = 2; colisionadorMonstruo.GravityEnabled = false; drawer2D = new Drawer2D(); this.incializarMenu(); inicializarPantallaNegra(); mp3Player = new TgcMp3Player(); inicializarBarra(); iniciliazarAlarma(); incializarVisionNoctura(); luz = new Linterna(); }