public override void OnInspectorGUI() { GUI.enabled = false; _target.x = EditorGUILayout.IntField("X", _target.x); _target.y = EditorGUILayout.IntField("Y", _target.y); GUI.enabled = true; EditorGUILayout.Space(); SrpgLayer parentLayer = _target.transform.parent.GetComponent <SrpgLayer>(); if (parentLayer == null || parentLayer.propertySchemes.Count == 0) { return; } Undo.RecordObject(_target, _target.name); EditorGUILayout.BeginVertical("box"); { EditorGUILayout.LabelField("Layer Properties"); GUILayoutOption valueWidth = GUILayout.Width(100); foreach (SrpgPropertyScheme scheme in parentLayer.propertySchemes) { EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField(scheme.name); SrpgPropertyImpl prop = null; if (!_target.TryGetProperty(scheme.name, out prop)) { if (GUILayout.Button("Use", GUILayout.Width(100), GUILayout.Height(14))) { prop = _target.AddProperty(scheme.name); if (scheme.type == SrpgPropertyScheme.PropType.Bool) { prop.b = false; } else if (scheme.type == SrpgPropertyScheme.PropType.Int) { prop.n = 0; } else if (scheme.type == SrpgPropertyScheme.PropType.Float) { prop.f = 0f; } else if (scheme.type == SrpgPropertyScheme.PropType.String) { prop.s = ""; } else { Debug.LogError("Wrong type property!"); } } } else { if (scheme.type == SrpgPropertyScheme.PropType.Bool) { prop.b = EditorGUILayout.Toggle(prop.b, valueWidth); } else if (scheme.type == SrpgPropertyScheme.PropType.Int) { prop.n = EditorGUILayout.IntField(prop.n, valueWidth); } else if (scheme.type == SrpgPropertyScheme.PropType.Float) { prop.f = EditorGUILayout.FloatField(prop.f, valueWidth); } else if (scheme.type == SrpgPropertyScheme.PropType.String) { prop.s = EditorGUILayout.TextField(prop.s, valueWidth); } else { Debug.LogError("Wrong type property!"); } } } EditorGUILayout.EndHorizontal(); } if (GUILayout.Button("Apply to same tiles")) { SrpgTile[] layerTiles = parentLayer.GetComponentsInChildren <SrpgTile>(); foreach (SrpgTile tile in layerTiles) { if (tile == _target) { continue; } if (tile.IsSameTile(_target)) { tile.CopyProperties(_target.properties); } } } } EditorGUILayout.EndVertical(); }
public override void OnInspectorGUI() { GUI.enabled = false; EditorGUILayout.IntField("Z-Index Start", _target.zIndexStart); EditorGUILayout.Toggle("Touchable", _target.touchable); GUI.enabled = true; Undo.RecordObject(_target, _target.name); EditorGUILayout.Space(); EditorGUILayout.BeginVertical("box"); { EditorGUILayout.LabelField("Properties"); GUILayoutOption typeWidth = GUILayout.Width(100); if (_target.propertySchemes.Count > 0) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Type", typeWidth); EditorGUILayout.LabelField("Name"); EditorGUILayout.EndHorizontal(); for (int i = 0; i < _target.propertySchemes.Count; i++) { SrpgPropertyScheme scheme = _target.propertySchemes[i]; bool stop = false; EditorGUILayout.BeginHorizontal(); { scheme.type = (SrpgPropertyScheme.PropType)EditorGUILayout.EnumPopup(scheme.type, typeWidth); scheme.name = EditorGUILayout.TextField(scheme.name); if (GUILayout.Button("-", GUILayout.Width(15), GUILayout.Height(14))) { _target.propertySchemes.RemoveAt(i); SrpgTile[] tiles = _target.GetComponentsInChildren <SrpgTile>(); foreach (SrpgTile tile in tiles) { tile.RemoveProperty(scheme.name); } stop = true; } } EditorGUILayout.EndHorizontal(); if (stop) { break; } } } if (GUILayout.Button("Add")) { _target.propertySchemes.Add(new SrpgPropertyScheme(SrpgPropertyScheme.PropType.Bool, "Name")); } } EditorGUILayout.EndVertical(); }