Beispiel #1
0
        public GameModuleNode AttachChild(GameModule item)
        {
            if (item.Node == null)
            {
                item.Node = new GameModuleNode(item);
            }

            AttachChild(item.Node);

            return(item.Node);
        }
Beispiel #2
0
        internal void OnModuleIDChanged(GameModule module, int oldID)
        {
            Debug.Assert(module.Node != null && module.Node.Tree == this);

            if (oldID != GameModule.UnspecifiedID)
            {
                idNodes.Remove(oldID);
            }

            int id = module.ID;

            if (id != GameModule.UnspecifiedID)
            {
                idNodes.Add(id, module.Node);
            }
        }
Beispiel #3
0
        public GameModuleNode FindChildNode(GameModule item)
        {
            // 원래는 모든 자식 Node들을 순회하며 검사해야하지만,
            // GameModule에서 자신을 가진 Node를 아는 관계로 최적화할 수 있었습니다.
            // GameModule의 조상Node중 this가 있는지 확인합니다.

            if (item.Node == null || item.Node.tree != tree)
            {
                return(null);
            }

            if (IsAncestor(item.Node, this))
            {
                return(item.Node);
            }
            else
            {
                return(null);
            }
        }
Beispiel #4
0
 public GameModuleNode(GameModule module, int childrenCapacity)
     : this(module)
 {
     children = new List <GameModuleNode>(childrenCapacity);
 }
Beispiel #5
0
 public GameModuleNode(GameModule module)
 {
     this.module = module;
 }