Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Objective
Currently, calling
insert
on an entity will overwrite any components that share the same type, without any way to specify whether that should be the case. There are a couple of workarounds, most of which (in my experience) are either ugly or trigger unwanted change detection. This is less than ideal since there are relatively common use cases for wanting to insert a bundle without overwriting, like wanting to insert a bundle into an entity that already has a transform.Solution
insert_unique
command for usage when inserting a bundle without overwriting, e.g:Starting as a draft since this is my first time touching
bevy_ecs
so I kept it totally unobtrusive, originally I wanted to separate chunks into inlined functions but I'd rather hear what you guys have to say first 😄 Feel free to make any edits.