Revert family removal
This commit is contained in:
parent
68b79de729
commit
041d556dc9
|
|
@ -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))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue