static void drawPackedTexture(Iso2DObject _Iso2D, float _fMaxWidth) { if (_Iso2D == null) { return; } // Vector2 GUIPoint = EditorGUIUtility.GUIToScreenPoint(new Vector2(_rt.x, _rt.y)); // Rect __rt = new Rect(_rt.xMin + GUIPoint.x, _rt.yMin + GUIPoint.y, _rt.xMax + GUIPoint.x, _rt.yMax + GUIPoint.y); // EditorGUI.DrawRect(__rt, Color.gray); EditorGUILayout.BeginVertical(); //GUILayout.BeginArea(_rt); EditorGUI.indentLevel = 0; EditorGUILayout.LabelField("[Sprite]", EditorStyles.boldLabel, GUILayout.MaxWidth(_fMaxWidth)); GUILayoutOption[] _options = new GUILayoutOption[] { GUILayout.MinWidth(20), GUILayout.Width(_fMaxWidth), GUILayout.MinHeight(20), GUILayout.Height(_fMaxWidth) }; DrawSideSprite(EditorGUILayout.GetControlRect(_options), _Iso2D, false, false); EditorGUILayout.Separator(); Util.CustomEditorGUI.ShowPackInfo(_Iso2D.sprr.sprite, GUILayout.MaxWidth(_fMaxWidth)); EditorGUILayout.Separator(); //GUILayout.EndArea(); EditorGUILayout.EndVertical(); }
static void Undo_Iso2DSpriteField(Iso2DObject _obj, Color _color) { using (new GUIBackgroundColorScope(_color)) { using (var result = new EditorGUI.ChangeCheckScope()) { Sprite _newSprite = (Sprite)EditorGUILayout.ObjectField(_obj.sprr.sprite, typeof(Sprite), allowSceneObjects: false); if (result.changed) { _obj.ChangeSprite(_newSprite); EditorUtility.SetDirty(Selection.activeObject); } } } }
public static void DrawSideSprite(Rect _FullRect, Iso2DObject _Iso2D, bool _bSquare, bool _bSimpleDraw) { if (_Iso2D == null || _Iso2D.sprr.sprite == null) { return; } Rect _rt = _FullRect.Divid_TileSide(_Iso2D._Type); if (_Iso2D.transform.localScale.x < 0) { _rt.x += _rt.width; _rt.width *= -1f; } if (_Iso2D.transform.localScale.y < 0) { _rt.y += _rt.height; _rt.height *= -1f; } Util.CustomEditorGUI.DrawSprite(_rt, _Iso2D.sprr.sprite, _Iso2D.sprr.color, _bSquare, _bSimpleDraw); }
public static void Iso2DObjectField(SerializedObject _Iso2DSerializedObject) { _Iso2DSerializedObject.Update(); SerializedProperty vScaler = _Iso2DSerializedObject.FindProperty("localScale"); SerializedProperty vRotator = _Iso2DSerializedObject.FindProperty("localRotation"); Iso2DObject _Iso2D = (Iso2DObject)_Iso2DSerializedObject.targetObject; IsoTile _parentTile = _Iso2D.GetComponentInParent <IsoTile>(); SpriteRenderer sprr = _Iso2D.GetComponent <SpriteRenderer>(); //_Iso2D._Type = (Iso2DObject.Type) EditorGUILayout.EnumPopup("Type", _Iso2D._Type); EditorGUI.indentLevel = 0; Undo_Iso2DSpriteField(_Iso2D, Color.cyan); EditorGUILayout.LabelField("Type : " + _Iso2D._Type); float iWidth = EditorGUIUtility.currentViewWidth / 2 - 4; EditorGUILayout.BeginHorizontal(); using (new EditorGUILayout.VerticalScope( GUILayout.MaxWidth(iWidth))) { GUILayout.Space(5); Iso2DObjectEditor.Max_Slider = Mathf.Max(new float[] { 1f, vScaler.vector3Value.x, vScaler.vector3Value.y, EditorGUILayout.FloatField("Cap of Scale Slider", Iso2DObjectEditor.Max_Slider) }); vScaler.vector3Value = Vector3Slider(vScaler.vector3Value, Vector3.one, "[Scale]", -Iso2DObjectEditor.Max_Slider * Vector3.one, Iso2DObjectEditor.Max_Slider * Vector3.one, iWidth); // vScaler.vector3Value = EditorGUILayout.Vector3Field("",vScaler.vector3Value, GUILayout.MaxWidth(iWidth)); using (new EditorGUILayout.HorizontalScope()) { EditorGUILayout.LabelField("Flip", GUILayout.MaxWidth(iWidth * 0.3f)); if (GUILayout.Button("X", EditorStyles.miniButton, GUILayout.MaxWidth(iWidth * 0.3f))) { vScaler.vector3Value = Vector3.Scale(vScaler.vector3Value, new Vector3(-1, 1, 1)); } if (GUILayout.Button("Y", EditorStyles.miniButton, GUILayout.MaxWidth(iWidth * 0.3f))) { vScaler.vector3Value = Vector3.Scale(vScaler.vector3Value, new Vector3(1, -1, 1)); } } EditorGUI.BeginChangeCheck(); EditorGUILayout.ToggleLeft( string.Format("Use Global PPU Scale(x{0:0.00})", _Iso2D.PPURefScale), _Iso2D.bApplyPPUScale, GUILayout.MaxWidth(iWidth)); if (EditorGUI.EndChangeCheck()) { _Iso2D.Toggle_ApplyPPUScale(); } EditorGUI.indentLevel++; EditorGUILayout.HelpBox("Global PPU Scale = Source PPU / Ref PPU", MessageType.None); EditorGUILayout.LabelField( "Image Source PPU " + sprr.sprite.pixelsPerUnit, GUILayout.MaxWidth(iWidth)); EditorGUILayout.LabelField( "IsoMap Reference PPU " + IsoMap.instance.ReferencePPU, GUILayout.MaxWidth(iWidth)); EditorGUI.indentLevel--; EditorGUILayout.Separator(); Util.CustomEditorGUI.NewParagraph("[Rotation]"); EditorGUILayout.LabelField("Tile local rotation adjustment", GUILayout.MaxWidth(iWidth)); vRotator.vector3Value = EditorGUILayout.Vector3Field("", vRotator.vector3Value, GUILayout.MaxWidth(iWidth)); EditorGUILayout.LabelField( string.Format("+ global tile rotation(X {0}, Y {1})", IsoMap.instance.TileAngle.x, IsoMap.instance.TileAngle.y), GUILayout.MaxWidth(iWidth)); EditorGUILayout.Separator(); //EditorGUILayout.EndVertical(); //GUILayout.EndArea(); } drawPackedTexture(_Iso2D, Mathf.Min(125f, iWidth * 0.75f)); EditorGUILayout.EndHorizontal(); if (_parentTile != null && _Iso2D.gameObject != _parentTile.gameObject) { EditorGUILayout.Separator(); Util.CustomEditorGUI.NewParagraph("[Object Selector]"); if (_Iso2D.RC != null) { Util.CustomEditorGUI.ComSelector <RegularCollider>(_Iso2D.RC, "GO Controller"); } else { CustomEditorGUI.ComSelector <SubColliderHelper>(_Iso2D.SC, "GO SubCollider"); } Util.CustomEditorGUI.ComSelector <IsoTile>(_parentTile, "GO IsoTile"); } _Iso2DSerializedObject.ApplyModifiedProperties(); }