extends Reference static func build_house(main_xform: Transform): var rnd = streaming.get_place_rnd(main_xform) print(main_xform.origin, " seed = ", rnd.state) var l = 5 + 2 * (rnd.randi() % 5) - 1 var h = l - 1 var d = 3 + rnd.randi() % (l - 4 + 1) var range_used = false var objects = [] for k in range(l + 1): var pos = Vector3(0, 0, k * 2) var xform = Transform(Basis(), pos) if k > 0: var what if k != d && rnd.randf() > 0.5 && !range_used: what = "roof_floor_range" range_used = true else: what = "roof_floor" objects.push_back({"xform": xform, "data": [what]}) var xt = [Transform(Basis(), pos), Transform(Basis().rotated(Vector3.UP, PI), pos - Vector3(0, 0, 2))] for x in range(xt.size()): if x == 0 && k == d: continue if rnd.randf() > 0.5: what = "wall_solid" elif rnd.randf() > 0.5: what = "window_narrow" else: what = "window_wide" objects.push_back({"xform": xt[x], "data": [what]}) var obj_data = [] if k > 1 && k < l && rnd.randf() > 0.6: objects.push_back({"xform": xform, "data": ["wall_internal"]}) match k: 0: obj_data = ["side_wall", "bottom_side"] 1: obj_data = ["bottom"] 2: obj_data = ["bottom_wheels"] d: obj_data = ["entry", "bottom"] h: obj_data = ["bottom_wheels"] l: obj_data = ["side_wall_rotated", "bottom_side_rotated", "bottom"] _: obj_data = ["bottom"] objects.push_back({"xform": xform, "data": obj_data}) return objects