public Gta5EyeTracking()
{
Debug.Log("Begin Initialize");
//Disposing
_shutDownRequestedEvent = new ManualResetEvent(false);
//Settings
_settingsStorage = new SettingsStorage();
_settings = _settingsStorage.LoadSettings();
//Statistics
var version = Assembly.GetExecutingAssembly().GetName().Version;
var versionString = version.Major + "." + version.Minor + "." + version.Build;
_googleAnalyticsApi = new GoogleAnalyticsApi("UA-68420530-1", _settings.UserGuid, "GTA V Eye Tracking Mod", "gta5eyetracking", versionString);
//Gaze
_tobiiTracker = new TobiiInteractionEngineTracker();
//Menu
_menuPool = new MenuPool();
_settingsMenu = new SettingsMenu(_menuPool, _settings);
_introScreen = new IntroScreen(_menuPool, _settings);
//Debug
_debugGazeVisualization = new DefaultCrosshair(Color.FromArgb(220, 255, 0, 0), Color.FromArgb(220, 0, 255, 255));
_debugOutput = new DebugOutput();
//Hids
_mouseEmulation = new MouseEmulation();
_controllerEmulation = new ControllerEmulation();
//Features
_gameState = new GameState(_controllerEmulation, _menuPool);
_animationHelper = new AnimationHelper();
_aiming = new Aiming(_settings, _animationHelper, _gameState);
_extendedView = new ExtendedView(_settings, _gameState, _tobiiTracker, _aiming, _debugOutput);
_radialMenu = new RadialMenu(_controllerEmulation, _tobiiTracker);
//Window
_foregroundWindowWatcher = new ForegroundWindowWatcher();
_foregroundWindowWatcher.ForegroundWindowChanged += ForegroundWindowWatcherOnForegroundWindowChanged;
_isWindowForeground = _foregroundWindowWatcher.IsWindowForeground();
//General
_gazeProjector = new GazeProjector(_settings);
_controlsProcessor = new ControlsProcessor(_settings,_controllerEmulation,_aiming,_extendedView,_radialMenu,_settingsMenu, _gameState, _debugOutput);
KeyDown += OnKeyDown;
Tick += OnTick;
Aborted += OnAborted;
Debug.Log("End Initialize");
}