Skip to content

Implement efficient node rendering and a basic interaction API#2

Merged
TheDudeFromCI merged 8 commits intoTheDudeFromCI:mainfrom
KrLiam:render
Jan 11, 2026
Merged

Implement efficient node rendering and a basic interaction API#2
TheDudeFromCI merged 8 commits intoTheDudeFromCI:mainfrom
KrLiam:render

Conversation

@KrLiam
Copy link
Contributor

@KrLiam KrLiam commented Jan 9, 2026

This pull request introduces the following changes:

  • Split node spawning from scope resolution into two independent systems.
  • Optimize node property modifications, allowing partial property updates without node respawn.
  • Add robust scope-based variable/property resolution for styles, widgets and layouts.
  • Resolve variables using dependency graphs and topological sorting to guarantee evaluation correctness.
  • Allow classes to be changed during runtime to unlock dynamic style activation/deactivations.
  • Automatically insert Bevy's Interaction component on elements with the interactable class.
  • Add the hovered and pressed classes to elements based on their interaction state.
  • Add class-related API to NekoUINodes for adding, removing, toggling and testing for classes in elements during runtime.

KrLiam added 8 commits January 5, 2026 15:53
create render module; spawn entities with default components and only update active properties
build a scope tree during compile time, build a dependency graph, compute a topological sort for evaluating variables in the dependency graph, refactor elements and styles to use scopes, split node spawning from variable resolution, make global variable updates only trigger variable resolution, trigger node property updates when targetted scopes change (element or active styles), add animated and animated_base example to compare lib overhead
@TheDudeFromCI TheDudeFromCI merged commit 9aad6a2 into TheDudeFromCI:main Jan 11, 2026
1 check failed
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.

2 participants