TgcMesh TgcSceneLoader.IMeshFactory.createNewMesh(Mesh d3dMesh, string meshName, TgcMesh.MeshRenderType renderType) { Colisionable mesh; switch (this.tipo) { case TipoElemento.BarcoProtagonista: mesh = new BarcoProtagonista(); break; case TipoElemento.BarcoEnemigo: mesh = new BarcoEnemigo(); break; case TipoElemento.BolaCanion: mesh = new BolaDeCanion(); break; default: throw new Exception("No existe ningun barco del tipo pedido"); //hacer esta excepcion mas espefica? } mesh.initData(d3dMesh, meshName, renderType); return((TgcMesh)mesh); }
static public BolaDeCanion ConstruirCanionazo(Barco barco) { //lo pongo un poco mas arriba para que no empiece en la altura del mar Vector3 posicion = barco.Position; posicion.Y += 70; //creamos un disparo BolaDeCanion disparo = (BolaDeCanion)ConstruirElemento(defaultBolaCanion, posicion, 30f, TipoElemento.BolaCanion); //asignamos la rotacion disparo.Rotation = barco.Rotation; disparo.barco = barco; //throw new Exception("esta mierda ejecuta " + rotacion.X.ToString()); //calculamos las velocidades en X e Y y lo inclinamos en un angulo para que sea parabolico float rotacion = disparo.Rotation.X - FastMath.PI / 10; disparo.velocidadY = FastMath.Sin(-rotacion); disparo.velocidadX = FastMath.Cos(-rotacion); return(disparo); }
TgcMesh TgcSceneLoader.IMeshFactory.createNewMesh(Mesh d3dMesh, string meshName, TgcMesh.MeshRenderType renderType) { Colisionable mesh; switch (this.tipo) { case TipoElemento.BarcoProtagonista: mesh = new BarcoProtagonista(); break; case TipoElemento.BarcoEnemigo: mesh = new BarcoEnemigo(); break; case TipoElemento.BolaCanion: mesh = new BolaDeCanion(); break; default: throw new Exception("No existe ningun barco del tipo pedido"); //hacer esta excepcion mas espefica? } mesh.initData(d3dMesh, meshName, renderType); return (TgcMesh)mesh; }