예제 #1
0
    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();
    }
예제 #2
0
    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();
    }