Propagation requires full hierarchy traversal
- Dominant language
- Rust
- Stars
- 48.2k
- Forks
- 4.8k
- Avg merge
- 3d 16h
- Merged PRs (30d)
- 171
Description
## What problem does this solve or what need does it fill?
Both visibility and transform propagation require full hierarchy traversals to complete. This is required even if there are no changed components in the hierarchy.
This may be useful in very large worlds with deep hierarchies where the vast majority of the entities in the World are unchanging parts of the environment.
## What solution would you like?
A user-facing way of marking static parts of the hierarchy. Perhaps a `Static` marker component in which halts all propagation systems, forcing it and all it's descendants to be ignored during propagation.
These components can also be flags for rendering and physics for things you generally expect to not change over the lifetime of the app after loading.
## What alternative(s) have you considered?
Continue with the status quo.
## Additional context
Other engines seem to have a similar concept:
- Unity has [static GameObjects](https://docs.unity3d.com/Manual/StaticObjects.html) which enables similar optimizations in rendering.
- Unreal has [static meshes](https://docs.unrealengine.com/4.27/en-US/WorkingWithContent/Types/StaticMeshes/), though primarily used for rendering.
- Godot has [static bodies](https://docs.godotengine.org/en/stable/classes/class_staticbody.html) which are only used for physics.
Contributor guide
Research direction
Begin by locating the visibility and transform propagation systems and tracing how they decide which hierarchy nodes to visit. Compare the proposed Static marker and descendant-skipping behavior with existing rendering and physics flags. Done means a concrete user-facing design and implementation scope for marking static hierarchy parts and excluding them from propagation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- game-dev, performance
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100