private void Awake()
    {
        cameraViewState = CAMERA_VIEW_STATE.CV00_MIDDLE_VIEW;

        mouseOnRight = false;
        mouseOnLeft  = false;

        mouseOnRightViewLeftSide = false;
        mouseOnLeftViewRightSide = false;

        enterLerpIsDone = false;
        exitLerpIsDone  = false;
    }
    private void CheckLeftViewBody(ref bool trigger)
    {
        if (trigger)
        {
            if (!enterLerpIsDone)
            {
                enterLerpIsDone = cameraTriggerManager.EnterObject(CT00_CAMERA_TRIGGER_MANAGER.UI_POSITION_OBJECT_BUTTON.UPOB04_LEFT_VIEW_RIGHT);

                if (enterLerpIsDone)
                {
                    exitLerpIsDone           = false;
                    mouseOnLeftViewRightSide = true;
                }
            }

            else
            {
                if (cameraTriggerManager.GetLeftViewTopClickFlag())
                {
                    cameraMainManager.SetCameraPositionToMiddle();
                    cameraTriggerManager.SetLeftViewTopMouseClickFlag(false);

                    nextViewState   = CAMERA_VIEW_STATE.CV00_MIDDLE_VIEW;
                    cameraViewState = CAMERA_VIEW_STATE.CV03_LERP_PROCESS;
                    lerpProcess     = CAMERA_VIEW_LERP_PROCESS.CVLP04_DO_LEFT_VIEW_T;
                }
                else if (cameraTriggerManager.GetLeftViewBottomClickFlag())
                {
                    cameraMainManager.SetCameraPositionToRight();
                    cameraTriggerManager.SetLeftViewBottomMouseClickFlag(false);

                    nextViewState   = CAMERA_VIEW_STATE.CV01_RIGHT_VIEW;
                    cameraViewState = CAMERA_VIEW_STATE.CV03_LERP_PROCESS;
                    lerpProcess     = CAMERA_VIEW_LERP_PROCESS.CVLP05_DO_LEFT_VIEW_B;
                }
            }
        }
        else if (mouseOnLeftViewRightSide)
        {
            if (!exitLerpIsDone)
            {
                exitLerpIsDone = cameraTriggerManager.ExitObject(CT00_CAMERA_TRIGGER_MANAGER.UI_POSITION_OBJECT_BUTTON.UPOB04_LEFT_VIEW_RIGHT);

                if (exitLerpIsDone)
                {
                    enterLerpIsDone          = false;
                    mouseOnLeftViewRightSide = false;
                }
            }
        }
    }
    private void CheckMiddleLeft(ref bool checkLeft)
    {
        if (checkLeft)
        {
            // If mouse on Left trigger area and if the the object is not yet active
            if (!enterLerpIsDone)
            {
                enterLerpIsDone = cameraTriggerManager.EnterObject(CT00_CAMERA_TRIGGER_MANAGER.UI_POSITION_OBJECT_BUTTON.UPOB01_MIDDLE_VIEW_LEFT);
                if (enterLerpIsDone)
                {
                    exitLerpIsDone = false;
                    mouseOnLeft    = true;
                }
            }
            // If mouse on Left trigger area and press the active button
            else
            {
                if (cameraTriggerManager.GetMiddleViewLeftClickFlag())
                {
                    cameraMainManager.SetCameraPositionLeft();
                    cameraTriggerManager.SetMiddleViewLeftMouseClickFlag(false);

                    nextViewState   = CAMERA_VIEW_STATE.CV02_LEFT_VIEW;
                    cameraViewState = CAMERA_VIEW_STATE.CV03_LERP_PROCESS;
                    lerpProcess     = CAMERA_VIEW_LERP_PROCESS.CVLP01_DO_MIDDLE_VIEW_L;
                }
            }
        }
        else if (mouseOnLeft)
        {
            if (!exitLerpIsDone)
            {
                exitLerpIsDone = cameraTriggerManager.ExitObject(CT00_CAMERA_TRIGGER_MANAGER.UI_POSITION_OBJECT_BUTTON.UPOB01_MIDDLE_VIEW_LEFT);
                if (exitLerpIsDone)
                {
                    enterLerpIsDone = false;
                    mouseOnLeft     = false;
                }
            }
        }
    }
    void LerpProcessManager()
    {
        switch (lerpProcess)
        {
        case CAMERA_VIEW_LERP_PROCESS.CVLP00_DO_MIDDLE_VIEW_R:
        {
            if (cameraTriggerManager.ExitObject(CT00_CAMERA_TRIGGER_MANAGER.UI_POSITION_OBJECT_BUTTON.UPOB00_MIDDLE_VIEW_RIGHT))
            {
                cameraTriggerManager.SetMiddleViewRightEnterFlag(false);
                cameraTriggerManager.SetMiddleViewObjectsActiveFlag(false);

                cameraTriggerManager.SetRightViewObjectActiveFlag(true);

                mouseOnRight    = false;
                enterLerpIsDone = false;
            }
        }
        break;

        case CAMERA_VIEW_LERP_PROCESS.CVLP01_DO_MIDDLE_VIEW_L:
        {
            if (cameraTriggerManager.ExitObject(CT00_CAMERA_TRIGGER_MANAGER.UI_POSITION_OBJECT_BUTTON.UPOB01_MIDDLE_VIEW_LEFT))
            {
                cameraTriggerManager.SetMiddleViewLeftEnterFlag(false);
                cameraTriggerManager.SetMiddleViewObjectsActiveFlag(false);

                cameraTriggerManager.SetLeftViewObjectActiveFlag(true);

                mouseOnLeft     = false;
                enterLerpIsDone = false;
            }
        }
        break;

        case CAMERA_VIEW_LERP_PROCESS.CVLP02_DO_RIGHT_VIEW_T:
        {
            if (cameraTriggerManager.ExitObject(CT00_CAMERA_TRIGGER_MANAGER.UI_POSITION_OBJECT_BUTTON.UPOB03_RIGHT_VIEW_LEFT))
            {
                cameraTriggerManager.SetRightViewEnterFlag(false);
                cameraTriggerManager.SetRightViewObjectActiveFlag(false);

                cameraTriggerManager.SetMiddleViewObjectsActiveFlag(true);

                mouseOnRightViewLeftSide = false;
                enterLerpIsDone          = false;
            }
        }
        break;

        case CAMERA_VIEW_LERP_PROCESS.CVLP03_DO_RIGHT_VIEW_B:
        {
            if (cameraTriggerManager.ExitObject(CT00_CAMERA_TRIGGER_MANAGER.UI_POSITION_OBJECT_BUTTON.UPOB03_RIGHT_VIEW_LEFT))
            {
                cameraTriggerManager.SetRightViewEnterFlag(false);
                cameraTriggerManager.SetRightViewObjectActiveFlag(false);

                cameraTriggerManager.SetLeftViewObjectActiveFlag(true);

                mouseOnRightViewLeftSide = false;
                enterLerpIsDone          = false;
            }
        }
        break;

        case CAMERA_VIEW_LERP_PROCESS.CVLP04_DO_LEFT_VIEW_T:
        {
            if (cameraTriggerManager.ExitObject(CT00_CAMERA_TRIGGER_MANAGER.UI_POSITION_OBJECT_BUTTON.UPOB04_LEFT_VIEW_RIGHT))
            {
                cameraTriggerManager.SetLeftViewEnterFlag(false);
                cameraTriggerManager.SetLeftViewObjectActiveFlag(false);

                cameraTriggerManager.SetMiddleViewObjectsActiveFlag(true);

                mouseOnLeftViewRightSide = false;
                enterLerpIsDone          = false;
            }
        }
        break;

        case CAMERA_VIEW_LERP_PROCESS.CVLP05_DO_LEFT_VIEW_B:
        {
            if (cameraTriggerManager.ExitObject(CT00_CAMERA_TRIGGER_MANAGER.UI_POSITION_OBJECT_BUTTON.UPOB04_LEFT_VIEW_RIGHT))
            {
                cameraTriggerManager.SetLeftViewEnterFlag(false);
                cameraTriggerManager.SetLeftViewObjectActiveFlag(false);

                cameraTriggerManager.SetRightViewObjectActiveFlag(true);

                mouseOnLeftViewRightSide = false;
                enterLerpIsDone          = false;
            }
        }
        break;
        }

        if (cameraMainManager.UpdateScript())
        {
            cameraViewState = nextViewState;
        }
    }