Beispiel #1
0
void OSVRInterface::RefreshCapabilities()
{
#if OSVR_ENABLED

	if (OSVRClientInterface == nullptr)
		return;

#if 0
	// Detection currently doesn't work (v0.1-261-gb6c8db7)

	OSVR_TimeValue Time;
	OSVR_PositionState Position;
	OSVR_OrientationState Orientation;
	OSVR_ButtonState Button;
	OSVR_AnalogState Analog;

	OSVR_ReturnCode HasPositonState = osvrGetPositionState(OSVRClientInterface, &Time, &Position);
	Capabilities |= (HasPositonState == OSVR_RETURN_SUCCESS) ? POSITION_STATE_AVAILABLE : 0;

	OSVR_ReturnCode HasOrientationState = osvrGetOrientationState(OSVRClientInterface, &Time, &Orientation);
	Capabilities |= (HasOrientationState == OSVR_RETURN_SUCCESS) ? ORIENTATION_STATE_AVAILABLE : 0;

	OSVR_ReturnCode HasButtonState = osvrGetButtonState(OSVRClientInterface, &Time, &Button);
	Capabilities |= (HasButtonState == OSVR_RETURN_SUCCESS) ? BUTTON_STATE_AVAILABLE : 0;

	OSVR_ReturnCode HasAnalogState = osvrGetAnalogState(OSVRClientInterface, &Time, &Analog);
	Capabilities |= (HasAnalogState == OSVR_RETURN_SUCCESS) ? ANALOG_STATE_AVAILABLE : 0;
#else
	Capabilities = POSITION_STATE_AVAILABLE | ORIENTATION_STATE_AVAILABLE | BUTTON_STATE_AVAILABLE | ANALOG_STATE_AVAILABLE;
#endif

#endif // OSVR_ENABLED
}
	OSVR_ReturnCode CombinedPositionReader::update(OSVR_PositionState* position) {
		OSVR_PositionState position_x;
		OSVR_PositionState position_y;
		OSVR_PositionState position_z;

		OSVR_TimeValue timestamp;

		OSVR_ReturnCode xret = osvrGetPositionState(m_positions[0], &timestamp, &position_x);
		OSVR_ReturnCode yret = osvrGetPositionState(m_positions[1], &timestamp, &position_y);
		OSVR_ReturnCode zret = osvrGetPositionState(m_positions[2], &timestamp, &position_z);

		if (xret == OSVR_RETURN_SUCCESS) {
			osvrVec3SetX(position, osvrVec3GetX(&position_x));
		}
		if (yret == OSVR_RETURN_SUCCESS) {
			osvrVec3SetY(position, osvrVec3GetY(&position_y));
		}
		if (zret == OSVR_RETURN_SUCCESS) {
			osvrVec3SetZ(position, osvrVec3GetZ(&position_z));
		}

		return OSVR_RETURN_SUCCESS;
	}
Beispiel #3
0
bool OSVRInterface::GetPosition(FVector& Value, bool Latest) const
{
	if (Latest)
	{
#if OSVR_ENABLED
		OSVR_TimeValue Time;
		OSVR_PositionState Position;
		OSVR_ReturnCode ReturnCode = osvrGetPositionState(OSVRClientInterface, &Time, &Position);

		Value = OSVR2FVector(Position);

		return ReturnCode == OSVR_RETURN_SUCCESS;
#endif // OSVR_ENABLED
	}
	else
	{
		Value = PoseState.GetLocation();
	}

	return HasPositionState();
}
	OSVR_ReturnCode SinglePositionReader::update(OSVR_PositionState* position) {
		OSVR_TimeValue timestamp;

		return osvrGetPositionState(m_position, &timestamp, position);
	}