public GameModuleNode AttachChild(GameModule item) { if (item.Node == null) { item.Node = new GameModuleNode(item); } AttachChild(item.Node); return(item.Node); }
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); } }
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); } }
public GameModuleNode(GameModule module, int childrenCapacity) : this(module) { children = new List <GameModuleNode>(childrenCapacity); }
public GameModuleNode(GameModule module) { this.module = module; }