public void ShowCurrentDrama()
        {
            #region Current Scene Actors
            GUILayout.BeginArea(new Rect(480, 15, leftPanelWidth, 300));
            GUILayout.BeginHorizontal();
            GUILayout.Box("Current Scene Actors", titleText, GUILayout.Width(175), GUILayout.Height(20));
            GUILayout.EndHorizontal();

            bool addActor = false;
            if (curDrama.actors == null)
            {
                curDrama.actors = new List <DramaActor>();
            }

            currentActorListScrollPos = GUILayout.BeginScrollView(actorListScrollPos, new GUIStyle("RL Background"), GUILayout.Width(180), GUILayout.Height(position.height - 450));
            if (curDrama.actors != null && curDrama.actors.Count > 0)
            {
                List <string> actorNames = new List <string>();

                for (int i = 0; i < curDramaStorage.actorStorage.Count; i++)
                {
                    actorNames.Add(curDramaStorage.actorStorage[i].actorName);
                }

                int removeThisIdx = -1;
                for (int i = 0; i < curDrama.actors.Count; i++)
                {
                    bool isRemoved     = false;
                    int  selectedActor = (curDramaStorage.actorStorage != null && curDramaStorage.actorStorage.Count > 0) ? curDramaStorage.actorStorage.Count - 1 : -1;
                    EditorGUILayout.BeginHorizontal();
                    if (curDramaStorage.actorStorage.Find(x => x.actorName == curDrama.actors[i].characterName) != null)
                    {
                        selectedActor = curDramaStorage.actorStorage.FindIndex(x => x.actorName == curDrama.actors[i].characterName);
                    }
                    if (selectedActor >= 0)
                    {
                        selectedActor = EditorGUILayout.Popup(selectedActor, actorNames.ToArray(), GUILayout.MaxWidth(130));
                        isRemoved     = GUILayout.Button("-", GUILayout.Width(30));
                        if (isRemoved)
                        {
                            removeThisIdx = i;
                        }
                    }
                    else
                    {
                        EditorGUILayout.LabelField("No Actor Available", GUILayout.MaxWidth(200));
                    }
                    if (curDrama.actors[i].characterName != curDramaStorage.actorStorage[selectedActor].actorName)
                    {
                        curDrama.actors[i].characterName       = curDramaStorage.actorStorage[selectedActor].actorName;
                        curDrama.actors[i].characterPrefabPath = curDramaStorage.actorStorage[selectedActor].prefabPath;
                        curDrama.actors[i].actorType           = curDramaStorage.actorStorage[selectedActor].actorType;
                    }
                    EditorGUILayout.EndHorizontal();
                }

                if (removeThisIdx != -1)
                {
                    curDrama.actors.RemoveAt(removeThisIdx);
                }
            }

            GUILayout.EndScrollView();
            GUILayout.BeginHorizontal();
            addActor = GUILayout.Button("+", GUILayout.MaxWidth(50));
            GUILayout.EndHorizontal();
            if (addActor)
            {
                DramaActor newActor = new DramaActor();
                newActor.characterName       = curDramaStorage.actorStorage[0].actorName;
                newActor.characterPrefabPath = curDramaStorage.actorStorage[0].prefabPath;
                newActor.actorType           = curDramaStorage.actorStorage[0].actorType;

                curDrama.actors.Add(newActor);
            }
            GUILayout.EndArea();
            #endregion

            GUILayout.BeginArea(new Rect(15, 15, leftPanelWidth, 300));

            if (curFrame == null)
            {
                curFrame = new DramaFrame();
            }
            GUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Scenario Act Name:", EditorStyles.boldLabel, GUILayout.Width(80));
            curDrama.scenarioName = EditorGUILayout.TextField(curDrama.scenarioName, GUILayout.MaxWidth(380));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Drama Type:", EditorStyles.boldLabel, GUILayout.Width(80));
            curDrama.sceneType = (DramaSceneType)EditorGUILayout.EnumPopup(curDrama.sceneType, GUILayout.MaxWidth(200));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Box("Current Frame", titleText, GUILayout.Width(450), GUILayout.Height(20));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Description:", EditorStyles.boldLabel, GUILayout.Width(80));
            curFrame.description = EditorGUILayout.TextField(curFrame.description, GUILayout.MaxWidth(367));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            if (curDrama != null && curDrama.actionsPerFrame != null)
            {
                if (selectedFrameIdx >= curDrama.actionsPerFrame.Count - 1)
                {
                    curFrame.callNextStory = EditorGUILayout.Toggle(curFrame.callNextStory, GUILayout.MaxWidth(20));
                    GUILayout.Label("Call Next Story:", EditorStyles.boldLabel, GUILayout.Width(100));
                    if (curFrame.callNextStory)
                    {
                        curFrame.nextDramaTitle = EditorGUILayout.TextField(curFrame.nextDramaTitle, GUILayout.MaxWidth(325));
                    }
                }
                else
                {
                    curFrame.callNextStory  = false;
                    curFrame.nextDramaTitle = "";
                }
            }
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Box("Frame List", titleText, GUILayout.Width(450), GUILayout.Height(20));
            GUILayout.EndHorizontal();
            frameListScrollPos = GUILayout.BeginScrollView(frameListScrollPos, new GUIStyle("RL Background"), GUILayout.Width(450), GUILayout.Height(position.height - 400));
            if (curDrama.actionsPerFrame == null)
            {
                curDrama.actionsPerFrame = new List <DramaFrame>();
            }
            if (curDrama.actionsPerFrame != null && curDrama.actionsPerFrame.Count > 0)
            {
                for (int i = 0; i < curDrama.actionsPerFrame.Count; i++)
                {
                    GUILayout.BeginHorizontal();
                    bool isClicked = false;
                    isClicked = GUILayout.Button(curDrama.actionsPerFrame[i].frameName, (selectedFrame != null && curDrama.actionsPerFrame[i].frameName == selectedFrame.frameName) ? selectedText : notSelectedText);
                    GUILayout.Label("- " + curDrama.actionsPerFrame[i].description, GUILayout.MaxWidth(350));
                    GUILayout.EndHorizontal();

                    if (isClicked)
                    {
                        GUI.FocusControl(null);
                        selectedFrameIdx = i;
                        selectedFrame    = curDrama.actionsPerFrame[selectedFrameIdx];
                        curFrame         = selectedFrame;
                        curAction        = null;
                        selectedAction   = null;
                    }
                }
            }
            GUILayout.EndScrollView();
            GUILayout.EndArea();
            GUILayout.BeginArea(new Rect(15, 320, leftPanelWidth, 300));
            GUILayout.BeginHorizontal();
            bool saveCurrentFrame = GUILayout.Button((curFrame != null && curFrame == selectedFrame) ? "Modify" : "Save", GUILayout.MaxWidth(100));
            bool addNewFrame      = GUILayout.Button("Create New", GUILayout.MaxWidth(100));
            if (saveCurrentFrame)
            {
                GUI.FocusControl(null);
                if (string.IsNullOrEmpty(curFrame.description))
                {
                    return;
                }
                if (curFrame == selectedFrame)
                {
                    int idx = curDrama.actionsPerFrame.FindIndex(x => x.frameName == curFrame.frameName);
                    curDrama.actionsPerFrame[idx] = curFrame;
                }
                else
                {
                    curFrame.frameName = "Frame#" + (curDrama.actionsPerFrame.Count + 1);
                    curDrama.actionsPerFrame.Add(curFrame);
                    curFrame      = new DramaFrame();
                    selectedFrame = null;
                }
                Save();
            }
            if (addNewFrame)
            {
                GUI.FocusControl(null);
                curFrame      = new DramaFrame();
                selectedFrame = null;
            }
            if (selectedFrame != null)
            {
                bool removeSelectedFrame = GUILayout.Button("-", GUILayout.MaxWidth(100));
                if (removeSelectedFrame)
                {
                    GUI.FocusControl(null);
                    if (curDrama.actionsPerFrame.Find(x => x.frameName == selectedFrame.frameName) != null)
                    {
                        curDrama.actionsPerFrame.Remove(selectedFrame);
                        selectedFrame = null;
                        curFrame      = new DramaFrame();
                    }
                }
            }
            GUILayout.EndHorizontal();
            GUILayout.EndArea();
        }
        public void ShowActorList()
        {
            if (curDramaStorage.actorStorage == null)
            {
                curDramaStorage.actorStorage = new List <ActorStorageBay>();
            }
            bool addEvent    = false;
            bool saveEvent   = false;
            bool removeEvent = false;


            GUILayout.BeginArea(new Rect(680, actorListPosY - 20, 400, position.height - 350));
            ShowCurrentActor();
            GUILayout.BeginHorizontal();
            GUILayout.Box("Available Actors List", titleText, GUILayout.Width(295), GUILayout.Height(20));
            GUILayout.EndHorizontal();

            actorListScrollPos = GUILayout.BeginScrollView(actorListScrollPos, new GUIStyle("RL Background"), GUILayout.Width(300), GUILayout.Height(position.height - 400));

            if (curDramaStorage.actorStorage != null && curDramaStorage.actorStorage.Count > 0)
            {
                for (int i = 0; i < curDramaStorage.actorStorage.Count; i++)
                {
                    bool   isClicked = false;
                    string label     = "";
                    switch (curDramaStorage.actorStorage[i].actorType)
                    {
                    case DramaActorType.Generic:
                        label = "[G}";
                        break;

                    case DramaActorType.Unique:
                        label = "[U}";
                        break;

                    case DramaActorType.Tools:
                        label = "[TOOLS}";
                        break;

                    case DramaActorType.SFX:
                        label = "[SFX}";
                        break;

                    default:
                        break;
                    }
                    label += " -" + curDramaStorage.actorStorage[i].smallDescription + ".";
                    GUILayout.BeginHorizontal();
                    isClicked = GUILayout.Button(curDramaStorage.actorStorage[i].actorName, (selectedActor != null && curDramaStorage.actorStorage[i].actorName == selectedActor.actorName) ? selectedText : notSelectedText, GUILayout.MinWidth(80));
                    GUILayout.Label(label);
                    GUILayout.EndHorizontal();

                    if (isClicked)
                    {
                        GUI.FocusControl(null);
                        if (curDramaStorage.actorStorage[i] != null)
                        {
                            selectedActor    = curDramaStorage.actorStorage[i];
                            selectedActorIdx = i;
                            curActor         = selectedActor;
                        }
                        isClicked = false;
                    }
                }
            }

            GUILayout.EndScrollView();
            GUILayout.EndArea();

            GUILayout.BeginArea(new Rect(680, actorListPosY + 240, 400, 225));

            GUILayout.BeginHorizontal();
            saveEvent = GUILayout.Button((curActor == selectedActor && selectedActor != null) ? "Modify" : "Save", GUILayout.MaxWidth(100));

            if (curDramaStorage.actorStorage == null)
            {
                curDramaStorage.actorStorage = new List <ActorStorageBay>();
            }

            if (curActor == null)
            {
                curActor = new ActorStorageBay();
            }
            if (curDramaStorage.actorStorage.Count <= 0 || curActor != null && curDramaStorage.actorStorage.Find(x => x.actorName == curActor.actorName) != null)
            {
                addEvent = GUILayout.Button("Create New", GUILayout.MaxWidth(100));
            }
            if (curDramaStorage.actorStorage.Find(x => x.actorName == curActor.actorName) != null)
            {
                removeEvent = GUILayout.Button("Remove", GUILayout.MaxWidth(100));
            }
            GUILayout.EndHorizontal();

            GUILayout.EndArea();

            // ADD BUTTON
            if (addEvent)
            {
                curActor      = new ActorStorageBay();
                selectedActor = null;
            }
            // REMOVE BUTTON
            if (removeEvent)
            {
                GUI.FocusControl(null);
                removeEvent = false;
                if (selectedActor != null)
                {
                    curDramaStorage.actorStorage.RemoveAt(selectedActorIdx);
                    selectedActor = null;
                    curActor      = new ActorStorageBay();
                }
            }
            // SAVE BUTTON
            if (saveEvent && !string.IsNullOrEmpty(curActor.actorName))
            {
                GUI.FocusControl(null);
                if (curDramaStorage.actorStorage == null)
                {
                    curDramaStorage.actorStorage = new List <ActorStorageBay>();
                }
                if (curDramaStorage.actorStorage.Find(x => x.actorName == curActor.actorName) == null)
                {
                    curDramaStorage.actorStorage.Add(curActor);
                    curActor = new ActorStorageBay();
                }
                else
                {
                    // MODIFY CURRENT EVENT
                    if ((curActor == selectedActor))
                    {
                        curDramaStorage.actorStorage[selectedActorIdx] = curActor;
                        curActor      = new ActorStorageBay();
                        selectedActor = null;
                    }
                    else
                    {
                        Debug.LogError("MULTIPLE EVENTS WITH SAME TITLE OCCURRED, PLEACE CHECK LIST!");
                    }
                }
                saveEvent = false;
                Save();
            }
        }