public override void Add(BaseNodule item)
        {
            if (mainNode && mainNode == item.MainNode)
            {
                base.Add(item);
                ReCalcAllNodulePos(mainNode, true);
            }
            else if (mainNodule)
            {
                if (item.Nodules.Contains(mainNodule) && !Contains(item))
                {
                    base.Add(item);
                }
                else if (NoduleTypes.CheckCompatibility(mainNodule, item))
                {
                    base.Add(item);
                    item.Nodules.Add(mainNodule);
                }

                if (mainNodule is OutputNodule)
                {
                    (mainNodule as OutputNodule).UpdateConditionalValues();
                }
                ReCalcAllNodulePos(mainNodule.MainNode, true);
            }
        }
        protected virtual void Construct(string _name, BaseNode _mainNode)
        {
            name     = _name;
            mainNode = (NoduleTypes.CheckCompatibility(_mainNode, this)) ? _mainNode : null;
            nodules  = NoduleDatabase.CreateNew(this);

            if (mainNode)
            {
                DialogueEditorGUI.Cache.SaveNewObject(this, mainNode);
            }
        }
        public override void Insert(int index, BaseNodule item)
        {
            if (mainNode == item.MainNode)
            {
                base.Insert(index, item);
                ReCalcAllNodulePos(mainNode, true);
            }
            else if (mainNodule && NoduleTypes.CheckCompatibility(mainNodule, item))
            {
                base.Insert(index, item);
                item.Nodules.Add(mainNodule);

                if (mainNodule is OutputNodule)
                {
                    (mainNodule as OutputNodule).UpdateConditionalValues();
                }
                ReCalcAllNodulePos(mainNodule.MainNode, true);
            }
        }