public override void Exit() { Program.Instance.ProgramEvent -= new ProgramEventHandler(Instance_ProgramEvent); if (Replay != null) { Replay.Close(); } if (Mechanics.MotionSimulation is Common.Motion.ThreadSimulationProxy) { ((Common.Motion.ThreadSimulationProxy)Mechanics.MotionSimulation).Shutdown(); } Scene.Root.ClearChildren(); ChangeState(null); Program.Instance.SoundManager.StopAllChannels(); Program.Instance.Interface.ClearInterface(); SceneRendererConnector.Release(); Renderer.Release(Scene.View.Content); Map.Release(); #if BETA_RELEASE dtimeLog.Close(); #endif Program.Instance.Content.Release(); var mainCharSkinMesh = Program.Instance.Content.Acquire <SkinnedMesh>( new SkinnedMeshFromFile("Models/Units/MainCharacter1.x")); mainCharSkinMesh.RemoveMeshContainerByFrameName("sword1"); mainCharSkinMesh.RemoveMeshContainerByFrameName("sword2"); mainCharSkinMesh.RemoveMeshContainerByFrameName("rifle"); musicChannel1 = ambienceChannel1 = null; Instance = null; }
public override void PreRender(float dtime) { Graphics.Renderer.Renderer renderer = (Graphics.Renderer.Renderer)Game.Instance.Renderer; renderer.CalcShadowmapCamera(renderer.Settings.LightDirection, 0f); #if BETA_RELEASE ClientProfilers.Culling.Start(); #endif if (Client.Game.Game.Instance.sceneQuadtree != null) { SceneRendererConnector.CullScene(Client.Game.Game.Instance.sceneQuadtree); } #if BETA_RELEASE ClientProfilers.Culling.Stop(); #endif state.PreRender(dtime); }
public override void Update(float dtime) { Renderer.Settings.WaterLevel = MainWindow.Instance.CurrentMap.Settings.WaterHeight; Renderer.Settings.AmbientColor = MainWindow.Instance.CurrentMap.Settings.AmbientColor; Renderer.Settings.DiffuseColor = MainWindow.Instance.CurrentMap.Settings.DiffuseColor; Renderer.Settings.FogColor = MainWindow.Instance.CurrentMap.Settings.FogColor; Renderer.Settings.SpecularColor = MainWindow.Instance.CurrentMap.Settings.SpecularColor; Renderer.Settings.LightDirection = MainWindow.Instance.CurrentMap.Settings.LightDirection; if (FogEnabled) { Renderer.Settings.FogDistance = MainWindow.Instance.CurrentMap.Settings.FogDistance; Renderer.Settings.FogExponent = MainWindow.Instance.CurrentMap.Settings.FogExponent; } else { Renderer.Settings.FogDistance = 100000; Renderer.Settings.FogExponent = 100000; } Renderer.CalcShadowmapCamera(Renderer.Settings.LightDirection, 0); if (sceneQuadtree != null) { SceneRendererConnector.CullScene(sceneQuadtree); } SceneRendererConnector.UpdateAnimations(dtime); if (InputHandler != null) { InputHandler.ProcessMessage(MessageType.Update, new UpdateEventArgs { Dtime = dtime }); } Renderer.PreRender(dtime); Device9.Clear(ClearFlags.Target | ClearFlags.ZBuffer, new Color4(Renderer.Settings.FogColor), 1.0f, 0); Device9.BeginScene(); if (Wireframe) { Device9.SetRenderState(RenderState.FillMode, FillMode.Wireframe); } else { Device9.SetRenderState(RenderState.FillMode, FillMode.Solid); } Renderer.Render(dtime); state.OnRender(); bvRenderer.Begin(Scene.Camera); if (Program.Settings.DisplayGroundBoundings) { foreach (var v in MainWindow.Instance.CurrentMap.Ground.quadtree.All) { var b = MainWindow.Instance.CurrentMap.Ground.quadtree.GetBounding(v); bvRenderer.Draw(Matrix.Identity, b, Color.Yellow); } } if (MainWindow.Instance.placementBoundingsToolStripMenuItem.Checked) { foreach (var v in PlacementBoundings.All) { var b = ((Client.Game.Map.GameEntity)v).EditorPlacementWorldBounding; bvRenderer.Draw(Matrix.Identity, b, Color.Yellow); } } helperVisualizations.Settings.PhysicsBoundings = MainWindow.Instance.physicsBoundingsToolStripMenuItem.Checked; helperVisualizations.Settings.PhysicsBoundingsFullChains = MainWindow.Instance.showFullChainsToolStripMenuItem.Checked; helperVisualizations.Settings.PhysicsBoundingsHideGround = MainWindow.Instance.physicsBoundingsHideGroundToolStripMenuItem.Checked; helperVisualizations.Settings.AggroRange = MainWindow.Instance.aggroRangeToolStripMenuItem.Checked; helperVisualizations.Settings.VisualBoundings = MainWindow.Instance.visualBoundingsToolStripMenuItem.Checked; helperVisualizations.Render(bvRenderer, this, Scene, MainWindow.Instance.CurrentMap.NavMesh, Renderer.Frame); if (MainWindow.Instance.mapBoundsToolStripMenuItem.Checked) { float border = 20; bvRenderer.Draw(Matrix.Identity, new BoundingBox( new Vector3(border, border, 0), new Vector3(MainWindow.Instance.CurrentMap.Settings.Size.Width - border, MainWindow.Instance.CurrentMap.Settings.Size.Height - border, 0) ), Color.Black); } if (MainWindow.Instance.pickingBoundingsToolStripMenuItem.Checked) { foreach (var v in Scene.AllEntities) { if (v is Client.Game.Map.GameEntity) { bvRenderer.Draw(Matrix.Identity, v.PickingWorldBounding, Color.Orange); } } } bvRenderer.End(); Device9.EndScene(); Device9.Present(); }
public override void Init() { if (DesignMode) { return; } Content.ContentPath = "Data(.kel)"; Client.Game.Map.GameEntity.ContentPool = Content; Scene.View = this; Scene.Camera = new LookatSphericalCamera() { FOV = 0.5f, ZFar = 50, SphericalCoordinates = Program.ClientDefaultSettings.CameraSphericalCoordinates, AspectRatio = this.AspectRatio }; Controller = new InteractiveSceneManager { Scene = Scene }; StateManager = new DummyDevice9StateManager(Device9); InputHandler = inputHandlersRoot; cameraInputHandler = new CameraInputHandler { Camera = (LookatSphericalCamera)Scene.Camera, View = this, }; Scene.Camera.ZFar = 50; inputHandlersRoot.InputHandlers.Add(cameraInputHandler); cameraInputHandler.InputHandler = Controller; if (Program.Settings.UseDummyRenderer) { throw new NotSupportedException("Dummy renderer is no longer supported."); //Renderer = new Graphics.DummyRenderer.Renderer { Scene = Scene, StateManager = StateManager }; } else { Renderer = new Graphics.Renderer.Renderer(Device9) { Scene = Scene, StateManager = StateManager, Settings = new Graphics.Renderer.Settings { ShadowQuality = Graphics.Renderer.Settings.ShadowQualities.Medium, LightingQuality = Graphics.Renderer.Settings.LightingQualities.High } }; SceneRendererConnector = new SortedTestSceneRendererConnector { Scene = Scene, Renderer = Renderer }; } Renderer.Settings.TerrainQuality = Graphics.Renderer.Settings.TerrainQualities.High; Renderer.Settings.LightingQuality = Graphics.Renderer.Settings.LightingQualities.High; Renderer.Settings.ShadowQuality = Graphics.Renderer.Settings.ShadowQualities.Low; SceneRendererConnector.Initialize(); Renderer.Initialize(Scene.View); if (Program.Settings.DeveloperSettings) { p1 = new System.Windows.Forms.PropertyGrid { SelectedObject = Renderer.Settings, Dock = System.Windows.Forms.DockStyle.Fill }; form1.Controls.Add(p1); form1.Show(); } bvRenderer = new BoundingVolumesRenderer { StateManager = StateManager, View = this }; tooltip = new System.Windows.Forms.ToolTip(); StartDefaultMode(); }
void Setup() { Scene = new Scene(); GameState = GameState.Playing; InterfaceIngameScene = new Scene(); Scene.View = InterfaceIngameScene.View = Program.Instance; Scene.Camera = InterfaceIngameScene.Camera = new LookatSphericalCamera() { Lookat = new Vector3(0, 0, 0), Position = new Vector3(10, 10, 10), FOV = Program.Settings.CameraFOV, ZFar = 20, ZNear = Program.Settings.CameraZNear, AspectRatio = Program.Instance.AspectRatio }; CameraController = new CameraController { Camera = (LookatSphericalCamera)Scene.Camera }; Scene.EntityAdded += scene_EntityAdded; Program.Instance.Interface.Layer1.AddChild( SceneControl = new GameSceneControl { InnerScene = Scene, Size = Program.Instance.Interface.Size }); InterfaceIngameRenderer = new Graphics.Interface.InterfaceRenderer9(Program.Instance.Device9) { Scene = InterfaceIngameScene, StateManager = Program.Instance.StateManager, }; InterfaceIngameRenderer.Initialize(Scene.View); if (Program.Settings.OutputPNGSequence) { Directory.CreateDirectory(OutputPNGSequencePath); } if (Program.Settings.UseDummyRenderer) { throw new NotSupportedException("Dummy renderer is no longer supported."); } else { Renderer = new Graphics.Renderer.Renderer(Program.Instance.Device9) { Scene = Scene, StateManager = Program.Instance.StateManager, Settings = Program.Settings.RendererSettings, }; SceneRendererConnector = new SortedTestSceneRendererConnector { Scene = Scene, Renderer = Renderer }; } Graphics.Renderer.Results result = Renderer.Initialize(Scene.View); SceneRendererConnector.Initialize(); if (result == Graphics.Renderer.Results.OutOfVideoMemory) { System.Windows.Forms.MessageBox.Show(Locale.Resource.ErrorOutOfVideoMemory); Application.Log("User ran out of video memory according to renderer. This is probably due to having too high shadow quality."); System.Windows.Forms.Application.Exit(); } RendererSettingsController = new RendererSettingsController(); var s = Program.Settings.GraphicsDeviceSettings.Resolution; Program.Instance.Interface.Layer1.AddChild(Interface = new Interface.Interface { Size = new Vector2(s.Width, s.Height), Visible = false }); }