@@ -154,7 +154,7 @@ namespace p
154154 return (deferredRemoves.Size () - lastPending) > 0 ;
155155 }
156156
157- void IdRegistry::FlushDeferredRemoves ()
157+ void IdRegistry::FlushDeferredRemovals ()
158158 {
159159 available.ReserveMore (deferredRemoves.Size ());
160160 for (Id id : deferredRemoves)
@@ -1098,7 +1098,7 @@ namespace p
10981098 ctx.GetIdRegistry ().Create (ids);
10991099 }
11001100
1101- void RmId (EntityContext& ctx, TView<const Id> ids, RmIdFlags flags)
1101+ bool RmId (EntityContext& ctx, TView<const Id> ids, RmIdFlags flags)
11021102 {
11031103 TArray<Id> allIds; // Only used when removing children. Here for scope purposes.
11041104 if (HasFlag (flags, p::RmIdFlags::RemoveChildren))
@@ -1115,14 +1115,24 @@ namespace p
11151115 {
11161116 pool.GetPool ()->Remove (ids);
11171117 }
1118- ctx.GetIdRegistry ().Remove (ids);
1118+ return ctx.GetIdRegistry ().Remove (ids);
11191119 }
11201120 else
11211121 {
1122- ctx.GetIdRegistry ().DeferredRemove (ids);
1122+ return ctx.GetIdRegistry ().DeferredRemove (ids);
11231123 }
11241124 }
11251125
1126+ bool FlushDeferredRemovals (EntityContext& ctx)
1127+ {
1128+ TView<Id> ids = ctx.GetIdRegistry ().GetDeferredRemovals ();
1129+ for (auto & pool : ctx.GetPools ())
1130+ {
1131+ pool.GetPool ()->Remove (ids);
1132+ }
1133+ ctx.GetIdRegistry ().FlushDeferredRemovals ();
1134+ }
1135+
11261136
11271137 void AttachId (
11281138 TAccessRef<TWrite<CChild>, TWrite<CParent>> access, Id parent, TView<const Id> children)
0 commit comments