private SRDSessionHandler() { var isLinked = SRDCorePlugin.LinkXrLibraryWin64(); if (!isLinked && _isLibraryLinked) { SRDHelper.PopupMessageAndForceToTerminate(SRDHelper.SRDMessages.DLLNotFoundError); _isLibraryLinked = false; return; } _isLibraryLinked = isLinked; _prevState = SrdXrSessionState.SESSION_STATE_MAX_ENUM; _srdSubsystems = new List <ISRDSubsystem>(); }
public void PollEvent() { SrdXrEventDataBuffer data; while (SRDCorePlugin.PollEvent(_sessionHandle, out data) == SrdXrResult.SUCCESS) { if ((_prevState == SrdXrSessionState.SESSION_STATE_MAX_ENUM) || (data.state != _prevState)) { if (OnSessionStateChangedEvent != null) { OnSessionStateChangedEvent.Invoke(_prevState, data.state); } _prevState = data.state; } if (data.state == SrdXrSessionState.SESSION_STATE_LOSS_PENDING) { SrdXrDeviceState device_state; var result = SRDCorePlugin.GetDeviceState(_sessionHandle, out device_state); var msg = ""; if (result != SrdXrResult.SUCCESS) { msg = string.Format("Fail to get DeviceInfo: {0}", result); } else { if (device_state.connection_state == SrdXrDeviceConnectionState.DEVICE_NOT_CONNECTED) { msg += SRDHelper.SRDMessages.DeviceInterruptionError + " "; } if (device_state.power_state == SrdXrDevicePowerState.DEVICE_POWER_OFF) { msg += SRDHelper.SRDMessages.DeviceNotFoundError; } } SRDHelper.PopupMessageAndForceToTerminate(msg); } } }