public PortalSpaceContinuation(
            PortalEventType expectedPortalEventType,
            Action<object> onEventAction,
            Action<object> onTimeoutAction,
            int millisecondsTimeout,
            object stateTag)
        {
            this._expectedPortalEventType = expectedPortalEventType;
            this._onEventAction = onEventAction;
            this._onTimeoutAction = onTimeoutAction;
            this._stateTag = stateTag;

            this._timeoutTimer = new Timer(this.TimerCallback, stateTag, millisecondsTimeout, Timeout.Infinite);

            REPlugin.Instance.Events.Decal.ChangePortalMode += this.CharacterFilter_ChangePortalMode;
        }
 public static IWaiter Begin(PortalEventType expecPortalEventType)
 {
     return new PortalSpaceWaiter(expecPortalEventType);
 }
 public PortalSpaceWaiter(PortalEventType expectedPortalEventType)
 {
     this._expectedPortalEventType = expectedPortalEventType;
     REPlugin.Instance.CharacterFilter.ChangePortalMode += this.CharacterFilter_ChangePortalMode;
 }