Beispiel #1
0
        /// <summary>
        /// The render.
        /// </summary>
        /// <remarks></remarks>
        private void Render()
        {
            if (render.pause)
            {
                return;
            }

            render.BeginScene(Color.Black);

            cam.move();
            SetupMatrices();

            render.device.RenderState.Lighting = true;
            render.device.Lights[0].Type = LightType.Directional;
            render.device.Lights[0].Ambient = Color.FromArgb(0x80, 0x80, 0x80);
            render.device.Lights[0].Diffuse = Color.FromArgb(0x80, 0x80, 0x80);
            render.device.Lights[0].Direction = new Vector3(2.5f, 5.0f, 2.5f);

            render.device.Material = m1;
            if (useShaders)
            {
                ParsedModel.DisplayedInfo.Draw(ref render.device, pm);
            }
            else
            {
                ParsedModel.DisplayedInfo.DrawMeshes(ref render.device, pm);
            }

            render.EndScene();
        }
Beispiel #2
0
        /// <summary>
        /// The render.
        /// </summary>
        /// <remarks></remarks>
        private void Render()
        {
            if (render.pause)
            {
                return;
            }

            render.BeginScene(Color.Blue);

            cam.move();
            CheckKeys();
            SetupMatrices();

            // Reset all face Counts to proper amount, then we zero out any that are drawn as Lightmap surfaces
            for (int x = 0; x < faceCount.Length; x++)
            {
                bsp.BSPRawDataMetaChunks[x].FaceCount = faceCount[x];
            }

            /*
             * text.DrawText(null, "[Left/Right] Portal #" + portal.ToString() + " / " + portals.Length.ToString(), new Point(5, 5), Color.White);
             * text.DrawText(null, "Cluster Count", new Point(5, 30), Color.White);
             * text.DrawText(null, "[1] Front front", new Point(10, 44), showFrontFronts ? Color.Red : Color.White);
             * text.DrawText(null, bsp.ClusterInfo[portals[portal].FrontCluster].FrontVisibleClusters.Count.ToString(), new Point(120, 44), Color.White);
             * text.DrawText(null, "[2] Front back", new Point(10, 58), showFrontBacks ? Color.Purple : Color.White);
             * text.DrawText(null, bsp.ClusterInfo[portals[portal].FrontCluster].BackVisibleClusters.Count.ToString(), new Point(120, 58), Color.White);
             * text.DrawText(null, "[3] Back front", new Point(10, 72), showBackFronts ? Color.Yellow : Color.White);
             * text.DrawText(null, bsp.ClusterInfo[portals[portal].BackCluster].FrontVisibleClusters.Count.ToString(), new Point(120, 72), Color.White);
             * text.DrawText(null, "[4] Back back", new Point(10, 86), showBackBacks ? Color.Green : Color.White);
             * text.DrawText(null, bsp.ClusterInfo[portals[portal].BackCluster].BackVisibleClusters.Count.ToString(), new Point(120, 86), Color.White);
             */
            render.device.Transform.World = Matrix.Identity;
            BSPModel.BSPDisplayedInfo.Draw(ref render.device, ref bsp, false, ref cam, null);

            render.device.Transform.World = Matrix.Identity;

            // pc.DrawIndex(lightmap, ref render.device);
            render.EndScene();
        }
Beispiel #3
0
        /// <summary>
        /// The render.
        /// </summary>
        /// <remarks></remarks>
        private void Render()
        {
            if (pause)
            {
                return;
            }

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

            SetupMatrices();

            device.Material = DefaultMaterial;

            device.Transform.World      = Matrix.Identity;
            device.RenderState.CullMode = Cull.Clockwise;

            // Raw.ParsedModel.DisplayedInfo.Draw(ref device, ref bsp.SkyBox);
            Material m = new Material();

            device.RenderState.CullMode = Cull.None;

            device.RenderState.FillMode         = FillMode.WireFrame;
            device.RenderState.AlphaBlendEnable = false;
            device.RenderState.AlphaTestEnable  = false;
            device.Material = DefaultMaterial;
            dxcoll.DrawMeshes(ref device);
            if (sphereDisplayAll)
            {
                device.Material = BlueMaterial;
                dxcoll.DrawSpheres(ref device);
                device.Transform.World = Matrix.Identity;
            }

            if (planeDisplayAll)
            {
                for (int i = 0; i < mList.Count; i++)
                {
                    m.Ambient       = Color.FromArgb(130, (24 - (i % 25)) * 10, i % 25 * 10);
                    m.Diffuse       = m.Ambient;
                    device.Material = m;

                    device.SetTexture(0, null);
                    device.RenderState.AlphaBlendEnable = true;
                    device.RenderState.AlphaTestEnable  = true;
                    device.RenderState.DestinationBlend = Blend.Zero;
                    device.RenderState.SourceBlend      = Blend.One;
                    device.RenderState.FillMode         = FillMode.Solid;
                    mList[i].DrawSubset(0);
                }

                // Draw normals
                device.SetStreamSource(0, Vb, 0);
                device.Transform.World = Matrix.Identity;
                device.VertexFormat    = CustomVertex.PositionColored.Format;
                device.DrawPrimitives(PrimitiveType.LineList, 0, normalVertices.Length / 2);
            }
            else
            {
                m.Ambient       = Color.Red;
                m.Diffuse       = Color.Red;
                device.Material = m;

                device.SetTexture(0, null);
                device.RenderState.AlphaBlendEnable = true;
                device.RenderState.AlphaTestEnable  = true;
                device.RenderState.DestinationBlend = Blend.Zero;
                device.RenderState.SourceBlend      = Blend.One;
                device.RenderState.FillMode         = FillMode.Solid;
                mList[planeDisplay].DrawSubset(0);

                // Draw normals
                device.SetStreamSource(0, Vb, 0);
                device.Transform.World = Matrix.Identity;
                device.VertexFormat    = CustomVertex.PositionColored.Format;

                int tpd  = planeDisplay;
                int mesh = 0;
                while (tpd >= coll.Meshes[mesh].SurfaceData.Length)
                {
                    tpd -= coll.Meshes[mesh++].SurfaceData.Length;
                }
                short s = (short)coll.Meshes[mesh].SurfaceData[tpd].Plane;
                if (s >= 0)
                {
                    device.DrawPrimitives(PrimitiveType.LineList, coll.Meshes[mesh].SurfaceData[tpd].Plane * 2, 1);
                }
            }

            device.EndScene();

            // Update the screen
            device.Present();
        }
Beispiel #4
0
        /// <summary>
        /// The render.
        /// </summary>
        /// <remarks></remarks>
        private void Render()
        {
            if (pause)
            {
                return;
            }

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

            SetupMatrices();
            MoveSpawnsWithKeyboard();

            device.RenderState.FillMode = FillMode.WireFrame;
            device.Material             = DefaultMaterial;
            device.RenderState.Lighting = true;
            device.RenderState.CullMode = Cull.None;

            render.device.SetTexture(0, null);
            render.device.RenderState.AlphaBlendEnable = true;
            render.device.RenderState.AlphaTestEnable  = true;
            render.device.RenderState.DestinationBlend = Blend.DestinationAlpha;
            render.device.RenderState.SourceBlend      = Blend.SourceAlpha;
            device.Transform.World = Matrix.Identity;
            //Raw.ParsedModel.DisplayedInfo.Draw(ref device, ref bsp.SkyBox);
            dxcoll.Draw(ref device);

            if (currentMode == editingModes.Point)
            {
                device.RenderState.FillMode  = FillMode.Point;
                device.Material              = BlueMaterial;
                device.RenderState.PointSize = 4;
                dxcoll.Draw(ref device);

                #region Render Spheres over selected points
                device.Material                     = GreenMaterial;
                device.RenderState.FillMode         = FillMode.WireFrame;
                device.VertexFormat                 = CustomVertex.PositionColored.Format;
                device.RenderState.AlphaBlendEnable = false;
                device.RenderState.AlphaTestEnable  = false;
                device.SetTexture(0, null);


                for (int i = 0; i < SelectedPoints.Count; i++)
                {
                    device.Transform.World = Matrix.Translation(coll.Vertices[SelectedPoints[i]].X, coll.Vertices[SelectedPoints[i]].Y, coll.Vertices[SelectedPoints[i]].Z);
                    sphere.DrawSubset(0);
                }
                #endregion
            }
            else if (currentMode == editingModes.Surface)
            {
                if (currentSurface != -1)
                {
                    device.RenderState.Lighting           = false;
                    device.RenderState.ZBufferEnable      = false;
                    device.RenderState.CullMode           = Cull.None;
                    device.RenderState.AlphaBlendEnable   = true;
                    device.TextureState[0].ColorOperation = TextureOperation.SelectArg1;
                    device.TextureState[0].AlphaOperation = TextureOperation.SelectArg1;
                    device.TextureState[0].ColorArgument1 = TextureArgument.TextureColor;
                    device.TextureState[0].AlphaArgument1 = TextureArgument.TextureColor;

                    //device.Material = GreenMaterial;
                    device.RenderState.FillMode = FillMode.Solid;
                    device.Transform.World      = Matrix.Identity;
                    device.DrawIndexedUserPrimitives(PrimitiveType.TriangleFan,
                                                     0,
                                                     coll.Vertices.Length,
                                                     polygons[currentSurface].indices.Length - 2,
                                                     polygons[currentSurface].indices,
                                                     true,
                                                     coll.Vertices);
                }
            }

            device.EndScene();

            // Update the screen
            device.Present();
        }