#!/usr/bin/env python3 """Build three standalone liminal SurfaceWorld fixtures from the owner input.""" from __future__ import annotations import argparse import json import os from pathlib import Path ROOT = Path(__file__).resolve().parents[4] OWNER = Path(os.environ.get("VOXELFORGE_OWNER_DATA", ROOT / "Standalone/data/owner_world.json")) OUT_DEFAULT = Path(os.environ.get("VOXELFORGE_VERIFY_OUT", ROOT / "Saved/Linux/l141")) FLAT_FIELD = { "version": 1, "kind": "flatField", "minimum_arena_clearance_m": 0.0, } def main() -> None: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("--out", type=Path, default=OUT_DEFAULT / "fixtures") args = parser.parse_args() args.out.mkdir(parents=True, exist_ok=True) base = json.loads(OWNER.read_text(encoding="utf-8")) flat = dict(base) flat["surface_profile_override"] = dict(FLAT_FIELD) flat["motif_family_override"] = { "version": 1, "strate_index": 0, "placement_policy": "seed,strate,stable_id", "motifs": [ { "stable_id": "liminal/oversized-familiar-monolith-v1", "kind": "cappedCylinder", "radius_m": 1.6, "height_m": 26.0, "route_side_offset_m": 42.0, "placement_radius_m": 0.0, "fillet_radius_m": 0.6, "blend_width_m": 1.2, "minimum_spacing_m": 0.0, "yaw_quarter_turns": 0, "attachment": "seated_floor", }, ], } hills = dict(base) hills["surface_profile_override"] = { "version": 1, "kind": "periodicHills", "amplitude_x_m": 2.2, "amplitude_y_m": 2.2, "wavelength_x_m": 80.0, "wavelength_y_m": 80.0, "minimum_arena_clearance_m": 0.0, } road = dict(base) road["surface_profile_override"] = dict(FLAT_FIELD) road["liminal_road_override"] = { "stable_id": "liminal/raised-road-v1", "strate_index": 0, "position_xy_m": [240.0, 180.0], "half_extents_m": [32.5, 3.0, 0.75], "deck_height_above_field_m": 22.0, "yaw_quarter_turns": 0, } for name, fixture in (("flatField-monolith", flat), ("periodicHills", hills), ("raised-road", road)): path = args.out / f"liminal-{name}.json" path.write_text(json.dumps(fixture, indent=2) + "\n", encoding="utf-8") print(f"[L141Fixture] name={name} file={path} status=PASS") if __name__ == "__main__": main()