Exemplo n.º 1
0
        internal void dispararParabolico(float elapsedTime)
        {
            if (posicion.Y >= -150)
            {
                float linearSpeed = speed * (float)Math.Cos(anguloElevacion);

                posicion.X -= Convert.ToSingle(linearSpeed * Math.Sin(anguloRotacion) * elapsedTime);
                posicion.Z -= Convert.ToSingle(linearSpeed * Math.Cos(anguloRotacion) * elapsedTime);

                verticalSpeed -= verticalAcceleration * elapsedTime;
                posicion.Y    += Convert.ToSingle(verticalSpeed * elapsedTime);

                Vector3 posSombra = posicion;
                posSombra.Y = EjemploAlumno.Instance.alturaOla(posicion);
                Matrix transfSombra = Matrix.Translation(posSombra);

                Matrix transf = Matrix.Translation(posicion);
                bullet.Transform = Matrix.Scaling(RADIO * 2, RADIO * 2, RADIO * 2) * transf;

                if (posicion.Y >= EjemploAlumno.Instance.alturaOla(posicion))
                {
                    sombra.Transform = Matrix.Scaling(RADIO * 2, 1, RADIO * 2) * transfSombra;
                }
                else
                {
                    posSalpicadura.Y = EjemploAlumno.Instance.alturaOla(posicion);
                    if (sombraActiva)
                    {
                        posSalpicadura.X = posSombra.X;
                        posSalpicadura.Z = posSombra.Z;
                        tiempo           = 0;
                    }
                    sombraActiva = false;
                    tiempo      += elapsedTime * 5;
                    Matrix transfSalp = Matrix.Translation(posSalpicadura);
                    salpicadura.Transform = Matrix.Scaling(RADIO * 2, 10, RADIO * 2) * transfSalp;
                }

                bullet.BoundingSphere.moveCenter(posicion - bullet.BoundingSphere.Position);

                bullet.updateValues();
                sombra.updateValues();

                if (soyPlayer)
                {
                    EjemploAlumno.Instance.shipContrincante.verificarDisparo(this);
                }
                else
                {
                    EjemploAlumno.Instance.ship.verificarDisparo(this);
                }
            }
            else
            {
                this.dispose();
            }
        }
Exemplo n.º 2
0
        public void render()
        {
            sphere.updateValues();
            sphere.render();

            if (this.mostrarBounding)
            {
                sphere.BoundingSphere.render();
                box.BoundingBox.render();
            }
        }
Exemplo n.º 3
0
        /// <param name="elapsedTime">Tiempo en segundos transcurridos desde el último frame</param>
        public override void render(float elapsedTime)
        {
            float moveForward = 0;
            float jump        = 0;



            //Device de DirectX para renderizar
            Device d3dDevice = GuiController.Instance.D3dDevice;


            //conviene deshabilitar ambas camaras para que no haya interferencia

            //Capturar Input teclado
            if (GuiController.Instance.D3dInput.keyDown(Microsoft.DirectX.DirectInput.Key.F))
            {
                moveForward = 100 * elapsedTime;
                //Tecla F apretada
            }

            if (GuiController.Instance.D3dInput.keyDown(Microsoft.DirectX.DirectInput.Key.Space))
            {
                jump = 100 * elapsedTime;
            }

            //Capturar Input Mouse
            if (GuiController.Instance.D3dInput.buttonPressed(TgcViewer.Utils.Input.TgcD3dInput.MouseButtons.BUTTON_LEFT))
            {
                //Boton izq apretado
            }

            Vector3 movementVector = new Vector3(
                FastMath.Sin(sphere.Rotation.Y) * moveForward,
                jump,
                FastMath.Cos(sphere.Rotation.Y) * moveForward
                );

            Vector3 realMovement = collisionManager.moveCharacter(sphere.BoundingSphere, movementVector, objetosColisionables);

            sphere.move(realMovement);

            sphere.updateValues();
            scene.renderAll();
            sphere.render();
            GuiController.Instance.RotCamera.CameraCenter = sphere.Position;

            //Mover Auto
            //mainCar.elapsedTime = elapsedTime;
            //mainCar.Mover();
            //

            //mainCar.meshAuto.render();
            //SetCarCamera();
        }
Exemplo n.º 4
0
        public Pelota CrearPelota(string pathRecursos)
        {
            int radio = 10;

            //Crear esfera
            TgcSphere sphere = new TgcSphere();
            sphere.setTexture(TgcTexture.createTexture(pathRecursos + Settings.Default.textureBall));
            sphere.Radius = radio;
            sphere.Position = new Vector3(50, 25, 0);
            sphere.updateValues();

            return new Pelota(sphere);
        }
Exemplo n.º 5
0
        public Pelota CrearPelota(string pathRecursos)
        {
            int radio = 10;

            //Crear esfera
            TgcSphere sphere = new TgcSphere();

            sphere.setTexture(TgcTexture.createTexture(pathRecursos + Settings.Default.textureBall));
            sphere.Radius   = radio;
            sphere.Position = new Vector3(50, 25, 0);
            sphere.updateValues();

            return(new Pelota(sphere));
        }
Exemplo n.º 6
0
        /// <summary>
        /// Actualiza los parámetros de la caja en base a lo cargado por el usuario
        /// </summary>
        private void updateSphere()
        {
            Device d3dDevice = GuiController.Instance.D3dDevice;
            bool   bTexture  = (bool)GuiController.Instance.Modifiers["Use texture"];
            Color  color     = (Color)GuiController.Instance.Modifiers["color"];

            sphere.RenderEdges = (bool)GuiController.Instance.Modifiers["edges"];
            sphere.Inflate     = (bool)GuiController.Instance.Modifiers["inflate"];
            sphere.BasePoly    = (TgcSphere.eBasePoly)GuiController.Instance.Modifiers.getValue("base");

            if (bTexture)
            {
                //Cambiar textura
                string texturePath = (string)GuiController.Instance.Modifiers["texture"];
                if (texturePath != currentTexture || !useTexture || (sphere.RenderEdges && sphere.Color != color))
                {
                    currentTexture = texturePath;
                    sphere.setColor(color);
                    sphere.setTexture(TgcTexture.createTexture(d3dDevice, currentTexture));
                }
            }
            else
            {
                sphere.setColor(color);
            }


            useTexture = bTexture;

            //Radio, posición y color
            sphere.Radius        = (float)GuiController.Instance.Modifiers["radius"];
            sphere.Position      = (Vector3)GuiController.Instance.Modifiers["position"];
            sphere.LevelOfDetail = (int)GuiController.Instance.Modifiers["level of detail"];


            //Rotación, converitr a radianes
            Vector3 rotation = (Vector3)GuiController.Instance.Modifiers["rotation"];

            sphere.Rotation = new Vector3(Geometry.DegreeToRadian(rotation.X), Geometry.DegreeToRadian(rotation.Y), Geometry.DegreeToRadian(rotation.Z));

            //Offset de textura
            sphere.UVOffset = (Vector2)GuiController.Instance.Modifiers["offset"];

            //Tiling de textura
            sphere.UVTiling = (Vector2)GuiController.Instance.Modifiers["tiling"];

            //Actualizar valores en la caja.
            sphere.updateValues();
        }
Exemplo n.º 7
0
        public TgcSphere CrearPelota(string pathRecursos, Vector3 position, TgcTexture texturaPelota)
        {
            float radio = 1;

            //Crear esfera
            TgcSphere sphere = new TgcSphere();

            //TODO cambiar por matrices
            sphere.AutoTransformEnable = true;
            sphere.setTexture(texturaPelota);
            sphere.Radius   = radio;
            sphere.Position = position;
            sphere.updateValues();

            return(sphere);
        }
Exemplo n.º 8
0
        /// <summary>
        /// Creo la pelota en el centro de la cancha
        /// </summary>
        /// <param name="pathRecursos"> De donde saco la textura</param>
        /// <returns> Una pelota</returns>
        private Pelota CrearPelota(string pathRecursos, Cancha cancha)
        {
            //int radio = 10; Original
            int radio = 6;
            //Crear esfera
            TgcSphere sphere = new TgcSphere();

            //TODO cambiar por matrices
            sphere.AutoTransformEnable = true;
            //sphere.setTexture(TgcTexture.createTexture(pathRecursos + Settings.Default.textureBall));
            sphere.Radius   = radio;
            sphere.Position = new Vector3(cancha.Position.X, cancha.Position.Y + radio, cancha.Position.Z);
            sphere.updateValues();

            Pelota pelota = new Pelota(sphere);

            pelota.ShadowEffect = TgcShaders.loadEffect(pathRecursos + "Shaders\\MeshPlanarShadows.fx");
            pelota.LightEffect  = TgcShaders.loadEffect(pathRecursos + "Shaders\\MeshMultiplePointLight.fx");
            return(pelota);
        }
Exemplo n.º 9
0
        public void ActualizarEsferas()
        {
            //Actualizamos la esfera del bounding
            boundingEsfera.Position = mesh.Position +
                                      new Vector3(0, (mesh.BoundingBox.PMax.Y - mesh.BoundingBox.PMin.Y) / 2, 0);
            boundingEsfera.updateValues();

            //Actualizamos la esfera del alcance
            //TODO. Misma logica de siempre para saber la direccion del persnaje. REVISAR.
            var direccionEsferaGolpe = mesh.Position + new Vector3(-(float)Math.Sin(mesh.Rotation.Y) * 50,
                                                                   (mesh.BoundingBox.PMax.Y - mesh.BoundingBox.PMin.Y) / 2, -(float)Math.Cos(mesh.Rotation.Y) * 50);

            alcanceInteraccionEsfera.Position = direccionEsferaGolpe;
            alcanceInteraccionEsfera.updateValues();

            //TODO. Esto esta muy mal
            if (antorcha != null)
            {
                antorcha.SetPosicion(Direccion(50) + new Vector3(0, 20, 0));
            }
        }
Exemplo n.º 10
0
        public PowerUp(Vector3 pos)
        {
            interpolador         = new InterpoladorVaiven();
            interpolador.Current = 8;
            interpolador.Min     = 7;
            interpolador.Max     = 28;
            interpolador.Speed   = 40f;

            esfera          = new TgcSphere();
            esfera.Position = pos;
            esfera.setColor(Color.Red);
            esfera.Radius        = 10;
            esfera.LevelOfDetail = 3;

            esfera.AutoTransformEnable = true;

            esfera.updateValues();

            tiempo = 10f;

            moto = null;
        }
Exemplo n.º 11
0
        public Bala(Vector3 pos, float anguloRotacion, float anguloElevacion, Canion canion, bool soyPlayer, float velBala, float g)
        {
            bullet = new TgcSphere();
            bullet.setColor(Color.Black);
            bullet.Radius             = RADIO;
            bullet.Position           = pos;
            posicion                  = pos;
            bullet.LevelOfDetail      = 1;
            this.anguloRotacion       = anguloRotacion;
            this.anguloElevacion      = anguloElevacion;
            this.speed                = velBala;
            this.verticalAcceleration = g;
            bullet.updateValues();
            bullet.AutoTransformEnable = false;
            this.canion = canion;
            canion.agregarBalaEnElAire(this);

            sombra = new TgcSphere(RADIO, Color.Black, new Vector3(pos.X, EjemploAlumno.Instance.alturaOla(pos), pos.Z));
            sombra.updateValues();
            sombra.AutoTransformEnable = false;
            sombra.Effect    = EjemploAlumno.Instance.efectoSombra;
            sombra.Technique = "SombraBala";
            //sombra.AlphaBlendEnable = true;

            salpicadura            = new TgcCylinder(pos, RADIO, 10);
            salpicadura.Color      = Color.White;
            salpicadura.UseTexture = true;
            salpicadura.setTexture(TgcTexture.createTexture(GuiController.Instance.AlumnoEjemplosMediaDir + "4141-diffuse.jpg"));//"el-agua-cae-textura-del-fondo-11558332.jpg"));
            salpicadura.updateValues();
            salpicadura.AutoTransformEnable = false;
            salpicadura.Effect    = TgcShaders.loadEffect(GuiController.Instance.AlumnoEjemplosMediaDir + "shader agua.fx");
            salpicadura.Technique = "SalpicaduraBala";

            this.soyPlayer = soyPlayer;

            verticalSpeed = speed * (float)Math.Sin(anguloElevacion);
        }
Exemplo n.º 12
0
        public TgcSphere CrearPelota(string pathRecursos, Vector3 position, TgcTexture texturaPelota)
        {
            float radio = 1;

            //Crear esfera
            TgcSphere sphere = new TgcSphere();
            //TODO cambiar por matrices
            sphere.AutoTransformEnable = true;
            sphere.setTexture(texturaPelota);
            sphere.Radius = radio;
            sphere.Position = position;
            sphere.updateValues();

            return sphere;
        }
Exemplo n.º 13
0
        /// <summary>
        /// Creo la pelota en el centro de la cancha
        /// </summary>
        /// <param name="pathRecursos"> De donde saco la textura</param>
        /// <returns> Una pelota</returns>
        private Pelota CrearPelota(string pathRecursos, Cancha cancha)
        {
            //int radio = 10; Original
            int radio = 6;
            //Crear esfera
            TgcSphere sphere = new TgcSphere();
            //TODO cambiar por matrices
            sphere.AutoTransformEnable = true;
            //sphere.setTexture(TgcTexture.createTexture(pathRecursos + Settings.Default.textureBall));
            sphere.Radius = radio;
            sphere.Position = new Vector3(cancha.Position.X, cancha.Position.Y + radio, cancha.Position.Z);
            sphere.updateValues();

            Pelota pelota = new Pelota(sphere);
            pelota.ShadowEffect = TgcShaders.loadEffect(pathRecursos + "Shaders\\MeshPlanarShadows.fx");
            pelota.LightEffect = TgcShaders.loadEffect(pathRecursos + "Shaders\\MeshMultiplePointLight.fx");
            return pelota;
        }