/// <summary> /// Crea una tribuna desde un mesh, pero por como esta creada se necesita acomodarla en la cancha y escalarla /// </summary> /// <param name="pathMesh"> ruta donde esta el mesh de la tribuna </param> /// <param name="position"> donde la tengo que ubicar a la tribuna</param> /// <param name="rotateY"> como la tengo que rotar para que quede en la horientacion correcta </param> /// <param name="scale"> factor de escalado para que quede armonica a la cancha </param> /// <returns></returns> private TgcMesh CrearTribuna(string pathMesh, float rotateY, Vector3 scale) { TgcMesh tribuna = new TgcSceneLoader().loadSceneFromFile(pathMesh).Meshes[0]; tribuna.rotateY(rotateY); tribuna.Scale = scale; return(tribuna); }
private Luz CrearLuz(string pathRecursos, TgcBox cancha, int signoX, int signoZ, float rotateY) { TgcMesh luzMesh = new TgcSceneLoader().loadSceneFromFile(pathRecursos + Settings.Default.meshFilePoste).Meshes[0]; //TODO cambiar por matrices luzMesh.AutoTransformEnable = true; luzMesh.rotateY(rotateY); luzMesh.Scale = new Vector3(3, 4, 3); luzMesh.Position = new Vector3(signoX * (cancha.Size.X / 2 + 50), cancha.Position.Y + luzMesh.BoundingBox.PMax.Y, signoZ * (cancha.Size.Z / 2 + 100)); Luz luz = new Luz(luzMesh, Color.White, luzMesh.BoundingBox.PMax); return(luz); }
/// <summary> /// Creo un arco /// </summary> /// <param name="posicion">Donde va a estar ubicado el Arco</param> /// <param name="pathRecursos">De donde sacar el mesh</param> /// <returns> Un arco</returns> private Arco CrearArco(string pathRecursos, Cancha cancha, int direccion) { Vector3 posicion = new Vector3(direccion * (cancha.Position.X + cancha.Size.X / 2 - 100), cancha.Position.Y, cancha.Position.Z); List <Palo> palos = new List <Palo>(); TgcMesh palo1 = new TgcSceneLoader().loadSceneFromFile(pathRecursos + Settings.Default.meshFileGoal).Meshes[0]; //TODO cambiar por matrices palo1.AutoTransformEnable = true; palo1.Position = posicion; palo1.Scale = new Vector3(0.8f, 0.8f, 0.8f); TgcMesh palo2 = new TgcSceneLoader().loadSceneFromFile(pathRecursos + Settings.Default.meshFileGoal).Meshes[1]; //TODO cambiar por matrices palo2.AutoTransformEnable = true; palo2.Position = posicion; palo2.Scale = new Vector3(0.8f, 0.8f, 0.8f); TgcMesh palo3 = new TgcSceneLoader().loadSceneFromFile(pathRecursos + Settings.Default.meshFileGoal).Meshes[2]; //TODO cambiar por matrices palo3.AutoTransformEnable = true; palo3.Position = posicion; palo3.Scale = new Vector3(0.8f, 0.8f, 0.8f); palos.Add(new Palo(palo1)); palos.Add(new Palo(palo2)); palos.Add(new Palo(palo3)); Vector3 posicionRed = new Vector3(posicion.X, posicion.Y + palo3.BoundingBox.PMin.Y / 2, posicion.Z); Vector3 tamanoRed = new Vector3(0, palo3.BoundingBox.PMin.Y, palo3.BoundingBox.PMax.Z * 2 - 14); TgcMesh red = new TgcSceneLoader().loadSceneFromFile(pathRecursos + "Arco\\Red-TgcScene.xml").Meshes[0]; //TODO cambiar por matrices red.AutoTransformEnable = true; red.Position = posicionRed + new Vector3(direccion * 65, 0, 0); //TODO esto significa que los arcos no son correctos... porque no escalo igual red.Scale = new Vector3(3f, 3f, 2f); red.AlphaBlendEnable = true; //Roto uno de los 2 ya que uso el mismo mesh if (direccion == -1) { red.rotateY(FastMath.PI); } return(new Arco(palos, new Red(TgcBox.fromSize(posicionRed, tamanoRed), red))); }
/// <summary> /// Crea una tribuna desde un mesh, pero por como esta creada se necesita acomodarla en la cancha y escalarla /// </summary> /// <param name="pathMesh"> ruta donde esta el mesh de la tribuna </param> /// <param name="position"> donde la tengo que ubicar a la tribuna</param> /// <param name="rotateY"> como la tengo que rotar para que quede en la horientacion correcta </param> /// <param name="scale"> factor de escalado para que quede armonica a la cancha </param> /// <returns></returns> private TgcMesh CrearTribuna(string pathMesh, float rotateY, Vector3 scale) { TgcMesh tribuna = new TgcSceneLoader().loadSceneFromFile(pathMesh).Meshes[0]; tribuna.rotateY(rotateY); tribuna.Scale = scale; return tribuna; }
private Luz CrearLuz(string pathRecursos, TgcBox cancha, int signoX, int signoZ, float rotateY) { TgcMesh luzMesh = new TgcSceneLoader().loadSceneFromFile(pathRecursos + Settings.Default.meshFilePoste).Meshes[0]; //TODO cambiar por matrices luzMesh.AutoTransformEnable = true; luzMesh.rotateY(rotateY); luzMesh.Scale = new Vector3(3, 4, 3); luzMesh.Position = new Vector3(signoX * (cancha.Size.X / 2 + 50), cancha.Position.Y + luzMesh.BoundingBox.PMax.Y, signoZ * (cancha.Size.Z / 2 + 100)); Luz luz = new Luz(luzMesh, Color.White, luzMesh.BoundingBox.PMax); return luz; }
/// <summary> /// Creo un arco /// </summary> /// <param name="posicion">Donde va a estar ubicado el Arco</param> /// <param name="pathRecursos">De donde sacar el mesh</param> /// <returns> Un arco</returns> private Arco CrearArco(string pathRecursos, Cancha cancha, int direccion) { Vector3 posicion = new Vector3(direccion * (cancha.Position.X + cancha.Size.X / 2 - 100), cancha.Position.Y, cancha.Position.Z); List<Palo> palos = new List<Palo>(); TgcMesh palo1 = new TgcSceneLoader().loadSceneFromFile(pathRecursos + Settings.Default.meshFileGoal).Meshes[0]; //TODO cambiar por matrices palo1.AutoTransformEnable = true; palo1.Position = posicion; palo1.Scale = new Vector3(0.8f, 0.8f, 0.8f); TgcMesh palo2 = new TgcSceneLoader().loadSceneFromFile(pathRecursos + Settings.Default.meshFileGoal).Meshes[1]; //TODO cambiar por matrices palo2.AutoTransformEnable = true; palo2.Position = posicion; palo2.Scale = new Vector3(0.8f, 0.8f, 0.8f); TgcMesh palo3 = new TgcSceneLoader().loadSceneFromFile(pathRecursos + Settings.Default.meshFileGoal).Meshes[2]; //TODO cambiar por matrices palo3.AutoTransformEnable = true; palo3.Position = posicion; palo3.Scale = new Vector3(0.8f, 0.8f, 0.8f); palos.Add(new Palo(palo1)); palos.Add(new Palo(palo2)); palos.Add(new Palo(palo3)); Vector3 posicionRed = new Vector3(posicion.X, posicion.Y + palo3.BoundingBox.PMin.Y / 2, posicion.Z); Vector3 tamanoRed = new Vector3(0, palo3.BoundingBox.PMin.Y, palo3.BoundingBox.PMax.Z * 2 - 14); TgcMesh red = new TgcSceneLoader().loadSceneFromFile(pathRecursos + "Arco\\Red-TgcScene.xml").Meshes[0]; //TODO cambiar por matrices red.AutoTransformEnable = true; red.Position = posicionRed + new Vector3(direccion * 65, 0, 0); //TODO esto significa que los arcos no son correctos... porque no escalo igual red.Scale = new Vector3(3f, 3f, 2f); red.AlphaBlendEnable = true; //Roto uno de los 2 ya que uso el mismo mesh if (direccion == -1) { red.rotateY(FastMath.PI); } return new Arco(palos, new Red(TgcBox.fromSize(posicionRed, tamanoRed), red)); }