示例#1
0
 public void CreateGizmo(GIZMO_MODE gizmoMode)
 {
     switch (gizmoMode)
     {
         case GIZMO_MODE.MOVE:
             attachedGizmo = Instantiate(MapEditorManager.Instance.moveGizmoPrefab, transform.position, Quaternion.identity, transform);
             attachedGizmo.AssignInSceneObject(this);
             break;
         case GIZMO_MODE.ROTATE:
             attachedGizmo = Instantiate(MapEditorManager.Instance.rotationGizmoPrefab, transform.position, Quaternion.identity, transform);
             attachedGizmo.AssignInSceneObject(this);
             break;
     }
 }
示例#2
0
    }//ObjectTransform

    //Set's the active GIZMO_MODE
    //GIZMO_MODE.TRANSLATE, GIZMO_MODE.ROTATE, GIZMO_MODE.SCALE
    public void SetMode(GIZMO_MODE mode)
    {
        _mode = mode;

        if (SelectedObject == null)
        {
            return;
        }

        switch (_mode)
        {
        case GIZMO_MODE.TRANSLATE:
            transform.rotation = TranslateInLocalSpace ? SelectedObject.transform.rotation : Quaternion.identity;
            break;

        case GIZMO_MODE.ROTATE:
            transform.rotation = SelectedObject.transform.rotation;
            break;

        case GIZMO_MODE.SCALE:
            transform.rotation = SelectedObject.transform.rotation;
            break;
        }//switch

        foreach (Transform t in transform)
        {
            if (t.name.Contains("Pivot"))
            {
                continue;
            }

            switch (_mode)
            {
            case GIZMO_MODE.TRANSLATE:
                if (t.name.Contains("Translate") || t.name.Contains("XY") || t.name.Contains("XZ") || t.name.Contains("YZ"))
                {
                    t.GetComponent <Renderer>().enabled = true;
                    t.gameObject.layer = LayerID;
                }    //if
                else
                {
                    t.GetComponent <Renderer>().enabled = false;
                    t.gameObject.layer = 2;
                }    //else
                break;

            case GIZMO_MODE.ROTATE:
                if (t.name.Contains("Rotate"))
                {
                    t.GetComponent <Renderer>().enabled = true;
                    t.gameObject.layer = LayerID;
                }    //if
                else
                {
                    t.GetComponent <Renderer>().enabled = false;
                    t.gameObject.layer = 2;
                }    //else
                break;

            case GIZMO_MODE.SCALE:
                if (t.name.Contains("Scale") || t.name.Contains("XY") || t.name.Contains("XZ") || t.name.Contains("YZ"))
                {
                    t.GetComponent <Renderer>().enabled = true;
                    t.gameObject.layer = LayerID;
                }    //if
                else
                {
                    t.GetComponent <Renderer>().enabled = false;
                    t.gameObject.layer = 2;
                }    //else
                break;
            }//switch
        } //for
    }     //SetMode
示例#3
0
    }         //OnGUI

    void DrawGizmoControls(Rect groupRect)
    {
        GUI.Box(groupRect, "Gizmo Control");
        Rect innerRect = new Rect(groupRect.x + 4, groupRect.y + 20, groupRect.width - 8, groupRect.height - 24);

        GUI.BeginGroup(innerRect);

        if (GizmoControlButtonImages.Length != 0)
        {
            GIZMO_MODE tmpMode = (GIZMO_MODE)GUI.Toolbar(new Rect(0, 0, innerRect.width, 20), (int)_mode, GizmoControlButtonImages);
            if (GUI.changed)
            {
                GUI.changed = false;
                if ((AllowTranslate && tmpMode == GIZMO_MODE.TRANSLATE) ||
                    AllowRotate && tmpMode == GIZMO_MODE.ROTATE ||
                    AllowScale && tmpMode == GIZMO_MODE.SCALE)
                {
                    SetMode(tmpMode);
                }
            } //if
        }     //if
        else
        {
            int CtrlBtnWidth  = (int)innerRect.width / 3;
            int CtrlBtnOffset = 0;
            if (AllowTranslate && GUI.Button(new Rect(CtrlBtnOffset, 0, CtrlBtnWidth, 20), "P"))
            {
                SetMode(GIZMO_MODE.TRANSLATE);
            }
            CtrlBtnOffset += CtrlBtnWidth;

            if (AllowRotate && GUI.Button(new Rect(CtrlBtnOffset, 0, CtrlBtnWidth, 20), "R"))
            {
                SetMode(GIZMO_MODE.ROTATE);
            }
            CtrlBtnOffset += CtrlBtnWidth;

            if (AllowScale && GUI.Button(new Rect(CtrlBtnOffset, 0, CtrlBtnWidth, 20), "S"))
            {
                SetMode(GIZMO_MODE.SCALE);
            }
        }//else

        switch (_mode)
        {
        case GIZMO_MODE.TRANSLATE:
            if (AllowTranslate)
            {
                Vector3 guiTranslation = new Vector3(AxisSpinner.Draw(new Rect(0.0f, 25.0f, innerRect.width, 20.0f), "X:", transform.position.x),
                                                     AxisSpinner.Draw(new Rect(0, 47, innerRect.width, 20), "Y:", transform.position.y),
                                                     AxisSpinner.Draw(new Rect(0, 69, innerRect.width, 20), "Z:", transform.position.z));
                transform.position = guiTranslation;
                SelectedObject.transform.position = transform.position;
                Snapping          = GUI.Toggle(new Rect(0, 94, innerRect.width, 20), Snapping, "Snap Mode");
                MoveSnapIncrement = SnapSpinner.Draw(new Rect(0, 114, innerRect.width, 20), "Snap By:", MoveSnapIncrement, 1);
            }    //if
            else
            {
                GUI.Label(new Rect(0, 40, innerRect.width, 40), "Disabled");
            }    //else
            break;

        case GIZMO_MODE.ROTATE:
            if (AllowRotate)
            {
                if (_draggingAxis)
                {
                    AxisSpinner.Draw(new Rect(0, 25, innerRect.width, 20), "X:", transform.rotation.eulerAngles.x);
                    AxisSpinner.Draw(new Rect(0, 47, innerRect.width, 20), "Y:", transform.rotation.eulerAngles.y);
                    AxisSpinner.Draw(new Rect(0, 69, innerRect.width, 20), "Z:", transform.rotation.eulerAngles.z);
                }    //if
                else
                {
                    Vector3 guiAngles = new Vector3(AxisSpinner.Draw(new Rect(0, 25, innerRect.width, 20), "X:", transform.rotation.eulerAngles.x),
                                                    AxisSpinner.Draw(new Rect(0, 47, innerRect.width, 20), "Y:", transform.rotation.eulerAngles.y),
                                                    AxisSpinner.Draw(new Rect(0, 69, innerRect.width, 20), "Z:", transform.rotation.eulerAngles.z));
                    transform.rotation = Quaternion.Euler(guiAngles);
                    if (GUI.changed || SelectedObject.transform.rotation != transform.rotation)
                    {
                        GUI.changed = false;
                        SelectedObject.transform.rotation = transform.rotation;
                    } //if
                }     //if

                Snapping           = GUI.Toggle(new Rect(0, 94, innerRect.width, 20), Snapping, "Snap Mode");
                AngleSnapIncrement = SnapSpinner.Draw(new Rect(0, 114, innerRect.width, 20), "Snap By:", AngleSnapIncrement, 1);
            }    //if
            else
            {
                GUI.Label(new Rect(0, 40, innerRect.width, 40), "Disabled");
            }    //else
            break;

        case GIZMO_MODE.SCALE:
            if (AllowScale)
            {
                Vector3 guiScale = new Vector3(AxisSpinner.Draw(new Rect(0, 25, innerRect.width, 20), "X:", SelectedObject.localScale.x),
                                               AxisSpinner.Draw(new Rect(0, 47, innerRect.width, 20), "Y:", SelectedObject.localScale.y),
                                               AxisSpinner.Draw(new Rect(0, 69, innerRect.width, 20), "Z:", SelectedObject.localScale.z));
                SelectedObject.localScale = guiScale;
                Snapping           = GUI.Toggle(new Rect(0, 94, innerRect.width, 20), Snapping, "Snap Mode");
                ScaleSnapIncrement = SnapSpinner.Draw(new Rect(0, 114, innerRect.width, 20), "Snap By:", ScaleSnapIncrement, 1);
            }    //if
            else
            {
                GUI.Label(new Rect(0, 40, innerRect.width, 40), "Disabled");
            }    //else
            break;
        }//switch

        GUI.EndGroup();
    }//DrawGizmoControls