Beispiel #1
0
    public void CheckSnapping(MapEditorInSceneObject inSceneObj)
    {
        if (!GotSnappedObject)
        {
            IN_SCENE_OBJECT_TYPES objType = inSceneObj.inSceneObjectType;
            bool isVerticalLine           = objType == IN_SCENE_OBJECT_TYPES.NORMAL_VERTICAL_LINE || objType == IN_SCENE_OBJECT_TYPES.WHITE_VERTICAL_LINE || objType == IN_SCENE_OBJECT_TYPES.RED_VERTICAL_LINE ||
                                            objType == IN_SCENE_OBJECT_TYPES.YELLOW_VERTICAL_LINE || objType == IN_SCENE_OBJECT_TYPES.BLUE_VERTICAL_LINE;
            bool isHorizontalLine = objType == IN_SCENE_OBJECT_TYPES.NORMAL_HORIZONTAL_LINE || objType == IN_SCENE_OBJECT_TYPES.WHITE_HORIZONTAL_LINE || objType == IN_SCENE_OBJECT_TYPES.RED_HORIZONTAL_LINE ||
                                    objType == IN_SCENE_OBJECT_TYPES.YELLOW_HORIZONTAL_LINE || objType == IN_SCENE_OBJECT_TYPES.BLUE_HORIZONTAL_LINE;
            if (borderType == SNAPPING_TYPE.VERTICAL && isVerticalLine)
            {
                if (!inSceneObj.SnappedTargetBorder)
                {
                    GotSnappedObject = true;

                    inSceneObj.SnappedTargetBorder         = this;
                    inSceneObj.InSceneObjData.mapGridIndex = transform.GetComponentInParent <MapGridMapEditor>().MapGridIndex;
                    inSceneObj.InSceneObjData.borderDir    = snappingDir;
                }
                else
                {
                    inSceneObj.SnappedTargetBorder.GotSnappedObject = false;
                    GotSnappedObject = true;

                    inSceneObj.SnappedTargetBorder         = this;
                    inSceneObj.InSceneObjData.mapGridIndex = transform.GetComponentInParent <MapGridMapEditor>().MapGridIndex;
                    inSceneObj.InSceneObjData.borderDir    = snappingDir;
                }
            }
            else if (borderType == SNAPPING_TYPE.HORIZONTAL && isHorizontalLine)
            {
                if (!inSceneObj.SnappedTargetBorder)
                {
                    GotSnappedObject = true;

                    inSceneObj.SnappedTargetBorder         = this;
                    inSceneObj.InSceneObjData.mapGridIndex = transform.GetComponentInParent <MapGridMapEditor>().MapGridIndex;
                    inSceneObj.InSceneObjData.borderDir    = snappingDir;
                }
                else
                {
                    inSceneObj.SnappedTargetBorder.GotSnappedObject = false;
                    GotSnappedObject = true;

                    inSceneObj.SnappedTargetBorder         = this;
                    inSceneObj.InSceneObjData.mapGridIndex = transform.GetComponentInParent <MapGridMapEditor>().MapGridIndex;
                    inSceneObj.InSceneObjData.borderDir    = snappingDir;
                }
            }
        }
    }
Beispiel #2
0
    public void CheckSnapping(MapEditorInSceneObject inSceneObj)
    {
        if (!GotSnappedObject)
        {
            IN_SCENE_OBJECT_TYPES objType = inSceneObj.inSceneObjectType;
            bool isVerticalPortal         = objType == IN_SCENE_OBJECT_TYPES.PORTAL_1ST_SET_VERTICAL || objType == IN_SCENE_OBJECT_TYPES.PORTAL_2ND_SET_VERTICAL;
            bool isHorizontalPortal       = objType == IN_SCENE_OBJECT_TYPES.PORTAL_1ST_SET_HORIZONTAL || objType == IN_SCENE_OBJECT_TYPES.PORTAL_2ND_SET_HORIZONTAL;
            if (portalSnappingType == SNAPPING_TYPE.VERTICAL && isVerticalPortal)
            {
                if (!inSceneObj.SnappedTargetPortalSnapper)
                {
                    GotSnappedObject = true;

                    inSceneObj.SnappedTargetPortalSnapper  = this;
                    inSceneObj.InSceneObjData.mapGridIndex = transform.GetComponentInParent <MapGridMapEditor>().MapGridIndex;
                    inSceneObj.InSceneObjData.borderDir    = snappingDir;
                }
                else
                {
                    inSceneObj.SnappedTargetPortalSnapper.GotSnappedObject = false;
                    GotSnappedObject = true;

                    inSceneObj.SnappedTargetPortalSnapper  = this;
                    inSceneObj.InSceneObjData.mapGridIndex = transform.GetComponentInParent <MapGridMapEditor>().MapGridIndex;
                    inSceneObj.InSceneObjData.borderDir    = snappingDir;
                }
            }
            else if (portalSnappingType == SNAPPING_TYPE.HORIZONTAL && isHorizontalPortal)
            {
                if (!inSceneObj.SnappedTargetPortalSnapper)
                {
                    GotSnappedObject = true;

                    inSceneObj.SnappedTargetPortalSnapper  = this;
                    inSceneObj.InSceneObjData.mapGridIndex = transform.GetComponentInParent <MapGridMapEditor>().MapGridIndex;
                    inSceneObj.InSceneObjData.borderDir    = snappingDir;
                }
                else
                {
                    inSceneObj.SnappedTargetPortalSnapper.GotSnappedObject = false;
                    GotSnappedObject = true;

                    inSceneObj.SnappedTargetPortalSnapper  = this;
                    inSceneObj.InSceneObjData.mapGridIndex = transform.GetComponentInParent <MapGridMapEditor>().MapGridIndex;
                    inSceneObj.InSceneObjData.borderDir    = snappingDir;
                }
            }
        }
    }
Beispiel #3
0
    public void Initialization()
    {
        BoxCollider boxCol = GetComponent <BoxCollider>();

        Collider[] overlappedCols = Physics.OverlapBox(transform.position + boxCol.center, boxCol.size / 2f, transform.rotation, LayerMask.GetMask("MapEditorBorder"));

        if (overlappedCols.Length > 0)
        {
            if (overlappedCols[0].TryGetComponent(out MapEditorInSceneObject inSceneObj))
            {
                IN_SCENE_OBJECT_TYPES objType = inSceneObj.inSceneObjectType;
                // Consider change to using bit operator (Don't do it for now as it will make the json data of old map wrong)
                bool isVerticalLine = objType == IN_SCENE_OBJECT_TYPES.NORMAL_VERTICAL_LINE || objType == IN_SCENE_OBJECT_TYPES.WHITE_VERTICAL_LINE || objType == IN_SCENE_OBJECT_TYPES.RED_VERTICAL_LINE ||
                                      objType == IN_SCENE_OBJECT_TYPES.YELLOW_VERTICAL_LINE || objType == IN_SCENE_OBJECT_TYPES.BLUE_VERTICAL_LINE;
                bool isHorizontalLine = objType == IN_SCENE_OBJECT_TYPES.NORMAL_HORIZONTAL_LINE || objType == IN_SCENE_OBJECT_TYPES.WHITE_HORIZONTAL_LINE || objType == IN_SCENE_OBJECT_TYPES.RED_HORIZONTAL_LINE ||
                                        objType == IN_SCENE_OBJECT_TYPES.YELLOW_HORIZONTAL_LINE || objType == IN_SCENE_OBJECT_TYPES.BLUE_HORIZONTAL_LINE;
                if (borderType == SNAPPING_TYPE.VERTICAL && isVerticalLine)
                {
                    if (!inSceneObj.SnappedTargetBorder)
                    {
                        GotSnappedObject = true;

                        inSceneObj.SnappedTargetBorder         = this;
                        inSceneObj.InSceneObjData.mapGridIndex = transform.GetComponentInParent <MapGridMapEditor>().MapGridIndex;
                        inSceneObj.InSceneObjData.borderDir    = snappingDir;
                    }
                }
                else if (borderType == SNAPPING_TYPE.HORIZONTAL && isHorizontalLine)
                {
                    if (!inSceneObj.SnappedTargetBorder)
                    {
                        GotSnappedObject = true;

                        inSceneObj.SnappedTargetBorder         = this;
                        inSceneObj.InSceneObjData.mapGridIndex = transform.GetComponentInParent <MapGridMapEditor>().MapGridIndex;
                        inSceneObj.InSceneObjData.borderDir    = snappingDir;
                    }
                }
            }
        }
        else
        {
            GotSnappedObject = false;
        }
    }
Beispiel #4
0
    public void Initialization()
    {
        BoxCollider boxCol = GetComponent <BoxCollider>();

        Collider[] overlappedCols = Physics.OverlapBox(transform.position + boxCol.center, boxCol.size / 2f, transform.rotation, LayerMask.GetMask("MapEditorPortal"));

        if (overlappedCols.Length > 0)
        {
            if (overlappedCols[0].TryGetComponent(out MapEditorInSceneObject inSceneObj))
            {
                IN_SCENE_OBJECT_TYPES objType = inSceneObj.inSceneObjectType;
                bool isVerticalPortal         = objType == IN_SCENE_OBJECT_TYPES.PORTAL_1ST_SET_VERTICAL || objType == IN_SCENE_OBJECT_TYPES.PORTAL_2ND_SET_VERTICAL;
                bool isHorizontalPortal       = objType == IN_SCENE_OBJECT_TYPES.PORTAL_1ST_SET_HORIZONTAL || objType == IN_SCENE_OBJECT_TYPES.PORTAL_2ND_SET_HORIZONTAL;
                if (portalSnappingType == SNAPPING_TYPE.VERTICAL && isVerticalPortal)
                {
                    if (!inSceneObj.SnappedTargetPortalSnapper)
                    {
                        GotSnappedObject = true;

                        inSceneObj.SnappedTargetPortalSnapper  = this;
                        inSceneObj.InSceneObjData.mapGridIndex = transform.GetComponentInParent <MapGridMapEditor>().MapGridIndex;
                        inSceneObj.InSceneObjData.borderDir    = snappingDir;
                    }
                }
                else if (portalSnappingType == SNAPPING_TYPE.HORIZONTAL && isHorizontalPortal)
                {
                    if (!inSceneObj.SnappedTargetPortalSnapper)
                    {
                        GotSnappedObject = true;

                        inSceneObj.SnappedTargetPortalSnapper  = this;
                        inSceneObj.InSceneObjData.mapGridIndex = transform.GetComponentInParent <MapGridMapEditor>().MapGridIndex;
                        inSceneObj.InSceneObjData.borderDir    = snappingDir;
                    }
                }
            }
        }
        else
        {
            GotSnappedObject = false;
        }
    }
Beispiel #5
0
    private void Update()
    {
        // If map finish initializing, option menu is off, level menu is off and the user not editing the value in the input fields
        if (MapEditing && !OptionMenuVisibility && !LevelSettingsVisibility && !MapEditorManager.Instance.EditingIF)
        {
            if (Input.GetMouseButtonDown(0))
            {
                Ray        mouseRay = cachedMainCamera.ScreenPointToRay(Input.mousePosition);
                RaycastHit hit;
                LayerMask  layerMask = LayerMask.GetMask("MapEditorBorder", "MapEditorOriginEndPoint", "MapEditorPortal");

                if (selectingObject == null)
                {
                    if (Physics.Raycast(mouseRay, out hit, cachedMainCamera.farClipPlane + 5.0f, layerMask))
                    {
                        SelectObject(hit.collider.GetComponent <MapEditorInSceneObject>());
                    }
                }
                else
                {
                    if (!Physics.Raycast(mouseRay, out hit, cachedMainCamera.farClipPlane + 5.0f, layerMask))
                    {
                        if (CurrentGizmoMode == GIZMO_MODE.MOVE)
                        {
                            SwitchInputMode(INPUT_MODE.NONE);
                        }
                    }
                }
            }

            if (Input.GetMouseButtonDown(1))
            {
                // If currently picking from sub-panel
                if (CurrentSelectedPanel != MAP_EDITING_PANEL.NONE)
                {
                    // Reset it to none
                    SwitchSelectedPanel(MAP_EDITING_PANEL.NONE);
                }

                SwitchInputMode(INPUT_MODE.NONE);
            }

            if (Input.GetKeyDown(KeyCode.W))
            {
                if (CurrentGizmoMode == GIZMO_MODE.MOVE)
                {
                    return;
                }
                CurrentGizmoMode = GIZMO_MODE.MOVE;
                if (selectingObject)
                {
                    SwitchGizmo();
                }
            }
            else if (Input.GetKeyDown(KeyCode.E))
            {
                if (CurrentGizmoMode == GIZMO_MODE.ROTATE)
                {
                    return;
                }
                CurrentGizmoMode = GIZMO_MODE.ROTATE;
                if (selectingObject)
                {
                    SwitchGizmo();
                }
            }
            else if (Input.GetKeyDown(KeyCode.Delete))
            {
                if (selectingObject)
                {
                    DeleteObject();
                }
            }

            // Accept Hot Key Input
            switch (CurrentSelectedPanel)
            {
            // No Panel Selected
            case MAP_EDITING_PANEL.NONE:
                if (Input.GetKeyDown(KeyCode.Alpha1))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SwitchSelectedPanel(MAP_EDITING_PANEL.HORIZONTAL_LINE);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha2))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SwitchSelectedPanel(MAP_EDITING_PANEL.VERTICAL_LINE);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha3))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SwitchSelectedPanel(MAP_EDITING_PANEL.ORIGIN_POINT);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha4))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SwitchSelectedPanel(MAP_EDITING_PANEL.DESTINATION_POINT);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha5))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SwitchSelectedPanel(MAP_EDITING_PANEL.PORTAL);
                }
                break;

            case MAP_EDITING_PANEL.HORIZONTAL_LINE:         // Horizontal Line Panel Selected
                if (Input.GetKeyDown(KeyCode.Alpha1))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.NORMAL_HORIZONTAL_LINE));
                    SwitchSelectedPanel(0);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha2))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.WHITE_HORIZONTAL_LINE));
                    SwitchSelectedPanel(0);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha3))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.RED_HORIZONTAL_LINE));
                    SwitchSelectedPanel(0);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha4))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.YELLOW_HORIZONTAL_LINE));
                    SwitchSelectedPanel(0);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha5))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.BLUE_HORIZONTAL_LINE));
                    SwitchSelectedPanel(0);
                }
                break;

            case MAP_EDITING_PANEL.VERTICAL_LINE:         // Vertical Line Panel Selected
                if (Input.GetKeyDown(KeyCode.Alpha1))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.NORMAL_VERTICAL_LINE));
                    SwitchSelectedPanel(0);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha2))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.WHITE_VERTICAL_LINE));
                    SwitchSelectedPanel(0);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha3))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.RED_VERTICAL_LINE));
                    SwitchSelectedPanel(0);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha4))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.YELLOW_VERTICAL_LINE));
                    SwitchSelectedPanel(0);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha5))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.BLUE_VERTICAL_LINE));
                    SwitchSelectedPanel(0);
                }
                break;

            case MAP_EDITING_PANEL.ORIGIN_POINT:
                if (Input.GetKeyDown(KeyCode.Alpha1))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.ORIGIN_POINT_WHITE));
                    SwitchSelectedPanel(0);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha2))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.ORIGIN_POINT_RED));
                    SwitchSelectedPanel(0);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha3))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.ORIGIN_POINT_YELLOW));
                    SwitchSelectedPanel(0);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha4))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.ORIGIN_POINT_BLUE));
                    SwitchSelectedPanel(0);
                }
                break;

            case MAP_EDITING_PANEL.DESTINATION_POINT:       // Destination Point Panel Selected
                if (Input.GetKeyDown(KeyCode.Alpha1))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.DESTINATION_POINT_WHITE));
                    SwitchSelectedPanel(0);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha2))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.DESTINATION_POINT_RED));
                    SwitchSelectedPanel(0);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha3))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.DESTINATION_POINT_YELLOW));
                    SwitchSelectedPanel(0);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha4))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.DESTINATION_POINT_BLUE));
                    SwitchSelectedPanel(0);
                }
                break;

            case MAP_EDITING_PANEL.PORTAL:
                if (Input.GetKeyDown(KeyCode.Alpha1))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SwitchSelectedPanel(MAP_EDITING_PANEL.PORTAL_1ST_SET);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha2))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SwitchSelectedPanel(MAP_EDITING_PANEL.PORTAL_2ND_SET);
                }
                break;

            case MAP_EDITING_PANEL.PORTAL_1ST_SET:
                if (Input.GetKeyDown(KeyCode.Alpha1))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.PORTAL_1ST_SET_HORIZONTAL));
                    SwitchSelectedPanel(0);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha2))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.PORTAL_1ST_SET_VERTICAL));
                    SwitchSelectedPanel(0);
                }
                break;

            case MAP_EDITING_PANEL.PORTAL_2ND_SET:
                if (Input.GetKeyDown(KeyCode.Alpha1))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.PORTAL_2ND_SET_HORIZONTAL));
                    SwitchSelectedPanel(0);
                }
                else if (Input.GetKeyDown(KeyCode.Alpha2))
                {
                    if (selectingObject)
                    {
                        SwitchInputMode(INPUT_MODE.NONE);
                    }
                    SelectObject(MapEditorManager.Instance.CreateInSceneObj(IN_SCENE_OBJECT_TYPES.PORTAL_2ND_SET_VERTICAL));
                    SwitchSelectedPanel(0);
                }
                break;
            }
        }

        // If map finish initializing and the user not editing input fields
        if (MapEditing && !MapEditorManager.Instance.EditingIF)
        {
            if (Input.GetKeyDown(KeyCode.Tab))
            {
                if (selectingObject)
                {
                    SwitchInputMode(INPUT_MODE.NONE);
                }
                MapEditorManager.Instance.ToggleOptionMenu();
            }

            if (Input.GetKeyDown(KeyCode.LeftShift))
            {
                if (selectingObject)
                {
                    SwitchInputMode(INPUT_MODE.NONE);
                }
                MapEditorManager.Instance.ToggleLevelSettingsMenu();
            }
        }

        if (MapEditing && CurrentInputMode == INPUT_MODE.SELECTING && CurrentGizmoMode == GIZMO_MODE.MOVE)
        {
            Ray                   ray = cachedMainCamera.ScreenPointToRay(Input.mousePosition);
            RaycastHit            raycastHit;
            IN_SCENE_OBJECT_TYPES objType    = selectingObject.inSceneObjectType;
            LayerMask             targetMask = default;
            switch (objType)
            {
            case IN_SCENE_OBJECT_TYPES.NORMAL_HORIZONTAL_LINE:
            case IN_SCENE_OBJECT_TYPES.WHITE_HORIZONTAL_LINE:
            case IN_SCENE_OBJECT_TYPES.RED_HORIZONTAL_LINE:
            case IN_SCENE_OBJECT_TYPES.YELLOW_HORIZONTAL_LINE:
            case IN_SCENE_OBJECT_TYPES.BLUE_HORIZONTAL_LINE:
            case IN_SCENE_OBJECT_TYPES.NORMAL_VERTICAL_LINE:
            case IN_SCENE_OBJECT_TYPES.WHITE_VERTICAL_LINE:
            case IN_SCENE_OBJECT_TYPES.RED_VERTICAL_LINE:
            case IN_SCENE_OBJECT_TYPES.YELLOW_VERTICAL_LINE:
            case IN_SCENE_OBJECT_TYPES.BLUE_VERTICAL_LINE:
                targetMask = LayerMask.GetMask("MapEditorBorderSnapper");
                break;

            case IN_SCENE_OBJECT_TYPES.ORIGIN_POINT_WHITE:
            case IN_SCENE_OBJECT_TYPES.ORIGIN_POINT_RED:
            case IN_SCENE_OBJECT_TYPES.ORIGIN_POINT_YELLOW:
            case IN_SCENE_OBJECT_TYPES.ORIGIN_POINT_BLUE:
            case IN_SCENE_OBJECT_TYPES.DESTINATION_POINT_WHITE:
            case IN_SCENE_OBJECT_TYPES.DESTINATION_POINT_RED:
            case IN_SCENE_OBJECT_TYPES.DESTINATION_POINT_YELLOW:
            case IN_SCENE_OBJECT_TYPES.DESTINATION_POINT_BLUE:
                targetMask = LayerMask.GetMask("MapEditorBoxSnapper");
                break;

            case IN_SCENE_OBJECT_TYPES.PORTAL_1ST_SET_HORIZONTAL:
            case IN_SCENE_OBJECT_TYPES.PORTAL_1ST_SET_VERTICAL:
            case IN_SCENE_OBJECT_TYPES.PORTAL_2ND_SET_HORIZONTAL:
            case IN_SCENE_OBJECT_TYPES.PORTAL_2ND_SET_VERTICAL:
                targetMask = LayerMask.GetMask("MapEditorPortalSnapper");
                break;
            }
            if (Physics.Raycast(ray, out raycastHit, 100.0f, targetMask))
            {
                if (raycastHit.transform.TryGetComponent(out MapLayoutBorder mapLayoutBorder))
                {
                    mapLayoutBorder.CheckSnapping(selectingObject);
                }
                else if (raycastHit.transform.TryGetComponent(out MapLayoutBoxSnapper mapLayoutBoxSnapper))
                {
                    mapLayoutBoxSnapper.CheckSnapping(selectingObject);
                }
                else if (raycastHit.transform.TryGetComponent(out MapLayoutPortalSnapper mapLayoutPortalSnapper))
                {
                    mapLayoutPortalSnapper.CheckSnapping(selectingObject);
                }
            }
        }
    }