static void Init()
    {
        // Get existing open window or if none, make a new one:
        ConversationEditor window = (ConversationEditor)GetWindow(typeof(ConversationEditor));

        window.Show();
        window.minSize = new Vector2(450, 450);
        GUIContent content = new GUIContent("Editor");

        window.titleContent = content;
        conversations.Clear();

        Conversation[] conver = Resources.LoadAll <Conversation>("Conversations");
        foreach (var item in conver)
        {
            string[] str = AssetDatabase.GetAssetPath(item).Split(new char[] { '/', '.' });
            conversations.Add(item);
            item.EditConversationName(str[str.Length - 2]);
        }

        if (conversations.Count > 0 && selectedConversation == null)
        {
            selectedConversation = conversations[0];
            CreateTreeStructure.AssignPositionToNodes(selectedConversation, nodeWidth, nodeHeight, nodeHorSpace, nodeVerSpace);
        }

        isAddingDialogue = false;

        InitializeTexture();
    }
    private void AddDialogue()
    {
        Dialogue newDialogue = new Dialogue(selectedConversation.Dialogues[selectedConversation.Dialogues.Count - 1].DialogueID + 1, characterName, sentence, bubbleTalkName);

        if (selectedDialogue == null)
        {
            Debug.Log("selectedNode is null...");
        }

        Debug.Log("Dialogue is added to DialogueID" + selectedDialogue.DialogueID + ", sentence : " + sentence);

        selectedConversation.AddDialogue(selectedDialogue, newDialogue);
        isAddingDialogue = false;
        CreateTreeStructure.AssignPositionToNodes(selectedConversation, nodeWidth, nodeHeight, nodeHorSpace, nodeVerSpace);
    }
    void OnGUI()
    {
        normalStyle = new GUIStyle()
        {
            fontStyle = FontStyle.BoldAndItalic,
            fontSize  = 15,
            alignment = TextAnchor.MiddleLeft
        };

        normalStyle.normal.textColor = Color.black;

        #region Header View
        Rect rect = new Rect(0, 0, Screen.width, headerHeight);
        GUILayout.BeginArea(rect);
        GUI.DrawTexture(rect, headerTexture);
        GUIStyle style = new GUIStyle()
        {
            font        = EditorStyles.boldFont,
            alignment   = TextAnchor.MiddleCenter,
            fixedHeight = 50,
            fontSize    = 25
        };
        GUILayout.Label(new GUIContent("Conversation Editor"), style);
        GUILayout.EndArea();
        #endregion End Header View

        #region Left Side View
        SideWidth = Screen.width / 3f;
        rect      = new Rect(0, headerHeight, SideWidth, Screen.height);
        GUI.DrawTexture(rect, leftTexture);
        GUILayout.BeginArea(rect);
        scrollPosOfConversations = EditorGUILayout.BeginScrollView(scrollPosOfConversations, GUILayout.Width(SideWidth), GUILayout.Height(Screen.height - 100f));
        foreach (var item in conversations)
        {
            if (item == selectedConversation)
            {
                Texture2D tex = new Texture2D(1, 1);
                tex.SetPixel(0, 0, Color.blue);
                tex.Apply();
                style.normal.background = tex;
                GUILayout.BeginHorizontal(style);
            }
            else
            {
                GUILayout.BeginHorizontal();
            }

            GUILayout.Label(item.ConversationName, normalStyle, GUILayout.Width((Screen.width / 3.0f) * 0.70f));
            if (GUILayout.Button("Edit"))
            {
                selectedConversation = item;
                CreateTreeStructure.AssignPositionToNodes(selectedConversation, nodeWidth, nodeHeight, nodeHorSpace, nodeVerSpace);
            }
            if (GUILayout.Button("delete"))
            {
                conversations.Remove(selectedConversation);
                string path = AssetDatabase.GetAssetPath(selectedConversation);
                AssetDatabase.DeleteAsset(path);
                selectedConversation = null;
            }
            GUILayout.EndHorizontal();
        }
        EditorGUILayout.EndScrollView();

        if (GUILayout.Button("Add New Conversation", GUILayout.Width(200f)))
        {
            AddConversation();
        }
        GUILayout.EndArea();
        #endregion End Left Side View

        #region Right Side View
        rect = new Rect(SideWidth, headerHeight, Screen.width - SideWidth - 10f, Screen.height - headerHeight - 30f);

        if (selectedConversation == null)
        {
            GUI.DrawTexture(rect, rightTexture);
        }
        else
        {
            GUILayout.BeginArea(rect);
            selectedTabInt = GUILayout.Toolbar(selectedTabInt, toolBars);
            EditorGUI.BeginChangeCheck();
            if (EditorGUI.EndChangeCheck())
            {
                scrollPosOfRightView = Vector2.zero;
            }

            if (selectedTabInt == 0)
            {
                GUI.DrawTexture(new Rect(0, 20f, rect.width, rect.height - headerHeight), selectedScreenTexture);
                ShowActors(rect);
            }
            else if (selectedTabInt == 1)
            {
                GUI.DrawTexture(new Rect(0, 20f, rect.width, rect.height - headerHeight), selectedScreenTexture);
                ShowBubbleTalks(rect);
            }
            else if (selectedTabInt == 2)
            {
                GUI.DrawTexture(new Rect(0, 20f, rect.width, rect.height - bottomHeight), selectedScreenTexture);
                if (selectedConversation.SpeechBubbles.Count > 0 && selectedConversation.ActorPrefabs.Count > 0)
                {
                    Event e = Event.current;
                    if (e.button == 1 && e.isMouse)
                    {
                        selectedDialogue = GetSelectedDialogue(e.mousePosition);
                        if (!isAddingDialogue && selectedDialogue != null)
                        {
                            RightClickMenuOfDialogues();
                        }
                    }

                    ShowDialogueScreen(rect);
                }
                else if (selectedConversation.SpeechBubbles.Count <= 0)
                {
                    GUILayout.Label("Add Speech Bubbles in the list", normalStyle);
                }
                else if (selectedConversation.ActorPrefabs.Count <= 0)
                {
                    GUILayout.Label("Add Actor Bubbles in the list", normalStyle);
                }
            }
            else if (selectedTabInt == 3)
            {
                GUI.DrawTexture(new Rect(0, 20f, rect.width, rect.height - headerHeight), selectedScreenTexture);
                ShowQuest(rect);
            }
            GUILayout.EndArea();
        }

        #endregion End Right Side View
    }