-
-
Notifications
You must be signed in to change notification settings - Fork 3.9k
Remove insert_or_spawn
function family
#18148
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
base: main
Are you sure you want to change the base?
Remove insert_or_spawn
function family
#18148
Conversation
removed |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a comment from Cart in #18054 saying
If we plan on removing support for this, we should also look into some of the "invalid checks" in Entities. Iirc we added additional checking to support this scenario, and we might be able to simplify / optimize some things. Worth digging up the PRs that introduced those changes.
Did someone have a look, if not we could maybe just track this somewhere ?
Yup! I've rewritten most of the Also marking as ready for final since it has two approvals. (I think that's how that's supposed to work.) |
Objective
Based on and closes #18054, this PR builds on #18035 and #18147 to remove:
Commands::insert_or_spawn_batch
Entities::alloc_at_without_replacement
Entities::alloc_at
entity::AllocAtWithoutReplacement
World::insert_or_spawn_batch
World::insert_or_spawn_batch_with_caller
Testing
Just removing unused, deprecated code, so no new tests. Note that as of writing, #18035 is still under testing and review.
Future Work
Per this comment on #18054, there may be additional performance improvements possible to the entity allocator now that
alloc_at
no longer is supported. At a glance, I don't see anything obvious to improve, but it may be worth further investigation in the future.Migration Guide
The following deprecated functions have been removed:
Commands::insert_or_spawn_batch
World::insert_or_spawn_batch
World::insert_or_spawn_batch_with_caller
These functions, when used incorrectly, can cause major performance problems and are generally viewed as anti-patterns and foot guns.
Instead of these functions consider doing one of the following:
Option A) Instead of despawing entities and re-spawning them at a particular id, insert the new
Disabled
component without despawning the entity, and usetry_insert_batch
orinsert_batch
and removeDisabled
instead of re-spawning it.Option B) Instead of giving special meaning to an entity id, simply use
spawn_batch
and ensure entity references are valid when despawning.