public void Implement()
        {
            Console.WriteLine("\nLearning Observer Pattern\n");
            WeatherData weatherData = new WeatherData(temperature: 40, pressure: 120, humidity: 20);

            Console.WriteLine(weatherData.ToString());
            IObserver sObserver = new StatisticsDisplay();

            weatherData.RegisterObserver(sObserver);
            IObserver fObserver = new ForecastDisplay();

            weatherData.RegisterObserver(fObserver);
            IObserver gObserver = new GeneralDisplay();

            weatherData.RegisterObserver(gObserver);
            weatherData.NotifyObserver();
            sObserver.Display();
            fObserver.Display();
            gObserver.Display();

            weatherData.DataChanged(temperature: 20, pressure: 80, humidity: 10);  //Just a dummy method which updates the weather data
            Console.WriteLine($"\nWeather changed {weatherData.ToString()}");
            sObserver.Display();
            fObserver.Display();
            gObserver.Display();

            Console.WriteLine("\nObserver Removed: General Display");
            weatherData.RemoveObserver(gObserver);
            weatherData.DataChanged(temperature: -20, pressure: 20, humidity: 0);  //Just a dummy method which updates the weather data
            sObserver.Display();
            fObserver.Display();
            gObserver.Display();
        }
Exemplo n.º 2
0
        private static void TestObserverPattern()
        {
            WeatherData         weatherData         = new WeatherData();
            TemperatureReporter temperatureReporter = new TemperatureReporter();

            CurrentConditionsDisplay  currentConditionsDisplay  = new CurrentConditionsDisplay(weatherData);
            StatisticsDisplay         statisticsDisplay         = new StatisticsDisplay(weatherData);
            ForecastDisplay           forecastDisplay           = new ForecastDisplay(weatherData);
            HeatIndexDisplay          heatIndexDisplay          = new HeatIndexDisplay(weatherData);
            CurrentTemperatureDisplay currentTemperatureDisplay = new CurrentTemperatureDisplay(temperatureReporter);

            Temperature t = new Temperature {
                Temp = 80
            };

            temperatureReporter.TemperatureChanged(t);

            t.Temp = 82;
            temperatureReporter.TemperatureChanged(t);
            Console.WriteLine(currentTemperatureDisplay.Display());

            t.Temp = 78;
            temperatureReporter.TemperatureChanged(t);
            Console.WriteLine(currentTemperatureDisplay.Display());

            weatherData.SetMeasurements(80, 65, 30.4);
            weatherData.SetMeasurements(82, 70, 29.2);
            weatherData.SetMeasurements(78, 90, 29.2);

            Console.WriteLine(currentConditionsDisplay.Display());
            Console.WriteLine(statisticsDisplay.Display());
            Console.WriteLine(forecastDisplay.Display());
            Console.WriteLine(heatIndexDisplay.Display());
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            var wheatherData = new WheatherData
            {
                Temperature = 15.25f,
                Pressure    = 25.25f,
                Humidity    = 28.11f
            };

            var conditionDisplay  = new CurrentConditionDisplay(wheatherData);
            var statisticsDisplay = new StatisticsDisplay(wheatherData);
            var heatIndexDisplay  = new HeatIndexDisplay(wheatherData);

            wheatherData.Humidity = 32.11f;

            wheatherData.WheatherDataChanged -= statisticsDisplay.Update;
            wheatherData.Pressure             = 35.99f;
            wheatherData.WheatherDataChanged += statisticsDisplay.Update;


            wheatherData.Humidity = 11.11f;
            wheatherData.Pressure = 11.22f;


            wheatherData.Pressure = 11.22f;

            wheatherData.Pressure    = 22.22f;
            wheatherData.Temperature = -115.25f;
        }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            var wheatherData = new WheatherData();

            wheatherData.Temperature = 15.25f;
            wheatherData.Pressure    = 25.25f;
            wheatherData.Humidity    = 28.11f;

            var conditionDisplay  = new CurrentConditionDisplay(wheatherData);
            var statisticsDisplay = new StatisticsDisplay(wheatherData);
            var heatIndexDisplay  = new HeatIndexDisplay(wheatherData);

            wheatherData.Humidity = 32.11f;

            wheatherData.RemoveObserver(statisticsDisplay);
            wheatherData.Pressure = 35.99f;
            wheatherData.RegisterObserver(statisticsDisplay);


            wheatherData.Humidity = 11.11f;
            wheatherData.Pressure = 11.22f;


            wheatherData.Pressure = 11.22f;

            wheatherData.Pressure    = 22.22f;
            wheatherData.Temperature = -115.25f;
        }
 public ObserverWeatherDataUnitTest()
 {
     _weatherData = new WeatherData();
     _currentConditionsDisplay = new CurrentConditionsDisplay(_weatherData);
     _forcastDisplay           = new ForcastDisplay(_weatherData);
     _statisticsDisplay        = new StatisticsDisplay(_weatherData);
     _heatIndexDisplay         = new HeatIndexDisplay(_weatherData);
 }
Exemplo n.º 6
0
        public void WhenCreateStatisticsDisplayAndCallSetMeasurementsMethodOnceExpectDisplayMethodReturnStatisticsMessageAvg80Max80Min80()
        {
            var weatherData       = new WeatherData();
            var statisticsDisplay = new StatisticsDisplay(weatherData);

            weatherData.SetMeasurements(80, 50, 80);

            Assert.AreEqual("Avg/Max/Min temperature = 80 / 80 / 80", statisticsDisplay.Display());
        }
Exemplo n.º 7
0
        static void Main(string[] args)
        {
            WeatherData observable    = new WeatherData();
            IObserver   observer      = new GeneralDisplay(observable);
            IObserver   observerOther = new StatisticsDisplay(observable);

            observable.SetCurrentTemperature(12.2);
            observerOther.QuitObserve();
            observable.SetCurrentTemperature(15.2);
        }
Exemplo n.º 8
0
        static void Main(string[] args)
        {
            WeatherData weatherData = new WeatherData();
            CurrentConditionsDisplay currentDisplay    = new CurrentConditionsDisplay(weatherData);
            StatisticsDisplay        statisticsDisplay = new StatisticsDisplay(weatherData);

            weatherData.setMeasurements(80, 65, 30.4f);
            weatherData.setMeasurements(82, 70, 29.2f);
            weatherData.setMeasurements(78, 90, 29.2f);
        }
        public void WeatherData_CanRemoveObservers()
        {
            WeatherData      weatherData       = new WeatherData();
            IWeatherObserver statisticsDisplay = new StatisticsDisplay(weatherData);
            IWeatherObserver forecastDisplay   = new ForecastDisplay(weatherData);
            IWeatherObserver conditionsDisplay = new CurrentConditionsDisplay(weatherData);

            weatherData.RemoveObserver(statisticsDisplay);
            Assert.AreEqual(2, weatherData.SubscriberCount);
        }
        public static void Start()
        {
            WeatherData weatherData = new WeatherData();
            CurrentConditionsDisplay currentDisplay    = new CurrentConditionsDisplay(weatherData);
            StatisticsDisplay        statisticsDisplay = new StatisticsDisplay(weatherData);
            ForecastDisplay          forecastDisplay   = new ForecastDisplay(weatherData);

            weatherData.SetMeasurements(80, 65, 30.4f);
            weatherData.SetMeasurements(82, 70, 29.2f);
            weatherData.SetMeasurements(78, 90, 29.2f);
        }
Exemplo n.º 11
0
        public static void Run()
        {
            var weatherData = new WeatherData();
            var currentConditionsDisplay = new CurrentConditionsDisplay(weatherData);
            var forecastDisplay          = new ForecastDisplay(weatherData);
            var statisticsDisplay        = new StatisticsDisplay(weatherData);

            weatherData.SetMeasurements(30, 80, 50);
            weatherData.SetMeasurements(15, 80, 0);
            weatherData.SetMeasurements(25, 50, 0);
        }
Exemplo n.º 12
0
        public void UpdateObservers()
        {
            WeatherData wd = new WeatherData();

            IObserver fd  = new ForecastDisplay(wd);
            IObserver sd  = new StatisticsDisplay(wd);
            IObserver ccd = new CurrentConditionsDisplay(wd);
            IObserver hi  = new HeatIndexDisplay(wd);

            wd.SetMeasurements(5.5f, 200f, 0.05f);
        }
Exemplo n.º 13
0
        public void Main(string[] args)
        {
            WeatherData weatherData = new WeatherData();
            CurrentConditionsDisplay currentDisplay = new CurrentConditionsDisplay(weatherData);
            StatisticsDisplay statisticsDisplay = new StatisticsDisplay(weatherData);
            ForecastDisplay forecastDisplay = new ForecastDisplay(weatherData);
            HeatIndexDisplay heatIndexDisplay = new HeatIndexDisplay(weatherData);

            weatherData.SetMeasurements(80, 65, 30.4f);
            weatherData.SetMeasurements(82, 70, 29.2f);
            weatherData.SetMeasurements(78, 90, 29.2f);
        }
Exemplo n.º 14
0
        public static void Main(string[] args)
        {
            WeatherData             weatherData       = new WeatherData();
            CurrentConditionDisplay currentDisplay    = new CurrentConditionDisplay(weatherData);
            StatisticsDisplay       statisticsDisplay = new StatisticsDisplay(weatherData);
            ForecastDisplay         forecastDisplay   = new ForecastDisplay(weatherData);
            HeatIndexDisplay        heatIndexDisplay  = new HeatIndexDisplay(weatherData);

            weatherData.setMeasurements(80, 65, 30.4f);
            weatherData.setMeasurements(82, 70, 29.2f);
            weatherData.setMeasurements(78, 90, 29.2f);
        }
Exemplo n.º 15
0
        static void DoObserver()
        {
            WeatherData weatherData = new WeatherData();

            CurrentconditionDisplay currentDisplay  = new CurrentconditionDisplay(weatherData);
            StatisticsDisplay       stasticsDisplay = new StatisticsDisplay(weatherData);
            ForcastDisplay          forecastDisplay = new ForcastDisplay(weatherData);

            weatherData.setMeasurements(80, 65, 30.4f);
            weatherData.setMeasurements(75, 33, 58.9f);
            weatherData.setMeasurements(31, 45, 34.7f);
        }
Exemplo n.º 16
0
        static void Main(string[] args)
        {
            var data     = new WeatherData();
            var display1 = new CurrentConditionsDisplay(data);
            var display2 = new ForecastDisplay(data);
            var display3 = new StatisticsDisplay(data);
            var display4 = new HeatIndexDisplay(data);

            data.SetMeasurements(21.3f, 23.1f, 52.4f);
            data.SetMeasurements(42.3f, 33.1f, 52.4f);
            data.SetMeasurements(19.3f, 63.1f, 52.4f);
            data.SetMeasurements(80.0f, 0.4f, 0f);
        }
Exemplo n.º 17
0
        private static void ObserverPattern()
        {
            WeatherData weatherData = new WeatherData();

            CurrentConditionsDisplay currentConditionsDisplay = new CurrentConditionsDisplay(weatherData);
            StatisticsDisplay        statisticsDisplay        = new StatisticsDisplay(weatherData);
            ForecastDisplay          forecastDisplay          = new ForecastDisplay(weatherData);
            HeatIndexDisplay         heatIndexDisplay         = new HeatIndexDisplay(weatherData);

            weatherData.setMeasurements(80, 65, 30.4f);
            weatherData.setMeasurements(82, 70, 29.2f);
            weatherData.setMeasurements(78, 90, 29.2f);
        }
Exemplo n.º 18
0
        static void Main(string[] args)
        {
            var weatherData = new WeatherData();

            var currentConditionsDisplay = new CurrentConditionsDisplay(weatherData);
            var statisticsDisplay        = new StatisticsDisplay(weatherData);
            var forecastDisplay          = new ForecastDisplay(weatherData);
            var heatIndexDisplay         = new HeatIndexDisplay(weatherData);

            weatherData.SetMeasurements(80, 65, 30.4f);
            weatherData.SetMeasurements(82, 70, 29.2f);
            weatherData.SetMeasurements(78, 90, 29.2f);
        }
        public void Test_WeatherStationHeatIndex()
        {
            WeatherData weatherData = new WeatherData();
            CurrentConditionsDisplay currentDisplay    = new CurrentConditionsDisplay(weatherData);
            StatisticsDisplay        statisticsDisplay = new StatisticsDisplay(weatherData);
            ForecastDisplay          forecastDisplay   = new ForecastDisplay(weatherData);
            HeatIndexDisplay         heatIndexDisplay  = new HeatIndexDisplay(weatherData);

            weatherData.SetMeasurements(80, 65, 30.4f);
            weatherData.SetMeasurements(82, 70, 29.2f);
            weatherData.SetMeasurements(78, 90, 29.2f);

            var result = statisticsDisplay.Display();
        }
Exemplo n.º 20
0
        public void weather_data_updates_statistics_correctly()
        {
            var wd      = new WeatherData();
            var display = new StatisticsDisplay(wd);

            wd.SetMeasurements(20, 15, 73);
            Assert.AreEqual("Avg/Max/Min Temperature: 20/20/20", display.Display());

            wd.SetMeasurements(40, 15, 73);
            Assert.AreEqual("Avg/Max/Min Temperature: 30/40/20", display.Display());

            wd.SetMeasurements(0, 15, 73);
            Assert.AreEqual("Avg/Max/Min Temperature: 20/40/0", display.Display());
        }
Exemplo n.º 21
0
        private static void Main(string[] args)
        {
            WeatherData weatherData = new WeatherData();                                            //建立WeatherData对象

            CurrentConditionsDisplay currentDisplay    = new CurrentConditionsDisplay(weatherData); //建立订阅者
            StatisticsDisplay        statisticsDisplay = new StatisticsDisplay(weatherData);        //建立订阅者


            weatherData.SetMeasurements(80, 65, 30.4f);   //模拟天气变化
            weatherData.SetMeasurements(82, 75, 29.2f);
            weatherData.SetMeasurements(90, 80, 29.2f);

            Console.ReadLine();
        }
        public static void Main()
        {
            WeatherData weatherData       = new();
            var         currentDisplay    = new CurrentConditionsDisplay(weatherData);
            var         statisticsDisplay = new StatisticsDisplay(weatherData);
            var         forecastDisplay   = new ForecastDisplay(weatherData);

            weatherData.SetMeasurements(new WeatherInfo(80, 65, 30.4f));
            weatherData.SetMeasurements(new WeatherInfo(82, 70, 29.2f));
            weatherData.SetMeasurements(new WeatherInfo(78, 90, 29.2f));

            forecastDisplay.Unsubscribe();
            weatherData.SetMeasurements(new WeatherInfo(62, 90, 28, 1f));
        }
        public void WeatherData_CanNotifyObservers()
        {
            WeatherData      weatherData       = new WeatherData();
            IWeatherObserver statisticsDisplay = new StatisticsDisplay(weatherData);
            IWeatherObserver forecastDisplay   = new ForecastDisplay(weatherData);
            IWeatherObserver conditionsDisplay = new CurrentConditionsDisplay(weatherData);

            weatherData.SetMeasurements(10, 20, 30);
            weatherData.RemoveObserver(statisticsDisplay);
            weatherData.SetMeasurements(40, 50, 60);
            weatherData.RemoveObserver(forecastDisplay);
            weatherData.SetMeasurements(70, 80, 90);
            weatherData.RemoveObserver(conditionsDisplay);
            weatherData.SetMeasurements(100, 810, 910);
        }
        static void Main(string[] args)
        {
            WeatherObservable        weatherObservable        = new WeatherObservable(0, 0, 0);
            CurrentConditionsDisplay currentConditionsDisplay = new CurrentConditionsDisplay(weatherObservable, 0, 0);

            weatherObservable.SetTemperature(10);
            weatherObservable.SetHumidity(20);
            weatherObservable.SetPressure(20);

            weatherObservable.RemoveObserver(currentConditionsDisplay);

            StatisticsDisplay statisticsDisplay = new StatisticsDisplay(weatherObservable, 0);

            weatherObservable.SetMeasurements(100, 200, 200);
        }
Exemplo n.º 25
0
        static void Main(string[] args)
        {
            var weatherData = new WeatherData();

            var currentConditionsDisplay = new CurrentConditionsDisplay(weatherData);
            var forecastDisplay          = new ForecastDisplay(weatherData);
            var statisticsDisplay        = new StatisticsDisplay(weatherData);
            var heatIndexDisplay         = new HeatIndexDisplay(weatherData);

            weatherData.MeasurmentsChanged(
                new WeatherMeasurements()
            {
                Temperature = new Temperature()
                {
                    TemperatureType = Temperature.TemperatureTypeEnum.Fahrenheit,
                    Value           = 80
                },
                Humidty  = 65.0,
                Pressure = 30.4d
            }
                );

            weatherData.MeasurmentsChanged(
                new WeatherMeasurements()
            {
                Temperature = new Temperature()
                {
                    TemperatureType = Temperature.TemperatureTypeEnum.Fahrenheit,
                    Value           = 82
                },
                Humidty  = 70.0,
                Pressure = 27.2d
            }
                );

            weatherData.MeasurmentsChanged(
                new WeatherMeasurements()
            {
                Temperature = new Temperature()
                {
                    TemperatureType = Temperature.TemperatureTypeEnum.Fahrenheit,
                    Value           = 78
                },
                Humidty  = 90.0,
                Pressure = 29.2d
            }
                );
        }
Exemplo n.º 26
0
        private static void Main(string[] args)
        {
            // http://www.codeproject.com/Articles/88278/Observer-in-NET-with-IObserver-T
            // http://www.dofactory.com/net/observer-design-pattern
            WeatherData wd = new WeatherData();
            CurrentConditionsDisplay d1 = new CurrentConditionsDisplay(wd);
            StatisticsDisplay        d2 = new StatisticsDisplay(wd);
            ForecastDisplay          d3 = new ForecastDisplay(wd);

            wd.SetMeasurements(15, 20, 50);
            Console.WriteLine();
            wd.SetMeasurements(25, 10, 10);
            Console.WriteLine();
            wd.SetMeasurements(0, 50, 10);

            Console.ReadKey();
        }
Exemplo n.º 27
0
        public static void Run()
        {
            WeatherData weatherData = new WeatherData();

            CurrentConditionsDisplay currentDisplay    = new CurrentConditionsDisplay(weatherData);
            StatisticsDisplay        statisticsDisplay = new StatisticsDisplay(weatherData);
            ForecastDisplay          forecastDisplay   = new ForecastDisplay(weatherData);
            HeatIndex heatIndex = new HeatIndex(weatherData);

            // Simulate new weather measurements
            weatherData.SetMeasurements(80, 65, 30.4f);
            Console.WriteLine();
            weatherData.SetMeasurements(82, 70, 29.2f);
            Console.WriteLine();
            weatherData.SetMeasurements(78, 90, 29.2f);
            Console.WriteLine();
        }
Exemplo n.º 28
0
        static void Main(string[] args)
        {
            Model.WeatherData weather = new Model.WeatherData();
            var currentConditionsDisplay = new CurrentConditionDisplay (weather);
            var statisticsDisplay = new StatisticsDisplay(weather);
            var forecastDisplay = new ForecastDisplay(weather);
            var heatIndex = new HeatIndexDisplay(weather);

            weather.SetMeasurements(20, 10, 45);
            weather.SetMeasurements(32, 60, 100);

            statisticsDisplay = null;
            forecastDisplay.UnregisterObserver();

            weather.SetMeasurements(14, 80, 89);
            Console.ReadKey();

        }
Exemplo n.º 29
0
        public void weather_data_updates_observers_correctly()
        {
            var wd         = new WeatherData();
            var conditions = new CurrentConditionsDisplay(wd);
            var heat       = new HeatIndexDisplay(wd);
            var stats      = new StatisticsDisplay(wd);
            var forecast   = new ForecastDisplay(wd);

            wd.SetMeasurements(80, 65, 30.4f);
            Assert.AreEqual("Current Conditions: 80 celsius and humidity 65", conditions.Display());
            Assert.AreEqual("Heat index is 82.95535", heat.Display());
            Assert.AreEqual("Avg/Max/Min Temperature: 80/80/80", stats.Display());
            Assert.AreEqual("Improving weather on the way!", forecast.Display());

            wd.SetMeasurements(78, 90, 29.2f);
            Assert.AreEqual("Current Conditions: 78 celsius and humidity 90", conditions.Display());
            Assert.AreEqual("Heat index is 83.64967", heat.Display());
            Assert.AreEqual("Avg/Max/Min Temperature: 79/80/78", stats.Display());
            Assert.AreEqual("Weather is getting bad!", forecast.Display());
        }
Exemplo n.º 30
0
        public static void Main(string[] args)
        {
            WeatherMonitor monitor = new WeatherMonitor();
            ForecastDisplay forecast = new ForecastDisplay();
            CurrentConditionsDisplay currentConditions = new CurrentConditionsDisplay();
            StatisticsDisplay statistics = new StatisticsDisplay();
            HeatIndexDisplay heatIndex = new HeatIndexDisplay();

            monitor.SetMeasurments(new WeatherData(80, 65, 30.4f));
            forecast.Subscribe(monitor);
            currentConditions.Subscribe(monitor);
            statistics.Subscribe(monitor);
            heatIndex.Subscribe(monitor);
            monitor.SetMeasurments(new WeatherData(82, 70, 29.2f));
            statistics.Unsubscribe();
            monitor.SetMeasurments(new WeatherData(78, 90, 29.2f));
            monitor.SetMeasurments(null);
            //weatherData.SetMeasurments(82, 70, 29.2f);
            //weatherData.SetMeasurments(78, 90, 29.2f);
            Console.ReadLine();
        }
Exemplo n.º 31
0
        /// <summary>
        /// O padrão Observer define a dependência um-para-muitos entre objetos para que quando um objeto mude de estado todos os seus dependentes
        /// sejam avisados e atualizados automaticamente.
        /// </summary>
        public static void TestObserver()
        {
            WeatherData       weatherData       = new WeatherData();
            ForecastDisplay   forecastDisplay   = new ForecastDisplay();
            StatisticsDisplay statisticsDisplay = new StatisticsDisplay();
            GeneralDisplay    generalDisplay    = new GeneralDisplay();

            Console.WriteLine("Adding forecast display and setting temperature.");
            weatherData.AddObserver(forecastDisplay);
            weatherData.Temperature = 18.1f;
            Console.WriteLine();

            Console.WriteLine("Adding statistics and general display and setting humidity.");
            weatherData.AddObserver(statisticsDisplay);
            weatherData.AddObserver(generalDisplay);
            weatherData.Humidity = 8.3f;
            Console.WriteLine();

            Console.WriteLine("Removing statistics display and setting pressure.");
            weatherData.DeleteObserver(statisticsDisplay);
            weatherData.Pressure = 3.6f;
        }
Exemplo n.º 32
0
 public TestStatisticsDisplay()
 {
     weatherData       = new WeatherData();
     statisticsDisplay = new StatisticsDisplay(weatherData);
 }
Exemplo n.º 33
0
        public override void Initialize()
        {
            CollisionSystem system = new CollisionSystemSAP();

            system.UseTriangleMeshNormal = true;

            // TODO: Should damping factors be left in their default states? (they were changed while adding kinematic bodies)
            world         = new World(system);
            world.Gravity = new JVector(0, -PhysicsConstants.Gravity, 0);
            world.SetDampingFactors(1, 1);
            world.Events.ContactCreated += OnContact;

            space = new Space();
            scene = new Scene
            {
                Camera = camera,
                Canvas = canvas,
                Space  = space,
                World  = world
            };

            var stats = new StatisticsDisplay();

            stats.Anchor    = Alignments.Left | Alignments.Top;
            stats.Offset    = new ivec2(10);
            stats.IsVisible = false;

            canvas.Clear();
            canvas.Load("Canvas.json");
            canvas.Add(stats);
            //canvas.Add(new RopeTester());

            spawnHelper = new SpawnHelper(scene);

            // TODO: Load settings from a file.
            ControlSettings settings = new ControlSettings();

            settings.MouseSensitivity = 50;

            // TODO: Set player position from a save slot.
            PlayerCharacter player = new PlayerCharacter(settings);

            player.Equip(new Sword(player));
            player.Unlock(PlayerSkills.Grab);
            player.Unlock(PlayerSkills.Jump);
            player.Unlock(PlayerSkills.DoubleJump);
            player.Unlock(PlayerSkills.WallJump);
            //player.Unlock(PlayerSkills.Ascend);
            player.Unlock(PlayerSkills.Block);
            player.Unlock(PlayerSkills.Parry);

            player.Equip(new Sword(player));

            // TODO: Load fragments from a save slot.
            scene.Add(player);

            var fragment = scene.LoadFragment("Demo.json");

            //var fragment = scene.LoadFragment("Windmill.json");
            player.Position = fragment.Origin + fragment.Spawn;

            CreateDebugCubes();

            camera.Attach(new FollowView(camera, player, settings));

            // TODO: Initialize renderer settings from a configuration file (based on user settings).
            // TODO: Set light color and direction based on time of day and weather.
            var renderer = scene.Renderer;

            renderer.Light.Direction = Utilities.Normalize(new vec3(-2, -0.75f, 2));

            renderTargetUsers3D.Add(renderer);

            // Create visualizers.
            spaceVisualizer            = new SpaceVisualizer(camera, space);
            jitterVisualizer           = new JitterVisualizer(camera, world);
            jitterVisualizer.IsEnabled = true;

            MessageSystem.Subscribe(this, CoreMessageTypes.Keyboard, (messageType, data, dt) =>
            {
                ProcessKeyboard((KeyboardData)data);
            });
        }