/// <summary> /// Adds BrokenFloor to _Platforms list, sets name, scale and bedrock /// </summary> /// <param name="floor">BrokenFloor</param> /// <param name="index">Index of _Platforms[] & Index of name</param> /// <param name="localScale">localScale of the floor</param> private void AddToList(BrokenFloor floor, int index, Vector3 localScale) { floor.transform.localScale = localScale; floor.Bedrock = _Bedrock; floor.name = "BrokenFloor" + index; _Platforms[index] = floor; }
private void Fill() { if (_Clear) { int childs = transform.childCount; for (int i = childs - 1; i > -1; i--) { DestroyImmediate(transform.GetChild(i).gameObject); } _Platforms = new BrokenFloor[0]; } else { _Platforms = new BrokenFloor[transform.childCount]; for (int i = 0; i < _Platforms.Length; i++) { BrokenFloor floor = transform.GetChild(i).GetComponent <BrokenFloor>(); if (floor == null) { Debug.LogError("Child object number " + i + " has no BrokenFloor component"); } AddToList(floor, i, floor.transform.localScale); } } if (!_Create) { return; } FillArea(); }
private void FillArea() { FillArray2D.ArrayObject[] objects = new FillArray2D().RandomRectangles2(_Density, _MinPlatformSize, _MaxPlatformSize); _Platforms = new BrokenFloor[objects.Length]; int index = 0; float factorX = _Size.x / _Density.x; float factorY = _Size.y / _Density.y; Vector3 PlatformPosition; Vector3 PlatformSize; foreach (FillArray2D.ArrayObject ao in objects) { float width = (ao.endX - ao.startX + 1) * factorX; float height = (ao.endY - ao.startY + 1) * factorY; PlatformSize = new Vector3(width, Random.Range(HeightBetween.x, HeightBetween.y), height); float posX = transform.position.x - _Size.x / 2 + (ao.startX * factorX) + width / 2; float posZ = transform.position.z - _Size.y / 2 + (ao.startY * factorY) + height / 2; PlatformPosition = new Vector3(posX, transform.position.y + Random.Range(YPosBetween.x, YPosBetween.y), posZ); BrokenFloor floor = Instantiate(_PlatformPrefab, PlatformPosition, _PlatformPrefab.transform.rotation, transform).GetComponent <BrokenFloor>(); AddToList(floor, index, PlatformSize); index++; } }