Skip to content

Commit a283281

Browse files
committed
Test fixes
1 parent 5e2dbee commit a283281

4 files changed

Lines changed: 23 additions & 12 deletions

File tree

Include/PipeECS.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ namespace p
251251
void Create(TView<Id> newIds);
252252
bool Remove(TView<const Id> ids);
253253
bool DeferredRemove(TView<const Id> ids);
254-
void FlushDeferredRemoves();
254+
void FlushDeferredRemovals();
255255
const TArray<Id>& GetDeferredRemovals() const
256256
{
257257
return deferredRemoves;
@@ -2207,7 +2207,8 @@ namespace p
22072207
P_API void AddId(EntityContext& ctx, TView<Id> Ids);
22082208

22092209
// Remove
2210-
P_API void RmId(EntityContext& ctx, TView<const Id> ids, RmIdFlags flags = RmIdFlags::None);
2210+
P_API bool RmId(EntityContext& ctx, TView<const Id> ids, RmIdFlags flags = RmIdFlags::None);
2211+
P_API bool FlushDeferredRemovals(EntityContext& ctx);
22112212
#pragma endregion Editing
22122213

22132214

Src/PipeECS.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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)

Tests/ECS/Filtering.spec.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ go_bandit([]() {
9999
RmId(ctx, id3); // Remove last in the pool
100100
RmId(ctx, id4); // Remove last in the pool
101101

102-
ctx.FlushDeferredRemoves();
102+
FlushDeferredRemovals(ctx);
103103

104104
TArray<Id> ids = FindAllIdsWith<TypeB>(access);
105105
AssertThat(ids.Contains(NoId), Is().False());

Tests/ECS/IdRegistry.spec.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,9 @@ go_bandit([]() {
9191

9292
it("Removed id index gets reused", [&]() {
9393
IdRegistry ids;
94-
ids.Create(1);
94+
ids.Create();
9595
Id id = ids.Create();
96-
ids.Create(1);
96+
ids.Create();
9797
AssertThat(ids.Remove(id), Is().True());
9898
Id id2 = ids.Create();
9999
AssertThat(id2.GetIndex(), Equals(id.GetIndex()));
@@ -103,13 +103,13 @@ go_bandit([]() {
103103

104104
it("Deferred removed id index doesn't get reused until flushed", [&]() {
105105
IdRegistry ids;
106-
ids.Create(1);
106+
ids.Create();
107107
Id id = ids.Create();
108-
ids.Create(1);
108+
ids.Create();
109109
AssertThat(ids.DeferredRemove(id), Is().True());
110110
Id id2 = ids.Create();
111111
AssertThat(id2.GetIndex(), !Equals(id.GetIndex()));
112-
ids.FlushDeferredRemoves();
112+
ids.FlushDeferredRemovals();
113113
Id id3 = ids.Create();
114114
AssertThat(id3.GetIndex(), Equals(id.GetIndex()));
115115
Id id4 = ids.Create();

0 commit comments

Comments
 (0)