Repository navigation
scene: fix indexed SceneScript layer queries and object identity - #155
Merged
Merged
Conversation
nztom
marked this pull request as ready for review
October 6, 2026 04:03
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
SceneScripts that call
thisScene.getLayerCount()currently fail during initialization because the method is missing. NumericgetLayer(index)is treated as a name, and enumeration includes internal camera nodes. These behaviours can leave scripted layers hidden or select the wrong layer. Repeated lookups also return different JavaScript objects for the same native layer.This change adds layer counting and integer-index lookup, sharing traversal order and layer membership with enumeration and its custom
includes(). Authored and dynamically created layers are tracked separately from internal nodes. Native layer wrappers are cached sothisLayer, named lookup, indexed lookup, and enumeration agree on object identity; property-script wrappers retain their separate animation behaviour.Script-bound layers are registered before module evaluation and initialization, including scripts created inside a layer factory. Root replacement preserves cached identity for retained layers and releases discarded cache references. Unbound queries return empty defaults, while standalone runtimes retain tree queries.
The implementation reuses the existing
rstdcontainers, node accessors, QuickJS wrapper helpers, andTreeContains. No imports or dependencies are added.Validation
lito format --checkpasses with upstream's pinned clang-format 22.1.5 (229 files).API reference: Wallpaper Engine IScene.