public static void Drawer(Rect rect, GameObject _target) { IsoTile _thisTile = _target.GetComponent <IsoTile>(); Iso2DObject _iso2D = _target.GetComponent <Iso2DObject>(); SpriteRenderer sprr = _target.GetComponent <SpriteRenderer>(); Color borderColor = Util.CustomEditorGUI.Color_Tile; if (_thisTile == null && _iso2D != null) { borderColor = CustomEditorGUI.Iso2DTypeColor(_iso2D._Type); } Rect rect_inside = new Rect(rect.xMin + border, rect.yMin + border, rect.width - border * 2, rect.height - border * 2); Rect rect_preview = new Rect(rect_inside.xMin, rect_inside.yMin, cellSize, rect_inside.height); Rect rect_info_name = new Rect(rect_preview.xMax, rect_inside.yMin, rect_inside.width - cellSize - fudgeWidth, rect_inside.height * 0.5f); Rect rect_Fudge = new Rect(rect_info_name.xMax, rect_inside.yMin, fudgeWidth, rect_inside.height * 0.5f - border); Rect rect_info_Sub = new Rect(rect_info_name.xMin, rect_info_name.yMin + cellSize * 0.5f, rect_info_name.width, rect_inside.height - rect_info_name.height); Rect[] rect_btns = new Rect[] { new Rect(rect_inside.xMax - cellSize * 1.1f, rect_info_Sub.yMin, cellSize, rect_info_Sub.height), new Rect(rect_inside.xMax - cellSize * 2.2f, rect_info_Sub.yMin, cellSize, rect_info_Sub.height), new Rect(rect_inside.xMax - cellSize * 3.3f, rect_info_Sub.yMin, cellSize, rect_info_Sub.height), new Rect(rect_inside.xMax - cellSize * 4.4f, rect_info_Sub.yMin, cellSize, rect_info_Sub.height) }; bool bControllerable = (_thisTile == null || _thisTile.gameObject != _target.gameObject) || (Selection.activeGameObject != null && Selection.activeGameObject.GetComponent <IsoTileBulk>()); CustomEditorGUI.DrawBordereddRect(rect, borderColor, rect_inside, Color.clear); CustomEditorGUI.DrawSideSprite(rect_preview, _iso2D, false, false); int iLv = EditorGUI.indentLevel; EditorGUI.indentLevel = 0; EditorGUI.LabelField(rect_info_name, _target.name, EditorStyles.boldLabel); if (!IsoMap.instance.bUseIsometricSorting) { var IIsoBasis = _iso2D.GetComponentInParent <IISOBasis>(); var isOnGroundObject = false; if (IIsoBasis != null) { isOnGroundObject = IIsoBasis.IsOnGroundObject(); } else { isOnGroundObject = _iso2D.IsColliderAttachment; } float fOnGroundOffset = IsoMap.fCurrentOnGroundOffset; string msg = isOnGroundObject ? string.Format("Depth({0:0.00})", -fOnGroundOffset) : "Depth"; float _fTmp = CustomEditorGUI.FloatSlider(rect_Fudge, msg, _iso2D.FDepthFudge, -1f, 1f); if (_fTmp != _iso2D.FDepthFudge) { _iso2D.Undo_NewDepthFudge(_fTmp); } } // 서브 인포 출력 //using (new EditorGUILayout.HorizontalScope()) { float _fMinSize = Mathf.Min(rect_info_Sub.width, rect_info_Sub.height); SpriteRenderer[] _sprrList = _target.GetComponentsInChildren <SpriteRenderer>(); for (int i = 0; i < _sprrList.Length; ++i) { if (_sprrList[i].sprite != null && _sprrList[i] != sprr) { Rect _rt = EditorGUI.IndentedRect(rect_info_Sub); _rt.width = _rt.height = _fMinSize; rect_info_Sub.xMin += _fMinSize; // CustomEditorGUI.DrawSideSprite(_rt, _sprrList[i].sprite, ._Type); Util.CustomEditorGUI.DrawSprite(_rt, _sprrList[i].sprite, _sprrList[i].color, true, true); } } } if (bControllerable) { int buttonIndex = 0; CustomEditorGUI.Button(rect_btns[buttonIndex++], true, CustomEditorGUI.Color_LightYellow, "Ping!", () => { EditorGUIUtility.PingObject(_target.gameObject); }); CustomEditorGUI.Button(rect_btns[buttonIndex++], true, CustomEditorGUI.Color_LightGreen, "Iso2D", () => { Selection.activeGameObject = _target.gameObject; }); var ctlr = _target.transform.parent.GetComponentInParent <SubColliderHelper>(); if (Selection.activeGameObject != ctlr.gameObject) { CustomEditorGUI.Button(rect_btns[buttonIndex++], true, CustomEditorGUI.Color_LightGreen, "Ctlr!", () => { Selection.activeGameObject = ctlr.gameObject; }); } CustomEditorGUI.Button(rect_btns[buttonIndex++].ReSize(2f, 2f), true, CustomEditorGUI.Color_LightYellow, "Del!!", () => { _iso2D.DestoryGameObject(true, true); }); } EditorGUI.indentLevel = iLv; }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { if (Event.current.type == EventType.ScrollWheel) { return; } SerializedProperty sp = property.serializedObject.FindProperty(property.propertyPath); if (sp != property) { sp = property; } if (sp.objectReferenceValue == null) { return; } GameObject _target = ((Component)sp.objectReferenceValue).gameObject; Color borderColor = Util.CustomEditorGUI.Color_Tile; Rect rect = position; Rect rect_inside = new Rect(rect.xMin + border, rect.yMin + border, rect.width - border * 2, rect.height - border * 2); Rect rect_preview = new Rect(rect_inside.xMin, rect_inside.yMin, cellSize, rect_inside.height); Rect rect_info_name = new Rect(rect_inside.xMin + cellSize, rect_inside.yMin, rect_inside.width - cellSize * 3, rect_inside.height / 2); Rect rect_info_Sub = new Rect(rect_info_name.xMin, rect_info_name.yMin + cellSize / 2, rect_info_name.width, rect_info_name.height); Rect rect_delete = new Rect(rect_inside.xMax - cellSize * 2, rect_inside.yMin, cellSize, rect_inside.height); Rect rect_select = new Rect(rect_inside.xMax - cellSize, rect_inside.yMin, cellSize, rect_inside.height); float fExWidth = rect_delete.width + rect_select.width; rect_info_name.width += fExWidth; rect_info_Sub.width += fExWidth; CustomEditorGUI.DrawBordereddRect(rect, borderColor, rect_inside, Color.clear); Iso2DObject[] _iso2Ds = _target.GetComponentsInChildren <Iso2DObject>(); for (int i = 0; i < _iso2Ds.Length; ++i) { if (_iso2Ds[i] != null && (_iso2Ds[i].IsXYZSide || _iso2Ds[i].IsUnionSide)) { CustomEditorGUI.DrawSideSprite(rect_preview, _iso2Ds[i], false, false); } } int iLv = EditorGUI.indentLevel; EditorGUI.indentLevel = 0; EditorGUI.LabelField(rect_info_name, _target.name, EditorStyles.boldLabel); // 서브 인포 출력 //using (new EditorGUILayout.HorizontalScope()) { float _fMinSize = Mathf.Min(rect_info_Sub.width, rect_info_Sub.height); for (int i = 0; i < _iso2Ds.Length; ++i) { if (_iso2Ds[i] != null && _iso2Ds[i].IsAttachment) { Rect _rt = EditorGUI.IndentedRect(rect_info_Sub); _rt.width = _rt.height = _fMinSize; rect_info_Sub.xMin += _fMinSize; CustomEditorGUI.DrawSideSprite(_rt, _iso2Ds[i], false, true); } } } EditorGUI.indentLevel = iLv; if (GUI.enabled) { using (new GUIBackgroundColorScope(Util.CustomEditorGUI.Color_LightYellow)) { if (GUI.Button(rect_delete.ReSize(8f, 8f), "Del!")) { Undo.DestroyObjectImmediate(_target.gameObject); } } using (new GUIBackgroundColorScope(Util.CustomEditorGUI.Color_LightMagenta)) { if (GUI.Button(rect_select, "Go!")) { Selection.activeGameObject = _target.gameObject; } } } }