public virtual void CopyTimeTrackerState(ITimeTracker other)
    {
        BasicTimeTracker otherTracker = other as BasicTimeTracker;

        if (otherTracker != null)
        {
            Position.Copy(otherTracker.Position);
            ItemForm = otherTracker.ItemForm;

            _shouldPoolObject = otherTracker._shouldPoolObject;
            _isItemable       = otherTracker._isItemable;
        }
        else
        {
            gameController.LogError($"Cannot copy state from {other.GetType()} to {nameof(BasicTimeTracker)}");
        }
    }
        public void Setup()
        {
            _gamepad  = InputSystem.AddDevice <Gamepad>();
            _keyboard = InputSystem.AddDevice <Keyboard>();

            _game = Object.Instantiate(Resources.Load <GameObject>("Prefabs/GameController")).GetComponent <GameController>();

            PlayerController playerPrefab = Resources.Load <PlayerController>("Prefabs/Player");

            //_game.Player = Object.Instantiate(playerPrefab).GetComponent<PlayerController>();
            _game.Player.PlayerInput.enabled = true;

            TimeMachineController timeMachine = Object.Instantiate(Resources.Load <GameObject>("Prefabs/TimeMachine")).GetComponent <TimeMachineController>();
            BasicTimeTracker      moveableBox = Object.Instantiate(Resources.Load <GameObject>("Prefabs/MoveableBox")).GetComponent <BasicTimeTracker>();

            var levelEndObject = Object.Instantiate(Resources.Load <GameObject>("Prefabs/LevelEnd"));

            levelEndObject.transform.position = new Vector3(30, 0, 0);
        }