public override void Render()
        {
            PreRender();

            //Obtener boolean para saber si hay que mostrar Bounding Box
            var showBB = showBoundingBoxModifier.Value;

            DrawText.drawText(text, 5, 20, System.Drawing.Color.Red);

            //Render piso
            piso.Render();

            //Render obstaculos
            foreach (var obstaculo in obstaculos)
            {
                obstaculo.Render();
                if (showBB)
                {
                    obstaculo.BoundingBox.Render();
                }
            }

            //Render personaje
            personaje.animateAndRender(ElapsedTime);
            if (showBB)
            {
                personaje.BoundingBox.Render();
            }

            PostRender();
        }
Exemple #2
0
        public override void Render()
        {
            PreRender();

            //FIX IT SOLO CON COLISION.
            if (selecting)
            {
                selectionBox.BoundingBox.Render();
            }

            //Render
            suelo.Render();
            foreach (var mesh in modelos)
            {
                mesh.Transform =
                    TGCMatrix.Scaling(mesh.Scale) * TGCMatrix.RotationYawPitchRoll(mesh.Rotation.Y, mesh.Rotation.X, mesh.Rotation.Z) * TGCMatrix.Translation(mesh.Position);
                mesh.Render();
            }

            //Renderizar BB de los modelos seleccionados
            foreach (var mesh in modelosSeleccionados)
            {
                mesh.BoundingBox.Render();
            }

            PostRender();
        }
        public override void Render()
        {
            PreRender();

            //Actualizar valrores de pared
            updateTGCPlane();

            //Renderizar pared
            plane.Render();

            PostRender();
        }
Exemple #4
0
        public void Render()
        {
            //Obtenemos la matrix de directx con la transformacion que corresponde a la caja.
            boxMesh.Transform = new TGCMatrix(boxBody.InterpolationWorldTransform);
            boxMesh.Render();

            //Obtenemos la transformacion de la pelota, en este caso se ve como se puede escalar esa transformacion.
            sphereMesh.Transform = TGCMatrix.Scaling(10, 10, 10) * new TGCMatrix(ballBody.InterpolationWorldTransform);
            sphereMesh.Render();

            floorMesh.Render();
        }
Exemple #5
0
        public void RenderObject(TgcPlane x)
        {
            var t = x.Technique;

            if (useShadows)
            {
                x.Effect    = shadowEffect;
                x.Technique = doingShadowRender ? "RenderShadow" : "RenderScene";
            }
            x.Render();
            x.Technique = t;
        }
        public override void Render()
        {
            PreRender();

            //Mostrar caja con lugar en el que se hizo click, solo si hay movimiento
            if (applyMovement)
            {
                collisionPointMesh.Render();
                directionArrow.Render();
            }

            suelo.Render();
            mesh.Render();

            PostRender();
        }
Exemple #7
0
        /// <summary>
        /// Metodo que se invoca todo el tiempo. Es el render-loop de una aplicacion grafica.
        /// En este metodo se deben dibujar todos los objetos que se desean mostrar.
        /// Antes de llamar a este metodo el framework limpia toda la pantalla.
        /// Por lo tanto para que un objeto se vea hay volver a dibujarlo siempre.
        /// La variable elapsedTime indica la cantidad de segundos que pasaron entre esta invocacion
        /// y la anterior de render(). Es util para animar e interpolar valores.
        /// </summary>
        public override void Render()
        {
            var count  = boxBodys.Count;
            var count4 = boxBodys.Count / 4;

            for (var i = 0; i < count; i++)
            {
                RigidBody boxBody = boxBodys[i];
                if (i % 4 == 1)
                {
                    //Obtenemos la matrix de directx con la transformacion que corresponde a la caja.
                    boxMesh1.Transform = new TGCMatrix(boxBody.InterpolationWorldTransform);
                    //Dibujar las cajas en pantalla
                    boxMesh1.Render();
                }
                if (i % 4 == 2)
                {
                    //Obtenemos la matrix de directx con la transformacion que corresponde a la caja.
                    boxMesh2.Transform = new TGCMatrix(boxBody.InterpolationWorldTransform);
                    //Dibujar las cajas en pantalla
                    boxMesh2.Render();
                }
                if (i % 4 == 3)
                {
                    //Obtenemos la matrix de directx con la transformacion que corresponde a la caja.
                    boxMesh3.Transform = new TGCMatrix(boxBody.InterpolationWorldTransform);
                    //Dibujar las cajas en pantalla
                    boxMesh3.Render();
                }
                if (i % 4 == 0)
                {
                    //Obtenemos la matrix de directx con la transformacion que corresponde a la caja.
                    boxMesh4.Transform = new TGCMatrix(boxBody.InterpolationWorldTransform);
                    //Dibujar las cajas en pantalla
                    boxMesh4.Render();
                }
            }

            foreach (RigidBody ballBody in ballBodys)
            {
                //Obtenemos la transformacion de la pelota, en este caso se ve como se puede escalar esa transformacion.
                sphereMesh.Transform = TGCMatrix.Scaling(10, 10, 10) * new TGCMatrix(ballBody.InterpolationWorldTransform);
                sphereMesh.Render();
            }

            floorMesh.Render();
        }
        public override void Render()
        {
            PreRender();

            DrawText.drawText("Camera pos: " + TGCVector3.PrintVector3(Camara.Position), 5, 20, System.Drawing.Color.Red);
            DrawText.drawText("Camera LookAt: " + TGCVector3.PrintVector3(Camara.LookAt), 5, 40, System.Drawing.Color.Red);
            //Renderizar suelo
            suelo.Render();

            //Renderizar instancias
            foreach (var mesh in meshes)
            {
                mesh.Render();
            }

            PostRender();
        }
Exemple #9
0
        public override void Render()
        {
            PreRender();

            //Render piso
            piso.Render();

            //Render de obstaculos
            foreach (var obstaculo in obstaculos)
            {
                obstaculo.Render();
            }

            personaje.UpdateMeshTransform();
            //Render personaje
            personaje.animateAndRender(ElapsedTime);

            PostRender();
        }
Exemple #10
0
        /// <summary>
        /// Metodo que se invoca todo el tiempo. Es el render-loop de una aplicacion grafica.
        /// En este metodo se deben dibujar todos los objetos que se desean mostrar.
        /// Antes de llamar a este metodo el framework limpia toda la pantalla.
        /// Por lo tanto para que un objeto se vea hay volver a dibujarlo siempre.
        /// La variable elapsedTime indica la cantidad de segundos que pasaron entre esta invocacion
        /// y la anterior de render(). Es util para animar e interpolar valores.
        /// </summary>
        public override void Render()
        {
            foreach (RigidBody boxBody in boxBodys)
            {
                //Obtenemos la matrix de directx con la transformacion que corresponde a la caja.
                boxMesh.Transform = new TGCMatrix(boxBody.InterpolationWorldTransform);
                //Dibujar las cajas en pantalla
                boxMesh.Render();
            }

            foreach (RigidBody ballBody in ballBodys)
            {
                //Obtenemos la transformacion de la pelota, en este caso se ve como se puede escalar esa transformacion.
                sphereMesh.Transform = TGCMatrix.Scaling(10, 10, 10) * new TGCMatrix(ballBody.InterpolationWorldTransform);
                sphereMesh.Render();
            }

            floorMesh.Render();
        }
        public override void Render()
        {
            PreRender();

            //Render piso
            piso.Render();

            //Render de obstaculos
            foreach (var obstaculo in obstaculos)
            {
                obstaculo.Render();
            }

            personaje.Transform = TGCMatrix.Scaling(personaje.Scale)
                                  * TGCMatrix.RotationYawPitchRoll(personaje.Rotation.Y, personaje.Rotation.X, personaje.Rotation.Z)
                                  * TGCMatrix.Translation(personaje.Position);
            //Render personaje
            personaje.animateAndRender(ElapsedTime);

            PostRender();
        }
Exemple #12
0
 public override void render()
 {
     mesh.Render();
 }
Exemple #13
0
        public override void Render()
        {
            PreRender();

            //Si hacen clic con el mouse, ver si hay colision con el suelo
            if (Input.buttonPressed(TgcD3dInput.MouseButtons.BUTTON_LEFT))
            {
                //Actualizar Ray de colisión en base a posición del mouse
                pickingRay.updateRay();

                //Detectar colisión Ray-AABB
                if (TgcCollisionUtils.intersectRayAABB(pickingRay.Ray, suelo.BoundingBox, out newPosition))
                {
                    //Fijar nueva posición destino
                    applyMovement = true;

                    collisionPointMesh.Position = newPosition;
                    directionArrow.PEnd         = new TGCVector3(newPosition.X, 30f, newPosition.Z);

                    //Rotar modelo en base a la nueva dirección a la que apunta
                    var direction    = TGCVector3.Normalize(newPosition - mesh.Position);
                    var angle        = FastMath.Acos(TGCVector3.Dot(originalMeshRot, direction));
                    var axisRotation = TGCVector3.Cross(originalMeshRot, direction);
                    meshRotationMatrix = TGCMatrix.RotationAxis(axisRotation, angle);
                }
            }

            var speed = speedModifier.Value;

            //Interporlar movimiento, si hay que mover
            if (applyMovement)
            {
                //Ver si queda algo de distancia para mover
                var posDiff       = newPosition - mesh.Position;
                var posDiffLength = posDiff.LengthSq();
                if (posDiffLength > float.Epsilon)
                {
                    //Movemos el mesh interpolando por la velocidad
                    var currentVelocity = speed * ElapsedTime;
                    posDiff.Normalize();
                    posDiff.Multiply(currentVelocity);

                    //Ajustar cuando llegamos al final del recorrido
                    var newPos = mesh.Position + posDiff;
                    if (posDiff.LengthSq() > posDiffLength)
                    {
                        newPos = newPosition;
                    }

                    //Actualizar flecha de movimiento
                    directionArrow.PStart = new TGCVector3(mesh.Position.X, 30f, mesh.Position.Z);
                    directionArrow.updateValues();

                    //Actualizar posicion del mesh
                    mesh.Position = newPos;

                    //Como desactivamos la transformacion automatica, tenemos que armar nosotros la matriz de transformacion
                    mesh.Transform = meshRotationMatrix * TGCMatrix.Translation(mesh.Position);

                    //Actualizar camara
                    camaraInterna.Target = mesh.Position;
                }
                //Se acabo el movimiento
                else
                {
                    applyMovement = false;
                }
            }

            //Mostrar caja con lugar en el que se hizo click, solo si hay movimiento
            if (applyMovement)
            {
                collisionPointMesh.Render();
                directionArrow.Render();
            }

            suelo.Render();
            mesh.Render();

            PostRender();
        }
Exemple #14
0
        public override void Render(float elapsedTime)
        {
            TexturesManager.Instance.clearAll();

            var device = D3DDevice.Instance.Device;

            var pOldRT = device.GetRenderTarget(0);
            var pSurf  = g_pRenderTarget.GetSurfaceLevel(0);

            device.SetRenderTarget(0, pSurf);
            var pOldDS = device.DepthStencilSurface;

            device.DepthStencilSurface = g_pDepthStencil;

            device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);

            time += elapsedTime;

            wavesEffect.SetValue("time", time);
            recoltableItemEffect.SetValue("time", time);


            bulletManager.Render();
            collectModel.Render(elapsedTime);

            //Render SkyBox
            //if (playerModel.UnderSurface())
            //{
            //    skyBoxUndersea.Render();
            //}
            //else
            //{
            //    skyBox.Render();
            //}

            fogEffect.SetValue("ColorFog", 2304311);
            fogEffect.SetValue("CameraPos", TGCVector3.Vector3ToFloat4Array(Camera.Position));
            fogEffect.SetValue("StartFogDistance", 2000);
            fogEffect.SetValue("EndFogDistance", 7000);
            fogEffect.SetValue("Density", 0.0025f);
            var heighmap = TgcTexture.createTexture(MediaDir + "Level1\\Textures\\perli2.jpg");

            fogEffect.SetValue("texHeighmap", heighmap.D3dTexture);
            fogEffect.SetValue("time", time);

            fogEffect.SetValue("spotLightDir", TGCVector3.Vector3ToFloat3Array(new TGCVector3(0, -1f, 0)));

            fogEffect.SetValue("spotLightAngleCos", FastMath.ToRad(55));

            foreach (var mesh in skyBox.Faces)
            {
                mesh.Effect    = fogEffect;
                mesh.Technique = "RenderScene";
                //mesh.Render();
            }

            skyBox.Render();

            underseaTerrain.Effect    = fogEffect;
            underseaTerrain.Technique = "RenderScene2";
            underseaTerrain.Render();

            //Render Surface
            surfacePlane.Render();

            //Render Meshes
            foreach (var item in meshes)
            {
                item.Mesh.Effect    = fogEffect;
                item.Mesh.Technique = "RenderScene";
                item.Mesh.Render();
            }

            if (playerModel.InventoryModel.RenderShipHelm)
            {
                foreach (var item in shipHelmMesh)
                {
                    item.Render();
                }
            }

            if (playerModel.InventoryModel.ShowShipHelm)
            {
                shipHelmPoster.Render();
            }

            playerModel.ShowHistory = historyModel.ShowHistory;
            if (historyModel.ShowHistory)
            {
                historyModel.Render(elapsedTime);
            }

            if (playerModel.Win)
            {
                youWinModel.Render(elapsedTime);
            }

            // restuaro el render target y el stencil
            device.DepthStencilSurface = pOldDS;
            device.SetRenderTarget(0, pOldRT);

            effect.Technique = "PostProcess";

            effect.SetValue("time", time);
            device.VertexFormat = CustomVertex.PositionTextured.Format;
            device.SetStreamSource(0, g_pVBV3D, 0);
            effect.SetValue("g_RenderTarget", g_pRenderTarget);
            device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
            effect.Begin(FX.None);
            effect.BeginPass(0);
            device.DrawPrimitives(PrimitiveType.TriangleStrip, 0, 2);
            effect.EndPass();
            effect.End();

            hudModel.Render();

            playerModel.Render(elapsedTime);
        }