/* * Get a board entry by it's id. * Looks in both Boards and BoardFolders. */ public IBoardEntry GetBoardEntry(string hashID) { IBoardEntry entry = GetBoard(hashID); if (entry != null) { return(entry); } for (int i = 0; i < boardFolders.Length; i++) { if (boardFolders[i].id == hashID) { return(boardFolders[i]); } } return(null); }
/* * Create the runner from given project, with given runner. */ public ProjectRunner(Project project, MonoBehaviour runner) { this.project = project; this.runner = runner; walkers = new List <BoardWalker>(); for (int i = 0; i < project.boards.Length; i++) { IBoardEntry entry = project.boards[i]; if (!(entry is Board)) { continue; } Board board = entry as Board; try { BoardWalker walker = new BoardWalker(board, this.project); walkers.Add(walker); } catch (Exception e) { Debug.LogWarning("[Arcweave] Cannot create BoardWalker for Board " + board.realName + ".\n" + e.Message); } } // If there's no walker loaded, bail! if (walkers.Count == 0) { throw new Exception("Cannot create ProjectRunner. No board loaded."); } // Use starting board and root node of that board Board startingBoard = project.boards[project.startingBoardIdx]; active = walkers[project.startingBoardIdx]; active.current = startingBoard.GetElement(startingBoard.rootElementId); // Set callbacks to board runners walkers.ForEach(x => x.SetElementCallback(OnBoardCallback)); }