Add nexus events

This commit is contained in:
Christian Treffs 2019-10-01 08:13:05 +02:00
parent 4a2ad80dd6
commit 99d08c5139
2 changed files with 24 additions and 1 deletions

View File

@ -15,14 +15,27 @@ extension Nexus {
let (isNewMember, _) = parentChildrenMap[parent.identifier]!.insert(child.identifier)
inserted = isNewMember
}
if inserted {
delegate?.nexusEvent(ChildAdded(parent: parent.identifier, child: child.identifier))
}
return inserted
}
public final func removeChild(_ child: Entity, from parent: Entity) -> Bool {
return parentChildrenMap[parent.identifier]?.remove(child.identifier) != nil
return removeChild(child.identifier, from: parent.identifier)
}
@discardableResult
public final func removeChild(_ child: EntityIdentifier, from parent: EntityIdentifier) -> Bool {
let removed: Bool = parentChildrenMap[parent]?.remove(child) != nil
if removed {
delegate?.nexusEvent(ChildRemoved(parent: parent, child: child))
}
return removed
}
public final func removeAllChildren(from parent: Entity) {
parentChildrenMap[parent.identifier]?.forEach { removeChild($0, from: parent.identifier) }
return parentChildrenMap[parent.identifier] = nil
}

View File

@ -46,3 +46,13 @@ public struct FamilyCreated: NexusEvent {
public struct FamilyDestroyed: NexusEvent {
public let family: FamilyTraitSet
}
public struct ChildAdded: NexusEvent {
public let parent: EntityIdentifier
public let child: EntityIdentifier
}
public struct ChildRemoved: NexusEvent {
public let parent: EntityIdentifier
public let child: EntityIdentifier
}