Beispiel #1
0
        public void rotar(TgcMesh zombie, Vector3 posPersonaje, Vector3 posEnemigo)
        {
            Vector3 vec         = posEnemigo - posPersonaje;
            double  anguloFinal = Math.Atan2(vec.X, vec.Z);

            zombie.rotateY(-zombie.Rotation.Y);
            zombie.rotateY((float)anguloFinal);
        }
Beispiel #2
0
        public void vistaDelPersonaje(Vector3 posicionPersonaje)
        {
            Vector3 vec         = getVectorHaciaPersonaje(posicionPersonaje);
            double  anguloFinal = Math.Atan2(vec.X, vec.Z);

            bala.rotateY(-bala.Rotation.Y);
            bala.rotateY((float)anguloFinal);
            bala.rotateY((float)Math.PI);
            bala.rotateY((float)Geometry.DegreeToRadian(-10));
        }
Beispiel #3
0
        public void girarIzquierda(bool generoPath)
        {
            moto.moveOrientedY(35);
            var rotAngle = FastMath.ToRad(-90);

            moto.rotateY(rotAngle);

            if (generoPath)
            {
                pathlight.agregarSegmento(moto.Position);
            }
            moto.moveOrientedY(-35);

            rotar(-1);
        }
Beispiel #4
0
        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();
        }
Beispiel #5
0
        public void init(Vector3 posicion, Vector3 direccion, String escena, Tipo tipo)
        {
            this.direccion = direccion;
            string alumnoMediaFolder = GuiController.Instance.AlumnoEjemplosDir;
            var    loader            = new TgcSceneLoader();

            mesh                  = loader.loadSceneFromFile(alumnoMediaFolder + "CucarachaJugosita\\Media\\" + escena).Meshes[0];
            mesh.Position         = posicion;
            mesh.AlphaBlendEnable = true;
            Vector3 direc = direccion - posicion;

            direc.Y = 0;
            direc.Normalize();
            mesh.rotateY((float)Math.Atan2(direc.X, direc.Z) - mesh.Rotation.Y - Geometry.DegreeToRadian(180f));
            text2       = new TgcText2d();
            text2.Text  = "";
            text2.Color = Color.DarkRed;
            text2.Align = TgcText2d.TextAlign.CENTER;
            text2.Size  = new Size(300, 100);
            Size screenSize = GuiController.Instance.Panel3d.Size;

            text2.Position = new Point(screenSize.Width / 2 - text2.Size.Width / 2, screenSize.Height * 6 / 10);
            text2.changeFont(new System.Drawing.Font("Chiller", /*30*/ GuiController.Instance.D3dDevice.PresentationParameters.BackBufferWidth / 45, FontStyle.Regular));
            this.tipo = tipo;
        }
Beispiel #6
0
        public override void Init()
        {
            //El framework posee la clase TgcSceneLoader que permite cargar modelos 3D.
            //Estos modelos 3D están almacenados en un archivo XML llamado TgcScene.xml.
            //Este archivo es un formato a medida hecho para el framework. Y puede ser creado desde herramientas de
            //diseño como 3Ds MAX (exportando a traves de un plugin) o con el editor MeshCreator que viene con el framework.
            //El framework viene con varios modelos 3D incluidos en la carpeta: TgcViewer\Examples\Media\MeshCreator\Meshes.
            //El formato especifica una escena, representada por la clase TgcScene. Una escena puede estar compuesta por varios
            //modelos 3D. Cada modelo se representa con la clase TgcMesh.
            //En este ejemplo vamos a cargar una escena con un único modelo.
            var loader = new TgcSceneLoader();

            //De toda la escena solo nos interesa guardarnos el primer modelo (el único que hay en este caso).
            mesh = loader.loadSceneFromFile(MediaDir + "MeshCreator\\Meshes\\Vehiculos\\Hummer\\Hummer-TgcScene.xml").Meshes[0];
            mesh.AutoTransformEnable = true;
            mesh.rotateY(FastMath.QUARTER_PI);
            mesh.move(new Vector3(100, 40, -200));
            //mesh.Transform = Matrix.RotationY(FastMath.QUARTER_PI) * Matrix.Translation(100,40,-200);

            //En este ejemplo no cargamos un solo modelo 3D sino una escena completa, compuesta por varios modelos.
            //El framework posee varias escenas ya hechas en la carpeta TgcViewer\Examples\Media\MeshCreator\Scenes.
            scene = loader.loadSceneFromFile(MediaDir + "MeshCreator\\Scenes\\Iglesia\\Iglesia-TgcScene.xml");

            //Hacemos que la cámara esté centrada sobre el mesh.
            Camara = new TgcRotationalCamera(mesh.BoundingBox.calculateBoxCenter(),
                                             mesh.BoundingBox.calculateBoxRadius() * 2, Input);
        }
Beispiel #7
0
        public override void Render()
        {
            //BackgroundColor
            D3DDevice.Instance.Device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
            D3DDevice.Instance.Device.BeginScene();
            ClearTextures();

            //Cargar variables shader
            mesh.Effect.SetValue("ambientColor", ColorValue.FromColor(Color.Gray));
            mesh.Effect.SetValue("diffuseColor", ColorValue.FromColor(Color.LightBlue));
            mesh.Effect.SetValue("specularColor", ColorValue.FromColor(Color.White));
            mesh.Effect.SetValue("specularExp", 10f);
            mesh.Effect.SetValue("lightPosition", lightPos);
            mesh.Effect.SetValue("eyePosition",
                                 TgcParserUtils.vector3ToFloat4Array(Camara.Position));

            mesh.rotateY(-ElapsedTime / 2);
            mesh.render();

            textHelp.render();

            //Help
            if (Input.keyPressed(Key.H))
            {
                helpForm.ShowDialog();
            }

            PostRender();
        }
Beispiel #8
0
        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();
        }
Beispiel #9
0
        override public void render(float elapsedTime)
        {
            var matrizView = GuiController.Instance.D3dDevice.Transform.View;

            if (bandera == false)
            {
                meshLR.rotateY(2f * elapsedTime);
                //meshLR.render();
            }
        }
Beispiel #10
0
 public void rotateY(float angulo)
 {
     meshP.rotateY(angulo);
     meshC1.rotateY(angulo);
     meshC2.rotateY(angulo);
     meshC3.rotateY(angulo);
     meshP.BoundingBox.transform(meshP.Transform);
     meshC1.BoundingBox.transform(meshC1.Transform);
     meshC2.BoundingBox.transform(meshC2.Transform);
     meshC3.BoundingBox.transform(meshC3.Transform);
 }
Beispiel #11
0
        public ElementoMapa(String escena, Vector3 posicion, Vector3 direccion)
        {
            var    loader            = new TgcSceneLoader();
            string alumnoMediaFolder = GuiController.Instance.AlumnoEjemplosDir;

            this.escena   = loader.loadSceneFromFile(alumnoMediaFolder + "CucarachaJugosita\\Media\\" + escena);
            mesh          = this.escena.Meshes[0];
            mesh.Position = posicion;
            Vector3 direc = direccion - posicion;

            direc.Y = 0;
            direc.Normalize();
            mesh.rotateY((float)Math.Atan2(direc.X, direc.Z) - mesh.Rotation.Y - Geometry.DegreeToRadian(180f));
        }
Beispiel #12
0
        public void moverPuerta()
        {
            float elapsedTime = GuiController.Instance.ElapsedTime;

            if (estado == Estado.Abierta && !abiertaJugador)
            {
                contadorAbierta -= 80f * elapsedTime;
            }
            if (contadorAbierta < 0f)
            {
                contadorAbierta = 500f;
                estado          = Estado.Cerrado;
            }
            if (contador < 90 && estado == Estado.Abierta)
            {
                meshP.rotateY(Geometry.DegreeToRadian(-1f));
                contador++;
            }
            if (contador > 0 && estado == Estado.Cerrado)
            {
                meshP.rotateY(Geometry.DegreeToRadian(1f));
                contador--;
            }
        }
Beispiel #13
0
        public void render(float elapsedTime)
        {
            var matrizView = GuiController.Instance.D3dDevice.Transform.View;

            if (bandera == false)
            {
                meshTrofeo.render();
            }
            else
            {
                meshTrofeo.rotateY(elapsedTime * velocidad);
                velocidad = velocidad + (2 * elapsedTime);
                meshTrofeo.move(new Vector3(0, 0.001f * velocidad, 0));
                meshTrofeo.render();
            }
            meshMesa.render();
        }
Beispiel #14
0
        public void Init()
        {
            this.Posicion = new Vector3(0f, 0f, 0f);
            Inventario    = new List <ObjetoInventario>();

            var fruta = new ObjetoInventario {
                objeto   = new Fruta(),
                cantidad = 0
            };

            Inventario.Add(fruta);

            var agua = new ObjetoInventario {
                objeto   = new Agua(),
                cantidad = 0
            };

            Inventario.Add(agua);

            var madera = new ObjetoInventario {
                objeto   = new Madera(),
                cantidad = 0
            };

            Inventario.Add(madera);

            var piedra = new ObjetoInventario {
                objeto   = new Piedra(),
                cantidad = 0
            };

            Inventario.Add(piedra);

            // Creo la Espera que envuelve al personaje para detectar colisiones
            BoundingSphere = new TgcBoundingSphere(new Vector3(this.Posicion.X * env.terreno.SceneScaleXZ, env.terreno.CalcularAlturaTerreno(this.Posicion.X, this.Posicion.Z) * env.terreno.SceneScaleY + 10, this.Posicion.Z * env.terreno.SceneScaleXZ), 0.1f);
            BoundingSphere.setRenderColor(Color.Yellow);

            // Creo el Hacha del Personaje
            hachaPersonaje                  = loader.loadSceneFromFile(env.MediaDir + "hacha\\Hacha-TgcScene.xml").Meshes[0];
            hachaPersonaje.Position         = new Vector3(12 * env.terreno.SceneScaleXZ, env.terreno.CalcularAlturaTerreno(12, 22) * env.terreno.SceneScaleY, 22 * env.terreno.SceneScaleXZ);
            hachaPersonaje.AlphaBlendEnable = true;
            hachaPersonaje.Scale            = new Vector3(0.05f, 0.05f, 0.05f);
            hachaPersonaje.rotateY(FastMath.PI_HALF);
        }
Beispiel #15
0
        public override void render(float elapsedTime)
        {
            Device d3dDevice = GuiController.Instance.D3dDevice;

            //Cargar variables shader
            mesh.Effect.SetValue("ambientColor", ColorValue.FromColor(Color.Gray));
            mesh.Effect.SetValue("diffuseColor", ColorValue.FromColor(Color.LightBlue));
            mesh.Effect.SetValue("specularColor", ColorValue.FromColor(Color.White));
            mesh.Effect.SetValue("specularExp", 10f);
            mesh.Effect.SetValue("lightPosition", lightPos);
            mesh.Effect.SetValue("eyePosition", TgcParserUtils.vector3ToFloat4Array(GuiController.Instance.FpsCamera.getPosition()));


            mesh.rotateY(-elapsedTime / 2);
            mesh.render();

            textHelp.render();

            //Help
            if (GuiController.Instance.D3dInput.keyPressed(Microsoft.DirectX.DirectInput.Key.H))
            {
                helpForm.ShowDialog(GuiController.Instance.MainForm);
            }
        }
Beispiel #16
0
        public override void render(float elapsedTime)
        {
            Microsoft.DirectX.Direct3D.Device d3dDevice = GuiController.Instance.D3dDevice;

            //Calcular proxima posicion de personaje segun Input
            float       moveForward = 0f;
            float       rotate      = 0;
            TgcD3dInput d3dInput    = GuiController.Instance.D3dInput;
            bool        moving      = false;
            bool        rotating    = false;

            //Adelante
            if (d3dInput.keyDown(Key.W))
            {
                moveForward = -VELODICAD_CAMINAR;
                moving      = true;
            }

            //Atras
            if (d3dInput.keyDown(Key.S))
            {
                moveForward = VELODICAD_CAMINAR;
                moving      = true;
            }

            //Derecha
            if (d3dInput.keyDown(Key.D))
            {
                rotate   = VELOCIDAD_ROTACION;
                rotating = true;
            }

            //Izquierda
            if (d3dInput.keyDown(Key.A))
            {
                rotate   = -VELOCIDAD_ROTACION;
                rotating = true;
            }

            //Si hubo rotacion
            if (rotating)
            {
                //Rotar personaje y la camara, hay que multiplicarlo por el tiempo transcurrido para no atarse a la velocidad el hardware
                float rotAngle = Geometry.DegreeToRadian(rotate * elapsedTime);
                personaje.rotateY(rotAngle);
                GuiController.Instance.ThirdPersonCamera.rotateY(rotAngle);
            }

            //Si hubo desplazamiento
            if (moving)
            {
                //Aplicar movimiento hacia adelante o atras segun la orientacion actual del Mesh
                Vector3 lastPos = personaje.Position;
                personaje.moveOrientedY(moveForward * elapsedTime);

                //Detectar colisiones
                bool collide = false;
                foreach (TgcBox obstaculo in obstaculos)
                {
                    TgcCollisionUtils.BoxBoxResult result = TgcCollisionUtils.classifyBoxBox(personaje.BoundingBox, obstaculo.BoundingBox);
                    if (result == TgcCollisionUtils.BoxBoxResult.Adentro || result == TgcCollisionUtils.BoxBoxResult.Atravesando)
                    {
                        collide = true;
                        break;
                    }
                }

                //Si hubo colision, restaurar la posicion anterior
                if (collide)
                {
                    personaje.Position = lastPos;
                }
            }

            //Hacer que la camara siga al personaje en su nueva posicion
            GuiController.Instance.ThirdPersonCamera.Target = personaje.Position;



            //Render piso
            piso.render();


            //Render obstaculos
            foreach (TgcBox obstaculo in obstaculos)
            {
                obstaculo.render();
            }

            //Render personaje
            personaje.render();
        }
Beispiel #17
0
        public override void render(float elapsedTime)
        {
            #region Controller

            Microsoft.DirectX.Direct3D.Device d3dDevice = GuiController.Instance.D3dDevice;

            #endregion

            #region Transformaciones

            //nave.Transform = Matrix.Scaling(NAVE_SCALE) * Matrix.Translation(0, 9000, 0);
            //nave.Transform = Matrix.Translation(0, 500, 0);
            //nave.Transform = Matrix.Scaling(NAVE_SCALE);

            #endregion

            #region Movimiento y Rotacion

            bool        moving      = false;
            bool        rotating    = false;
            float       moveForward = 0f;
            float       rotate      = 0;
            TgcD3dInput input       = GuiController.Instance.D3dInput;

            //Vector3 movement = new Vector3(0, 0, 0);
            if (input.keyDown(Key.Left) || input.keyDown(Key.A))
            {
                rotate   = -NAVE_ROTATION_SPEED;
                rotating = true;
            }
            else if (input.keyDown(Key.Right) || input.keyDown(Key.D))
            {
                rotate   = NAVE_ROTATION_SPEED;
                rotating = true;
            }
            if (input.keyDown(Key.Up) || input.keyDown(Key.W))
            {
                moveForward = -NAVE_MOVEMENT_SPEED;
                moving      = true;
            }
            else if (input.keyDown(Key.Down) || input.keyDown(Key.S))
            {
                moveForward = NAVE_MOVEMENT_SPEED;
                moving      = true;
            }

            Vector3 Position_prev = nave.Position;

            if (rotating)
            {
                nave.rotateY(Geometry.DegreeToRadian(rotate * elapsedTime));
                GuiController.Instance.ThirdPersonCamera.rotateY(Geometry.DegreeToRadian(rotate * elapsedTime));
            }

            if (moving)
            {
                Vector3 lastPos = nave.Position;
                nave.moveOrientedY(moveForward * elapsedTime);
            }

            //Aplicar movimiento (VIEJO)
            //movement *= MOVEMENT_SPEED * elapsedTime;
            //nave.move(movement);

            bool Collision = false;

            foreach (TgcMesh planeta in planetas)
            {
                TgcBoundingBox nave_BBox    = nave.BoundingBox;
                TgcBoundingBox planeta_BBox = planeta.BoundingBox;

                TgcCollisionUtils.BoxBoxResult Collision_Type = TgcCollisionUtils.classifyBoxBox(nave_BBox, planeta_BBox);

                if (Collision_Type != TgcCollisionUtils.BoxBoxResult.Afuera)
                {
                    Collision = true;
                    break;
                }
            }

            if (Collision)
            {
                ;
            }

            #endregion

            #region Camara

            GuiController.Instance.ThirdPersonCamera.Target = nave.Position;

            #endregion

            #region Render

            nave.render();
            for (int i = 0; i < 10; i++)
            {
                planetas[i].render();
            }
            //universo.renderAll();

            nave.BoundingBox.render();
            foreach (TgcMesh planeta in planetas)
            {
                planeta.BoundingBox.render();
            }

            #endregion
        }
Beispiel #18
0
        public override void Render()
        {
            PreRender();

            //Calcular proxima posicion de personaje segun Input
            var   moveForward = 0f;
            float rotate      = 0;
            var   moving      = false;
            var   rotating    = false;

            //Adelante
            if (Input.keyDown(Key.W))
            {
                moveForward = -VELODICAD_CAMINAR;
                moving      = true;
            }

            //Atras
            if (Input.keyDown(Key.S))
            {
                moveForward = VELODICAD_CAMINAR;
                moving      = true;
            }

            //Derecha
            if (Input.keyDown(Key.D))
            {
                rotate   = VELOCIDAD_ROTACION;
                rotating = true;
            }

            //Izquierda
            if (Input.keyDown(Key.A))
            {
                rotate   = -VELOCIDAD_ROTACION;
                rotating = true;
            }

            //Si hubo rotacion
            if (rotating)
            {
                //Rotar personaje y la camara, hay que multiplicarlo por el tiempo transcurrido para no atarse a la velocidad el hardware
                var rotAngle = Geometry.DegreeToRadian(rotate * ElapsedTime);
                personaje.rotateY(rotAngle);
                camaraInterna.rotateY(rotAngle);
            }

            //Si hubo desplazamiento
            if (moving)
            {
                //Aplicar movimiento hacia adelante o atras segun la orientacion actual del Mesh
                var lastPos = personaje.Position;
                personaje.moveOrientedY(moveForward * ElapsedTime);

                //Detectar colisiones
                var collide = false;
                foreach (var obstaculo in obstaculos)
                {
                    var result = TgcCollisionUtils.classifyBoxBox(personaje.BoundingBox, obstaculo.BoundingBox);
                    if (result == TgcCollisionUtils.BoxBoxResult.Adentro ||
                        result == TgcCollisionUtils.BoxBoxResult.Atravesando)
                    {
                        collide = true;
                        break;
                    }
                }

                //Si hubo colision, restaurar la posicion anterior
                if (collide)
                {
                    personaje.Position = lastPos;
                }
            }

            //Hacer que la camara siga al personaje en su nueva posicion
            camaraInterna.Target = personaje.Position;

            //Render piso
            piso.render();

            //Render obstaculos
            foreach (var obstaculo in obstaculos)
            {
                obstaculo.render();
            }

            //Render personaje
            personaje.render();

            PostRender();
        }
        /// <summary>
        ///     Renderizar toda la parte cliente, con el manejo de input
        /// </summary>
        private void renderClient()
        {
            //Calcular proxima posicion de personaje segun Input
            var   elapsedTime = GuiController.Instance.ElapsedTime;
            var   moveForward = 0f;
            float rotate      = 0;
            var   d3dInput    = TgcD3dInput.Instance;
            var   moving      = false;
            var   rotating    = false;

            //Adelante
            if (d3dInput.keyDown(Key.W))
            {
                moveForward = -VELODICAD_CAMINAR;
                moving      = true;
            }

            //Atras
            if (d3dInput.keyDown(Key.S))
            {
                moveForward = VELODICAD_CAMINAR;
                moving      = true;
            }

            //Derecha
            if (d3dInput.keyDown(Key.D))
            {
                rotate   = VELOCIDAD_ROTACION;
                rotating = true;
            }

            //Izquierda
            if (d3dInput.keyDown(Key.A))
            {
                rotate   = -VELOCIDAD_ROTACION;
                rotating = true;
            }

            //Si hubo rotacion
            if (rotating)
            {
                meshPrincipal.rotateY(Geometry.DegreeToRadian(rotate * elapsedTime));
                this.camara.rotateY(rotate);
            }

            //Si hubo desplazamiento
            if (moving)
            {
                meshPrincipal.moveOrientedY(moveForward * elapsedTime);
            }

            //Hacer que la camara siga al personaje en su nueva posicion
            this.camara.Target = meshPrincipal.Position;

            //Render piso
            piso.render();

            //Renderizar meshPrincipal
            if (meshPrincipal != null)
            {
                meshPrincipal.render();
            }

            //Renderizar otrosMeshes
            foreach (var entry in otrosMeshes)
            {
                entry.Value.render();
            }
        }
Beispiel #20
0
 public void rotateY(float grados)
 {
     mesh.rotateY(grados);
 }
 private void crearVeredas()
 {
     cordones.Add(new TgcPlane(new Vector3(-450 + fix_posX, 5, -450 + fix_posZ), new Vector3(5900, 0, 5), TgcPlane.Orientations.XZplane, cordonTexture, 40, 1));
     cordones.Add(new TgcPlane(new Vector3(-450 + fix_posX, 0, -445 + fix_posZ), new Vector3(5895, 5, 0), TgcPlane.Orientations.XYplane, cordonTexture, 40, 1));
     cordones.Add(new TgcPlane(new Vector3(-500 + fix_posX, 5, -500 + fix_posZ), new Vector3(6000, 0, 50), TgcPlane.Orientations.XZplane, veredaTexture, 60, 1));
     for (int i = 0; i < 30; i++)
     {
         var sceneRueda = loader.loadSceneFromFile(MediaDir + "PosteDeLuz\\Poste de luz-TgcScene.xml");
         posteDeLuz = sceneRueda.Meshes[0];
         posteDeLuz.AutoTransformEnable = true;
         posteDeLuz.Position            = new Vector3(-455 + (i * (5900 / 30)) + fix_posX, 5, -450 + fix_posZ);
         posteDeLuz.rotateY(FastMath.PI_HALF);
         posteDeLuz.Scale = new Vector3(1, 3, 1);
         posteDeLuz.move(0, 50, 0);
         posteDeLuz.BoundingBox.transform(Matrix.Scaling(new Vector3(0.1f, 3, 0.1f)) * Matrix.Translation(new Vector3(posteDeLuz.Position.X, posteDeLuz.Position.Y, posteDeLuz.Position.Z - 33)));
         meshes.Add(posteDeLuz);
         LpostesDeLuz.Add(posteDeLuz);
     }
     cordones.Add(new TgcPlane(new Vector3(-450 + fix_posX, 5, -445 + fix_posZ), new Vector3(5, 0, 5890), TgcPlane.Orientations.XZplane, cordonTexture, 1, 40));
     cordones.Add(new TgcPlane(new Vector3(-445 + fix_posX, 0, -445 + fix_posZ), new Vector3(0, 5, 5890), TgcPlane.Orientations.YZplane, cordonTexture, 1, 40));
     cordones.Add(new TgcPlane(new Vector3(-500 + fix_posX, 5, -450 + fix_posZ), new Vector3(50, 0, 5950), TgcPlane.Orientations.XZplane, veredaTexture, 1, 60));
     for (int i = 0; i < 30; i++)
     {
         var sceneRueda = loader.loadSceneFromFile(MediaDir + "PosteDeLuz\\Poste de luz-TgcScene.xml");
         posteDeLuz = sceneRueda.Meshes[0];
         posteDeLuz.AutoTransformEnable = true;
         posteDeLuz.Position            = new Vector3(-455 + fix_posX, 5, -450 + (i * (5900 / 30)) + fix_posZ);
         posteDeLuz.rotateY(FastMath.PI);
         posteDeLuz.Scale = new Vector3(1, 3, 1);
         posteDeLuz.move(0, 50, 0);
         posteDeLuz.BoundingBox.transform(Matrix.Scaling(new Vector3(0.1f, 3, 0.1f)) * Matrix.Translation(new Vector3(posteDeLuz.Position.X - 33, posteDeLuz.Position.Y, posteDeLuz.Position.Z)));
         meshes.Add(posteDeLuz);
         LpostesDeLuz.Add(posteDeLuz);
     }
     cordones.Add(new TgcPlane(new Vector3(-450 + fix_posX, 5, 5445 + fix_posZ), new Vector3(5900, 0, 5), TgcPlane.Orientations.XZplane, cordonTexture, 40, 1));
     cordones.Add(new TgcPlane(new Vector3(-450 + fix_posX, 0, 5445 + fix_posZ), new Vector3(5900, 5, 0), TgcPlane.Orientations.XYplane, cordonTexture, 40, 1));
     cordones.Add(new TgcPlane(new Vector3(-450 + fix_posX, 5, 5500 + fix_posZ), new Vector3(5950, 0, -50), TgcPlane.Orientations.XZplane, veredaTexture, 60, 1));
     for (int i = 0; i < 30; i++)
     {
         var sceneRueda = loader.loadSceneFromFile(MediaDir + "PosteDeLuz\\Poste de luz-TgcScene.xml");
         posteDeLuz = sceneRueda.Meshes[0];
         posteDeLuz.AutoTransformEnable = true;
         posteDeLuz.Position            = new Vector3(-455 + (i * (5900 / 30)) + fix_posX, 5, 5445 + fix_posZ);
         posteDeLuz.rotateY(FastMath.PI + FastMath.PI_HALF);
         posteDeLuz.Scale = new Vector3(1, 3, 1);
         posteDeLuz.move(0, 50, 0);
         posteDeLuz.BoundingBox.transform(Matrix.Scaling(new Vector3(0.1f, 3, 0.1f)) * Matrix.Translation(new Vector3(posteDeLuz.Position.X, posteDeLuz.Position.Y, posteDeLuz.Position.Z + 33)));
         meshes.Add(posteDeLuz);
         LpostesDeLuz.Add(posteDeLuz);
     }
     cordones.Add(new TgcPlane(new Vector3(5445 + fix_posX, 5, -445 + fix_posZ), new Vector3(5, 0, 5890), TgcPlane.Orientations.XZplane, cordonTexture, 1, 40));
     cordones.Add(new TgcPlane(new Vector3(5445 + fix_posX, 0, -445 + fix_posZ), new Vector3(0, 5, 5890), TgcPlane.Orientations.YZplane, cordonTexture, 1, 40));
     cordones.Add(new TgcPlane(new Vector3(5450 + fix_posX, 5, -450 + fix_posZ), new Vector3(50, 0, 5900), TgcPlane.Orientations.XZplane, veredaTexture, 1, 60));
     for (int i = 0; i < 30; i++)
     {
         var sceneRueda = loader.loadSceneFromFile(MediaDir + "PosteDeLuz\\Poste de luz-TgcScene.xml");
         posteDeLuz = sceneRueda.Meshes[0];
         posteDeLuz.AutoTransformEnable = true;
         posteDeLuz.Position            = new Vector3(5445 + fix_posX, 5, -450 + (i * (5900 / 30)) + fix_posZ);
         posteDeLuz.rotateY(FastMath.TWO_PI);
         posteDeLuz.Scale = new Vector3(1, 3, 1);
         posteDeLuz.move(0, 50, 0);
         posteDeLuz.BoundingBox.transform(Matrix.Scaling(new Vector3(0.1f, 3, 0.1f)) * Matrix.Translation(new Vector3(posteDeLuz.Position.X + 33, posteDeLuz.Position.Y, posteDeLuz.Position.Z)));
         meshes.Add(posteDeLuz);
         LpostesDeLuz.Add(posteDeLuz);
     }
 }