예제 #1
0
        //metodo de clase que construye un barco - necesario para poder instanciar barcos y que sean TgcMesh
        static public Barco ConstruirBarco(string path, Vector2 pos, float radioElipsoide, TipoElemento tipoBarco)
        {
            //cuando mergee tengo que sacar la altura del Oceano
            Vector3 posAlturaDelOceano = new Vector3(pos.X, Oceano.alturaEnPunto(pos.X, pos.Y), pos.Y);

            return((Barco)ConstruirElemento(path, posAlturaDelOceano, radioElipsoide, tipoBarco));
        }
예제 #2
0
        public override void update()
        {
            this.mover();

            base.update();

            //esto tambien
            if (Oceano.alturaEnPunto(this.Position.X, this.Position.Z) - 0.03f > this.Position.Y)
            {
                InteractionManager.Disparos.Remove(this);

                this.dispose();
            }
        }
예제 #3
0
        public static Vector3 normalEnPuntoXZ(float X, float Z /*, float momento*/)
        {
            float delta   = 2f;
            float alturaN = Oceano.alturaEnPunto(X, Z + delta);
            float alturaS = Oceano.alturaEnPunto(X, Z - delta);
            float alturaE = Oceano.alturaEnPunto(X + delta, Z);
            float alturaO = Oceano.alturaEnPunto(X - delta, Z);

            Vector3 vector1 = new Vector3(delta * 2, alturaE - alturaO, 0);

            Vector3 vector2 = new Vector3(0, alturaN - alturaS, delta * 2);

            return(Vector3.Cross(vector2, vector1));
        }
예제 #4
0
        //mueve el barco y su boundingspehere en Y; hay que refactorearlo...
        //mueve el barco y su boundingspehere en Y; hay que refactorearlo...
        virtual public void flotar()
        {
            //normal del mar en el punto donde se encuentra el barco
            normal = Oceano.normalEnPuntoXZ(this.Position.X, this.Position.Z);

            //altura del mar en el punto de se encuentra el barco
            float Y = Oceano.alturaEnPunto(this.Position.X, this.Position.Z);

            //ponemos el bounding sphere a la altura donde esta el barco
            this.boundingSphere.moveCenter(new Vector3(0, Y - boundingSphere.Position.Y + 40, 0));

            //ubicamos al barco...
            this.Position   = new Vector3(this.Position.X, Y - 15, this.Position.Z);                                                                                    // ...en alto...
            this.rotation.Z = FastMath.Atan2(-normal.X * FastMath.Cos(this.rotation.Y), normal.Y) + FastMath.Atan2(normal.Z * FastMath.Sin(this.rotation.Y), normal.Y); // ...con rotacion en Z...
            this.rotation.X = FastMath.Atan2(normal.Z * FastMath.Cos(this.rotation.Y), normal.Y) + FastMath.Atan2(normal.X * FastMath.Sin(this.rotation.Y), normal.Y);  // ...con rotacion en Y...
        }
예제 #5
0
        public override void init()
        {
            #region INICIALIZACIONES ESCENARIO

            lightMesh = TgcBox.fromSize(new Vector3(10, 10, 10), Color.Red);
            oceano    = new Oceano(currentScaleXZ, currentScaleY);
            isla      = new Isla(currentScaleXZ, currentScaleY);
            skyBox    = new PirateSkyBox();

            #endregion

            #region INICIALIZACIONES PANTALLA

            crearModifiers();

            crearUserVars();
            crearSprites();
            // Carga valores para el postprocesado
            Postproceso.Cargar();

            #endregion

            #region INICIALIZACIONES BARCO

            barcoProtagonista = ConstructorDeElementos.ConstruirProtagonista(new Vector2(0, -930f));
            b1 = ConstructorDeElementos.ConstruirEnemigo(new Vector2(500, 500));
            b2 = ConstructorDeElementos.ConstruirEnemigo(new Vector2(-700, 960));
            b3 = ConstructorDeElementos.ConstruirEnemigo(new Vector2(100, 880));

            InteractionManager.Barcos.AddRange(new List <Barco> {
                b1, b2, b3, barcoProtagonista
            });
            InteractionManager.Resto.AddRange(new List <IUpdateRender> {
                isla, oceano
            });

            InputManager.Add(barcoProtagonista);

            #endregion
        }
예제 #6
0
        public override void init()
        {
            #region INICIALIZACIONES ESCENARIO

            lightMesh = TgcBox.fromSize(new Vector3(10, 10, 10), Color.Red);
            oceano = new Oceano(currentScaleXZ, currentScaleY);
            isla = new Isla(currentScaleXZ, currentScaleY);
            skyBox = new PirateSkyBox();

            #endregion

            #region INICIALIZACIONES PANTALLA

            crearModifiers();

            crearUserVars();
            crearSprites();
            // Carga valores para el postprocesado
            Postproceso.Cargar();

            #endregion

            #region INICIALIZACIONES BARCO

            barcoProtagonista = ConstructorDeElementos.ConstruirProtagonista(new Vector2(0, -930f));
            b1 = ConstructorDeElementos.ConstruirEnemigo(new Vector2(500, 500));
            b2 = ConstructorDeElementos.ConstruirEnemigo(new Vector2(-700, 960));
            b3 = ConstructorDeElementos.ConstruirEnemigo(new Vector2(100, 880));

            InteractionManager.Barcos.AddRange(new List<Barco> { b1, b2, b3, barcoProtagonista });
            InteractionManager.Resto.AddRange(new List<IUpdateRender> { isla, oceano });

            InputManager.Add(barcoProtagonista);

            #endregion
        }