// 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(); }