⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gameengine.cs

📁 Game Engine Desing Direct X and C#.rar
💻 CS
📖 第 1 页 / 共 2 页
字号:
				ColorWriteEnable.Green | ColorWriteEnable.Red;

			m_pd3dDevice.RenderState.AlphaBlendEnable = true;  
			m_pd3dDevice.RenderState.SourceBlend = Blend.One;
			m_pd3dDevice.RenderState.DestinationBlend = Blend.Zero;
			m_pd3dDevice.RenderState.BlendOperation = BlendOperation.Add;


			m_pd3dDevice.RenderState.AlphaTestEnable = true; // was false
			m_pd3dDevice.RenderState.AlphaFunction = Compare.Always; 
			//			m_pd3dDevice.RenderState.AlphaReference = 0; 

			m_pd3dDevice.RenderState.Lighting = false;  // was true
			m_pd3dDevice.RenderState.Ambient = Color.FromArgb(128,255,255,255);
			m_pd3dDevice.RenderState.SpecularEnable = false;
			m_pd3dDevice.RenderState.LocalViewer = true;
			m_pd3dDevice.RenderState.NormalizeNormals = false;
			m_pd3dDevice.RenderState.ColorVertex = true;

			m_pd3dDevice.RenderState.AmbientMaterialSource = ColorSource.Material;
			m_pd3dDevice.RenderState.DiffuseMaterialSource = ColorSource.Color1;
			m_pd3dDevice.RenderState.EmissiveMaterialSource = ColorSource.Material;
			m_pd3dDevice.RenderState.SpecularMaterialSource = ColorSource.Color2;

			m_pd3dDevice.RenderState.Clipping = true;
//			m_pd3dDevice.RenderState.ClipPlaneEnable = 0;
			m_pd3dDevice.RenderState.CullMode = Cull.CounterClockwise;

			m_pd3dDevice.RenderState.FillMode = FillMode.Solid;
			m_pd3dDevice.RenderState.ShadeMode = ShadeMode.Gouraud;
			m_pd3dDevice.RenderState.TextureFactor = 0;
//			m_pd3dDevice.RenderState.VertexBlend = VertexBlendFlags.Disable;
			m_pd3dDevice.RenderState.DitherEnable = false;
			m_pd3dDevice.RenderState.LastPixel = true;

			m_pd3dDevice.RenderState.FogEnable = false;
			m_pd3dDevice.RenderState.FogColor =	Color.FromArgb(0x00ff0000);
			m_pd3dDevice.RenderState.FogTableMode = Microsoft.DirectX.Direct3D.FogMode.None;
			m_pd3dDevice.RenderState.FogVertexMode = Microsoft.DirectX.Direct3D.FogMode.None;
			m_pd3dDevice.RenderState.RangeFogEnable = false;
			m_pd3dDevice.RenderState.FogDensity = 0;
			m_pd3dDevice.RenderState.FogStart = 0;

			m_pd3dDevice.RenderState.StencilEnable = false;
			m_pd3dDevice.RenderState.StencilFail = StencilOperation.Keep;
			m_pd3dDevice.RenderState.StencilFunction = Compare.Always;
			m_pd3dDevice.RenderState.StencilMask = -1;
			m_pd3dDevice.RenderState.StencilPass = StencilOperation.Keep;
			//			m_pd3dDevice.RenderState.StencilReference = 0;
			m_pd3dDevice.RenderState.StencilWriteMask = -1;
			//			m_pd3dDevice.RenderState.StencilZFail = StencilOperation.Keep;

			m_pd3dDevice.RenderState.Wrap0 = 0;
			m_pd3dDevice.RenderState.Wrap1 = 0;
			m_pd3dDevice.RenderState.Wrap2 = 0;
			m_pd3dDevice.RenderState.Wrap3 = 0;
			m_pd3dDevice.RenderState.Wrap4 = 0;
			m_pd3dDevice.RenderState.Wrap5 = 0;
			m_pd3dDevice.RenderState.Wrap6 = 0;
			m_pd3dDevice.RenderState.Wrap7 = 0;

			//			m_pd3dDevice.RenderState.ZEnable = ZB.True;
			//			m_pd3dDevice.RenderState.ZWriteEnable = true;
			//			m_pd3dDevice.RenderState.ZBias = 0;
			//			m_pd3dDevice.RenderState.ZFunction = Compare.LessEqual;

			for( int i=0; i<4; i++ )
			{
				//				m_pd3dDevice.SetTexture(i, null);
				//				m_pd3dDevice.SetTextureStageState(i, TextureStageState.TexCoordIndex, i);
				//				m_pd3dDevice.SetTextureStageState(i, TextureStageState.ColorArg0,		(int)TextureArgument.TextureColor);
				//				m_pd3dDevice.SetTextureStageState(i, TextureStageState.ColorArg1,		(int)TextureArgument.Diffuse);
				//				m_pd3dDevice.SetTextureStageState(i, TextureStageState.AlphaArg0,		(int)TextureArgument.TextureColor);
				//				m_pd3dDevice.SetTextureStageState(i, TextureStageState.AlphaArg1,		(int)TextureArgument.Diffuse);
				//				m_pd3dDevice.SetTextureStageState(i, TextureStageState.ColorOp, 		(int)TextureOp.Modulate);
				//				m_pd3dDevice.SetTextureStageState(i, TextureStageState.AlphaOp, 		(int)TextureOp.Modulate);

				//				m_pd3dDevice.SetTextureStageState(i, TextureStageState.TextureTransformFlags D3DTSS_MINFILTER,		D3DTEXF_LINEAR );
				//				m_pd3dDevice.SetTextureStageState(i, TextureStageStateD3DTSS_MAGFILTER,		D3DTEXF_LINEAR );

				/*				m_pd3dDevice.SetTextureStageState(i, TextureStageStateD3DTSS_MIPFILTER,		D3DTEXF_NONE );
								m_pd3dDevice.SetTextureStageState(i, TextureStageStateD3DTSS_BUMPENVMAT00,	0);
								m_pd3dDevice.SetTextureStageState(i, TextureStageStateD3DTSS_BUMPENVMAT01,	0);
								m_pd3dDevice.SetTextureStageState(i, TextureStageStateD3DTSS_BUMPENVMAT10,	0);
								m_pd3dDevice.SetTextureStageState(i, TextureStageStateD3DTSS_BUMPENVMAT11,	0);
								m_pd3dDevice.SetTextureStageState(i, TextureStageStateD3DTSS_ADDRESSU,		D3DTADDRESS_WRAP);
								m_pd3dDevice.SetTextureStageState(i, TextureStageStateD3DTSS_ADDRESSV,		D3DTADDRESS_WRAP);
								m_pd3dDevice.SetTextureStageState(i, TextureStageStateD3DTSS_ADDRESSW,		D3DTADDRESS_WRAP);
								m_pd3dDevice.SetTextureStageState(i, TextureStageStateD3DTSS_BORDERCOLOR,	0);
								m_pd3dDevice.SetTextureStageState(i, TextureStageStateD3DTSS_MIPMAPLODBIAS, 0);
								m_pd3dDevice.SetTextureStageState(i, TextureStageStateD3DTSS_MAXMIPLEVEL,	0);
								m_pd3dDevice.SetTextureStageState(i, TextureStageStateD3DTSS_MAXANISOTROPY, 1);
								m_pd3dDevice.SetTextureStageState(i, TextureStageStateD3DTSS_BUMPENVLSCALE, 0);
								m_pd3dDevice.SetTextureStageState(i, TextureStageStateD3DTSS_BUMPENVLOFFSET, 0);
								m_pd3dDevice.SetTextureStageState(i, TextureStageStateD3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_DISABLE);
				*/
			}

//			m_pd3dDevice.SetTextureStageState(0, TextureStageState.ColorOperation,	(int)TextureOperation.Modulate);

			// Bad bad nVidia bad! hehe...
			//			m_pd3dDevice.RenderState D3DRS_CULLMODE, D3DCULL_CW );

			// Don't do alpha as a default
			m_pd3dDevice.RenderState.AlphaBlendEnable = true; 
			m_pd3dDevice.RenderState.SourceBlend = Blend.One; 
			m_pd3dDevice.RenderState.DestinationBlend = Blend.Zero; 

			// Set the ambient light
			//			ENG_SetAmbientLight( zcolor(128,128,128,255) );
		}
		/// <summary>
		///  Display the After Action Review Screen
		/// </summary>
		public void DoAfterActionReview (  ) 
		{
			// The implementation for this will be done in a later Chapter
		}

		/// <summary>
		///  Process mouse, keyboard and if appropriate, joystick inputs
		/// </summary>
		public void GetPlayerInputs (  ) 
		{
			m_GameInput.Poll();
		}

		/// <summary>
		///  Process any automated player artificial intelligence
		/// </summary>
		/// <param name="DeltaT"></param>
		public void DoAI ( float DeltaT ) 
		{
			// The implementation for this will be done in a later Chapter
		}

		/// <summary>
		///  Process any moving object dynamics
		/// </summary>
		/// <param name="DeltaT"></param>
		public void DoDynamics ( float DeltaT ) 
		{

			try
			{
				frame++;
				if ( frame > 30 )
				{
					bool los = m_Terrain.InLineOfSight(new Vector3(0.0f, 1.0f, 0.0f ), m_Camera.EyeVector);
					frame=0;
					//			Console.AddLine("los = " + los);
				}
				if ( m_Objects.Count > 0 )
				{
					foreach ( Object3D obj in m_Objects )
					{
						obj.Update( DeltaT );
					}
				}
			}
			catch (DirectXException d3de)
			{
				Console.AddLine("Unable to update an object " + m_Objects);
				Console.AddLine(d3de.ErrorString);
			}
			catch ( Exception e )
			{
				Console.AddLine("Unable to update an object " + m_Objects);
				Console.AddLine(e.Message);
			}
		}

		/// <summary>
		///  Process any multiplayer state sharing if applicable
		/// </summary>
		/// <param name="DeltaT"></param>
		public void DoNetworking ( float DeltaT ) 
		{
			// The implementation for this will be done in a later Chapter
		}

		public void MoveCamera( float x, float y, float z, float pitch, float roll, float heading )
		{
			m_Camera.AdjustHeading( heading );
			m_Camera.AdjustPitch( pitch );
//			m_Camera.AdjustRoll( roll );
			m_Camera.MoveCamera(x, y, z );

		}

		public void SetTerrain(int xSize, int ySize, string sName, string sTexture, float fSpacing, float fElevFactor)
		{
			Rectangle bounds = new Rectangle(0,0,(int)(xSize*fSpacing+0.9),(int)(ySize*fSpacing+0.9));
			m_QuadTree = new Quad(bounds, 0, 7, null);
			m_Terrain = new Terrain(xSize, ySize, sName, sTexture, fSpacing, fElevFactor);

		}

		public void AddObject( Object3D obj )
		{
			Debug.WriteLine("adding " + obj.Name + " to engine object list");
			m_QuadTree.AddObject(obj);
			m_Objects.Add(obj);
		}

		public Object3D GetObject ( string name )
		{
			Object3D obj = null;
			foreach ( Object3D o in m_Objects )
			{
				if ( o.Name == name )
				{
					obj = o;
				}
			}
			if ( obj == null )
			{
				foreach ( Object3D o in BillBoard.Objects )
				{
					if ( o.Name == name )
					{
						obj = o;
					}
				}
			}
			return obj;
		}

		public bool SetCamera ( string name )
		{
			bool success = false;
			foreach ( Camera c in m_Cameras )
			{
				if ( c.Name == name )
				{
					m_Camera = c;
					success = true;
				}
			}
			return success;
		}

		public void AddCamera( Camera cam )
		{
			m_Cameras.Add(cam);
		}

		public void RemoveCamera ( string name )
		{
			Camera cam = null;
			foreach ( Camera c in m_Cameras )
			{
				if ( c.Name == name )
				{
					cam = c;
					break;
				}
			}
			if ( cam != null ) m_Cameras.Remove(cam);
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -