Exemplo n.º 1
0
        void DrawTrenchMRT(Trench t)
        {
            Matrix world;

            foreach (var mesh in t.SelectedModel.Meshes)
            {
                world = mesh.ParentBone.Transform * t.SRT;
                MRTcolor.SetValue(new Vector3(0.5f, 0.5f, 0.5f));
                MRTworld.SetValue(world);
                MRTworldViewProjection.SetValue(world * Game.SelectedCamera.View * Game.SelectedCamera.Projection);
                MRTinverseTransposeWorld.SetValue(Matrix.Transpose(Matrix.Invert(world)));
                mesh.Draw();
            }
            foreach (var turret in t.Turrets)
            {
                foreach (var mesh in TrenchTurret.Meshes)
                {
                    world = mesh.ParentBone.Transform * turret.SRT;
                    MRTcolor.SetValue(new Vector3(0.5f, 0.5f, 0.5f));
                    MRTworld.SetValue(world);
                    MRTworldViewProjection.SetValue(world * Game.SelectedCamera.View * Game.SelectedCamera.Projection);
                    MRTinverseTransposeWorld.SetValue(Matrix.Transpose(Matrix.Invert(world)));
                    mesh.Draw();
                }
            }
        }
Exemplo n.º 2
0
        void DrawModelMRT(Model model, Matrix SRT, Vector3 color)
        {
            foreach (var mesh in model.Meshes)
            {
                var world = mesh.ParentBone.Transform * SRT;
                var wvp   = world * Game.SelectedCamera.View * Game.SelectedCamera.Projection;

                MRTworld.SetValue(world);
                MRTcolor.SetValue(color);
                MRTworldViewProjection.SetValue(wvp);
                MRTinverseTransposeWorld.SetValue(Matrix.Transpose(Matrix.Invert(world)));
                mesh.Draw();
            }
        }
Exemplo n.º 3
0
        void DrawSceneMRT(DrawType dt)
        {
            var CameraView       = Game.SelectedCamera.View;
            var CameraProjection = Game.SelectedCamera.Projection;
            var CameraPosition   = Game.SelectedCamera.Position;

            //MRTapplyLightEffect.SetValue(0f);
            //MRTinvertViewProjection.SetValue(Matrix.Invert(CameraView * CameraProjection));
            MRTcameraPosition.SetValue(CameraPosition);
            MRTlightDirection.SetValue(Game.LightCamera.FrontDirection);
            MRTspecularIntensity.SetValue(SpecularIntensity);
            MRTspecularPower.SetValue(SpecularPower);

            if (dt == DrawType.Regular)
            {
                MasterMRT.CurrentTechnique = MRTskybox;
                SkyBox.Draw(CameraView, CameraProjection, CameraPosition);
            }
            if (dt == DrawType.DepthMap)
            {
                MasterMRT.CurrentTechnique = MRTshadowMap;
            }

            //MasterMRT.Parameters["ApplyLightEffect"]?.SetValue(1f);
            if (Game.GameState.Equals(TGCGame.GmState.Running) ||
                Game.GameState.Equals(TGCGame.GmState.Paused) ||
                Game.GameState.Equals(TGCGame.GmState.Defeat))
            {
                if (showXwing)
                {
                    DrawXWingMRT(Game.Xwing, dt);
                }
                foreach (var enemy in tiesToDraw)
                {
                    DrawTieMRT(enemy);
                }
                foreach (var ship in shipsToDraw)
                {
                    if (ship.Allied)
                    {
                        DrawXwingMRT(ship);
                    }
                    else
                    {
                        DrawTieMRT(ship);
                    }
                }
                if (dt == DrawType.Regular)
                {
                    MasterMRT.CurrentTechnique = MRTbasicColor;
                    MRTaddToBloomFilter.SetValue(1f);
                    //MasterMRT.Parameters["ApplyLightEffect"]?.SetValue(0f);
                    //MRTapplyLightEffect.SetValue(0f);

                    foreach (var laser in lasersToDraw)
                    {
                        DrawModelMRT(LaserModel, laser.SRT, laser.Color);
                    }

                    MRTaddToBloomFilter.SetValue(0f);
                    //MasterMRT.Parameters["ApplyLightEffect"]?.SetValue(1f);
                    //MRTapplyLightEffect.SetValue(1f);

                    MRTcolor.SetValue(new Vector3(0.5f, 0.5f, 0.5f));

                    MasterMRT.CurrentTechnique = MasterMRT.Techniques["TrenchDraw"];
                }

                DrawMapMRT();
            }
        }