-
Notifications
You must be signed in to change notification settings - Fork 66
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
rc_event_queue #32
base: main
Are you sure you want to change the base?
rc_event_queue #32
Conversation
Thanks for creating this RFC - how events interact with 'asynchronous' systems is a real problem area and I'm glad to have more suggests in this space. However there is a licensing issue which needs to be resolved before we can proceed - Note for the author: Please provide a license for For other readers: I should strongly advise against reading the code of |
What's a point of dual licensing? Isn't MIT more permissive than Apache2.0? Initially I was going to license just under MIT.
What is that mean? |
Apache-2.0 has extra rules regarding patents. IANAL, but I think it roughly prevents contributors from contributing code to which a patent they own applies without giving a patent grant to all users of the code. It is incompatible with GPL-2.0 according to some lawyers though, hence the dual license with MIT which is clearly compatible. |
License added. If everything goes well - it should become cargo crate. So it can be just another dependency for project, like every else. |
By the way, some cargo crates with MIT/APACHE2 have dependencies on MIT only crates (including bevy and rc_event_queue)... Is this ok? |
@alice-i-cecile You said something about that rc_event_queue could be useful for something UI specific. Did you mean Entity Events? Cuurently, EventQueue must be But I think I can make it non-pinned, you'll just have to provide Reader an |
Ah right! Yes, per-entity events were particularly blocked on solving the questions around event lifespan, as I found they tended to have more unusual access patterns. And then in turn, I felt that storing events on entities might be quite useful for handling UI event dispatching.
Interesting, that makes sense. FWIW, |
Main overhead with Arc is construction time, everything else is mostly non-observable, at least for current Bevy Events use-case. But if you really plan to put EventQueue into Component and add/remove components dynamically, that overhead is a thing. So I would say, realistically it would be 128-256 bytes on stack. Could that work for your cause? |
I think I bring So .... I thought, what about having some new EventsV2 alongside with the current one? This way - new events will not be a braking change.... |
I would be hesitant to do that; this should work fine as an external crate if we want early usage feedback. Keeping both in the engine leads to the sort of caveats and confusion you tend to see in e.g. Unity, where you have two very similar but subtly different tools for the job, whose usage is mixed throughout the code base. |
FYI @tower120, we're mostly just blocked on "decision-making attention": there are a large number of other pressing ECS needs that have been getting more attention right now (bevyengine/bevy#2801) and Cart is focusing on rendering to get 0.6 released <3 |
I see... And API changes, like making |
RENDERED
This is rather true RFC (request for comments), than specification, at least for now.
It is somewhat close to #17 ... but "implementation" is different.