public void ClearEvents() { //loop through every event and unsubscribe the events if (LevelGeneration != null) { foreach (var eventDelegate in LevelGeneration.GetInvocationList()) { LevelGeneration -= (eventDelegate as EventHandler); } } if (LevelBaking != null) { foreach (var eventDelegate in LevelBaking.GetInvocationList()) { LevelBaking -= (eventDelegate as EventHandler); } } if (LevelPopulation != null) { foreach (var eventDelegate in LevelPopulation.GetInvocationList()) { LevelPopulation -= (eventDelegate as EventHandler); } } if (PlayerPopulation != null) { foreach (var eventDelegate in PlayerPopulation.GetInvocationList()) { PlayerPopulation -= (eventDelegate as EventHandler); } } if (PostPlayer != null) { foreach (var eventDelegate in PostPlayer.GetInvocationList()) { PostPlayer -= (eventDelegate as EventHandler); } } if (FinalizeObjectPools != null) { foreach (var eventDelegate in FinalizeObjectPools.GetInvocationList()) { FinalizeObjectPools -= (eventDelegate as EventHandler); } } if (FinalStep != null) { foreach (var eventDelegate in FinalStep.GetInvocationList()) { FinalStep -= (eventDelegate as EventHandler); } } }
public bool GenerateLevel() { level = new int[width, height]; RandomFillLevel(); for (int i = 0; i < smoothAmount; i++) { SmoothLevel(); } ProcessLevel(); int borderSize = 1; int[,] borderedLevel = new int[width + borderSize * 2, height + borderSize * 2]; for (int x = 0; x < borderedLevel.GetLength(0); x++) { for (int y = 0; y < borderedLevel.GetLength(1); y++) { if (x >= borderSize && x < width + borderSize && y >= borderSize && y < height + borderSize) { borderedLevel[x, y] = level[x - borderSize, y - borderSize]; } else { borderedLevel[x, y] = 0; } } } LevelMeshGenerator meshGen = GetComponent <LevelMeshGenerator>(); levelMeshData = meshGen.GenerateMesh(borderedLevel, sizeMultiplier); LevelPopulation popGen = GetComponent <LevelPopulation>(); popGen.DepopulateLevel(); if (populateLevel) { if (!popGen.PopulateLevel(borderedLevel, sizeMultiplier, levelMeshData)) { fillAmount++; GenerateLevel(); } } if (generateGrid) { Grid pathfindingGrid = GetComponent <Grid>(); pathfindingGrid.CreateGrid(); } return(true); }