public GooAccess(Direct3D.Device NewGameDevice, GameEngine.ShaderLevel NewCardShaderLevel, DirectX.Matrix NewViewMatrix, DirectX.Matrix NewProjectionMatrix) { GameDevice = NewGameDevice; CardShaderLevel = NewCardShaderLevel; ViewMatrix = NewViewMatrix; ProjectionMatrix = NewProjectionMatrix; // Load Shader Effect From File GooEffect = Direct3D.Effect.FromFile(GameDevice, GameConfig.Files.GooFx, null, null, Direct3D.ShaderFlags.None, null); // Choose shader technique based on shader level. if (CardShaderLevel == GameEngine.ShaderLevel.Pixel_3_0) { GooEffect.Technique = "Goo_Parallax_3_0"; } else if (CardShaderLevel == GameEngine.ShaderLevel.Pixel_2_b) { GooEffect.Technique = "Goo_Parallax_2_b"; } else if (CardShaderLevel == GameEngine.ShaderLevel.Pixel_2_0) { GooEffect.Technique = "Goo_Parallax_2"; } else if (CardShaderLevel == GameEngine.ShaderLevel.Pixel_1_4) { GooEffect.Technique = "Goo_Bump_1_4"; } // Load Mesh From File GooMesh = Direct3D.Mesh.FromFile(GameConfig.Files.GooMesh, Direct3D.MeshFlags.Managed, GameDevice); // Load Textures From File ColorTexture = Direct3D.TextureLoader.FromFile(GameDevice, GameConfig.Files.GooColor); NormalTexture = Direct3D.TextureLoader.FromFile(GameDevice, GameConfig.Files.GooNormal); HeightTexture = Direct3D.TextureLoader.FromFile(GameDevice, GameConfig.Files.GooHeight); // Load Textures into Effect GooEffect.SetValue("ColorTexture", ColorTexture); GooEffect.SetValue("NormalsTexture", NormalTexture); GooEffect.SetValue("HeightTexture", HeightTexture); // Set Parallax and Bump Intensity GooEffect.SetValue("ParallaxAmount", .5f); GooEffect.SetValue("BumpAmount", 1.5f); }
public WallAccess(Direct3D.Device NewGameDevice, GameEngine.ShaderLevel NewCardShaderLevel, DirectX.Matrix NewViewMatrix, DirectX.Matrix NewProjectionMatrix) { GameDevice = NewGameDevice; CardShaderLevel = NewCardShaderLevel; ViewMatrix = NewViewMatrix; ProjectionMatrix = NewProjectionMatrix; // Load Shader Effects From Files WallEffect = Direct3D.Effect.FromFile(GameDevice, GameConfig.Files.WallFx, null, null, Direct3D.ShaderFlags.None, null); WallEffect.Technique = "WallLight_1_1"; PipeEffect = Direct3D.Effect.FromFile(GameDevice, GameConfig.Files.PipeFx, null, null, Direct3D.ShaderFlags.None, null); PipeEffect.Technique = "PipeLight_1_1"; // Load Mesh From File WallMesh = Direct3D.Mesh.FromFile(GameConfig.Files.WallMesh, Direct3D.MeshFlags.Managed, GameDevice, out WallMtrl); PipeMesh = Direct3D.Mesh.FromFile(GameConfig.Files.PipeMesh, Direct3D.MeshFlags.Managed, GameDevice, out PipeMtrl); // Load Wall Textures if ((WallMtrl != null) && (WallMtrl.Length > 0)) { WallMaterials = new Direct3D.Material[WallMtrl.Length]; WallTextures = new Direct3D.Texture[WallMtrl.Length]; for (int i = 0; i < WallMtrl.Length; i++) { WallMaterials[i] = WallMtrl[i].Material3D; if ((WallMtrl[i].TextureFilename != null) && (WallMtrl[i].TextureFilename != string.Empty)) { WallTextures[i] = Direct3D.TextureLoader.FromFile(GameDevice, @"..\..\Resources\" + WallMtrl[i].TextureFilename); } } } // Load Pipe Textures if ((PipeMtrl != null) && (PipeMtrl.Length > 0)) { PipeMaterials = new Direct3D.Material[PipeMtrl.Length]; PipeTextures = new Direct3D.Texture[PipeMtrl.Length]; for (int i = 0; i < PipeMtrl.Length; i++) { PipeMaterials[i] = PipeMtrl[i].Material3D; if ((PipeMtrl[i].TextureFilename != null) && (PipeMtrl[i].TextureFilename != string.Empty)) { PipeTextures[i] = Direct3D.TextureLoader.FromFile(GameDevice, @"..\..\Resources\" + PipeMtrl[i].TextureFilename); } } } // Set wall mesh location WallWorldMatrix = DirectX.Matrix.RotationYawPitchRoll(3.12f, 0.0f, 0.0f) * DirectX.Matrix.Translation(15, -75, -425); PipeWorldMatrix = DirectX.Matrix.RotationYawPitchRoll(3.20f, -0.1f, 0.0f) * DirectX.Matrix.Translation(-145, 15, -375); // Set Wall Shader Parameters DirectX.Matrix WorldViewProjMatrix = WallWorldMatrix * ViewMatrix * ProjectionMatrix; WallEffect.SetValue("WorldViewProj", WorldViewProjMatrix); WallEffect.SetValue("WorldMatrix", WallWorldMatrix); WallEffect.SetValue("DiffuseDirection", new DirectX.Vector4(1.0f, 1.0f, 1.0f, 0.0f)); // Set Pipe Shader Parameters WorldViewProjMatrix = PipeWorldMatrix * ViewMatrix * ProjectionMatrix; PipeEffect.SetValue("WorldViewProj", WorldViewProjMatrix); PipeEffect.SetValue("WorldMatrix", PipeWorldMatrix); PipeEffect.SetValue("DiffuseDirection", new DirectX.Vector4(1.0f, 1.0f, 1.0f, 0.0f)); }