private void placeBricks(Vector3 origin, Direction direction, int gridLimit, int steps = 3) { if (steps <= 0) { return; } setPreviewFromTemplate(prefabs[count++ % prefabs.Length], origin); Lego script = lego.gameObject.GetComponent <Lego>(); script.setPosition(origin); script.rotate(true); rotateBrickByDirection(direction, script); int tries = 0; Vector3 from = origin; while (script.placeSolid() && tries < gridLimit) { from = from + (toVector(direction) * script.getCubeGridCellWith() * script.getLengthCount() * randomizeLength()); if (tryIf(0.2f)) { placeBricks(from, randomFrom2(rightAngle(direction), leftAngle(direction), 7f), gridLimit, steps - 1); } if (tryIf(0.18f) || outsideMap(from)) { return; } script = swapBrickMaybe(0.4f, from, direction, script); tries++; } }
protected void placeBrick() { if (ButtonsManager.getAmount() < script.getValue()) { ButtonsManager.flash(); return; } timeout = 0.5f; if (script.placeSolid()) { lego.transform.position += Vector3.up * script.getHeight(); ButtonsManager.spend(script.getValue()); } }