bevyengine / bevyengine/bevy

Increase structure for schedule executors to reduce boilerplate and ensure consistency

Open
#18,453 8 comments 0 reactions 1 assignee Claimed by @alice-i-cecile View on GitHub
A-ECS C-Code-Quality D-Modest S-Ready-For-Implementation
Dominant language
Rust
Stars
48.2k
Forks
4.8k
Avg merge
3d 22h
Merged PRs (30d)
161

Description

## Problem

When implementing a new system executor, users (and engine devs) need to ensure a wide array of functionality and behavior is followed. These requirements are scattered across bevy_ecs, leading to "copy-paste an existing executor" as the only sensible strategy.

Similarly, when attempting to make changes to this code, engine devs need to go and carefully manually implement these changes across multiple call sites, being sure to maintain consistency.

## Proposed solution

More behavior should be moved out of `SystemExecutor::run`, and into new methods on the `SystemExecutor` trait. Ideally, `SystemExecutor::run`'s default implementation can call all of these submethods in order to achieve the correct behavior.

Additionally, `evaluate_and_fold_conditions` should be moved out into a public helper and reused across executors.

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.