bevyengine / bevyengine/bevy

Share change ticks between systems

Open
#9,857 5 comments 0 reactions 0 assignees View on GitHub
A-ECS C-Feature
Dominant language
Rust
Stars
48.2k
Forks
4.8k
Avg merge
3d 22h
Merged PRs (30d)
161

Description

## What problem does this solve or what need does it fill?

Sometimes you want to add the transform propagation systems to the schedule in multiple places. The transform systems use change detection to not propagate transforms that haven't changed. This will do extra work because the propagation will run for any transforms changed since the current system has run instead of transforms changed since the last time any transform propagation has run.

## What solution would you like?

Probably some type of `AtomicTicks` and `AtomicSystem` that are passed in `System::run`. This is a little tricky since you'd have to clone instances of the system when adding them. For Transform propagation we could potentially store the systems on the Plugin.

## What alternative(s) have you considered?

I was also thinking of an ArcSystem, but I don't think that can work without locking since we take mutable access to a system to update it's archetypes.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.