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; } }
}//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
} //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