public override void OnInspectorGUI()
        {
            // Update the serializedProperty - always do this in the beginning of OnInspectorGUI.
            serializedObject.Update();

            EditorGUILayout.BeginHorizontal();
            if (MyAutoTileMap.Tileset != null && MyAutoTileMap.Tileset.AtlasTexture == null)
            {
                MyAutoTileMap.Tileset.AtlasTexture = EditorGUILayout.ObjectField("Tileset Atlas", MyAutoTileMap.Tileset.AtlasTexture, typeof(Texture2D), false) as Texture2D;
                if (GUILayout.Button("Edit Tileset..."))
                {
                    AutoTilesetEditorWindow.ShowDialog(MyAutoTileMap.Tileset);
                }
            }
            else
            {
                MyAutoTileMap.Tileset = (AutoTileset)EditorGUILayout.ObjectField("Tileset", MyAutoTileMap.Tileset, typeof(AutoTileset), false);
            }

            if (MyAutoTileMap.Tileset == null)
            {
                if (GUILayout.Button("Create..."))
                {
                    MyAutoTileMap.Tileset = RpgMapMakerEditor.CreateTileset();
                }
            }
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            MyAutoTileMap.MapData = (AutoTileMapData)EditorGUILayout.ObjectField("Map Data", MyAutoTileMap.MapData, typeof(AutoTileMapData), false);
            if (MyAutoTileMap.MapData == null && GUILayout.Button("Create..."))
            {
                MyAutoTileMap.MapData = RpgMapMakerEditor.CreateAutoTileMapData();
            }
            EditorGUILayout.EndHorizontal();

            if (MyAutoTileMap.Tileset != null && MyAutoTileMap.MapData != null && MyAutoTileMap.IsInitialized)
            {
                string[] toolBarButtonNames = System.Enum.GetNames(typeof(eTabType));

                s_tabType = (eTabType)GUILayout.Toolbar((int)s_tabType, toolBarButtonNames);
                switch (s_tabType)
                {
                case eTabType.Settings: DrawSettingsTab(); break;

                case eTabType.Paint: DrawPaintTab(); break;

                case eTabType.Data: DrawDataTab(); break;
                }
            }
            else if (!MyAutoTileMap.IsInitialized)
            {
                MyAutoTileMap.LoadMap();
            }
            else
            {
                EditorGUILayout.HelpBox("You need to select or create a Tileset and a Map Data asset", MessageType.Info);
            }

            if (GUI.changed)
            {
                EditorUtility.SetDirty(MyAutoTileMap);
                if (MyAutoTileMap.Tileset != null)
                {
                    EditorUtility.SetDirty(MyAutoTileMap.Tileset);
                }
                if (MyAutoTileMap.MapData != null)
                {
                    EditorUtility.SetDirty(MyAutoTileMap.MapData);
                }
            }

            // Apply changes to the serializedProperty - always do this in the end of OnInspectorGUI.
            serializedObject.ApplyModifiedProperties();
        }
 public static DirectionalAnimationController CreateAsset()
 {
     return(RpgMapMakerEditor.CreateAssetInSelectedDirectory <DirectionalAnimationController>());
 }