diff options
| author | Danilo M. <danix@danix.xyz> | 2026-10-28 10:43:51 +0100 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-10-28 10:43:51 +0100 |
| commit | d368de4b30d8a1dc9bb72ba45c55b07d3f034c82 (patch) | |
| tree | 66c586ec73f84f4c30b9d2da4bfa332cc93c7ec0 /generat3d | |
| parent | 91c87e7dbcb3029d23ce0baa9b2bcab1394381c3 (diff) | |
| download | generat3D-d368de4b30d8a1dc9bb72ba45c55b07d3f034c82.tar.gz generat3D-d368de4b30d8a1dc9bb72ba45c55b07d3f034c82.zip | |
Register figure node formulas after the figure exists
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Diffstat (limited to 'generat3d')
| -rw-r--r-- | generat3d/scene.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/generat3d/scene.py b/generat3d/scene.py index 03b92f7..25e4b61 100644 --- a/generat3d/scene.py +++ b/generat3d/scene.py @@ -115,8 +115,11 @@ class _Loader: if len(figs) > 1: raise Error(f"{self.path}: v1 handles one figure per scene, found {len(figs)}") self.inst = {figs[0][0]["id"], figs[0][0].get("name")} - {None} + self.pending = [] self.figure = self._figure(*figs[0]) self.ids = {n.id for n in self.figure.nodes} | {n.name for n in self.figure.nodes} + for f, source in self.pending: + self._formula(f, source) self._morphs(figs[0][1]) posed = self._dials() or posed if posed: @@ -143,7 +146,7 @@ class _Loader: for a, v in zip(AXES, _channel(n, ch)): self.graph.add_prop(key(n["id"], n["id"], f"{ch}/{a}"), v) for f in n.get("formulas", []): - self._formula(f, fpath) + self.pending.append((f, fpath)) return Figure(asset["id"], inst.get("name", asset.get("name", asset["id"])), inst.get("label", asset.get("label", asset["id"])), np.array(geom["vertices"]["values"], dtype=float), |
