private int visibleQuads = 0, frustumChecks=0; //just for statistics #endregion Fields #region Constructors //Constructor public SceneManager() { StreamReader level; if (Game.gameClass.GetEngineState() != EngineState.newLevel) { level = new StreamReader(Game.gameClass.GetLvLFilePath()); Globals.heightMultiplier = (float)Convert.ToDouble(level.ReadLine()); } else level = null; String dirPath = Path.GetDirectoryName(Game.gameClass.GetLvLFilePath()); MousePicker.Create(); if (Game.gameClass.GetEngineState() != EngineState.play) MakeForm(); globalLight = new Light(level); camera = new Camera(level); terrain = new Terrain(quadSize, level); sky = new Sky(globalLight.GetLightDir(), level); if (Game.gameClass.GetEngineState() != EngineState.play) { StreamReader editOpt = new StreamReader("editorOptions.txt"); globalLight.MakeForm(); camera.MakeForm(); terrain.MakeForm(editOpt); sky.MakeForm(); editOpt.Close(); } CreateQuadTree(); viewProjectionHandle = ResourceManager.mainManager.GetDefaultEffectPool().AsEffect().GetVariableByName("viewProjection").AsMatrix(); lightDirHandle = ResourceManager.mainManager.GetDefaultEffectPool().AsEffect().GetVariableByName("lightDir").AsVector(); ambientHandle = ResourceManager.mainManager.GetDefaultEffectPool().AsEffect().GetVariableByName("ambient").AsScalar(); if(level!=null) level.Close(); }
public virtual void Init(D3DDevice device) { SlimDX.D3DCompiler.ShaderFlags shaderflags = SlimDX.D3DCompiler.ShaderFlags.EnableStrictness; SlimDX.D3DCompiler.EffectFlags effectFlags = SlimDX.D3DCompiler.EffectFlags.None; effect = D3D.Effect.FromFile(device.Device, ShaderFilename, "fx_4_0", shaderflags, effectFlags, null, null, null); passes = new List<D3D.EffectPass>(); for (int i = 0; i < MaxTechniques; i++) { D3D.EffectTechnique technique = effect.GetTechniqueByIndex(i); if (technique == null || !technique.IsValid) break; for (int p = 0; p < MaxPasses; p++) { D3D.EffectPass pass = technique.GetPassByIndex(p); if (pass == null || !pass.IsValid) break; passes.Add(pass); } } World = effect.GetVariableByName("World").AsMatrix(); View = effect.GetVariableByName("View").AsMatrix(); Proj = effect.GetVariableByName("Proj").AsMatrix(); InvProj = effect.GetVariableByName("InvProj").AsMatrix(); CameraPos = effect.GetVariableByName("CameraPos").AsVector(); }