Skip to content

feat(godot): parse .tscn scenes and .tres resources (L2/L4)#52

Merged
sunerpy merged 2 commits into
mainfrom
feat/godot-l2-scene-resource
Jun 25, 2026
Merged

feat(godot): parse .tscn scenes and .tres resources (L2/L4)#52
sunerpy merged 2 commits into
mainfrom
feat/godot-l2-scene-resource

Conversation

@sunerpy

@sunerpy sunerpy commented Jun 25, 2026

Copy link
Copy Markdown
Owner

Summary

Second Godot static-analysis layer — parses scene and resource files into the graph (no engine, deterministic static parsing).

  • .tscn scenes (L2): node tree, script = ExtResource(...) scene→script bindings, [connection signal from to method] signal-connection edges (→ handler method name), groups, and instance=ExtResource(...) instanced-subscene edges.
  • .tres resources (L4): [ext_resource] id-table + script =/property ExtResource(...) → resource→script/resource reference edges, anchored on a lazily-emitted resource marker (zero output when a resource has no references).
  • Shared godot_common.rs (res:// path mapping, quote/attr helpers) reused by all three parsers.

Scope discipline

  • Reuses existing EdgeKind (References/Instantiates) and NodeKind::Constant — no new variants. Hand parser, no new dependency. Tolerant parsing (no panics on malformed). Handler-method/ExtResource targets are emitted as references by name; cross-file symbol resolution is the next layer (post_extract). Existing golden corpora byte-unchanged.

Verification

  • make ci green; godot suites: scene 8/8, resource 7/7, project 8/8 (regression-safe). clippy -D warnings 0; guardrail 0; golden clean.
  • Rebased on latest main (includes the daemon_idle de-flake).

@sunerpy sunerpy merged commit 1269003 into main Jun 25, 2026
4 checks passed
@sunerpy sunerpy deleted the feat/godot-l2-scene-resource branch June 25, 2026 08:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant