Add nexus events
This commit is contained in:
parent
4a2ad80dd6
commit
99d08c5139
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue