Update to new storage

This commit is contained in:
Christian Treffs 2020-08-21 16:37:40 +02:00
parent 5a33f1d19c
commit 64aea76a8e
No known key found for this signature in database
GPG Key ID: 49A4B4B460BE3ED4
3 changed files with 5 additions and 5 deletions

View File

@ -22,6 +22,7 @@ extension ComponentIdentifier {
ObjectIdentifier(componentType).hashValue ObjectIdentifier(componentType).hashValue
} }
typealias StableId = UInt64
internal static func makeStableTypeHash(component: Component) -> StableId { internal static func makeStableTypeHash(component: Component) -> StableId {
let componentTypeString = String(describing: type(of: component)) let componentTypeString = String(describing: type(of: component))
return StringHashing.singer_djb2(componentTypeString) return StringHashing.singer_djb2(componentTypeString)

View File

@ -15,7 +15,7 @@ extension Nexus {
var componentInstances: [ComponentIdentifier.StableId: SComponent<SNexus>] = [:] var componentInstances: [ComponentIdentifier.StableId: SComponent<SNexus>] = [:]
var entityComponentsMap: [EntityIdentifier: Set<ComponentIdentifier.StableId>] = [:] var entityComponentsMap: [EntityIdentifier: Set<ComponentIdentifier.StableId>] = [:]
for entitId in self.entityStorage { for entitId in self.componentIdsByEntity.keys {
entityComponentsMap[entitId] = [] entityComponentsMap[entitId] = []
let componentIds = self.get(components: entitId) ?? [] let componentIds = self.get(components: entitId) ?? []
@ -36,8 +36,7 @@ extension Nexus {
let entityIds = sNexus.entities.map { $0.key }.reversed() let entityIds = sNexus.entities.map { $0.key }.reversed()
// FIXME: this does not respect the generator of the target nexus! // FIXME: this does not respect the generator of the target nexus!
self.init(entityStorage: UnorderedSparseSet(), self.init(componentsByType: [:],
componentsByType: [:],
componentsByEntity: [:], componentsByEntity: [:],
entityIdGenerator: DefaultEntityIdGenerator(startProviding: entityIds), entityIdGenerator: DefaultEntityIdGenerator(startProviding: entityIds),
familyMembersByTraits: [:], familyMembersByTraits: [:],

View File

@ -54,7 +54,7 @@ public final class SerializationTests: XCTestCase {
let decoder = JSONDecoder() let decoder = JSONDecoder()
let nexus2: Nexus = try decoder.decode(Nexus.self, from: data) let nexus2: Nexus = try decoder.decode(Nexus.self, from: data)
let firstEntity2 = nexus2.get(entity: firstEntity.identifier)! let firstEntity2 = nexus2.entity(from: firstEntity.identifier)
XCTAssertEqual(firstEntity2.identifier, firstEntity.identifier) XCTAssertEqual(firstEntity2.identifier, firstEntity.identifier)
XCTAssertTrue(firstEntity2.has(Name.self)) XCTAssertTrue(firstEntity2.has(Name.self))
XCTAssertTrue(firstEntity2.has(Position.self)) XCTAssertTrue(firstEntity2.has(Position.self))
@ -62,7 +62,7 @@ public final class SerializationTests: XCTestCase {
XCTAssertEqual(firstEntity2.get(component: Position.self)?.x, 1) XCTAssertEqual(firstEntity2.get(component: Position.self)?.x, 1)
XCTAssertEqual(firstEntity2.get(component: Position.self)?.y, 2) XCTAssertEqual(firstEntity2.get(component: Position.self)?.y, 2)
let secondEntity2 = nexus2.get(entity: secondEntity.identifier)! let secondEntity2 = nexus2.entity(from: secondEntity.identifier)
XCTAssertEqual(secondEntity2.identifier, secondEntity.identifier) XCTAssertEqual(secondEntity2.identifier, secondEntity.identifier)
XCTAssertTrue(secondEntity2.has(Velocity.self)) XCTAssertTrue(secondEntity2.has(Velocity.self))
XCTAssertTrue(secondEntity2.has(Party.self)) XCTAssertTrue(secondEntity2.has(Party.self))