public void fillNodeMap(Object input) { #if XBOX Thread.CurrentThread.SetProcessorAffinity(4); #endif GenerateNodeMapResult result = (GenerateNodeMapResult)input; result.NodeMap = DungeonGenerator.generateRoomData(GlobalGameConstants.StandardMapSize.x, GlobalGameConstants.StandardMapSize.y, currentSeed); result.completed = true; }
private DungeonGenerator.DungeonRoom[,] generateFourDungeons() { Thread[] threads = new Thread[4]; GenerateNodeMapResult[] results = new GenerateNodeMapResult[4]; for (int i = 0; i < 4; i++) { results[i] = new GenerateNodeMapResult(); } for (int i = 0; i < 4; i++) { threads[i] = new Thread(new ParameterizedThreadStart(fillNodeMap)); threads[i].Start(results[i]); } bool dungeonFound = false; while (!dungeonFound) { for (int i = 0; i < 4; i++) { if (results[i].completed == true) { dungeonFound = true; } } } for (int i = 0; i < 4; i++) { if (threads[i].IsAlive) { threads[i].Abort(); } } for (int i = 0; i < 4; i++) { if (results[i].completed == true) { return(results[i].NodeMap); } } return(null); }