示例#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...
        }