public static List<BackgroundObject> CreateBackgroundObjects(int amountToCreate, Transform transform, Vector2 generationBounds, Vector2 spacing, StyleManager.LevelStyle style, int depth) { List<BackgroundObject> result = new List<BackgroundObject>(); int maxAmountOfObjectsHorizontal = (int)(generationBounds.X / spacing.X); if (spacing.X == 0) maxAmountOfObjectsHorizontal = 1; int maxAmountOfObjectsVertical = (int)(generationBounds.Y / spacing.Y); if (spacing.Y == 0) maxAmountOfObjectsVertical = 1; int maxAmountOfObjects = maxAmountOfObjectsHorizontal * maxAmountOfObjectsVertical; List<int> indexes = new List<int>(); for (int i = 0; i < maxAmountOfObjects; ++i) indexes.Add(i); for (int i = 0; i < amountToCreate; ++i) { int selectionIndex = Globals.Random.Next(0, indexes.Count); int placementX = indexes[selectionIndex] % maxAmountOfObjectsHorizontal; int placementY = indexes[selectionIndex] / maxAmountOfObjectsVertical; indexes.RemoveAt(selectionIndex); BackgroundObject objectToGenerateFrom = Globals.Backgrounds.GetObject(style, depth); BackgroundObject newObject = new BackgroundObject(objectToGenerateFrom); if(transform != null) newObject.Transform.ParentTransform = transform; newObject.Transform.PosX = spacing.X * placementX; newObject.Transform.PosY = spacing.Y * placementY; newObject.ApplyJitter(); result.Add(newObject); } return result; }
public BackgroundObject GetObject(StyleManager.LevelStyle style, int depth) { return _backgroundObjects[style][depth][Globals.Random.Next(0, _backgroundObjects[style][depth].Length)]; }