private static void Render() { // Guardo la transformacion Matrix old = Moneda.Transform; Device d3dDevice = GuiController.Instance.D3dDevice; // Adaptar la altura de la moneda a la marea + offset para que quede flotando float Altura = Oceano.AplicarCPUShader(Moneda.Position).Y + 50f; Matrix MatrizTraslacion = Matrix.Translation(Moneda.Position.X, Altura, Moneda.Position.Z); // Acumular rotacion actual, sin pasarnos de una vuelta entera rotacionY = (rotacionY + Geometry.DegreeToRadian(1)) % (float)(2 * Math.PI); Matrix MatrizRotacion = Matrix.RotationYawPitchRoll(rotacionY, 0, 0); // Aplicar transformaciones Moneda.Transform = MatrizRotacion * MatrizTraslacion; Moneda.BoundingBox.transform(Moneda.Transform); // Render verdadero de la moneda Moneda.render(); if (ParametrosDeConfiguracion.RenderBoundingBoxes) { Moneda.BoundingBox.setRenderColor(Color.Red); Moneda.BoundingBox.render(); } // Restaurar la transformacion Moneda.Transform = old; ContadorMonedas.Render(); }
/// <summary> /// Método para cargar los elementos que hacen al juego /// </summary> public static void Cargar() { // Crear loader TgcSceneLoader loader = new TgcSceneLoader(); // Cargar mesh TgcScene Scene = loader.loadSceneFromFile(Utiles.MeshesDir("Moneda\\Moneda-TgcScene.xml")); Moneda = Scene.Meshes[0]; Moneda.Position = new Vector3(10, 0, 10); Moneda.AutoTransformEnable = false; // Como va a estar flotando agrando el bounding box en el eje y Vector3 PMax = Moneda.BoundingBox.PMax + new Vector3(0, 100f, 0); Vector3 PMin = Moneda.BoundingBox.PMin + new Vector3(0, -100f, 0); Moneda.BoundingBox = new TgcBoundingBox(PMax, PMin); ContadorMonedas.Cargar(); }