Пример #1
0
        //*********************************************
        /* Carga el tanque de Guerra */
        //*********************************************
        public void CargarTanque()
        {
            Device d3dDevice = GuiController.Instance.D3dDevice;

            TgcSceneLoader loader7 = new TgcSceneLoader();

            loader7.MeshFactory = new CustomMeshShaderFactory();
            TgcScene scene7 = loader7.loadSceneFromFile(GuiController.Instance.ExamplesMediaDir + "MeshCreator\\Meshes\\Vehiculos\\TanqueFuturistaRuedas\\TanqueFuturistaRuedas-TgcScene.xml");

            mesh4 = (TgcMeshShader)scene7.Meshes[0];


            mesh4.Position   = C_PosicionActual;
            mesh4.Scale      = new Vector3(0.2f, 0.2f, 0.2f);
            C_PosicionAnt    = C_PosicionActual;
            C_PosicionActual = mesh4.Position;
            C_Estado         = "Vivo";

            //Cargar Shader de PhonhShading
            string compilationErrors;

            mesh4.Effect = Effect.FromFile(d3dDevice, GuiController.Instance.ExamplesMediaDir + "Shaders\\PhongShading.fx", null, null, ShaderFlags.None, null, out compilationErrors);
            if (mesh4.Effect == null)
            {
                throw new Exception("Error al cargar shader. Errores: " + compilationErrors);
            }
            //Configurar Technique
            mesh4.Effect.Technique = "DefaultTechnique";

            //Crear caja para indicar ubicacion de la luz
            lightBox = TgcBox.fromSize(new Vector3(50, 50, 50), Color.Yellow);
        }
Пример #2
0
 public NightRecarga(Vector3 pos)
 {
     this.init();
     this.posicion      = pos;
     this.colision      = TgcBox.fromSize(posicion, new Vector3(30, 100, 30));
     this.mesh.Position = posicion;
 }
Пример #3
0
        private void createMeshes(int cajasPorCuadrante)
        {
            var cantCajasPorNivel = cajasPorCuadrante * cajasPorCuadrante;

            //Crear nuevas cajas
            var boxSize = 3f;

            cajasNivel1 = new TgcBox[cantCajasPorNivel];
            cajasNivel2 = new TgcBox[cantCajasPorNivel];
            cajasNivel3 = new TgcBox[cantCajasPorNivel];
            var cajas = 0;

            for (var i = 0; i < cajasPorCuadrante; i++)
            {
                for (var j = 0; j < cajasPorCuadrante; j++)
                {
                    //Crear tres niveles de caja, una abajo y otra arriba, con texturas diferentes
                    cajasNivel1[cajas] = TgcBox.fromSize(new Vector3(i * boxSize, 0, j * boxSize * 1.5f),
                                                         new Vector3(boxSize, boxSize, boxSize), box1Texture);
                    cajasNivel1[cajas].AutoTransformEnable = true;

                    cajasNivel2[cajas] = TgcBox.fromSize(new Vector3(i * boxSize, boxSize, j * boxSize * 1.5f),
                                                         new Vector3(boxSize, boxSize, boxSize), box2Texture);
                    cajasNivel2[cajas].AutoTransformEnable = true;

                    cajasNivel3[cajas] = TgcBox.fromSize(new Vector3(i * boxSize, boxSize * 2, j * boxSize * 1.5f),
                                                         new Vector3(boxSize, boxSize, boxSize), box3Texture);
                    cajasNivel3[cajas].AutoTransformEnable = true;
                    cajas++;
                }
            }
        }
Пример #4
0
        public override void Init()
        {
            //Cargar 25 cajas formando una matriz
            var loader = new TgcSceneLoader();

            boxes = new List <TgcBox>();
            var texture = TgcTexture.createTexture(D3DDevice.Instance.Device,
                                                   MediaDir + "Texturas\\granito.jpg");
            var boxSize = new Vector3(30, 30, 30);

            for (var i = 0; i < 5; i++)
            {
                for (var j = 0; j < 5; j++)
                {
                    var center = new Vector3((boxSize.X + boxSize.X / 2) * i, (boxSize.Y + boxSize.Y / 2) * j, 0);
                    var box    = TgcBox.fromSize(center, boxSize, texture);
                    boxes.Add(box);
                }
            }

            //Iniciarlizar PickingRay
            pickingRay = new TgcPickingRay();

            Camara = new TgcRotationalCamera(new Vector3(100f, 100f, -250f), 600f);
            //FIXME esta camara deberi ser estatica y no rotacional, ya que sino trae problemas con el picking.

            //Crear caja para marcar en que lugar hubo colision
            collisionPointMesh = TgcBox.fromSize(new Vector3(3, 3, 3), Color.Red);
            selected           = false;

            //UserVars para mostrar en que punto hubo colision
            UserVars.addVar("CollP-X:");
            UserVars.addVar("CollP-Y:");
            UserVars.addVar("CollP-Z:");
        }
Пример #5
0
        public override void init()
        {
            Device d3dDevice = GuiController.Instance.D3dDevice;

            //Crear loader
            TgcSceneLoader loader = new TgcSceneLoader();

            //Cargar mesh
            TgcScene scene = loader.loadSceneFromFile(GuiController.Instance.ExamplesMediaDir + "ModelosTgc\\Olla\\Olla-TgcScene.xml");

            mesh = scene.Meshes[0];


            //Crear caja para indicar ubicacion de la luz
            lightMesh = TgcBox.fromSize(new Vector3(20, 20, 20), Color.Yellow);


            //Modifiers de la luz
            GuiController.Instance.Modifiers.addBoolean("lightEnable", "lightEnable", true);
            GuiController.Instance.Modifiers.addVertex3f("lightPos", new Vector3(-500, -500, -500), new Vector3(500, 800, 500), new Vector3(0, 500, 0));
            GuiController.Instance.Modifiers.addColor("ambient", Color.Gray);
            GuiController.Instance.Modifiers.addColor("diffuse", Color.Blue);
            GuiController.Instance.Modifiers.addColor("specular", Color.White);
            GuiController.Instance.Modifiers.addFloat("specularEx", 0, 40, 20f);



            //Centrar camara rotacional respecto a este mesh
            GuiController.Instance.RotCamera.targetObject(mesh.BoundingBox);
        }
Пример #6
0
        public LucesAuto(Auto auto, Ruedas r1, Ruedas r2, TgcCamera cam)
        {
            camara    = cam;
            lightMesh = TgcBox.fromSize(new Vector3(10, 10, 10), Color.Red);

            //lista para todos los meshes
            lstMeshes = new List <TgcMesh>();
            var scene = auto.ciudadScene;

            //agrego meshes del scene a la lista
            foreach (var mesh in scene.Meshes)
            {
                lstMeshes.Add(mesh);
            }

            //agrego auto
            //lstMeshes.Add(auto);


            //agrego ruedas
            lstMeshes.Add(r1.RuedaMeshDer);
            lstMeshes.Add(r1.RuedaMeshIzq);
            lstMeshes.Add(r2.RuedaMeshIzq);
            lstMeshes.Add(r2.RuedaMeshDer);
        }
Пример #7
0
        public void luzAguaTormentoso(TgcBox lightMesh)
        {
            luzTormentoso(lightMesh);

            cargarEfectoLuz(this.effect);
            //return posLuz;
        }
Пример #8
0
        public override void Init()
        {
            //Color de fondo
            //GuiController.Instance.BackgroundColor = Color.DarkGray;

            //Camara en 1ra persona
            //GuiController.Instance.FpsCamera.Enable = true;
            //GuiController.Instance.FpsCamera.MovementSpeed = 100f;
            //GuiController.Instance.FpsCamera.JumpSpeed = 50f;
            //GuiController.Instance.FpsCamera.setCamera(new Vector3(40, 30, 35), new Vector3(0, 0, 0));

            this.effect = TgcShaders.loadEffect(this.pathRecursos + "Shaders\\ParcialPixelShader.fx");

            //Piso
            this.boxFloor        = TgcBox.fromSize(new Vector3(0, 0, 0), new Vector3(30, 0, 30), Color.DarkSeaGreen);
            this.boxFloor.Effect = this.effect;

            //Pared
            this.boxWall        = TgcBox.fromSize(new Vector3(0, 10, -15), new Vector3(30, 20, 0), Color.Red);
            this.boxWall.Effect = this.effect;

            //Figura
            this.boxFigure        = TgcBox.fromSize(new Vector3(0, 5, 0), new Vector3(10, 10, 5), Color.SteelBlue);
            this.boxFigure.Effect = this.effect;

            //Luz
            this.boxLuz = TgcBox.fromSize(new Vector3(0, 20, 20), new Vector3(2, 2, 2), Color.LightYellow);

            this.CrearTetera();
            this.CrearBuggy();
        }
Пример #9
0
        private TgcMesh CrearTribunaPopular(string pathRecursos, TgcBox cancha, int sentido)
        {
            TgcMesh platea = this.CrearTribuna(pathRecursos + Settings.Default.meshFileTribunePo, sentido * -(float)Math.PI / 2, new Vector3(14, 12, 15));

            platea.Position = new Vector3(sentido * (cancha.Size.X / 2 + platea.BoundingBox.PMax.Z + 120), cancha.Position.Y + platea.BoundingBox.PMax.Y, cancha.Position.Z);
            return(platea);
        }
Пример #10
0
        public override void init()
        {
            Device d3dDevice = GuiController.Instance.D3dDevice;

            //Crear Sprite animado
            animatedSprite = new TgcAnimatedSprite(
                GuiController.Instance.ExamplesMediaDir + "\\Texturas\\Sprites\\Explosion.png", //Textura de 256x256
                new Size(64, 64),                                                               //Tamaño de un frame (64x64px en este caso)
                16,                                                                             //Cantidad de frames, (son 16 de 64x64px)
                10                                                                              //Velocidad de animacion, en cuadros x segundo
                );

            //Ubicarlo centrado en la pantalla
            Size screenSize  = GuiController.Instance.Panel3d.Size;
            Size textureSize = animatedSprite.Sprite.Texture.Size;

            animatedSprite.Position = new Vector2(screenSize.Width / 2 - textureSize.Width / 2, screenSize.Height / 2 - textureSize.Height / 2);

            //Modifiers para variar parametros del sprite
            GuiController.Instance.Modifiers.addFloat("frameRate", 1, 30, 10);
            GuiController.Instance.Modifiers.addVertex2f("position", new Vector2(0, 0), new Vector2(screenSize.Width, screenSize.Height), animatedSprite.Position);
            GuiController.Instance.Modifiers.addVertex2f("scaling", new Vector2(0, 0), new Vector2(4, 4), animatedSprite.Scaling);
            GuiController.Instance.Modifiers.addFloat("rotation", 0, 360, 0);


            //Creamos un Box3D para que se vea como el Sprite es en 2D y se dibuja siempre arriba de la escena 3D
            box = TgcBox.fromSize(new Vector3(10, 10, 10), TgcTexture.createTexture(GuiController.Instance.ExamplesMediaDir + "\\Texturas\\pasto.jpg"));

            //Hacer que la camara se centre en el box3D
            GuiController.Instance.RotCamera.targetObject(box.BoundingBox);
        }
Пример #11
0
        /// <summary>
        /// Dibujar el esqueleto de la malla
        /// </summary>
        protected void renderSkeletonMesh()
        {
            Device  device  = GuiController.Instance.D3dDevice;
            Vector3 ceroVec = new Vector3(0, 0, 0);

            //Dibujar huesos y joints
            for (int i = 0; i < bones.Length; i++)
            {
                TgcSkeletalBone bone = bones[i];

                //Renderizar Joint
                TgcBox jointBox = skeletonRenderJoints[i];
                jointBox.Transform = bone.MatFinal * this.transform;
                jointBox.render();

                //Modificar línea del bone
                if (bone.ParentBone != null)
                {
                    TgcLine boneLine = skeletonRenderBones[i];

                    boneLine.PStart = TgcVectorUtils.transform(ceroVec, bone.MatFinal * this.transform);
                    boneLine.PEnd   = TgcVectorUtils.transform(ceroVec, bone.ParentBone.MatFinal * this.transform);
                    boneLine.updateValues();
                }
            }

            //Dibujar bones
            foreach (TgcLine boneLine in skeletonRenderBones)
            {
                if (boneLine != null)
                {
                    boneLine.render();
                }
            }
        }
Пример #12
0
        public override void init()
        {
            Microsoft.DirectX.Direct3D.Device d3dDevice = GuiController.Instance.D3dDevice;

            //Cuerpo principal que se controla con el teclado
            box = TgcBox.fromSize(new Vector3(0, 10, 0), new Vector3(10, 10, 10), Color.Blue);

            //triangulo
            triangle    = new CustomVertex.PositionColored[3];
            triangle[0] = new CustomVertex.PositionColored(-100, 0, 0, Color.Red.ToArgb());
            triangle[1] = new CustomVertex.PositionColored(0, 0, 50, Color.Green.ToArgb());
            triangle[2] = new CustomVertex.PositionColored(0, 100, 0, Color.Blue.ToArgb());
            triagleAABB = TgcBoundingBox.computeFromPoints(new Vector3[] { triangle[0].Position, triangle[1].Position, triangle[2].Position });

            //box2
            box2 = TgcBox.fromSize(new Vector3(-50, 10, -20), new Vector3(15, 15, 15), Color.Violet);

            //sphere
            sphere = new TgcBoundingSphere(new Vector3(30, 20, -20), 15);

            //OBB: computar OBB a partir del AABB del mesh.
            TgcSceneLoader loader  = new TgcSceneLoader();
            TgcMesh        meshObb = loader.loadSceneFromFile(GuiController.Instance.ExamplesMediaDir + "MeshCreator\\Meshes\\Vehiculos\\StarWars-ATST\\StarWars-ATST-TgcScene.xml").Meshes[0];

            obb = TgcObb.computeFromAABB(meshObb.BoundingBox);
            meshObb.dispose();
            obb.move(new Vector3(100, 0, 30));
            obb.setRotation(new Vector3(0, FastMath.PI / 4, 0));


            //Configurar camara en Tercer Persona
            GuiController.Instance.ThirdPersonCamera.Enable = true;
            GuiController.Instance.ThirdPersonCamera.setCamera(box.Position, 30, -75);
        }
Пример #13
0
        public override void Init()
        {
            //Crear Sprite
            sprite         = new TgcSprite();
            sprite.Texture = TgcTexture.createTexture(MediaDir + "\\Texturas\\LogoTGC.png");

            //Ubicarlo centrado en la pantalla
            var textureSize = sprite.Texture.Size;

            sprite.Position = new Vector2(FastMath.Max(D3DDevice.Instance.Width / 2 - textureSize.Width / 2, 0),
                                          FastMath.Max(D3DDevice.Instance.Height / 2 - textureSize.Height / 2, 0));

            //Modifiers para variar parametros del sprite
            Modifiers.addVertex2f("position", new Vector2(0, 0),
                                  new Vector2(D3DDevice.Instance.Width, D3DDevice.Instance.Height), sprite.Position);
            Modifiers.addVertex2f("scaling", new Vector2(0, 0), new Vector2(4, 4), sprite.Scaling);
            Modifiers.addFloat("rotation", 0, 360, 0);

            //Creamos un Box3D para que se vea como el Sprite es en 2D y se dibuja siempre arriba de la escena 3D
            box = TgcBox.fromSize(new Vector3(10, 10, 10), TgcTexture.createTexture(MediaDir + "\\Texturas\\pasto.jpg"));

            //Hacer que la camara se centre en el box3D
            Camara = new TgcRotationalCamera(box.BoundingBox.calculateBoxCenter(),
                                             box.BoundingBox.calculateBoxRadius() * 2);
        }
        public override void Init()
        {
            //Crear Sprite animado
            animatedSprite = new TgcAnimatedSprite(MediaDir + "\\Texturas\\Sprites\\Explosion.png", //Textura de 256x256
                                                   new Size(64, 64),                                //Tamaño de un frame (64x64px en este caso)
                                                   16,                                              //Cantidad de frames, (son 16 de 64x64px)
                                                   10                                               //Velocidad de animacion, en cuadros x segundo
                                                   );

            //Ubicarlo centrado en la pantalla
            var textureSize = animatedSprite.Sprite.Texture.Size;

            animatedSprite.Position = new Vector2(D3DDevice.Instance.Width / 2 - textureSize.Width / 2,
                                                  D3DDevice.Instance.Height / 2 - textureSize.Height / 2);

            //Modifiers para variar parametros del sprite
            Modifiers.addFloat("frameRate", 1, 30, 10);
            Modifiers.addVertex2f("position", new Vector2(0, 0),
                                  new Vector2(D3DDevice.Instance.Width, D3DDevice.Instance.Height), animatedSprite.Position);
            Modifiers.addVertex2f("scaling", new Vector2(0, 0), new Vector2(4, 4), animatedSprite.Scaling);
            Modifiers.addFloat("rotation", 0, 360, 0);

            //Creamos un Box3D para que se vea como el Sprite es en 2D y se dibuja siempre arriba de la escena 3D
            box = TgcBox.fromSize(new Vector3(10, 10, 10), TgcTexture.createTexture(MediaDir + "\\Texturas\\pasto.jpg"));

            //Hacer que la camara se centre en el box3D
            Camara = new TgcRotationalCamera(box.BoundingBox.calculateBoxCenter(),
                                             box.BoundingBox.calculateBoxRadius() * 2);
        }
Пример #15
0
        public override void Init()
        {
            //Crear caja vacia
            box = new TgcBox();
            box.AutoTransformEnable = true;
            //Crear caja debug vacia
            debugBox       = new TgcBoxDebug();
            currentTexture = null;

            //Modifiers para vararis sus parametros
            Modifiers.addBoolean("box", "box", true);
            Modifiers.addBoolean("boundingBox", "BoundingBox", false);
            Modifiers.addBoolean("debugBox", "debugBox", true);
            Modifiers.addFloat("thickness", 0.1f, 5, 0.2f);
            Modifiers.addTexture("texture", MediaDir + "\\Texturas\\madera.jpg");
            Modifiers.addVertex2f("offset", new Vector2(-0.5f, -0.5f), new Vector2(0.9f, 0.9f), new Vector2(0, 0));
            Modifiers.addVertex2f("tiling", new Vector2(0.1f, 0.1f), new Vector2(4, 4), new Vector2(1, 1));
            Modifiers.addColor("color", Color.BurlyWood);
            Modifiers.addVertex3f("size", new Vector3(0, 0, 0), new Vector3(100, 100, 100), new Vector3(20, 20, 20));
            Modifiers.addVertex3f("position", new Vector3(-100, -100, -100), new Vector3(100, 100, 100),
                                  new Vector3(0, 0, 0));
            Modifiers.addVertex3f("rotation", new Vector3(-180, -180, -180), new Vector3(180, 180, 180),
                                  new Vector3(0, 0, 0));

            Camara = new TgcRotationalCamera(new Vector3(), 200f, Input);
        }
Пример #16
0
        /// <summary>
        ///     Se llama una sola vez, al principio cuando se ejecuta el ejemplo.
        ///     Escribir aquí todo el código de inicialización: cargar modelos, texturas, modifiers, uservars, etc.
        ///     Borrar todo lo que no haga falta.
        /// </summary>
        public override void Init()
        {
            //Device de DirectX para crear primitivas
            var d3dDevice = D3DDevice.Instance.Device;

            //Piso la camara que viene por defecto con la que yo quiero usar.
            //Configurar centro al que se mira y distancia desde la que se mira
            Camara = new TgcRotationalCamera(new Vector3(), 50f, Input);

            //Textura de la carperta Media
            var pathTexturaCaja = MediaDir + Game.Default.TexturaCaja;

            //Cargamos una textura
            var texture = TgcTexture.createTexture(pathTexturaCaja);

            //Creamos una caja 3D ubicada en (0, 0, 0), dimensiones (5, 10, 5) y la textura como color.
            var center = new Vector3(0, 0, 0);
            var size   = new Vector3(5, 10, 5);

            Box = TgcBox.fromSize(center, size, texture);

            //Cargo el unico mesh que tiene la escena
            Mesh = new TgcSceneLoader().loadSceneFromFile(MediaDir + "LogoTGC-TgcScene.xml").Meshes[0];
            //Escalo el mesh que es muy grande
            Mesh.Scale = new Vector3(0.5f, 0.5f, 0.5f);
        }
        /// <summary>
        ///     testea colisiones AABB
        /// </summary>
        private void testCollisions()
        {
            if (Player1.Moving)
            {
                foreach (InteractiveObject objeto in MyWorld.Objetos)
                {
                    if (objeto.mesh.Enabled && objeto.Solid)
                    {
                        MyCamera.CameraBox.Position = Camara.Position;
                        TgcBox cameraBox = MyCamera.CameraBox;

                        if (TgcCollisionUtils.testAABBAABB(cameraBox.BoundingBox, objeto.mesh.BoundingBox))
                        {
                            collidedObject       = objeto;
                            MyCamera.Collisioned = true;
                            break;
                        }
                        else
                        {
                            MyCamera.Collisioned = false;
                        }
                    }
                }
            }
        }
Пример #18
0
        public override void Init()
        {
            box = TgcBox.fromSize(new Vector3(0, 0, 0), new Vector3(20, 20, 20), Color.Red);

            Camara = new TgcRotationalCamera(box.BoundingBox.calculateBoxCenter(),
                                             box.BoundingBox.calculateBoxRadius() * 2);
        }
Пример #19
0
        public override void init()
        {
            Device d3dDevice = GuiController.Instance.D3dDevice;

            //Iniciar kinect
            tgcKinect = new TgcKinect();
            tgcKinect.init();
            tgcKinect.DebugSkeleton.init();

            //Analizador de gestos
            gestureAnalizer = new GestureAnalizer();
            sceneBounds     = new TgcBoundingBox(new Vector3(-50, -40, 230), new Vector3(80, 50, 290));
            gestureAnalizer.setSceneBounds(sceneBounds);
            sceneCenter = sceneBounds.calculateBoxCenter();

            sceneCenterBox = TgcBox.fromSize(sceneCenter, new Vector3(30, 30, 30), Color.Blue);

            //Crear mueble de fondo
            mueble          = TgcBox.fromSize(new Vector3(200, 100, 50), Color.SandyBrown);
            mueble.Position = new Vector3(20, 20, 200);

            //Crear puerta
            door               = new GestureDoorLeft();
            door.Mesh          = TgcBox.fromSize(new Vector3(30, 40, 4), Color.Green).toMesh("door");
            door.Mesh.Position = mueble.Position + new Vector3(-30, 20, 25);


            GuiController.Instance.FpsCamera.Enable = true;
            GuiController.Instance.FpsCamera.setCamera(new Vector3(1.5467f, 54.7247f, 401.1074f), new Vector3(1.4672f, 54.4561f, 400.1474f));
        }
Пример #20
0
        public override void init()
        {
            Device d3dDevice = GuiController.Instance.D3dDevice;

            //Cargamos una textura
            //Una textura es una imágen 2D que puede dibujarse arriba de un polígono 3D para darle color.
            //Es muy útil para generar efectos de relieves y superficies.
            //Puede ser cualquier imágen 2D (jpg, png, gif, etc.) y puede ser editada con cualquier editor
            //normal (photoshop, paint, descargada de goole images, etc).
            //El framework viene con un montón de texturas incluidas y organizadas en categorias (texturas de
            //madera, cemento, ladrillo, pasto, etc). Se encuentran en la carpeta del framework:
            //  TgcViewer\Examples\Media\MeshCreator\Textures
            //Podemos acceder al path de la carpeta "Media" utilizando la variable "GuiController.Instance.ExamplesMediaDir".
            //Esto evita que tengamos que hardcodear el path de instalación del framework.
            TgcTexture texture = TgcTexture.createTexture(GuiController.Instance.ExamplesMediaDir + "MeshCreator\\Textures\\Madera\\cajaMadera3.jpg");

            //Creamos una caja 3D ubicada en (0, -3, 0), dimensiones (5, 10, 5) y la textura como color.
            Vector3 center = new Vector3(0, -3, 0);
            Vector3 size   = new Vector3(5, 10, 5);

            box = TgcBox.fromSize(center, size, texture);


            GuiController.Instance.RotCamera.targetObject(box.BoundingBox);
        }
Пример #21
0
        public override void init()
        {
            Device d3dDevice = GuiController.Instance.D3dDevice;

            //Iniciar kinect
            tgcKinect = new TgcKinect();
            tgcKinect.init();
            tgcKinect.DebugSkeleton.init();

            //Analizador de gestos
            gestureAnalizer = new GestureAnalizer();
            sceneBounds     = new TgcBoundingBox(new Vector3(-10, 0, -10), new Vector3(10, 20, 10));
            gestureAnalizer.setSceneBounds(sceneBounds);

            //Crear mueble de fondo
            mueble          = TgcBox.fromSize(new Vector3(20, 20, 5), Color.SandyBrown);
            mueble.Position = new Vector3(0, 10, -10);

            //Crear algunos cajones
            Vector3 muebleCenterPos = mueble.Position;

            cajones = new List <GestureLocker>();
            cajones.Add(crearCajon(muebleCenterPos + new Vector3(-3, 0, 0.25f), new Vector3(5, 2, 5)));
            cajones.Add(crearCajon(muebleCenterPos + new Vector3(0, 3, 0.25f), new Vector3(5, 2, 5)));
            cajones.Add(crearCajon(muebleCenterPos + new Vector3(3, 0, 0.25f), new Vector3(5, 2, 5)));


            GuiController.Instance.FpsCamera.Enable = true;
            GuiController.Instance.FpsCamera.setCamera(new Vector3(-3.5508f, 16.5873f, 13.2958f), new Vector3(-3.535f, 16.3069f, 12.336f));

            center = TgcBox.fromSize(new Vector3(0, 0, 0), new Vector3(1, 1, 1), Color.Blue);
        }
Пример #22
0
        private TgcMesh CrearTribunaPlatea(string pathRecursos, TgcBox cancha, int sentido)
        {
            TgcMesh platea = this.CrearTribuna(pathRecursos + Settings.Default.meshFileTribunePl, sentido * -(float)Math.PI / 2, new Vector3(10, 12, 14));

            platea.Position = new Vector3(cancha.Position.X, cancha.Position.Y + platea.BoundingBox.PMax.Y, sentido * (cancha.Size.Z / 2 + platea.BoundingBox.PMax.X + 120));
            return(platea);
        }
Пример #23
0
        public void luzAguaSoleado(TgcBox lightMesh)
        {
            luzSoleado(lightMesh);

            cargarEfectoLuz(this.effect);
            //return posLuz;
        }
Пример #24
0
        /// <summary>
        /// Detectar el eje seleccionado
        /// </summary>
        public void detectSelectedAxis(TgcPickingRay pickingRay)
        {
            pickingRay.updateRay();
            Vector3 collP;

            //Buscar colision con eje con Picking
            if (TgcCollisionUtils.intersectRayAABB(pickingRay.Ray, boxX.BoundingBox, out collP))
            {
                selectedAxis    = Axis.X;
                selectedAxisBox = boxX;
            }
            else if (TgcCollisionUtils.intersectRayAABB(pickingRay.Ray, boxY.BoundingBox, out collP))
            {
                selectedAxis    = Axis.Y;
                selectedAxisBox = boxY;
            }
            else if (TgcCollisionUtils.intersectRayAABB(pickingRay.Ray, boxZ.BoundingBox, out collP))
            {
                selectedAxis    = Axis.Z;
                selectedAxisBox = boxZ;
            }
            else
            {
                selectedAxis    = Axis.None;
                selectedAxisBox = null;
            }

            //Desplazamiento inicial
            if (selectedAxis != Axis.None)
            {
                TgcD3dInput input = GuiController.Instance.D3dInput;
                initMouseP = new Vector2(input.XposRelative, input.YposRelative);
            }
        }
Пример #25
0
        public override void init()
        {
            Device d3dDevice = GuiController.Instance.D3dDevice;

            //Crear Sprite
            sprite         = new TgcSprite();
            sprite.Texture = TgcTexture.createTexture(GuiController.Instance.ExamplesMediaDir + "\\Texturas\\LogoTGC.png");

            //Ubicarlo centrado en la pantalla
            Size screenSize  = GuiController.Instance.Panel3d.Size;
            Size textureSize = sprite.Texture.Size;

            sprite.Position = new Vector2(FastMath.Max(screenSize.Width / 2 - textureSize.Width / 2, 0), FastMath.Max(screenSize.Height / 2 - textureSize.Height / 2, 0));


            //Modifiers para variar parametros del sprite
            GuiController.Instance.Modifiers.addVertex2f("position", new Vector2(0, 0), new Vector2(screenSize.Width, screenSize.Height), sprite.Position);
            GuiController.Instance.Modifiers.addVertex2f("scaling", new Vector2(0, 0), new Vector2(4, 4), sprite.Scaling);
            GuiController.Instance.Modifiers.addFloat("rotation", 0, 360, 0);



            //Creamos un Box3D para que se vea como el Sprite es en 2D y se dibuja siempre arriba de la escena 3D
            box = TgcBox.fromSize(new Vector3(10, 10, 10), TgcTexture.createTexture(GuiController.Instance.ExamplesMediaDir + "\\Texturas\\pasto.jpg"));

            //Hacer que la camara se centre en el box3D
            GuiController.Instance.RotCamera.targetObject(box.BoundingBox);
        }
Пример #26
0
        /// <summary>
        /// Cargar una nueva malla
        /// </summary>
        private void changeMesh(string meshName)
        {
            if (selectedMesh == null || selectedMesh != meshName)
            {
                if (mesh != null)
                {
                    mesh.dispose();
                    mesh = null;
                }

                selectedMesh = meshName;

                //Cargar mesh y animaciones
                TgcSkeletalLoader loader = new TgcSkeletalLoader();
                mesh = loader.loadMeshAndAnimationsFromFile(mediaPath + selectedMesh + "-TgcSkeletalMesh.xml", mediaPath, animationsPath);

                //Crear esqueleto a modo Debug
                mesh.buildSkletonMesh();

                //Elegir animacion inicial
                mesh.playAnimation(selectedAnim, true);

                //Crear caja como modelo de Attachment del hueos "Bip01 L Hand"
                attachment = new TgcSkeletalBoneAttach();
                TgcBox attachmentBox = TgcBox.fromSize(new Vector3(2, 40, 2), Color.Red);
                attachment.Mesh   = attachmentBox.toMesh("attachment");
                attachment.Bone   = mesh.getBoneByName("Bip01 L Hand");
                attachment.Offset = Matrix.Translation(3, -15, 0);
                attachment.updateValues();


                //Configurar camara
                GuiController.Instance.RotCamera.targetObject(mesh.BoundingBox);
            }
        }
Пример #27
0
        public override void Init()
        {
            //Cargar escenario
            var loader = new TgcSceneLoader();

            //Configurar MeshFactory customizado
            scene = loader.loadSceneFromFile(MediaDir + "MeshCreator\\Scenes\\Deposito\\Deposito-TgcScene.xml");

            //Camara en 1ra persona
            Camara = new TgcFpsCamera(new Vector3(200, 250, 175), 400f, 300f, Input);

            //Mesh para la luz
            lightMesh = TgcBox.fromSize(new Vector3(10, 10, 10), Color.Red);

            //Modifiers de la luz
            Modifiers.addBoolean("lightEnable", "lightEnable", true);
            Modifiers.addVertex3f("lightPos", new Vector3(-200, -100, -200), new Vector3(200, 200, 300),
                                  new Vector3(-60, 90, 175));
            Modifiers.addVertex3f("lightDir", new Vector3(-1, -1, -1), new Vector3(1, 1, 1), new Vector3(-0.05f, 0, 0));
            Modifiers.addColor("lightColor", Color.White);
            Modifiers.addFloat("lightIntensity", 0, 150, 35);
            Modifiers.addFloat("lightAttenuation", 0.1f, 2, 0.3f);
            Modifiers.addFloat("specularEx", 0, 20, 9f);
            Modifiers.addFloat("spotAngle", 0, 180, 39f);
            Modifiers.addFloat("spotExponent", 0, 20, 7f);

            //Modifiers de material
            Modifiers.addColor("mEmissive", Color.Black);
            Modifiers.addColor("mAmbient", Color.White);
            Modifiers.addColor("mDiffuse", Color.White);
            Modifiers.addColor("mSpecular", Color.White);
        }
Пример #28
0
        public override void Init()
        {
            //Crear loader
            var loader = new TgcSceneLoader();

            //Cargar mesh
            var scene = loader.loadSceneFromFile(MediaDir + "ModelosTgc\\Olla\\Olla-TgcScene.xml");

            mesh = scene.Meshes[0];

            //Crear caja para indicar ubicacion de la luz
            lightMesh = TgcBox.fromSize(new Vector3(20, 20, 20), Color.Yellow).toMesh("Box");

            //Modifiers de la luz
            Modifiers.addBoolean("lightEnable", "lightEnable", true);
            Modifiers.addVertex3f("lightPos", new Vector3(-500, -500, -500), new Vector3(500, 800, 500),
                                  new Vector3(0, 500, 0));
            Modifiers.addColor("ambient", Color.Gray);
            Modifiers.addColor("diffuse", Color.Blue);
            Modifiers.addColor("specular", Color.White);
            Modifiers.addFloat("specularEx", 0, 40, 20f);

            //Centrar camara rotacional respecto a este mesh
            Camara = new TgcRotationalCamera(mesh.BoundingBox.calculateBoxCenter(),
                                             mesh.BoundingBox.calculateBoxRadius() * 2, Input);
        }
Пример #29
0
        public void init(string text)
        {
            TgcBox box = new TgcBox();

            box.setExtremes(new Vector3(0, 0, 0), new Vector3(400, 2, 1000));
            box.Color = Color.Blue;
            box.updateValues();
            TgcMesh temp = box.toMesh("water");

            TgcSceneLoader loader = new TgcSceneLoader();

            //Configurar MeshFactory customizado
            loader.MeshFactory = new ShadedMeshFactory();
            mesh             = (ShadedMesh)loader.MeshFactory.createNewMesh(temp.D3dMesh, "water", TgcMesh.MeshRenderType.VERTEX_COLOR);
            mesh.BoundingBox = box.BoundingBox;
            mesh.loadEffect("Shaders//water.fx", "Basic");
            mesh.AutoUpdateBoundingBox = false;

            TgcTexture t_temp = TgcTexture.createTexture(GuiController.Instance.D3dDevice, GuiController.Instance.AlumnoEjemplosMediaDir + "RenderizameLaBanera\\waterbump.dds");//"perlin_noise.jpg");//"waterbump.dds");

            noise       = t_temp.D3dTexture;
            t_temp      = TgcTexture.createTexture(GuiController.Instance.D3dDevice, GuiController.Instance.AlumnoEjemplosMediaDir + "RenderizameLaBanera\\" + text);
            riverBottom = t_temp.D3dTexture;

            mesh.Effect.SetValue("xNoiseTex", noise);
            mesh.Effect.SetValue("xRiverBottom", riverBottom);

            Surface renderTarget = GuiController.Instance.D3dDevice.GetRenderTarget(0);

            riverReflex = new Texture(GuiController.Instance.D3dDevice, renderTarget.Description.Width, renderTarget.Description.Height, 1, Usage.RenderTarget, renderTarget.Description.Format, Pool.Default);
        }
Пример #30
0
        public override void init()
        {
            Device d3dDevice = GuiController.Instance.D3dDevice;

            //Cargar escenario
            TgcSceneLoader loader = new TgcSceneLoader();

            scene = loader.loadSceneFromFile(GuiController.Instance.ExamplesMediaDir + "MeshCreator\\Scenes\\Deposito\\Deposito-TgcScene.xml");

            //Camara en 1ra persona
            GuiController.Instance.FpsCamera.Enable        = true;
            GuiController.Instance.FpsCamera.MovementSpeed = 400f;
            GuiController.Instance.FpsCamera.JumpSpeed     = 300f;
            GuiController.Instance.FpsCamera.setCamera(new Vector3(-20, 80, 450), new Vector3(0, 80, 1));


            //Mesh para la luz
            lightMesh = TgcBox.fromSize(new Vector3(10, 10, 10), Color.Red);

            //Modifiers de la luz
            GuiController.Instance.Modifiers.addBoolean("lightEnable", "lightEnable", true);
            GuiController.Instance.Modifiers.addVertex3f("lightPos", new Vector3(-200, -100, -200), new Vector3(200, 200, 300), new Vector3(60, 35, 250));
            GuiController.Instance.Modifiers.addColor("lightColor", Color.White);
            GuiController.Instance.Modifiers.addFloat("lightIntensity", 0, 150, 20);
            GuiController.Instance.Modifiers.addFloat("lightAttenuation", 0.1f, 2, 0.3f);
            GuiController.Instance.Modifiers.addFloat("specularEx", 0, 20, 9f);

            //Modifiers de material
            GuiController.Instance.Modifiers.addColor("mEmissive", Color.Black);
            GuiController.Instance.Modifiers.addColor("mAmbient", Color.White);
            GuiController.Instance.Modifiers.addColor("mDiffuse", Color.White);
            GuiController.Instance.Modifiers.addColor("mSpecular", Color.White);
        }
Пример #31
0
 public Jugador(TgcSkeletalMesh skeletalMesh, IJugadorMoveStrategy strategy, Pelota pelota)
 {
     this.skeletalMesh = skeletalMesh;
     this.box = TgcBox.fromExtremes(this.skeletalMesh.BoundingBox.PMin, this.skeletalMesh.BoundingBox.PMax);
     this.strategy = strategy;
     this.pelota = pelota;
     this.posicionOriginal = skeletalMesh.Position;
 }
Пример #32
0
 public Cancha(TgcBox box, List<IRenderObject> componentes, List<LimiteCancha> limitesCancha, List<Luz> luces, List<TgcBox> carteles)
 {
     this.box = box;
     this.componentesEstaticos = componentes;
     this.limitesCancha = limitesCancha;
     this.Luces = luces;
     this.carteles = carteles;
     this.time = 0;
 }
Пример #33
0
        public Pelota(TgcSphere sphere)
        {
            this.sphere = sphere;
            //apago el auto transformado, ya que la pelota lo maneja solo
            this.sphere.AutoTransformEnable = false;
            this.sphere.Transform = this.getScalingMatrix() * Matrix.Translation(this.sphere.Position);
            this.sphere.updateValues();

            this.box = TgcBox.fromSize(sphere.Position, new Vector3(this.Diametro, this.Diametro, this.Diametro));

            this.posicionOriginalSphere = new Vector3(this.sphere.Position.X, this.sphere.Position.Y, this.sphere.Position.Z);
            this.posicionOriginalBox = new Vector3(this.box.Position.X, this.box.Position.Y, this.box.Position.Z);
        }
Пример #34
0
        public MenuItem(string nombre, Vector3 vectorOrigen, Vector3 vectorFin, string texturaSelect, string texturaUnselect)
        {
            this.nombre = nombre;
            this.opcion = TgcBox.fromSize(vectorOrigen, vectorFin, TgcTexture.createTexture(texturaUnselect));
            //TODO cambiar por matrices
            this.opcion.AutoTransformEnable = true;
            this.opcionSelect = TgcBox.fromSize(new Vector3(vectorOrigen.X + 0.4f, vectorOrigen.Y, vectorOrigen.Z), vectorFin, TgcTexture.createTexture(texturaSelect));
            //TODO cambiar por matrices
            this.opcionSelect.AutoTransformEnable = true;

            this.select = false;
            this.opcion.Enabled = true;
            this.opcionSelect.Enabled = false;
        }
Пример #35
0
        public MenuInicial(string pathRecursos, TgcThirdPersonCamera camara, EjemploAlumno main)
        {
            this.main = main;
            this.camara = camara;
            this.drawer2D = new Drawer2D();

            //Titulo
            this.titulo = new TgcText2D();
            this.titulo.Text = "Socketes";
            this.titulo.Color = Color.White;
            this.titulo.Align = TgcText2D.TextAlign.CENTER;
            this.titulo.Position = new Point(280, 0);
            this.titulo.Size = new Size(400, 100);
            this.titulo.changeFont(new System.Drawing.Font("Arial", 35));

            //Brazuca
            this.pelota = new TgcSphere();
            //TODO cambiar por matrices
            this.pelota.AutoTransformEnable = true;
            this.pelota.setTexture(TgcTexture.createTexture(pathRecursos + Settings.Default.textureBall));
            this.pelota.Radius = 2.5f;
            this.pelota.LevelOfDetail = 4;
            this.pelota.Position = new Vector3(3, 0, -4);
            this.pelota.updateValues();

            //Cancha donde esta la pelota
            this.cancha = TgcBox.fromSize(new Vector3(20, 0, 20), TgcTexture.createTexture(pathRecursos + Settings.Default.textureMenuField));
            //TODO cambiar por matrices
            this.cancha.AutoTransformEnable = true;
            this.cancha.Position = new Vector3(0, -2.5f, 0);

            //Menu
            this.menus = new List<MenuItem>();
            this.menus.Add(new MenuItem("picadito", new Vector3(-5, 2, 0), new Vector3(8, 1, 0), pathRecursos + Settings.Default.texturePicadito1, pathRecursos + Settings.Default.texturePicadito2));
            this.menus.Add(new MenuItem("configuracion", new Vector3(-5, 0.8f, 0), new Vector3(8, 1, 0), pathRecursos + Settings.Default.textureControles1, pathRecursos + Settings.Default.textureControles2));
            this.menus.Add(new MenuItem("salir", new Vector3(-5, -0.4f, 0), new Vector3(8, 1, 0), pathRecursos + Settings.Default.textureSalir1, pathRecursos + Settings.Default.textureSalir2));

            this.menus[0].Select();

            //Menu de configuracion
            //Crear Sprite
            this.panelConfiguracion = new CustomSprite();
            this.panelConfiguracion.Bitmap = new CustomBitmap(pathRecursos + Settings.Default.texturePanelcontroles, D3DDevice.Instance.Device);
            this.panelConfiguracion.Scaling = new Vector2(0.75f, 0.75f);

            Size textureSize = this.panelConfiguracion.Bitmap.Size;
            this.panelConfiguracion.Position = new Vector2(FastMath.Max(D3DDevice.Instance.Width / 2 - textureSize.Width / 2, 0), FastMath.Max(D3DDevice.Instance.Height / 2 - textureSize.Height / 2, 0));
        }
Пример #36
0
        /// <summary>
        /// Creo los limites de la cancha
        /// </summary>
        /// <returns> Lista con los limites de la cancha</returns>
        private List<LimiteCancha> CrearLimitesCancha(TgcBox cancha)
        {
            int altoLimite = 600;
            List<LimiteCancha> limites = new List<LimiteCancha>();
            limites.Add(new LimiteCancha(TgcBox.fromSize(new Vector3(cancha.Position.X, cancha.Position.Y + altoLimite / 2, cancha.Size.Z / 2 - 22), new Vector3(cancha.Size.X, altoLimite, 0))));
            limites.Add(new LimiteCancha(TgcBox.fromSize(new Vector3(cancha.Position.X, cancha.Position.Y + altoLimite / 2, -cancha.Size.Z / 2 + 22), new Vector3(cancha.Size.X, altoLimite, 0))));
            limites.Add(new LimiteCancha(TgcBox.fromSize(new Vector3(cancha.Size.X / 2 - 100, cancha.Position.Y + altoLimite / 2, cancha.Position.Z), new Vector3(0, altoLimite, cancha.Size.Z))));
            limites.Add(new LimiteCancha(TgcBox.fromSize(new Vector3(-cancha.Size.X / 2 + 100, cancha.Position.Y + altoLimite / 2, cancha.Position.Z), new Vector3(0, altoLimite, cancha.Size.Z))));

            return limites;
        }
Пример #37
0
        /// <summary>
        /// Crea los 4 reflectores que posee el estadio
        /// </summary>
        /// <param name="pathRecursos"> ruta donde esta el mesh </param>
        /// <returns></returns>
        private List<Luz> CrearLuces(string pathRecursos, TgcBox cancha)
        {
            List<Luz> luces = new List<Luz>();
            Luz luz1 = this.CrearLuz(pathRecursos, cancha, -1, 1, (float)Math.PI * 3 / 4);
            Luz luz2 = this.CrearLuz(pathRecursos, cancha, 1, 1, -(float)Math.PI * 3 / 4);
            Luz luz3 = this.CrearLuz(pathRecursos, cancha, -1, -1, (float)Math.PI / 4);
            Luz luz4 = this.CrearLuz(pathRecursos, cancha, 1, -1, -(float)Math.PI / 4);

            luces.Add(luz1);
            luces.Add(luz2);
            luces.Add(luz3);
            luces.Add(luz4);
            return luces;
        }
Пример #38
0
        public override void Init()
        {
            //Color de fondo
            //GuiController.Instance.BackgroundColor = Color.DarkGray;

            //Camara en 1ra persona
            //GuiController.Instance.FpsCamera.Enable = true;
            //GuiController.Instance.FpsCamera.MovementSpeed = 100f;
            //GuiController.Instance.FpsCamera.JumpSpeed = 50f;
            //GuiController.Instance.FpsCamera.setCamera(new Vector3(40, 30, 35), new Vector3(0, 0, 0));

            this.effect = TgcShaders.loadEffect(this.pathRecursos + "Shaders\\ParcialPixelShader.fx");

            //Piso
            this.boxFloor = TgcBox.fromSize(new Vector3(0, 0, 0), new Vector3(30, 0, 30), Color.DarkSeaGreen);
            this.boxFloor.Effect = this.effect;

            //Pared
            this.boxWall = TgcBox.fromSize(new Vector3(0, 10, -15), new Vector3(30, 20, 0), Color.Red);
            this.boxWall.Effect = this.effect;

            //Figura
            this.boxFigure = TgcBox.fromSize(new Vector3(0, 5, 0), new Vector3(10, 10, 5), Color.SteelBlue);
            this.boxFigure.Effect = this.effect;

            //Luz
            this.boxLuz = TgcBox.fromSize(new Vector3(0, 20, 20), new Vector3(2, 2, 2), Color.LightYellow);

            this.CrearTetera();
            this.CrearBuggy();
        }
Пример #39
0
 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;
 }
Пример #40
0
 public Red(TgcBox box, TgcMesh red)
 {
     this.box = box;
     this.red = red;
 }
Пример #41
0
        /// <summary>
        /// Crea un SkyBox que rodea toda la cancha y da una sensacion mas de realizamo
        /// </summary>
        /// <param name="pathRecursos"> la ruta donde se encuentran los recursos </param>
        /// <returns></returns>
        private TgcSkyBox CrearSkyBox(string pathRecursos, TgcBox pisoCancha)
        {
            //Crear SkyBox
            TgcSkyBox skyBox = new TgcSkyBox();
            skyBox.Size = new Vector3(pisoCancha.Size.X + 100, 1000, pisoCancha.Size.Z + 100);
            skyBox.Center = new Vector3(pisoCancha.Position.X, pisoCancha.Position.Y - 1 + skyBox.Size.Y / 2, pisoCancha.Position.Z);

            //Configurar las texturas para cada una de las 6 caras
            skyBox.setFaceTexture(TgcSkyBox.SkyFaces.Up, pathRecursos + Settings.Default.textureSkyFacesUp);
            skyBox.setFaceTexture(TgcSkyBox.SkyFaces.Down, pathRecursos + Settings.Default.textureSkyFaceDown);
            skyBox.setFaceTexture(TgcSkyBox.SkyFaces.Left, pathRecursos + Settings.Default.textureSkyFaceLeft);
            skyBox.setFaceTexture(TgcSkyBox.SkyFaces.Right, pathRecursos + Settings.Default.textureSkyFaceRight);

            //Hay veces es necesario invertir las texturas Front y Back si se pasa de un sistema RightHanded a uno LeftHanded
            skyBox.setFaceTexture(TgcSkyBox.SkyFaces.Front, pathRecursos + Settings.Default.textureSkyFaceFront);
            skyBox.setFaceTexture(TgcSkyBox.SkyFaces.Back, pathRecursos + Settings.Default.textureSkyFaceBack);

            //Actualizar todos los valores para crear el SkyBox
            skyBox.Init();
            return skyBox;
        }
Пример #42
0
        private TgcMesh CrearTribunaPlatea(string pathRecursos, TgcBox cancha, int sentido)
        {
            TgcMesh platea = this.CrearTribuna(pathRecursos + Settings.Default.meshFileTribunePl, sentido * -(float)Math.PI / 2, new Vector3(10, 12, 14));

            platea.Position = new Vector3(cancha.Position.X, cancha.Position.Y + platea.BoundingBox.PMax.Y, sentido * (cancha.Size.Z / 2 + platea.BoundingBox.PMax.X + 120));
            return platea;
        }
Пример #43
0
 private TgcMesh CrearTribunaPopular(string pathRecursos, TgcBox cancha, int sentido)
 {
     TgcMesh platea = this.CrearTribuna(pathRecursos + Settings.Default.meshFileTribunePo, sentido * -(float)Math.PI / 2, new Vector3(14, 12, 15));
     platea.Position = new Vector3(sentido * (cancha.Size.X / 2 + platea.BoundingBox.PMax.Z + 120), cancha.Position.Y + platea.BoundingBox.PMax.Y, cancha.Position.Z);
     return platea;
 }
Пример #44
0
 public LimiteCancha(TgcBox box)
 {
     this.box = box;
     //TODO cambiar por matrices
     this.box.AutoTransformEnable = true;
 }
Пример #45
0
        public override void Init()
        {
            //Cargar jugador y pelota
            this.pelota = this.CrearPelota(MediaDir);
            this.jugador = this.CrearJugador(MediaDir);

            //Camara en 1ra persona
            //GuiController.Instance.FpsCamera.Enable = true;
            //GuiController.Instance.FpsCamera.MovementSpeed = 400f;
            //GuiController.Instance.FpsCamera.JumpSpeed = 300f;
            //GuiController.Instance.FpsCamera.setCamera(new Vector3(0, 150, 200), new Vector3(0, 80, 0));

            //Cargar Shader personalizado de MultiDiffuseLights
            /*
             * Cargar Shader personalizado de MultiDiffuseLights
             * Este Shader solo soporta TgcMesh con RenderType DIFFUSE_MAP (que son las unicas utilizadas en este ejemplo)
             * El shader toma 4 luces a la vez para iluminar un mesh.
             * Pero como hacer 4 veces los calculos en el shader es costoso, de cada luz solo calcula el componente Diffuse.
             */
            this.meshMultiDiffuseLights = TgcShaders.loadEffect(ShadersDir + "Shaders\\MeshMultiplePointLight.fx");

            this.skeletalMeshPointLight = TgcShaders.loadEffect(ShadersDir + "Shaders\\SkeletalMeshMultiplePointLight.fx");

            this.luces = new List<Luz>();
            //Crear 4 mesh para representar las 4 para la luces. Las ubicamos en distintas posiciones del escenario, cada una con un color distinto.
            luces.Add(new Luz(TgcBox.fromSize(new Vector3(40, 150, 100), new Vector3(10, 10, 10), Color.BlueViolet), Color.HotPink, new Vector3(-40, 40, 400)));
            luces.Add(new Luz(TgcBox.fromSize(new Vector3(-40, 150, 100), new Vector3(10, 10, 10), Color.LightSteelBlue), Color.Blue, new Vector3(-40, 60, 400)));
            luces.Add(new Luz(TgcBox.fromSize(new Vector3(40, 150, -100), new Vector3(10, 10, 10), Color.Green), Color.Green, new Vector3(-40, 80, 400)));
            luces.Add(new Luz(TgcBox.fromSize(new Vector3(-40, 150, -100), new Vector3(10, 10, 10), Color.Orange), Color.Orange, new Vector3(-40, 100, 400)));

            this.piso = TgcBox.fromSize(new Vector3(0, 0, 0), new Vector3(400, 0, 400), TgcTexture.createTexture(MediaDir + Settings.Default.textureMenuField));

            //Modifiers
            //GuiController.Instance.Modifiers.addFloat("lightIntensity", 0, 150, 38);
            //GuiController.Instance.Modifiers.addFloat("lightAttenuation", 0.1f, 2, 0.15f);

            //Color de fondo
            //GuiController.Instance.BackgroundColor = Color.Black;

            //test carteles
            this.cartel1 = new TgcSceneLoader().loadSceneFromFile(MediaDir + "Cartel\\Cartel-TgcScene.xml").Meshes[0];

            this.cartelEffect = TgcShaders.loadEffect(ShadersDir + "Shaders\\CartelShader.fx");
        }