public GameplaySceneBase(string sceneID)
            : base(sceneID)
        {
            _inputProcessor = Input.TouchControls.CreateController();

            _motionController = new MotionController();
            _animationController = new AnimationController();
            _timerController = new TimerController();

            _pauseController = new PauseController();
            _pauseController.AddPausableObject(_timerController);
            _pauseController.AddPausableObject(_animationController);

            _cameraController = new Bopscotch.Gameplay.Controllers.PlayerTrackingCameraController();
            _cameraController.Viewport = new Rectangle(0, 0, Definitions.Back_Buffer_Width, Definitions.Back_Buffer_Height);
            _cameraController.ScrollBoundaryViewportFractions = new Vector2(Definitions.Horizontal_Scroll_Boundary_Fraction, Definitions.Vertical_Scroll_Boundary_Fraction);

            Renderer.ClipOffCameraRendering(_cameraController, Camera_Clipping_Margin);

            _playerCollisionController = new OneToManyCollisionController();

            _opaqueParticleEffectManager = new OpaqueLayerParticleEffectManager(_cameraController);
            _additiveParticleEffectManager = new AdditiveLayerParticleEffectManager(_cameraController);

            _levelFactory = new Bopscotch.Gameplay.LevelFactory(RegisterGameObject, _timerController.RegisterUpdateCallback);

            _smashBlockItemFactory = new Effects.SmashBlockItems.SmashBlockItemFactory(RegisterGameObject, _timerController.RegisterUpdateCallback);

            _speedometer = new Bopscotch.Gameplay.Objects.Display.Speedometer();
            _playerEventPopup = new Bopscotch.Gameplay.Objects.Display.PlayerEventPopup();

            _objectWithGlowEffect = new List<ICanHaveGlowEffect>();
        }
        public GlobalTimerController()
            : base(GameBase.Instance)
        {
            _timerController = new TimerController();

            GameBase.Instance.Components.Add(this);
        }
        public GlobalTimerController()
            : base(GameBase.Instance)
        {
            _timerController = new TimerController();

            GameBase.Instance.Components.Add(this);
        }
        public LevelFactory(Scene.ObjectRegistrationHandler registerGameObject, 
            TimerController.TickCallbackRegistrationHandler registerTimerTick)
        {
            _registerGameObject = registerGameObject;
            _registerTimerTick = registerTimerTick;

            BackgroundDimensions = new Point(Definitions.Back_Buffer_Width, Definitions.Back_Buffer_Height);
        }
 public SmashBlockItemFactory(Scene.ObjectRegistrationHandler objectRegistrationHandler,
     TimerController.TickCallbackRegistrationHandler timerTickRegistrationHandler)
 {
     _registerObject = objectRegistrationHandler;
     _registerTimerTick = timerTickRegistrationHandler;
 }
 public void RegisterUpdateCallback(TimerController.UpdateCallback toRegister)
 {
     _timerController.RegisterUpdateCallback(toRegister);
 }