public AppNodeImpl(AppNodeImpl parentAppNode) { this.discardableImpl_ = parentAppNode.discardableImpl_.CreateChild(); this.discardableImpl_.OnDiscard += _ => this.Discard_(); this.listener_ = IEventFactory.INSTANCE.NewListener(this.discardableImpl_); this.downwardRelay_ = IEventFactory.INSTANCE.NewRelay(this.discardableImpl_); this.SetParent(parentAppNode); this.forOnTickMethod_ = new ForOnTickMethodImpl(this); }
private void SetParent_(AppNodeImpl parent) { if (this.IsDiscarded) { return; } // TODO: Check no loops! // TODO: Leverage discardableImpl hierarchy?? // Clean up old parent if (this.parent_ != null) { this.downwardRelay_.RemoveRelaySource(this.parent_.downwardRelay_); } // Set new parent this.parent_ = parent; this.downwardRelay_.AddRelaySource(this.parent_.downwardRelay_); this.discardableImpl_.SetParent(this.parent_.discardableImpl_); }
public ForOnTickMethodImpl(AppNodeImpl parent) { this.parent_ = parent; }