public override void Init()
        {
            Content.ContentPath = "Data";

            Instance   = this;
            nParticles = 0;

            scene = new Scene
            {
                View   = this,
                Camera = new LookatCartesianCamera
                {
                    Position    = new Vector3(10, 10, 10),
                    Lookat      = Vector3.Zero,
                    ZFar        = 600,
                    AspectRatio = AspectRatio
                }
            };
            sceneQuadtree = new Common.Quadtree <Entity>(10);
            new SceneBVHAutoSyncer(scene, sceneQuadtree);

            stateManager = new DummyDevice9StateManager(Device9);

            renderer = new Graphics.Renderer.Renderer(Device9)
            {
                Scene        = scene,
                StateManager = stateManager,
                Settings     = new Graphics.Renderer.Settings
                {
                    CullMode    = Cull.Counterclockwise,
                    FogDistance = 1500,
                }
            };
            renderer.Initialize(this);

            sceneRendererConnector = new SortedTestSceneRendererConnector
            {
                Renderer = renderer,
                Scene    = scene
            };
            sceneRendererConnector.Initialize();

            InputHandler = new WalkaroundCameraInputHandler
            {
                Camera       = (LookatCartesianCamera)scene.Camera,
                InputHandler = new InteractiveSceneManager
                {
                    Scene = scene
                },
            };

            ground = new MetaModel
            {
                AlphaRef = 0,
                HasAlpha = false,
                Texture  = new TextureFromFile("Models/GroundTextures/Grass1.png"),
                XMesh    = new MeshConcretize
                {
                    MeshDescription = new Graphics.Software.Meshes.IndexedPlane
                    {
                        Position = new Vector3(-5f, -5f, -1),
                        Size     = new Vector2(10, 10),
                        UVMin    = Vector2.Zero,
                        UVMax    = new Vector2(1, 1),
                        Facings  = Facings.Frontside
                    },
                    Layout = Graphics.Software.Vertex.PositionNormalTexcoord.Instance
                },
            };

            scene.Add(new Entity
            {
                MainGraphic             = ground,
                VisibilityLocalBounding = new Common.Bounding.NonfittableBounding(Vector3.Zero, false, true),
                Translation             = Vector3.UnitZ
            });
        }
        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();
        }