Comments (5)
If we're asking the user to insert a resource to transition, I would personally expect the existence of the NextState
resource to indicate that a transition should occur. IMO we should simply not insert this resource by default, and remove it once the transition has processed.
from iyes_loopless.
OK, reverted back to the 0.1 states behavior, except now without the next != current
check (transitioning to the same state as the current is allowed). The NextState
behaves as you described: insert it to trigger a transition, and it gets auto-removed when the transition is performed.
I consider this bug important enough that I decided to release a 0.3.0
immediately, just for this.
from iyes_loopless.
Ways to fix this:
- Treat switching a state to itself as an edge-case and require users to set another resource (e.g.
insert_resource(NextState(same_state))
+insert_resource(SameStateSwitch(true))
) in order to execute exit and enter stages.
1.1. Pros: Only need to check for resourceSameStateSwitch(true)
if current and new state are equal.
1.2. Cons: Clunky if you need to switch state to itself intentionally. New users need to discover the need forSameStateSwitch
resource. - Turn
NextState<T>(pub T)
intoNextState<T>(pub Option<T>)
.
2.1. Pros: Simple to use.
2.2. Cons: Matching anOption
is not free. (It doesn't cost much though)
from iyes_loopless.
That was the behavior in 0.1. I changed it, because "repeatedly inserting and removing a resource" (effectively "using a resource as an event") felt weird to me. But you are right, why not, it makes sense. In retrospect, if we are gonna use a resource to trigger a transition, that makes more sense. I guess I should bring it back.
from iyes_loopless.
I confirmed that the fix works. Only the initial state's enter stage is run at the start, and it only ran once.
from iyes_loopless.
Related Issues (20)
- Ambiguity when mixing exclusive and normal systems HOT 4
- Change fixed timestep duration at runtime HOT 1
- Is there alternative to bevy's state stack? HOT 2
- Missing Downcast: StateTransitionStageLabel HOT 4
- Trait bounds not satisfied in main? HOT 1
- "State Transition not found" when adding an enter_system HOT 3
- Cannot use Run_If with systems taking Local<LocalStateType> HOT 2
- Support for Custom Command Queues? ( I have an Implementation ) HOT 4
- Consume events in run_on_event condition
- Can't use system.after() within a ConditionSet HOT 2
- Compile failure when default features are turned off HOT 1
- ConditionSet systems without run_if conditions require into_conditional HOT 1
- Build fails without "states" feature
- Adding systems to one of the stages in a `FixedTimestepStage`?
- Panic: State Transition Stage not found (assuming auto-added label) HOT 4
- Bevy 0.9 support HOT 1
- Cannot use before/after in ConditionSet HOT 1
- Documentation Clarification: What ordering is guaranteed? When can things run in parallel?
- Running a system after another system (that is in another crate) HOT 1
- Accumulator not updating between fixed timestep ticks HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from iyes_loopless.