public override void SetNextShot(ShotData data)
    {
        base.SetNextShot(data);

        m_IsReadyToBeStopped = true;
        m_CurrentAimingTime  = 0;
        m_CurrentForceV3     = Vector3.zero;

        m_InputObserver.RequireInputNotification(new InputObserverData(HandledInputs.LEFT_MOUSE_BUTTON_PRESSED, OnLeftMouseButtonPressed),
                                                 new InputObserverData(HandledInputs.LEFT_MOUSE_BUTTON_RELEASED, OnLeftMouseButtonReleased),
                                                 new InputObserverData(HandledInputs.LEFT_MOUSE_BUTTON_HELD_DOWN, OnLeftMouseButtonHeldDown));
        CallEvent(OnShotDataSet, data);
    }
    protected override void Awake()
    {
        base.Awake();

        m_InputObserver = new InputObserver();

#if UNITY_EDITOR
        m_InputObserver.RequireInputNotification(new InputObserverData(HandledInputs.KEY_R, ResetShotDebug),
                                                 new InputObserverData(HandledInputs.KEY_D, DebugPerfectShot));
#endif
    }