bevyengine / bevyengine/bevy

Access registered systems.

Open
#15,855 3 comments 0 reactions 0 assignees View on GitHub
A-ECS C-Feature S-Needs-Design X-Contentious
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?

Systems part of `Schedule` can be accessed and "inspected". That is you can get some info of the system from `System` trait.
But registered systems are opaque because their storage is private. They exist as entities and are stored inside `RegisteredSystem` component.

## What solution would you like?

Make the `RegisteredSystem` component `pub` (and re-export it ?) and add method to borrow stored system `pub fn system_ref(&self) -> &BoxedSystem;` or `pub fn system_ref(&self) -> &dyn System;`

## What alternative(s) have you considered?

EDIT:
If users should have same rights as bevy then I think it should be pub and it's members too. Then there would be no need to system getter.
Or maybe add method which converts `RegisteredSystem` to `RemovedSystem` ? `pub fn remove(self) -> RemovedSystem;`

Which one ?

## Additional context

None.

Contributor guide

Open the contributing guide

Research direction

Start by locating the public `RegisteredSystem` component and the `System` trait in the Bevy source, then inspect how registered systems are stored and exposed. Review the issue discussion before choosing an API for borrowing, making fields public, or converting to `RemovedSystem`; done means the chosen access path is clearly defined and supported by appropriate tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
api, game-dev
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.