コード例 #1
0
ファイル: EjemploOBB.cs プロジェクト: VB6Hobbyst7/tgc-viewer
        public override void render(float elapsedTime)
        {
            Device d3dDevice = GuiController.Instance.D3dDevice;

            //Obtener rotacion de mesh (pasar a radianes)
            float rotation = FastMath.ToRad((float)GuiController.Instance.Modifiers["rotation"]);

            //Rotar mesh y rotar OBB. A diferencia del AABB, nosotros tenemos que mantener el OBB actualizado segun cada movimiento del mesh
            Vector3 lastRot      = mesh.Rotation;
            float   rotationDiff = rotation - lastRot.Y;

            mesh.rotateY(rotationDiff);
            obb.rotate(new Vector3(0, rotationDiff, 0));

            //Actualizar posicion
            Vector3 position = (Vector3)GuiController.Instance.Modifiers["position"];
            Vector3 lastPos  = mesh.Position;
            Vector3 posDiff  = position - lastPos;

            mesh.move(posDiff);
            obb.move(posDiff);

            //Renderizar modelo
            mesh.render();

            //Renderizar obb
            obb.render();
        }
コード例 #2
0
ファイル: EjemploOBB.cs プロジェクト: juanisierra/tgc-viewer
        public override void Render()
        {
            PreRender();

            //Obtener rotacion de mesh (pasar a radianes)
            var rotation = FastMath.ToRad((float)Modifiers["rotation"]);

            //Rotar mesh y rotar OBB. A diferencia del AABB, nosotros tenemos que mantener el OBB actualizado segun cada movimiento del mesh
            var lastRot      = mesh.Rotation;
            var rotationDiff = rotation - lastRot.Y;

            mesh.rotateY(rotationDiff);
            obb.rotate(new Vector3(0, rotationDiff, 0));

            //Actualizar posicion
            var position = (Vector3)Modifiers["position"];
            var lastPos  = mesh.Position;
            var posDiff  = position - lastPos;

            mesh.move(posDiff);
            obb.move(posDiff);

            //Renderizar modelo
            mesh.render();

            //Renderizar obb
            obb.render();

            PostRender();
        }
コード例 #3
0
 public override void Render(Item item, Effect shader)
 {
     if (Game.Current.IsColliderVisible)
     {
         //TODO:Obb.Effect = shader;
         Obb.render();
     }
 }
コード例 #4
0
        public override void Render()
        {
            PreRender();

            if (generate)
            {
                generateObb();
                generate = false;
            }

            for (var i = 0; i < vertices.Length; i++)
            {
                vertices[i].render();
            }

            obb.render();

            PostRender();
        }
コード例 #5
0
        public override void render(float elapsedTime)
        {
            Device d3dDevice = GuiController.Instance.D3dDevice;

            if (generate)
            {
                generateObb();
                generate = false;
            }



            for (int i = 0; i < vertices.Length; i++)
            {
                vertices[i].render();
            }

            obb.render();
        }
コード例 #6
0
        public override void Render()
        {
            PreRender();

            var velocidadCaminar = 50f * ElapsedTime;

            //Calcular proxima posicion de personaje segun Input
            var d3dInput = TgcD3dInput.Instance;
            var moving   = false;
            var movement = new Vector3(0, 0, 0);

            //Adelante
            if (d3dInput.keyDown(Key.W))
            {
                movement.Z = velocidadCaminar;
                moving     = true;
            }

            //Atras
            if (d3dInput.keyDown(Key.S))
            {
                movement.Z = -velocidadCaminar;
                moving     = true;
            }

            //Derecha
            if (d3dInput.keyDown(Key.D))
            {
                movement.X = velocidadCaminar;
                moving     = true;
            }

            //Izquierda
            if (d3dInput.keyDown(Key.A))
            {
                movement.X = -velocidadCaminar;
                moving     = true;
            }
            //Salto
            if (d3dInput.keyDown(Key.Space))
            {
                movement.Y = velocidadCaminar;
                moving     = true;
            }
            //Agachar
            if (d3dInput.keyDown(Key.LeftControl))
            {
                movement.Y = -velocidadCaminar;
                moving     = true;
            }
            //Si hubo desplazamiento
            if (moving)
            {
                //Aplicar movimiento
                box.move(movement);
            }
            //Hacer que la camara siga al personaje en su nueva posicion
            camaraInterna.Target = box.Position;

            //Detectar colision con triangulo
            if (TgcCollisionUtils.testTriangleAABB(triangle[0].Position, triangle[1].Position, triangle[2].Position,
                                                   box.BoundingBox))
            {
                box.BoundingBox.render();
                triagleAABB.render();
            }
            //Detectar colision con el otro AABB
            if (TgcCollisionUtils.testAABBAABB(box.BoundingBox, box2.BoundingBox))
            {
                box.BoundingBox.render();
                box2.BoundingBox.render();
            }
            //Detectar colision con la esfera
            if (TgcCollisionUtils.testSphereAABB(sphere, box.BoundingBox))
            {
                box.BoundingBox.render();
                sphere.setRenderColor(Color.Red);
            }
            else
            {
                sphere.setRenderColor(Color.Yellow);
            }

            //Detectar colision con la obb
            if (TgcCollisionUtils.testObbAABB(obb, box.BoundingBox))
            {
                box.BoundingBox.render();
                obb.setRenderColor(Color.Red);
            }
            else
            {
                obb.setRenderColor(Color.Yellow);
            }

            //Dibujar
            box.render();
            box2.render();
            sphere.render();
            obb.render();

            //triangulo
            D3DDevice.Instance.Device.Transform.World = Matrix.Identity;
            D3DDevice.Instance.Device.VertexFormat    = CustomVertex.PositionColored.Format;
            D3DDevice.Instance.Device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, triangle);

            PostRender();
        }