Revert family removal

This commit is contained in:
Christian Treffs 2020-04-30 22:18:46 +02:00
parent 68b79de729
commit 041d556dc9
No known key found for this signature in database
GPG Key ID: 49A4B4B460BE3ED4
3 changed files with 3 additions and 17 deletions

View File

@ -13,7 +13,6 @@ extension Nexus {
} }
familyMembersByTraits[traits] = UnorderedSparseSet<EntityIdentifier>() familyMembersByTraits[traits] = UnorderedSparseSet<EntityIdentifier>()
defer { delegate?.nexusEvent(FamilyCreated(family: traits)) }
update(familyMembership: traits) update(familyMembership: traits)
} }
@ -67,10 +66,5 @@ extension Nexus {
final func remove(entityWithId entityId: EntityIdentifier, fromFamilyWithTraits traits: FamilyTraitSet) { final func remove(entityWithId entityId: EntityIdentifier, fromFamilyWithTraits traits: FamilyTraitSet) {
familyMembersByTraits[traits]!.remove(at: entityId.id) familyMembersByTraits[traits]!.remove(at: entityId.id)
if familyMembersByTraits[traits]!.isEmpty {
// delete family if no more entities are present
familyMembersByTraits[traits] = nil
delegate?.nexusEvent(FamilyDestroyed(family: traits))
}
} }
} }

View File

@ -35,14 +35,6 @@ public struct FamilyMemberRemoved: NexusEvent {
public let from: FamilyTraitSet public let from: FamilyTraitSet
} }
public struct FamilyCreated: NexusEvent {
public let family: FamilyTraitSet
}
public struct FamilyDestroyed: NexusEvent {
public let family: FamilyTraitSet
}
public struct ChildAdded: NexusEvent { public struct ChildAdded: NexusEvent {
public let parent: EntityIdentifier public let parent: EntityIdentifier
public let child: EntityIdentifier public let child: EntityIdentifier

View File

@ -73,11 +73,11 @@ class FamilyTests: XCTestCase {
XCTAssertEqual(nexus.numComponents, 1) XCTAssertEqual(nexus.numComponents, 1)
XCTAssertEqual(nexus.numEntities, 1) XCTAssertEqual(nexus.numEntities, 1)
entity.remove(Position.self) entity.remove(Position.self)
XCTAssertEqual(nexus.numFamilies, 0) XCTAssertEqual(nexus.numFamilies, 1)
XCTAssertEqual(nexus.numComponents, 0) XCTAssertEqual(nexus.numComponents, 0)
XCTAssertEqual(nexus.numEntities, 1) XCTAssertEqual(nexus.numEntities, 1)
nexus.destroy(entity: entity) nexus.destroy(entity: entity)
XCTAssertEqual(nexus.numFamilies, 0) XCTAssertEqual(nexus.numFamilies, 1)
XCTAssertEqual(nexus.numComponents, 0) XCTAssertEqual(nexus.numComponents, 0)
XCTAssertEqual(nexus.numEntities, 0) XCTAssertEqual(nexus.numEntities, 0)
} }
@ -132,7 +132,7 @@ class FamilyTests: XCTestCase {
entity.remove(velocity) entity.remove(velocity)
} }
XCTAssertEqual(familyA.count, 0) XCTAssertEqual(familyA.count, 10)
XCTAssertEqual(familyB.count, 0) XCTAssertEqual(familyB.count, 0)
} }