예제 #1
0
        public override void OnInspectorGUI()
        {
            DrawDefaultInspector();

            _asset = EditorGUILayout.ObjectField("Asset", _asset, typeof(CustomSpace), false) as CustomSpace;

            _target = target as SpaceCrafter;

            GUILayout.BeginVertical();
            {
                GUILayout.Space(20);
                GUILayout.Label("Add Crafters");

                if (GUILayout.Button("Add Enemy Spawn Crafter"))
                {
                    _target.AddEnemySpawnCrafter();
                }

                if (GUILayout.Button("Add Block Override"))
                {
                    _target.AddBlockOverride();
                }
            }
            GUILayout.EndVertical();

            GUILayout.BeginVertical();
            {
                GUILayout.Space(20);
                if (GUILayout.Button("Save"))
                {
                    if (_asset == null)
                    {
                        _asset = CreateInstance <CustomSpace>();
                        AssetDatabase.CreateAsset(_asset, ASSET_PATH + System.IO.Path.GetRandomFileName() + ".asset");
                    }

                    Undo.RecordObject(_asset, "Set SerializableSpace JSON");
                    _asset.Set(SerializableSpaceHelper.ToSerializableSpace(_target.Build()));
                    EditorUtility.SetDirty(_asset);

                    AssetDatabase.SaveAssets();
                }

                if (GUILayout.Button("Load"))
                {
                    if (_asset != null)
                    {
                        _target.InitializeFromSpace(_asset.Build());
                    }
                    else
                    {
                        _log.Warning($"No asset loaded!  Drag a custom space into the asset field to load.");
                    }
                }
            }
            GUILayout.EndVertical();
        }
        private void DrawCrafter(SpaceCrafter crafter)
        {
            DrawSpace(crafter.Build());

            foreach (var childCrafter in crafter.GetComponentsInChildren <SpaceCrafter>())
            {
                if (childCrafter == crafter)
                {
                    continue;
                }

                DrawCrafter(childCrafter);
            }
        }