📄 gameengine.cs
字号:
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 + -