// PUBLIC


        // PRIVATE

        // PRIVATE STATIC

        // PRIVATE COROUTINE

        // PRIVATE INVOKE

        //--------------------------------------
        //  Events
        //--------------------------------------
        /// <summary>
        /// _ons the user interface collision enter2 D signal.
        /// </summary>
        /// <param name="aTag_string">A tag_string.</param>
        private void _onUICollisionEnter2DSignal(GameObject aCollidedWith_gameobject)
        {
            //WHAT DID WE HIT?
            switch (aCollidedWith_gameobject.tag)
            {
            case CPUPaddleUI.TAG:
            case PlayerPaddleUI.TAG:
                //
                PaddleComponent paddleComponent = aCollidedWith_gameobject.GetComponent <PaddleComponent>();
                view.doHandleCollisionWithPaddle(paddleComponent.velocity);
                paddleComponent.doSpinOnce();
                //
                soundPlaySignal.Dispatch(new SoundPlayVO(SoundType.PADDLE_HIT));
                break;


            case BoundaryComponent.TAG:

                //WHICH TYPE OF BOUNDARY WAS HIT?
                BoundaryComponent boundaryComponent = aCollidedWith_gameobject.GetComponent <BoundaryComponent>();
                //
                switch (boundaryComponent.boundaryType)
                {
                case BoundaryType.LeftGoal:

                    //LEFT BOUND HIT? THEN REWARD RIGHT SCORE
                    rightPaddleScoreChangeSignal.Dispatch(1);
                    soundPlaySignal.Dispatch(new SoundPlayVO(SoundType.GOAL_LOSS));
                    break;

                case BoundaryType.RightGoal:
                    //RIGHT BOUND HIT? THEN REWARD LEFT SCORE
                    leftPaddleScoreChangeSignal.Dispatch(1);
                    soundPlaySignal.Dispatch(new SoundPlayVO(SoundType.GOAL_WIN));
                    break;

                case BoundaryType.None:
                    soundPlaySignal.Dispatch(new SoundPlayVO(SoundType.PADDLE_HIT));
                    break;

                default:
                                        #pragma warning disable 0162
                    throw new SwitchStatementException();
                    break;
                                        #pragma warning restore 0162
                }
                break;
            }
        }