Exemple #1
0
        // draw
        public void RenderStarport()
        {
            if (starportMesh == null)
            {
                starportMesh = new MeshObject("\\starport.x");
            }

            if (OuterSpace.theWindowMgr.FindWindow("   ") == -1)
            {
                if (OuterSpace.theWindowMgr.LoadWindow("CStarportWindow",
                                                       75, 0, 175, OuterSpace.ClientArea.Height, Color.FromArgb(255, 255, 255, 255)) == true)
                {
                    OuterSpace.theWindowMgr.DoModal(OuterSpace.theWindowMgr.FindWindow("   "));
                    wndStarport = (CStarportWindow)(OuterSpace.theWindowMgr.GetWindow(OuterSpace.theWindowMgr.FindWindow("   ")));
                }
            }

            Mesh            moMesh       = starportMesh.GetMesh();
            List <Material> materialList = new List <Material>();
            List <Texture>  textureList  = new List <Texture>();

            HandleMouseInput();

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

            OuterSpace.d3d_scene.SetupLights();

            OuterSpace.thisPlanet.drawplanet();

            // render starport
            Direct3D.Cull oldCull = OuterSpace.device.RenderState.CullMode;

            OuterSpace.device.RenderState.CullMode = Cull.CounterClockwise;

            fYAngle += 0.001F;

            OuterSpace.d3d_scene.transformWorld(Matrix.Zero, Matrix.RotationY(fYAngle), Matrix.Zero,
                                                Matrix.Zero, Matrix.Translation(0.3F, 0.0F, -77.5F));

            OuterSpace.d3d_scene.transformView_Projection(new Vector3(0.0F, 0.1F, -80.0F), new Vector3(0.0F, 0.0F, 0.0F),
                                                          new Vector3(0.0F, 1.0F, 0.0F), Convert.ToSingle(Math.PI / 4), Convert.ToSingle(OuterSpace.ClientArea.Width / OuterSpace.ClientArea.Height),
                                                          0.01F, 1000.0F);

            OuterSpace.d3d_scene.transform_Pipeline();

            starportMesh.Drawmesh();

            OuterSpace.device.RenderState.CullMode = oldCull;

            OuterSpace.device.RenderState.Ambient = Color.FromArgb(255, 65, 65, 65);

            OuterSpace.textfont.DrawText(5, 5, Color.Blue, statustext);
        }
        //draw
        public void RenderTitleScreen()
        {
            Mesh            moMesh;
            List <Material> moMaterials = new List <Material>();
            List <Texture>  moTextures  = new List <Texture>();
            int             iTime       = Environment.TickCount % 100000;
            Rectangle       Rect        = new Rectangle(0, 0, 1024, 768);
            float           ratioX;
            float           ratioY;

            if (!bStarted)
            {
                return;
            }

            // draw background
            OuterSpace.spriteobj.Begin(SpriteFlags.AlphaBlend | SpriteFlags.SortDepthBackToFront);

            ratioX = OuterSpace.ClientArea.Width / bgSprite.spritewidth;
            ratioY = ratioX;
            bgSprite.Draw(0, 0, Rect, 0, ratioX, ratioY, Color.White);

            OuterSpace.spriteobj.Flush();
            OuterSpace.spriteobj.End();

            // draw planet
            fAngle -= 0.001f;

            //OuterSpace.d3d_scene.transformview_projection()
            OuterSpace.device.Lights[0].Type      = LightType.Directional;
            OuterSpace.device.Lights[0].Diffuse   = Color.Azure;
            OuterSpace.device.Lights[0].Direction = new Vector3(-0.5f, -0.25f, -0.1f);
            OuterSpace.device.Lights[0].Update();
            OuterSpace.device.Lights[0].Enabled = true;
            //turn it on

            OuterSpace.device.RenderState.ZBufferEnable = true;
            OuterSpace.device.RenderState.CullMode      = Cull.Clockwise;

            moMesh      = RotatingPlanetMesh.GetMesh();
            moMaterials = RotatingPlanetMesh.GetMeshMaterials();
            moTextures  = RotatingPlanetMesh.GetTextures();

            float yaw   = (float)((fAngle / Math.PI) * -1.0F);
            float pitch = -0.5f;
            //(fAngle / Math.PI * 2.0F)
            float Roll = 0f;

            //(fAngle / Math.PI / 4.0F)

            try
            {
                OuterSpace.d3d_scene.transformWorld(Matrix.RotationX(pitch), Matrix.RotationY(yaw), Matrix.RotationZ(Roll), Matrix.Zero, Matrix.Translation(-1f, -0.75f, -196.5f));
                //OuterSpace.device.Transform.World = Matrix.Multiply(Matrix.RotationYawPitchRoll(yaw, pitch, Roll), _
                // Matrix.Translation(-1.0F, -0.75F, -196.5F))

                OuterSpace.d3d_scene.transformView_Projection();
                OuterSpace.d3d_scene.transform_Pipeline();

                for (int x = 0; x < RotatingPlanetMesh.GetNumMeshMaterials(); x++)
                {
                    OuterSpace.device.Material = moMaterials[x];
                    OuterSpace.device.SetTexture(0, moTextures[x]);
                    moMesh.DrawSubset(x);
                }
            }
            catch (Microsoft.DirectX.Direct3D.Direct3DXException ex)
            {
                MessageBox.Show(ex.Message);
            }

            OuterSpace.spriteobj.Begin(SpriteFlags.AlphaBlend | SpriteFlags.SortDepthBackToFront);

            ratioX = OuterSpace.ClientArea.Width / fgSprite.spritewidth;
            ratioY = ratioX;
            fgSprite.Draw(0, 0, new Rectangle(0, 0, 1024, 256), 0, ratioX, ratioY, Color.White);

            OuterSpace.spriteobj.Flush();
            OuterSpace.spriteobj.End();
        }