/* This file is auto-generated, do not edit. */ #include #include #include "vrclient_private.h" #include "flatapi.h" WINE_DEFAULT_DEBUG_CHANNEL(vrclient); DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_003_SetActionManifestPath, 8) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_003_GetActionSetHandle, 12) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_003_GetActionHandle, 12) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_003_GetInputSourceHandle, 12) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_003_UpdateActionState, 16) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_003_GetDigitalActionData, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_003_GetAnalogActionData, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_003_GetPoseActionData, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_003_GetSkeletalActionData, 36) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_003_GetSkeletalActionDataCompressed, 32) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_003_UncompressSkeletalActionData, 24) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_003_TriggerHapticVibrationAction, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_003_GetActionOrigins, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_003_GetOriginLocalizedName, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_003_GetOriginTrackedDeviceInfo, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_003_ShowActionOrigins, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_003_ShowBindingsForActionSet, 24) uint32_t __thiscall winIVRInput_IVRInput_003_SetActionManifestPath(struct w_steam_iface *_this, const char *pchActionManifestPath) { struct IVRInput_IVRInput_003_SetActionManifestPath_params params = { .linux_side = _this->u_iface, .pchActionManifestPath = pchActionManifestPath, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_003_SetActionManifestPath, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_003_GetActionSetHandle(struct w_steam_iface *_this, const char *pchActionSetName, uint64_t *pHandle) { struct IVRInput_IVRInput_003_GetActionSetHandle_params params = { .linux_side = _this->u_iface, .pchActionSetName = pchActionSetName, .pHandle = pHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_003_GetActionSetHandle, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_003_GetActionHandle(struct w_steam_iface *_this, const char *pchActionName, uint64_t *pHandle) { struct IVRInput_IVRInput_003_GetActionHandle_params params = { .linux_side = _this->u_iface, .pchActionName = pchActionName, .pHandle = pHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_003_GetActionHandle, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_003_GetInputSourceHandle(struct w_steam_iface *_this, const char *pchInputSourcePath, uint64_t *pHandle) { struct IVRInput_IVRInput_003_GetInputSourceHandle_params params = { .linux_side = _this->u_iface, .pchInputSourcePath = pchInputSourcePath, .pHandle = pHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_003_GetInputSourceHandle, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_003_UpdateActionState(struct w_steam_iface *_this, VRActiveActionSet_t_1015 *pSets, uint32_t unSizeOfVRSelectedActionSet_t, uint32_t unSetCount) { struct IVRInput_IVRInput_003_UpdateActionState_params params = { .linux_side = _this->u_iface, .pSets = pSets, .unSizeOfVRSelectedActionSet_t = unSizeOfVRSelectedActionSet_t, .unSetCount = unSetCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_003_UpdateActionState, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_003_GetDigitalActionData(struct w_steam_iface *_this, uint64_t action, w_InputDigitalActionData_t *pActionData, uint32_t unActionDataSize) { w_InputDigitalActionData_t w_pActionData; struct IVRInput_IVRInput_003_GetDigitalActionData_params params = { .linux_side = _this->u_iface, .action = action, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_003_GetDigitalActionData, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_003_GetAnalogActionData(struct w_steam_iface *_this, uint64_t action, w_InputAnalogActionData_t *pActionData, uint32_t unActionDataSize) { w_InputAnalogActionData_t w_pActionData; struct IVRInput_IVRInput_003_GetAnalogActionData_params params = { .linux_side = _this->u_iface, .action = action, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_003_GetAnalogActionData, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_003_GetPoseActionData(struct w_steam_iface *_this, uint64_t action, uint32_t eOrigin, float fPredictedSecondsFromNow, w_InputPoseActionData_t *pActionData, uint32_t unActionDataSize) { w_InputPoseActionData_t w_pActionData; struct IVRInput_IVRInput_003_GetPoseActionData_params params = { .linux_side = _this->u_iface, .action = action, .eOrigin = eOrigin, .fPredictedSecondsFromNow = fPredictedSecondsFromNow, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_003_GetPoseActionData, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_003_GetSkeletalActionData(struct w_steam_iface *_this, uint64_t action, uint32_t eBoneParent, float fPredictedSecondsFromNow, w_InputSkeletonActionData_t *pActionData, uint32_t unActionDataSize, VRBoneTransform_t *pTransformArray, uint32_t unTransformArrayCount) { struct IVRInput_IVRInput_003_GetSkeletalActionData_params params = { .linux_side = _this->u_iface, .action = action, .eBoneParent = eBoneParent, .fPredictedSecondsFromNow = fPredictedSecondsFromNow, .pActionData = pActionData, .unActionDataSize = unActionDataSize, .pTransformArray = pTransformArray, .unTransformArrayCount = unTransformArrayCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_003_GetSkeletalActionData, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_003_GetSkeletalActionDataCompressed(struct w_steam_iface *_this, uint64_t action, uint32_t eBoneParent, float fPredictedSecondsFromNow, void *pvCompressedData, uint32_t unCompressedSize, uint32_t *punRequiredCompressedSize) { struct IVRInput_IVRInput_003_GetSkeletalActionDataCompressed_params params = { .linux_side = _this->u_iface, .action = action, .eBoneParent = eBoneParent, .fPredictedSecondsFromNow = fPredictedSecondsFromNow, .pvCompressedData = pvCompressedData, .unCompressedSize = unCompressedSize, .punRequiredCompressedSize = punRequiredCompressedSize, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_003_GetSkeletalActionDataCompressed, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_003_UncompressSkeletalActionData(struct w_steam_iface *_this, void *pvCompressedBuffer, uint32_t unCompressedBufferSize, uint32_t *peBoneParent, VRBoneTransform_t *pTransformArray, uint32_t unTransformArrayCount) { struct IVRInput_IVRInput_003_UncompressSkeletalActionData_params params = { .linux_side = _this->u_iface, .pvCompressedBuffer = pvCompressedBuffer, .unCompressedBufferSize = unCompressedBufferSize, .peBoneParent = peBoneParent, .pTransformArray = pTransformArray, .unTransformArrayCount = unTransformArrayCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_003_UncompressSkeletalActionData, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_003_TriggerHapticVibrationAction(struct w_steam_iface *_this, uint64_t action, float fStartSecondsFromNow, float fDurationSeconds, float fFrequency, float fAmplitude) { struct IVRInput_IVRInput_003_TriggerHapticVibrationAction_params params = { .linux_side = _this->u_iface, .action = action, .fStartSecondsFromNow = fStartSecondsFromNow, .fDurationSeconds = fDurationSeconds, .fFrequency = fFrequency, .fAmplitude = fAmplitude, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_003_TriggerHapticVibrationAction, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_003_GetActionOrigins(struct w_steam_iface *_this, uint64_t actionSetHandle, uint64_t digitalActionHandle, uint64_t *originsOut, uint32_t originOutCount) { struct IVRInput_IVRInput_003_GetActionOrigins_params params = { .linux_side = _this->u_iface, .actionSetHandle = actionSetHandle, .digitalActionHandle = digitalActionHandle, .originsOut = originsOut, .originOutCount = originOutCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_003_GetActionOrigins, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_003_GetOriginLocalizedName(struct w_steam_iface *_this, uint64_t origin, char *pchNameArray, uint32_t unNameArraySize) { struct IVRInput_IVRInput_003_GetOriginLocalizedName_params params = { .linux_side = _this->u_iface, .origin = origin, .pchNameArray = pchNameArray, .unNameArraySize = unNameArraySize, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_003_GetOriginLocalizedName, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_003_GetOriginTrackedDeviceInfo(struct w_steam_iface *_this, uint64_t origin, w_InputOriginInfo_t *pOriginInfo, uint32_t unOriginInfoSize) { w_InputOriginInfo_t w_pOriginInfo; struct IVRInput_IVRInput_003_GetOriginTrackedDeviceInfo_params params = { .linux_side = _this->u_iface, .origin = origin, .pOriginInfo = pOriginInfo ? &w_pOriginInfo : NULL, .unOriginInfoSize = unOriginInfoSize, }; TRACE("%p\n", _this); unOriginInfoSize = min( unOriginInfoSize, sizeof(w_pOriginInfo) ); if (pOriginInfo) memcpy( &w_pOriginInfo, pOriginInfo, unOriginInfoSize ); VRCLIENT_CALL( IVRInput_IVRInput_003_GetOriginTrackedDeviceInfo, ¶ms ); if (pOriginInfo) memcpy( pOriginInfo, &w_pOriginInfo, unOriginInfoSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_003_ShowActionOrigins(struct w_steam_iface *_this, uint64_t actionSetHandle, uint64_t ulActionHandle) { struct IVRInput_IVRInput_003_ShowActionOrigins_params params = { .linux_side = _this->u_iface, .actionSetHandle = actionSetHandle, .ulActionHandle = ulActionHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_003_ShowActionOrigins, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_003_ShowBindingsForActionSet(struct w_steam_iface *_this, VRActiveActionSet_t_1015 *pSets, uint32_t unSizeOfVRSelectedActionSet_t, uint32_t unSetCount, uint64_t originToHighlight) { struct IVRInput_IVRInput_003_ShowBindingsForActionSet_params params = { .linux_side = _this->u_iface, .pSets = pSets, .unSizeOfVRSelectedActionSet_t = unSizeOfVRSelectedActionSet_t, .unSetCount = unSetCount, .originToHighlight = originToHighlight, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_003_ShowBindingsForActionSet, ¶ms ); return params._ret; } extern vtable_ptr winIVRInput_IVRInput_003_vtable; DEFINE_RTTI_DATA0(winIVRInput_IVRInput_003, 0, ".?AVIVRInput@@") __ASM_BLOCK_BEGIN(winIVRInput_IVRInput_003_vtables) __ASM_VTABLE(winIVRInput_IVRInput_003, VTABLE_ADD_FUNC(winIVRInput_IVRInput_003_SetActionManifestPath) VTABLE_ADD_FUNC(winIVRInput_IVRInput_003_GetActionSetHandle) VTABLE_ADD_FUNC(winIVRInput_IVRInput_003_GetActionHandle) VTABLE_ADD_FUNC(winIVRInput_IVRInput_003_GetInputSourceHandle) VTABLE_ADD_FUNC(winIVRInput_IVRInput_003_UpdateActionState) VTABLE_ADD_FUNC(winIVRInput_IVRInput_003_GetDigitalActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_003_GetAnalogActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_003_GetPoseActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_003_GetSkeletalActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_003_GetSkeletalActionDataCompressed) VTABLE_ADD_FUNC(winIVRInput_IVRInput_003_UncompressSkeletalActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_003_TriggerHapticVibrationAction) VTABLE_ADD_FUNC(winIVRInput_IVRInput_003_GetActionOrigins) VTABLE_ADD_FUNC(winIVRInput_IVRInput_003_GetOriginLocalizedName) VTABLE_ADD_FUNC(winIVRInput_IVRInput_003_GetOriginTrackedDeviceInfo) VTABLE_ADD_FUNC(winIVRInput_IVRInput_003_ShowActionOrigins) VTABLE_ADD_FUNC(winIVRInput_IVRInput_003_ShowBindingsForActionSet) ); __ASM_BLOCK_END struct w_steam_iface *create_winIVRInput_IVRInput_003(void *u_iface) { struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r)); TRACE("-> %p\n", r); r->vtable = &winIVRInput_IVRInput_003_vtable; r->u_iface = u_iface; return r; } void destroy_winIVRInput_IVRInput_003(struct w_steam_iface *object) { TRACE("%p\n", object); HeapFree(GetProcessHeap(), 0, object); } struct w_steam_iface *create_winIVRInput_IVRInput_003_FnTable(void *u_iface) { struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r)); struct thunk *thunks = alloc_thunks(17); struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 17 * sizeof(*vtable)); int i; TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks); init_thunk(&thunks[0], r, winIVRInput_IVRInput_003_SetActionManifestPath, 1, FALSE, FALSE); init_thunk(&thunks[1], r, winIVRInput_IVRInput_003_GetActionSetHandle, 2, FALSE, FALSE); init_thunk(&thunks[2], r, winIVRInput_IVRInput_003_GetActionHandle, 2, FALSE, FALSE); init_thunk(&thunks[3], r, winIVRInput_IVRInput_003_GetInputSourceHandle, 2, FALSE, FALSE); init_thunk(&thunks[4], r, winIVRInput_IVRInput_003_UpdateActionState, 3, FALSE, FALSE); init_thunk(&thunks[5], r, winIVRInput_IVRInput_003_GetDigitalActionData, 3, FALSE, FALSE); init_thunk(&thunks[6], r, winIVRInput_IVRInput_003_GetAnalogActionData, 3, FALSE, FALSE); init_thunk(&thunks[7], r, winIVRInput_IVRInput_003_GetPoseActionData, 5, TRUE, FALSE); init_thunk(&thunks[8], r, winIVRInput_IVRInput_003_GetSkeletalActionData, 7, TRUE, FALSE); init_thunk(&thunks[9], r, winIVRInput_IVRInput_003_GetSkeletalActionDataCompressed, 6, TRUE, FALSE); init_thunk(&thunks[10], r, winIVRInput_IVRInput_003_UncompressSkeletalActionData, 5, FALSE, FALSE); init_thunk(&thunks[11], r, winIVRInput_IVRInput_003_TriggerHapticVibrationAction, 5, TRUE, TRUE); init_thunk(&thunks[12], r, winIVRInput_IVRInput_003_GetActionOrigins, 4, FALSE, FALSE); init_thunk(&thunks[13], r, winIVRInput_IVRInput_003_GetOriginLocalizedName, 3, FALSE, FALSE); init_thunk(&thunks[14], r, winIVRInput_IVRInput_003_GetOriginTrackedDeviceInfo, 3, FALSE, FALSE); init_thunk(&thunks[15], r, winIVRInput_IVRInput_003_ShowActionOrigins, 2, FALSE, FALSE); init_thunk(&thunks[16], r, winIVRInput_IVRInput_003_ShowBindingsForActionSet, 4, FALSE, FALSE); for (i = 0; i < 17; i++) vtable[i] = &thunks[i]; r->u_iface = u_iface; r->vtable = (void *)vtable; return r; } void destroy_winIVRInput_IVRInput_003_FnTable(struct w_steam_iface *object) { TRACE("%p\n", object); VirtualFree(object->vtable[0], 0, MEM_RELEASE); HeapFree(GetProcessHeap(), 0, object->vtable); HeapFree(GetProcessHeap(), 0, object); } DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_004_SetActionManifestPath, 8) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_004_GetActionSetHandle, 12) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_004_GetActionHandle, 12) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_004_GetInputSourceHandle, 12) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_004_UpdateActionState, 16) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_004_GetDigitalActionData, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_004_GetAnalogActionData, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_004_GetPoseActionData, 36) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_004_GetSkeletalActionData, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_004_GetSkeletalBoneData, 36) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_004_GetSkeletalBoneDataCompressed, 40) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_004_DecompressSkeletalBoneData, 24) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_004_TriggerHapticVibrationAction, 36) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_004_GetActionOrigins, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_004_GetOriginLocalizedName, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_004_GetOriginTrackedDeviceInfo, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_004_ShowActionOrigins, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_004_ShowBindingsForActionSet, 24) uint32_t __thiscall winIVRInput_IVRInput_004_SetActionManifestPath(struct w_steam_iface *_this, const char *pchActionManifestPath) { struct IVRInput_IVRInput_004_SetActionManifestPath_params params = { .linux_side = _this->u_iface, .pchActionManifestPath = pchActionManifestPath, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_004_SetActionManifestPath, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_004_GetActionSetHandle(struct w_steam_iface *_this, const char *pchActionSetName, uint64_t *pHandle) { struct IVRInput_IVRInput_004_GetActionSetHandle_params params = { .linux_side = _this->u_iface, .pchActionSetName = pchActionSetName, .pHandle = pHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_004_GetActionSetHandle, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_004_GetActionHandle(struct w_steam_iface *_this, const char *pchActionName, uint64_t *pHandle) { struct IVRInput_IVRInput_004_GetActionHandle_params params = { .linux_side = _this->u_iface, .pchActionName = pchActionName, .pHandle = pHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_004_GetActionHandle, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_004_GetInputSourceHandle(struct w_steam_iface *_this, const char *pchInputSourcePath, uint64_t *pHandle) { struct IVRInput_IVRInput_004_GetInputSourceHandle_params params = { .linux_side = _this->u_iface, .pchInputSourcePath = pchInputSourcePath, .pHandle = pHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_004_GetInputSourceHandle, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_004_UpdateActionState(struct w_steam_iface *_this, VRActiveActionSet_t_1016 *pSets, uint32_t unSizeOfVRSelectedActionSet_t, uint32_t unSetCount) { struct IVRInput_IVRInput_004_UpdateActionState_params params = { .linux_side = _this->u_iface, .pSets = pSets, .unSizeOfVRSelectedActionSet_t = unSizeOfVRSelectedActionSet_t, .unSetCount = unSetCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_004_UpdateActionState, ¶ms ); return params._ret; } extern uint32_t __thiscall winIVRInput_IVRInput_004_GetDigitalActionData(struct w_steam_iface *_this, uint64_t action, w_InputDigitalActionData_t *pActionData, uint32_t unActionDataSize, uint64_t ulRestrictToDevice); uint32_t __thiscall winIVRInput_IVRInput_004_GetAnalogActionData(struct w_steam_iface *_this, uint64_t action, w_InputAnalogActionData_t *pActionData, uint32_t unActionDataSize, uint64_t ulRestrictToDevice) { w_InputAnalogActionData_t w_pActionData; struct IVRInput_IVRInput_004_GetAnalogActionData_params params = { .linux_side = _this->u_iface, .action = action, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_004_GetAnalogActionData, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_004_GetPoseActionData(struct w_steam_iface *_this, uint64_t action, uint32_t eOrigin, float fPredictedSecondsFromNow, w_InputPoseActionData_t *pActionData, uint32_t unActionDataSize, uint64_t ulRestrictToDevice) { w_InputPoseActionData_t w_pActionData; struct IVRInput_IVRInput_004_GetPoseActionData_params params = { .linux_side = _this->u_iface, .action = action, .eOrigin = eOrigin, .fPredictedSecondsFromNow = fPredictedSecondsFromNow, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_004_GetPoseActionData, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_004_GetSkeletalActionData(struct w_steam_iface *_this, uint64_t action, w_InputSkeletalActionData_t_1016 *pActionData, uint32_t unActionDataSize, uint64_t ulRestrictToDevice) { w_InputSkeletalActionData_t_1016 w_pActionData; struct IVRInput_IVRInput_004_GetSkeletalActionData_params params = { .linux_side = _this->u_iface, .action = action, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_004_GetSkeletalActionData, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_004_GetSkeletalBoneData(struct w_steam_iface *_this, uint64_t action, uint32_t eTransformSpace, uint32_t eMotionRange, VRBoneTransform_t *pTransformArray, uint32_t unTransformArrayCount, uint64_t ulRestrictToDevice) { struct IVRInput_IVRInput_004_GetSkeletalBoneData_params params = { .linux_side = _this->u_iface, .action = action, .eTransformSpace = eTransformSpace, .eMotionRange = eMotionRange, .pTransformArray = pTransformArray, .unTransformArrayCount = unTransformArrayCount, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_004_GetSkeletalBoneData, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_004_GetSkeletalBoneDataCompressed(struct w_steam_iface *_this, uint64_t action, uint32_t eTransformSpace, uint32_t eMotionRange, void *pvCompressedData, uint32_t unCompressedSize, uint32_t *punRequiredCompressedSize, uint64_t ulRestrictToDevice) { struct IVRInput_IVRInput_004_GetSkeletalBoneDataCompressed_params params = { .linux_side = _this->u_iface, .action = action, .eTransformSpace = eTransformSpace, .eMotionRange = eMotionRange, .pvCompressedData = pvCompressedData, .unCompressedSize = unCompressedSize, .punRequiredCompressedSize = punRequiredCompressedSize, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_004_GetSkeletalBoneDataCompressed, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_004_DecompressSkeletalBoneData(struct w_steam_iface *_this, void *pvCompressedBuffer, uint32_t unCompressedBufferSize, uint32_t *peTransformSpace, VRBoneTransform_t *pTransformArray, uint32_t unTransformArrayCount) { struct IVRInput_IVRInput_004_DecompressSkeletalBoneData_params params = { .linux_side = _this->u_iface, .pvCompressedBuffer = pvCompressedBuffer, .unCompressedBufferSize = unCompressedBufferSize, .peTransformSpace = peTransformSpace, .pTransformArray = pTransformArray, .unTransformArrayCount = unTransformArrayCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_004_DecompressSkeletalBoneData, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_004_TriggerHapticVibrationAction(struct w_steam_iface *_this, uint64_t action, float fStartSecondsFromNow, float fDurationSeconds, float fFrequency, float fAmplitude, uint64_t ulRestrictToDevice) { struct IVRInput_IVRInput_004_TriggerHapticVibrationAction_params params = { .linux_side = _this->u_iface, .action = action, .fStartSecondsFromNow = fStartSecondsFromNow, .fDurationSeconds = fDurationSeconds, .fFrequency = fFrequency, .fAmplitude = fAmplitude, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_004_TriggerHapticVibrationAction, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_004_GetActionOrigins(struct w_steam_iface *_this, uint64_t actionSetHandle, uint64_t digitalActionHandle, uint64_t *originsOut, uint32_t originOutCount) { struct IVRInput_IVRInput_004_GetActionOrigins_params params = { .linux_side = _this->u_iface, .actionSetHandle = actionSetHandle, .digitalActionHandle = digitalActionHandle, .originsOut = originsOut, .originOutCount = originOutCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_004_GetActionOrigins, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_004_GetOriginLocalizedName(struct w_steam_iface *_this, uint64_t origin, char *pchNameArray, uint32_t unNameArraySize) { struct IVRInput_IVRInput_004_GetOriginLocalizedName_params params = { .linux_side = _this->u_iface, .origin = origin, .pchNameArray = pchNameArray, .unNameArraySize = unNameArraySize, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_004_GetOriginLocalizedName, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_004_GetOriginTrackedDeviceInfo(struct w_steam_iface *_this, uint64_t origin, w_InputOriginInfo_t *pOriginInfo, uint32_t unOriginInfoSize) { w_InputOriginInfo_t w_pOriginInfo; struct IVRInput_IVRInput_004_GetOriginTrackedDeviceInfo_params params = { .linux_side = _this->u_iface, .origin = origin, .pOriginInfo = pOriginInfo ? &w_pOriginInfo : NULL, .unOriginInfoSize = unOriginInfoSize, }; TRACE("%p\n", _this); unOriginInfoSize = min( unOriginInfoSize, sizeof(w_pOriginInfo) ); if (pOriginInfo) memcpy( &w_pOriginInfo, pOriginInfo, unOriginInfoSize ); VRCLIENT_CALL( IVRInput_IVRInput_004_GetOriginTrackedDeviceInfo, ¶ms ); if (pOriginInfo) memcpy( pOriginInfo, &w_pOriginInfo, unOriginInfoSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_004_ShowActionOrigins(struct w_steam_iface *_this, uint64_t actionSetHandle, uint64_t ulActionHandle) { struct IVRInput_IVRInput_004_ShowActionOrigins_params params = { .linux_side = _this->u_iface, .actionSetHandle = actionSetHandle, .ulActionHandle = ulActionHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_004_ShowActionOrigins, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_004_ShowBindingsForActionSet(struct w_steam_iface *_this, VRActiveActionSet_t_1016 *pSets, uint32_t unSizeOfVRSelectedActionSet_t, uint32_t unSetCount, uint64_t originToHighlight) { struct IVRInput_IVRInput_004_ShowBindingsForActionSet_params params = { .linux_side = _this->u_iface, .pSets = pSets, .unSizeOfVRSelectedActionSet_t = unSizeOfVRSelectedActionSet_t, .unSetCount = unSetCount, .originToHighlight = originToHighlight, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_004_ShowBindingsForActionSet, ¶ms ); return params._ret; } extern vtable_ptr winIVRInput_IVRInput_004_vtable; DEFINE_RTTI_DATA0(winIVRInput_IVRInput_004, 0, ".?AVIVRInput@@") __ASM_BLOCK_BEGIN(winIVRInput_IVRInput_004_vtables) __ASM_VTABLE(winIVRInput_IVRInput_004, VTABLE_ADD_FUNC(winIVRInput_IVRInput_004_SetActionManifestPath) VTABLE_ADD_FUNC(winIVRInput_IVRInput_004_GetActionSetHandle) VTABLE_ADD_FUNC(winIVRInput_IVRInput_004_GetActionHandle) VTABLE_ADD_FUNC(winIVRInput_IVRInput_004_GetInputSourceHandle) VTABLE_ADD_FUNC(winIVRInput_IVRInput_004_UpdateActionState) VTABLE_ADD_FUNC(winIVRInput_IVRInput_004_GetDigitalActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_004_GetAnalogActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_004_GetPoseActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_004_GetSkeletalActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_004_GetSkeletalBoneData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_004_GetSkeletalBoneDataCompressed) VTABLE_ADD_FUNC(winIVRInput_IVRInput_004_DecompressSkeletalBoneData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_004_TriggerHapticVibrationAction) VTABLE_ADD_FUNC(winIVRInput_IVRInput_004_GetActionOrigins) VTABLE_ADD_FUNC(winIVRInput_IVRInput_004_GetOriginLocalizedName) VTABLE_ADD_FUNC(winIVRInput_IVRInput_004_GetOriginTrackedDeviceInfo) VTABLE_ADD_FUNC(winIVRInput_IVRInput_004_ShowActionOrigins) VTABLE_ADD_FUNC(winIVRInput_IVRInput_004_ShowBindingsForActionSet) ); __ASM_BLOCK_END struct w_steam_iface *create_winIVRInput_IVRInput_004(void *u_iface) { struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r)); TRACE("-> %p\n", r); r->vtable = &winIVRInput_IVRInput_004_vtable; r->u_iface = u_iface; return r; } void destroy_winIVRInput_IVRInput_004(struct w_steam_iface *object) { TRACE("%p\n", object); HeapFree(GetProcessHeap(), 0, object); } struct w_steam_iface *create_winIVRInput_IVRInput_004_FnTable(void *u_iface) { struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r)); struct thunk *thunks = alloc_thunks(18); struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 18 * sizeof(*vtable)); int i; TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks); init_thunk(&thunks[0], r, winIVRInput_IVRInput_004_SetActionManifestPath, 1, FALSE, FALSE); init_thunk(&thunks[1], r, winIVRInput_IVRInput_004_GetActionSetHandle, 2, FALSE, FALSE); init_thunk(&thunks[2], r, winIVRInput_IVRInput_004_GetActionHandle, 2, FALSE, FALSE); init_thunk(&thunks[3], r, winIVRInput_IVRInput_004_GetInputSourceHandle, 2, FALSE, FALSE); init_thunk(&thunks[4], r, winIVRInput_IVRInput_004_UpdateActionState, 3, FALSE, FALSE); init_thunk(&thunks[5], r, winIVRInput_IVRInput_004_GetDigitalActionData, 4, FALSE, FALSE); init_thunk(&thunks[6], r, winIVRInput_IVRInput_004_GetAnalogActionData, 4, FALSE, FALSE); init_thunk(&thunks[7], r, winIVRInput_IVRInput_004_GetPoseActionData, 6, TRUE, FALSE); init_thunk(&thunks[8], r, winIVRInput_IVRInput_004_GetSkeletalActionData, 4, FALSE, FALSE); init_thunk(&thunks[9], r, winIVRInput_IVRInput_004_GetSkeletalBoneData, 6, FALSE, FALSE); init_thunk(&thunks[10], r, winIVRInput_IVRInput_004_GetSkeletalBoneDataCompressed, 7, FALSE, FALSE); init_thunk(&thunks[11], r, winIVRInput_IVRInput_004_DecompressSkeletalBoneData, 5, FALSE, FALSE); init_thunk(&thunks[12], r, winIVRInput_IVRInput_004_TriggerHapticVibrationAction, 6, TRUE, TRUE); init_thunk(&thunks[13], r, winIVRInput_IVRInput_004_GetActionOrigins, 4, FALSE, FALSE); init_thunk(&thunks[14], r, winIVRInput_IVRInput_004_GetOriginLocalizedName, 3, FALSE, FALSE); init_thunk(&thunks[15], r, winIVRInput_IVRInput_004_GetOriginTrackedDeviceInfo, 3, FALSE, FALSE); init_thunk(&thunks[16], r, winIVRInput_IVRInput_004_ShowActionOrigins, 2, FALSE, FALSE); init_thunk(&thunks[17], r, winIVRInput_IVRInput_004_ShowBindingsForActionSet, 4, FALSE, FALSE); for (i = 0; i < 18; i++) vtable[i] = &thunks[i]; r->u_iface = u_iface; r->vtable = (void *)vtable; return r; } void destroy_winIVRInput_IVRInput_004_FnTable(struct w_steam_iface *object) { TRACE("%p\n", object); VirtualFree(object->vtable[0], 0, MEM_RELEASE); HeapFree(GetProcessHeap(), 0, object->vtable); HeapFree(GetProcessHeap(), 0, object); } DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_SetActionManifestPath, 8) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_GetActionSetHandle, 12) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_GetActionHandle, 12) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_GetInputSourceHandle, 12) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_UpdateActionState, 16) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_GetDigitalActionData, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_GetAnalogActionData, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_GetPoseActionData, 36) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_GetSkeletalActionData, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_GetBoneCount, 16) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_GetBoneHierarchy, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_GetBoneName, 24) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_GetSkeletalReferenceTransforms, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_GetSkeletalTrackingLevel, 16) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_GetSkeletalBoneData, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_GetSkeletalSummaryData, 16) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_GetSkeletalBoneDataCompressed, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_DecompressSkeletalBoneData, 24) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_TriggerHapticVibrationAction, 36) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_GetActionOrigins, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_GetOriginLocalizedName, 24) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_GetOriginTrackedDeviceInfo, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_ShowActionOrigins, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_ShowBindingsForActionSet, 24) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_005_IsUsingLegacyInput, 4) uint32_t __thiscall winIVRInput_IVRInput_005_SetActionManifestPath(struct w_steam_iface *_this, const char *pchActionManifestPath) { struct IVRInput_IVRInput_005_SetActionManifestPath_params params = { .linux_side = _this->u_iface, .pchActionManifestPath = pchActionManifestPath, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_005_SetActionManifestPath, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_GetActionSetHandle(struct w_steam_iface *_this, const char *pchActionSetName, uint64_t *pHandle) { struct IVRInput_IVRInput_005_GetActionSetHandle_params params = { .linux_side = _this->u_iface, .pchActionSetName = pchActionSetName, .pHandle = pHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_005_GetActionSetHandle, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_GetActionHandle(struct w_steam_iface *_this, const char *pchActionName, uint64_t *pHandle) { struct IVRInput_IVRInput_005_GetActionHandle_params params = { .linux_side = _this->u_iface, .pchActionName = pchActionName, .pHandle = pHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_005_GetActionHandle, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_GetInputSourceHandle(struct w_steam_iface *_this, const char *pchInputSourcePath, uint64_t *pHandle) { struct IVRInput_IVRInput_005_GetInputSourceHandle_params params = { .linux_side = _this->u_iface, .pchInputSourcePath = pchInputSourcePath, .pHandle = pHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_005_GetInputSourceHandle, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_UpdateActionState(struct w_steam_iface *_this, VRActiveActionSet_t_1016 *pSets, uint32_t unSizeOfVRSelectedActionSet_t, uint32_t unSetCount) { struct IVRInput_IVRInput_005_UpdateActionState_params params = { .linux_side = _this->u_iface, .pSets = pSets, .unSizeOfVRSelectedActionSet_t = unSizeOfVRSelectedActionSet_t, .unSetCount = unSetCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_005_UpdateActionState, ¶ms ); return params._ret; } extern uint32_t __thiscall winIVRInput_IVRInput_005_GetDigitalActionData(struct w_steam_iface *_this, uint64_t action, w_InputDigitalActionData_t *pActionData, uint32_t unActionDataSize, uint64_t ulRestrictToDevice); uint32_t __thiscall winIVRInput_IVRInput_005_GetAnalogActionData(struct w_steam_iface *_this, uint64_t action, w_InputAnalogActionData_t *pActionData, uint32_t unActionDataSize, uint64_t ulRestrictToDevice) { w_InputAnalogActionData_t w_pActionData; struct IVRInput_IVRInput_005_GetAnalogActionData_params params = { .linux_side = _this->u_iface, .action = action, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_005_GetAnalogActionData, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_GetPoseActionData(struct w_steam_iface *_this, uint64_t action, uint32_t eOrigin, float fPredictedSecondsFromNow, w_InputPoseActionData_t *pActionData, uint32_t unActionDataSize, uint64_t ulRestrictToDevice) { w_InputPoseActionData_t w_pActionData; struct IVRInput_IVRInput_005_GetPoseActionData_params params = { .linux_side = _this->u_iface, .action = action, .eOrigin = eOrigin, .fPredictedSecondsFromNow = fPredictedSecondsFromNow, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_005_GetPoseActionData, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_GetSkeletalActionData(struct w_steam_iface *_this, uint64_t action, w_InputSkeletalActionData_t_113b *pActionData, uint32_t unActionDataSize) { w_InputSkeletalActionData_t_113b w_pActionData; struct IVRInput_IVRInput_005_GetSkeletalActionData_params params = { .linux_side = _this->u_iface, .action = action, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_005_GetSkeletalActionData, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_GetBoneCount(struct w_steam_iface *_this, uint64_t action, uint32_t *pBoneCount) { struct IVRInput_IVRInput_005_GetBoneCount_params params = { .linux_side = _this->u_iface, .action = action, .pBoneCount = pBoneCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_005_GetBoneCount, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_GetBoneHierarchy(struct w_steam_iface *_this, uint64_t action, int32_t *pParentIndices, uint32_t unIndexArayCount) { struct IVRInput_IVRInput_005_GetBoneHierarchy_params params = { .linux_side = _this->u_iface, .action = action, .pParentIndices = pParentIndices, .unIndexArayCount = unIndexArayCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_005_GetBoneHierarchy, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_GetBoneName(struct w_steam_iface *_this, uint64_t action, int32_t nBoneIndex, char *pchBoneName, uint32_t unNameBufferSize) { struct IVRInput_IVRInput_005_GetBoneName_params params = { .linux_side = _this->u_iface, .action = action, .nBoneIndex = nBoneIndex, .pchBoneName = pchBoneName, .unNameBufferSize = unNameBufferSize, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_005_GetBoneName, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_GetSkeletalReferenceTransforms(struct w_steam_iface *_this, uint64_t action, uint32_t eTransformSpace, uint32_t eReferencePose, VRBoneTransform_t *pTransformArray, uint32_t unTransformArrayCount) { struct IVRInput_IVRInput_005_GetSkeletalReferenceTransforms_params params = { .linux_side = _this->u_iface, .action = action, .eTransformSpace = eTransformSpace, .eReferencePose = eReferencePose, .pTransformArray = pTransformArray, .unTransformArrayCount = unTransformArrayCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_005_GetSkeletalReferenceTransforms, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_GetSkeletalTrackingLevel(struct w_steam_iface *_this, uint64_t action, uint32_t *pSkeletalTrackingLevel) { struct IVRInput_IVRInput_005_GetSkeletalTrackingLevel_params params = { .linux_side = _this->u_iface, .action = action, .pSkeletalTrackingLevel = pSkeletalTrackingLevel, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_005_GetSkeletalTrackingLevel, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_GetSkeletalBoneData(struct w_steam_iface *_this, uint64_t action, uint32_t eTransformSpace, uint32_t eMotionRange, VRBoneTransform_t *pTransformArray, uint32_t unTransformArrayCount) { struct IVRInput_IVRInput_005_GetSkeletalBoneData_params params = { .linux_side = _this->u_iface, .action = action, .eTransformSpace = eTransformSpace, .eMotionRange = eMotionRange, .pTransformArray = pTransformArray, .unTransformArrayCount = unTransformArrayCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_005_GetSkeletalBoneData, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_GetSkeletalSummaryData(struct w_steam_iface *_this, uint64_t action, VRSkeletalSummaryData_t *pSkeletalSummaryData) { struct IVRInput_IVRInput_005_GetSkeletalSummaryData_params params = { .linux_side = _this->u_iface, .action = action, .pSkeletalSummaryData = pSkeletalSummaryData, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_005_GetSkeletalSummaryData, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_GetSkeletalBoneDataCompressed(struct w_steam_iface *_this, uint64_t action, uint32_t eMotionRange, void *pvCompressedData, uint32_t unCompressedSize, uint32_t *punRequiredCompressedSize) { struct IVRInput_IVRInput_005_GetSkeletalBoneDataCompressed_params params = { .linux_side = _this->u_iface, .action = action, .eMotionRange = eMotionRange, .pvCompressedData = pvCompressedData, .unCompressedSize = unCompressedSize, .punRequiredCompressedSize = punRequiredCompressedSize, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_005_GetSkeletalBoneDataCompressed, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_DecompressSkeletalBoneData(struct w_steam_iface *_this, const void *pvCompressedBuffer, uint32_t unCompressedBufferSize, uint32_t eTransformSpace, VRBoneTransform_t *pTransformArray, uint32_t unTransformArrayCount) { struct IVRInput_IVRInput_005_DecompressSkeletalBoneData_params params = { .linux_side = _this->u_iface, .pvCompressedBuffer = pvCompressedBuffer, .unCompressedBufferSize = unCompressedBufferSize, .eTransformSpace = eTransformSpace, .pTransformArray = pTransformArray, .unTransformArrayCount = unTransformArrayCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_005_DecompressSkeletalBoneData, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_TriggerHapticVibrationAction(struct w_steam_iface *_this, uint64_t action, float fStartSecondsFromNow, float fDurationSeconds, float fFrequency, float fAmplitude, uint64_t ulRestrictToDevice) { struct IVRInput_IVRInput_005_TriggerHapticVibrationAction_params params = { .linux_side = _this->u_iface, .action = action, .fStartSecondsFromNow = fStartSecondsFromNow, .fDurationSeconds = fDurationSeconds, .fFrequency = fFrequency, .fAmplitude = fAmplitude, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_005_TriggerHapticVibrationAction, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_GetActionOrigins(struct w_steam_iface *_this, uint64_t actionSetHandle, uint64_t digitalActionHandle, uint64_t *originsOut, uint32_t originOutCount) { struct IVRInput_IVRInput_005_GetActionOrigins_params params = { .linux_side = _this->u_iface, .actionSetHandle = actionSetHandle, .digitalActionHandle = digitalActionHandle, .originsOut = originsOut, .originOutCount = originOutCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_005_GetActionOrigins, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_GetOriginLocalizedName(struct w_steam_iface *_this, uint64_t origin, char *pchNameArray, uint32_t unNameArraySize, int32_t unStringSectionsToInclude) { struct IVRInput_IVRInput_005_GetOriginLocalizedName_params params = { .linux_side = _this->u_iface, .origin = origin, .pchNameArray = pchNameArray, .unNameArraySize = unNameArraySize, .unStringSectionsToInclude = unStringSectionsToInclude, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_005_GetOriginLocalizedName, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_GetOriginTrackedDeviceInfo(struct w_steam_iface *_this, uint64_t origin, w_InputOriginInfo_t *pOriginInfo, uint32_t unOriginInfoSize) { w_InputOriginInfo_t w_pOriginInfo; struct IVRInput_IVRInput_005_GetOriginTrackedDeviceInfo_params params = { .linux_side = _this->u_iface, .origin = origin, .pOriginInfo = pOriginInfo ? &w_pOriginInfo : NULL, .unOriginInfoSize = unOriginInfoSize, }; TRACE("%p\n", _this); unOriginInfoSize = min( unOriginInfoSize, sizeof(w_pOriginInfo) ); if (pOriginInfo) memcpy( &w_pOriginInfo, pOriginInfo, unOriginInfoSize ); VRCLIENT_CALL( IVRInput_IVRInput_005_GetOriginTrackedDeviceInfo, ¶ms ); if (pOriginInfo) memcpy( pOriginInfo, &w_pOriginInfo, unOriginInfoSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_ShowActionOrigins(struct w_steam_iface *_this, uint64_t actionSetHandle, uint64_t ulActionHandle) { struct IVRInput_IVRInput_005_ShowActionOrigins_params params = { .linux_side = _this->u_iface, .actionSetHandle = actionSetHandle, .ulActionHandle = ulActionHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_005_ShowActionOrigins, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_005_ShowBindingsForActionSet(struct w_steam_iface *_this, VRActiveActionSet_t_1016 *pSets, uint32_t unSizeOfVRSelectedActionSet_t, uint32_t unSetCount, uint64_t originToHighlight) { struct IVRInput_IVRInput_005_ShowBindingsForActionSet_params params = { .linux_side = _this->u_iface, .pSets = pSets, .unSizeOfVRSelectedActionSet_t = unSizeOfVRSelectedActionSet_t, .unSetCount = unSetCount, .originToHighlight = originToHighlight, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_005_ShowBindingsForActionSet, ¶ms ); return params._ret; } int8_t __thiscall winIVRInput_IVRInput_005_IsUsingLegacyInput(struct w_steam_iface *_this) { struct IVRInput_IVRInput_005_IsUsingLegacyInput_params params = { .linux_side = _this->u_iface, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_005_IsUsingLegacyInput, ¶ms ); return params._ret; } extern vtable_ptr winIVRInput_IVRInput_005_vtable; DEFINE_RTTI_DATA0(winIVRInput_IVRInput_005, 0, ".?AVIVRInput@@") __ASM_BLOCK_BEGIN(winIVRInput_IVRInput_005_vtables) __ASM_VTABLE(winIVRInput_IVRInput_005, VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_SetActionManifestPath) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_GetActionSetHandle) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_GetActionHandle) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_GetInputSourceHandle) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_UpdateActionState) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_GetDigitalActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_GetAnalogActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_GetPoseActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_GetSkeletalActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_GetBoneCount) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_GetBoneHierarchy) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_GetBoneName) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_GetSkeletalReferenceTransforms) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_GetSkeletalTrackingLevel) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_GetSkeletalBoneData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_GetSkeletalSummaryData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_GetSkeletalBoneDataCompressed) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_DecompressSkeletalBoneData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_TriggerHapticVibrationAction) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_GetActionOrigins) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_GetOriginLocalizedName) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_GetOriginTrackedDeviceInfo) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_ShowActionOrigins) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_ShowBindingsForActionSet) VTABLE_ADD_FUNC(winIVRInput_IVRInput_005_IsUsingLegacyInput) ); __ASM_BLOCK_END struct w_steam_iface *create_winIVRInput_IVRInput_005(void *u_iface) { struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r)); TRACE("-> %p\n", r); r->vtable = &winIVRInput_IVRInput_005_vtable; r->u_iface = u_iface; return r; } void destroy_winIVRInput_IVRInput_005(struct w_steam_iface *object) { TRACE("%p\n", object); HeapFree(GetProcessHeap(), 0, object); } struct w_steam_iface *create_winIVRInput_IVRInput_005_FnTable(void *u_iface) { struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r)); struct thunk *thunks = alloc_thunks(25); struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 25 * sizeof(*vtable)); int i; TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks); init_thunk(&thunks[0], r, winIVRInput_IVRInput_005_SetActionManifestPath, 1, FALSE, FALSE); init_thunk(&thunks[1], r, winIVRInput_IVRInput_005_GetActionSetHandle, 2, FALSE, FALSE); init_thunk(&thunks[2], r, winIVRInput_IVRInput_005_GetActionHandle, 2, FALSE, FALSE); init_thunk(&thunks[3], r, winIVRInput_IVRInput_005_GetInputSourceHandle, 2, FALSE, FALSE); init_thunk(&thunks[4], r, winIVRInput_IVRInput_005_UpdateActionState, 3, FALSE, FALSE); init_thunk(&thunks[5], r, winIVRInput_IVRInput_005_GetDigitalActionData, 4, FALSE, FALSE); init_thunk(&thunks[6], r, winIVRInput_IVRInput_005_GetAnalogActionData, 4, FALSE, FALSE); init_thunk(&thunks[7], r, winIVRInput_IVRInput_005_GetPoseActionData, 6, TRUE, FALSE); init_thunk(&thunks[8], r, winIVRInput_IVRInput_005_GetSkeletalActionData, 3, FALSE, FALSE); init_thunk(&thunks[9], r, winIVRInput_IVRInput_005_GetBoneCount, 2, FALSE, FALSE); init_thunk(&thunks[10], r, winIVRInput_IVRInput_005_GetBoneHierarchy, 3, FALSE, FALSE); init_thunk(&thunks[11], r, winIVRInput_IVRInput_005_GetBoneName, 4, FALSE, FALSE); init_thunk(&thunks[12], r, winIVRInput_IVRInput_005_GetSkeletalReferenceTransforms, 5, FALSE, FALSE); init_thunk(&thunks[13], r, winIVRInput_IVRInput_005_GetSkeletalTrackingLevel, 2, FALSE, FALSE); init_thunk(&thunks[14], r, winIVRInput_IVRInput_005_GetSkeletalBoneData, 5, FALSE, FALSE); init_thunk(&thunks[15], r, winIVRInput_IVRInput_005_GetSkeletalSummaryData, 2, FALSE, FALSE); init_thunk(&thunks[16], r, winIVRInput_IVRInput_005_GetSkeletalBoneDataCompressed, 5, FALSE, FALSE); init_thunk(&thunks[17], r, winIVRInput_IVRInput_005_DecompressSkeletalBoneData, 5, FALSE, FALSE); init_thunk(&thunks[18], r, winIVRInput_IVRInput_005_TriggerHapticVibrationAction, 6, TRUE, TRUE); init_thunk(&thunks[19], r, winIVRInput_IVRInput_005_GetActionOrigins, 4, FALSE, FALSE); init_thunk(&thunks[20], r, winIVRInput_IVRInput_005_GetOriginLocalizedName, 4, FALSE, FALSE); init_thunk(&thunks[21], r, winIVRInput_IVRInput_005_GetOriginTrackedDeviceInfo, 3, FALSE, FALSE); init_thunk(&thunks[22], r, winIVRInput_IVRInput_005_ShowActionOrigins, 2, FALSE, FALSE); init_thunk(&thunks[23], r, winIVRInput_IVRInput_005_ShowBindingsForActionSet, 4, FALSE, FALSE); init_thunk(&thunks[24], r, winIVRInput_IVRInput_005_IsUsingLegacyInput, 0, FALSE, FALSE); for (i = 0; i < 25; i++) vtable[i] = &thunks[i]; r->u_iface = u_iface; r->vtable = (void *)vtable; return r; } void destroy_winIVRInput_IVRInput_005_FnTable(struct w_steam_iface *object) { TRACE("%p\n", object); VirtualFree(object->vtable[0], 0, MEM_RELEASE); HeapFree(GetProcessHeap(), 0, object->vtable); HeapFree(GetProcessHeap(), 0, object); } DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_SetActionManifestPath, 8) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_GetActionSetHandle, 12) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_GetActionHandle, 12) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_GetInputSourceHandle, 12) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_UpdateActionState, 16) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_GetDigitalActionData, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_GetAnalogActionData, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_GetPoseActionDataRelativeToNow, 36) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_GetPoseActionDataForNextFrame, 32) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_GetSkeletalActionData, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_GetBoneCount, 16) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_GetBoneHierarchy, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_GetBoneName, 24) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_GetSkeletalReferenceTransforms, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_GetSkeletalTrackingLevel, 16) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_GetSkeletalBoneData, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_GetSkeletalSummaryData, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_GetSkeletalBoneDataCompressed, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_DecompressSkeletalBoneData, 24) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_TriggerHapticVibrationAction, 36) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_GetActionOrigins, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_GetOriginLocalizedName, 24) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_GetOriginTrackedDeviceInfo, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_ShowActionOrigins, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_ShowBindingsForActionSet, 24) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_006_IsUsingLegacyInput, 4) uint32_t __thiscall winIVRInput_IVRInput_006_SetActionManifestPath(struct w_steam_iface *_this, const char *pchActionManifestPath) { struct IVRInput_IVRInput_006_SetActionManifestPath_params params = { .linux_side = _this->u_iface, .pchActionManifestPath = pchActionManifestPath, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_006_SetActionManifestPath, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_GetActionSetHandle(struct w_steam_iface *_this, const char *pchActionSetName, uint64_t *pHandle) { struct IVRInput_IVRInput_006_GetActionSetHandle_params params = { .linux_side = _this->u_iface, .pchActionSetName = pchActionSetName, .pHandle = pHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_006_GetActionSetHandle, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_GetActionHandle(struct w_steam_iface *_this, const char *pchActionName, uint64_t *pHandle) { struct IVRInput_IVRInput_006_GetActionHandle_params params = { .linux_side = _this->u_iface, .pchActionName = pchActionName, .pHandle = pHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_006_GetActionHandle, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_GetInputSourceHandle(struct w_steam_iface *_this, const char *pchInputSourcePath, uint64_t *pHandle) { struct IVRInput_IVRInput_006_GetInputSourceHandle_params params = { .linux_side = _this->u_iface, .pchInputSourcePath = pchInputSourcePath, .pHandle = pHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_006_GetInputSourceHandle, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_UpdateActionState(struct w_steam_iface *_this, VRActiveActionSet_t_1016 *pSets, uint32_t unSizeOfVRSelectedActionSet_t, uint32_t unSetCount) { struct IVRInput_IVRInput_006_UpdateActionState_params params = { .linux_side = _this->u_iface, .pSets = pSets, .unSizeOfVRSelectedActionSet_t = unSizeOfVRSelectedActionSet_t, .unSetCount = unSetCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_006_UpdateActionState, ¶ms ); return params._ret; } extern uint32_t __thiscall winIVRInput_IVRInput_006_GetDigitalActionData(struct w_steam_iface *_this, uint64_t action, w_InputDigitalActionData_t *pActionData, uint32_t unActionDataSize, uint64_t ulRestrictToDevice); uint32_t __thiscall winIVRInput_IVRInput_006_GetAnalogActionData(struct w_steam_iface *_this, uint64_t action, w_InputAnalogActionData_t *pActionData, uint32_t unActionDataSize, uint64_t ulRestrictToDevice) { w_InputAnalogActionData_t w_pActionData; struct IVRInput_IVRInput_006_GetAnalogActionData_params params = { .linux_side = _this->u_iface, .action = action, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_006_GetAnalogActionData, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_GetPoseActionDataRelativeToNow(struct w_steam_iface *_this, uint64_t action, uint32_t eOrigin, float fPredictedSecondsFromNow, w_InputPoseActionData_t *pActionData, uint32_t unActionDataSize, uint64_t ulRestrictToDevice) { w_InputPoseActionData_t w_pActionData; struct IVRInput_IVRInput_006_GetPoseActionDataRelativeToNow_params params = { .linux_side = _this->u_iface, .action = action, .eOrigin = eOrigin, .fPredictedSecondsFromNow = fPredictedSecondsFromNow, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_006_GetPoseActionDataRelativeToNow, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_GetPoseActionDataForNextFrame(struct w_steam_iface *_this, uint64_t action, uint32_t eOrigin, w_InputPoseActionData_t *pActionData, uint32_t unActionDataSize, uint64_t ulRestrictToDevice) { w_InputPoseActionData_t w_pActionData; struct IVRInput_IVRInput_006_GetPoseActionDataForNextFrame_params params = { .linux_side = _this->u_iface, .action = action, .eOrigin = eOrigin, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_006_GetPoseActionDataForNextFrame, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_GetSkeletalActionData(struct w_steam_iface *_this, uint64_t action, w_InputSkeletalActionData_t_113b *pActionData, uint32_t unActionDataSize) { w_InputSkeletalActionData_t_113b w_pActionData; struct IVRInput_IVRInput_006_GetSkeletalActionData_params params = { .linux_side = _this->u_iface, .action = action, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_006_GetSkeletalActionData, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_GetBoneCount(struct w_steam_iface *_this, uint64_t action, uint32_t *pBoneCount) { struct IVRInput_IVRInput_006_GetBoneCount_params params = { .linux_side = _this->u_iface, .action = action, .pBoneCount = pBoneCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_006_GetBoneCount, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_GetBoneHierarchy(struct w_steam_iface *_this, uint64_t action, int32_t *pParentIndices, uint32_t unIndexArayCount) { struct IVRInput_IVRInput_006_GetBoneHierarchy_params params = { .linux_side = _this->u_iface, .action = action, .pParentIndices = pParentIndices, .unIndexArayCount = unIndexArayCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_006_GetBoneHierarchy, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_GetBoneName(struct w_steam_iface *_this, uint64_t action, int32_t nBoneIndex, char *pchBoneName, uint32_t unNameBufferSize) { struct IVRInput_IVRInput_006_GetBoneName_params params = { .linux_side = _this->u_iface, .action = action, .nBoneIndex = nBoneIndex, .pchBoneName = pchBoneName, .unNameBufferSize = unNameBufferSize, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_006_GetBoneName, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_GetSkeletalReferenceTransforms(struct w_steam_iface *_this, uint64_t action, uint32_t eTransformSpace, uint32_t eReferencePose, VRBoneTransform_t *pTransformArray, uint32_t unTransformArrayCount) { struct IVRInput_IVRInput_006_GetSkeletalReferenceTransforms_params params = { .linux_side = _this->u_iface, .action = action, .eTransformSpace = eTransformSpace, .eReferencePose = eReferencePose, .pTransformArray = pTransformArray, .unTransformArrayCount = unTransformArrayCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_006_GetSkeletalReferenceTransforms, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_GetSkeletalTrackingLevel(struct w_steam_iface *_this, uint64_t action, uint32_t *pSkeletalTrackingLevel) { struct IVRInput_IVRInput_006_GetSkeletalTrackingLevel_params params = { .linux_side = _this->u_iface, .action = action, .pSkeletalTrackingLevel = pSkeletalTrackingLevel, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_006_GetSkeletalTrackingLevel, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_GetSkeletalBoneData(struct w_steam_iface *_this, uint64_t action, uint32_t eTransformSpace, uint32_t eMotionRange, VRBoneTransform_t *pTransformArray, uint32_t unTransformArrayCount) { struct IVRInput_IVRInput_006_GetSkeletalBoneData_params params = { .linux_side = _this->u_iface, .action = action, .eTransformSpace = eTransformSpace, .eMotionRange = eMotionRange, .pTransformArray = pTransformArray, .unTransformArrayCount = unTransformArrayCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_006_GetSkeletalBoneData, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_GetSkeletalSummaryData(struct w_steam_iface *_this, uint64_t action, uint32_t eSummaryType, VRSkeletalSummaryData_t *pSkeletalSummaryData) { struct IVRInput_IVRInput_006_GetSkeletalSummaryData_params params = { .linux_side = _this->u_iface, .action = action, .eSummaryType = eSummaryType, .pSkeletalSummaryData = pSkeletalSummaryData, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_006_GetSkeletalSummaryData, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_GetSkeletalBoneDataCompressed(struct w_steam_iface *_this, uint64_t action, uint32_t eMotionRange, void *pvCompressedData, uint32_t unCompressedSize, uint32_t *punRequiredCompressedSize) { struct IVRInput_IVRInput_006_GetSkeletalBoneDataCompressed_params params = { .linux_side = _this->u_iface, .action = action, .eMotionRange = eMotionRange, .pvCompressedData = pvCompressedData, .unCompressedSize = unCompressedSize, .punRequiredCompressedSize = punRequiredCompressedSize, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_006_GetSkeletalBoneDataCompressed, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_DecompressSkeletalBoneData(struct w_steam_iface *_this, const void *pvCompressedBuffer, uint32_t unCompressedBufferSize, uint32_t eTransformSpace, VRBoneTransform_t *pTransformArray, uint32_t unTransformArrayCount) { struct IVRInput_IVRInput_006_DecompressSkeletalBoneData_params params = { .linux_side = _this->u_iface, .pvCompressedBuffer = pvCompressedBuffer, .unCompressedBufferSize = unCompressedBufferSize, .eTransformSpace = eTransformSpace, .pTransformArray = pTransformArray, .unTransformArrayCount = unTransformArrayCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_006_DecompressSkeletalBoneData, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_TriggerHapticVibrationAction(struct w_steam_iface *_this, uint64_t action, float fStartSecondsFromNow, float fDurationSeconds, float fFrequency, float fAmplitude, uint64_t ulRestrictToDevice) { struct IVRInput_IVRInput_006_TriggerHapticVibrationAction_params params = { .linux_side = _this->u_iface, .action = action, .fStartSecondsFromNow = fStartSecondsFromNow, .fDurationSeconds = fDurationSeconds, .fFrequency = fFrequency, .fAmplitude = fAmplitude, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_006_TriggerHapticVibrationAction, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_GetActionOrigins(struct w_steam_iface *_this, uint64_t actionSetHandle, uint64_t digitalActionHandle, uint64_t *originsOut, uint32_t originOutCount) { struct IVRInput_IVRInput_006_GetActionOrigins_params params = { .linux_side = _this->u_iface, .actionSetHandle = actionSetHandle, .digitalActionHandle = digitalActionHandle, .originsOut = originsOut, .originOutCount = originOutCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_006_GetActionOrigins, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_GetOriginLocalizedName(struct w_steam_iface *_this, uint64_t origin, char *pchNameArray, uint32_t unNameArraySize, int32_t unStringSectionsToInclude) { struct IVRInput_IVRInput_006_GetOriginLocalizedName_params params = { .linux_side = _this->u_iface, .origin = origin, .pchNameArray = pchNameArray, .unNameArraySize = unNameArraySize, .unStringSectionsToInclude = unStringSectionsToInclude, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_006_GetOriginLocalizedName, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_GetOriginTrackedDeviceInfo(struct w_steam_iface *_this, uint64_t origin, w_InputOriginInfo_t *pOriginInfo, uint32_t unOriginInfoSize) { w_InputOriginInfo_t w_pOriginInfo; struct IVRInput_IVRInput_006_GetOriginTrackedDeviceInfo_params params = { .linux_side = _this->u_iface, .origin = origin, .pOriginInfo = pOriginInfo ? &w_pOriginInfo : NULL, .unOriginInfoSize = unOriginInfoSize, }; TRACE("%p\n", _this); unOriginInfoSize = min( unOriginInfoSize, sizeof(w_pOriginInfo) ); if (pOriginInfo) memcpy( &w_pOriginInfo, pOriginInfo, unOriginInfoSize ); VRCLIENT_CALL( IVRInput_IVRInput_006_GetOriginTrackedDeviceInfo, ¶ms ); if (pOriginInfo) memcpy( pOriginInfo, &w_pOriginInfo, unOriginInfoSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_ShowActionOrigins(struct w_steam_iface *_this, uint64_t actionSetHandle, uint64_t ulActionHandle) { struct IVRInput_IVRInput_006_ShowActionOrigins_params params = { .linux_side = _this->u_iface, .actionSetHandle = actionSetHandle, .ulActionHandle = ulActionHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_006_ShowActionOrigins, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_006_ShowBindingsForActionSet(struct w_steam_iface *_this, VRActiveActionSet_t_1016 *pSets, uint32_t unSizeOfVRSelectedActionSet_t, uint32_t unSetCount, uint64_t originToHighlight) { struct IVRInput_IVRInput_006_ShowBindingsForActionSet_params params = { .linux_side = _this->u_iface, .pSets = pSets, .unSizeOfVRSelectedActionSet_t = unSizeOfVRSelectedActionSet_t, .unSetCount = unSetCount, .originToHighlight = originToHighlight, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_006_ShowBindingsForActionSet, ¶ms ); return params._ret; } int8_t __thiscall winIVRInput_IVRInput_006_IsUsingLegacyInput(struct w_steam_iface *_this) { struct IVRInput_IVRInput_006_IsUsingLegacyInput_params params = { .linux_side = _this->u_iface, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_006_IsUsingLegacyInput, ¶ms ); return params._ret; } extern vtable_ptr winIVRInput_IVRInput_006_vtable; DEFINE_RTTI_DATA0(winIVRInput_IVRInput_006, 0, ".?AVIVRInput@@") __ASM_BLOCK_BEGIN(winIVRInput_IVRInput_006_vtables) __ASM_VTABLE(winIVRInput_IVRInput_006, VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_SetActionManifestPath) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_GetActionSetHandle) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_GetActionHandle) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_GetInputSourceHandle) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_UpdateActionState) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_GetDigitalActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_GetAnalogActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_GetPoseActionDataRelativeToNow) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_GetPoseActionDataForNextFrame) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_GetSkeletalActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_GetBoneCount) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_GetBoneHierarchy) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_GetBoneName) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_GetSkeletalReferenceTransforms) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_GetSkeletalTrackingLevel) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_GetSkeletalBoneData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_GetSkeletalSummaryData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_GetSkeletalBoneDataCompressed) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_DecompressSkeletalBoneData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_TriggerHapticVibrationAction) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_GetActionOrigins) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_GetOriginLocalizedName) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_GetOriginTrackedDeviceInfo) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_ShowActionOrigins) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_ShowBindingsForActionSet) VTABLE_ADD_FUNC(winIVRInput_IVRInput_006_IsUsingLegacyInput) ); __ASM_BLOCK_END struct w_steam_iface *create_winIVRInput_IVRInput_006(void *u_iface) { struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r)); TRACE("-> %p\n", r); r->vtable = &winIVRInput_IVRInput_006_vtable; r->u_iface = u_iface; return r; } void destroy_winIVRInput_IVRInput_006(struct w_steam_iface *object) { TRACE("%p\n", object); HeapFree(GetProcessHeap(), 0, object); } struct w_steam_iface *create_winIVRInput_IVRInput_006_FnTable(void *u_iface) { struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r)); struct thunk *thunks = alloc_thunks(26); struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 26 * sizeof(*vtable)); int i; TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks); init_thunk(&thunks[0], r, winIVRInput_IVRInput_006_SetActionManifestPath, 1, FALSE, FALSE); init_thunk(&thunks[1], r, winIVRInput_IVRInput_006_GetActionSetHandle, 2, FALSE, FALSE); init_thunk(&thunks[2], r, winIVRInput_IVRInput_006_GetActionHandle, 2, FALSE, FALSE); init_thunk(&thunks[3], r, winIVRInput_IVRInput_006_GetInputSourceHandle, 2, FALSE, FALSE); init_thunk(&thunks[4], r, winIVRInput_IVRInput_006_UpdateActionState, 3, FALSE, FALSE); init_thunk(&thunks[5], r, winIVRInput_IVRInput_006_GetDigitalActionData, 4, FALSE, FALSE); init_thunk(&thunks[6], r, winIVRInput_IVRInput_006_GetAnalogActionData, 4, FALSE, FALSE); init_thunk(&thunks[7], r, winIVRInput_IVRInput_006_GetPoseActionDataRelativeToNow, 6, TRUE, FALSE); init_thunk(&thunks[8], r, winIVRInput_IVRInput_006_GetPoseActionDataForNextFrame, 5, FALSE, FALSE); init_thunk(&thunks[9], r, winIVRInput_IVRInput_006_GetSkeletalActionData, 3, FALSE, FALSE); init_thunk(&thunks[10], r, winIVRInput_IVRInput_006_GetBoneCount, 2, FALSE, FALSE); init_thunk(&thunks[11], r, winIVRInput_IVRInput_006_GetBoneHierarchy, 3, FALSE, FALSE); init_thunk(&thunks[12], r, winIVRInput_IVRInput_006_GetBoneName, 4, FALSE, FALSE); init_thunk(&thunks[13], r, winIVRInput_IVRInput_006_GetSkeletalReferenceTransforms, 5, FALSE, FALSE); init_thunk(&thunks[14], r, winIVRInput_IVRInput_006_GetSkeletalTrackingLevel, 2, FALSE, FALSE); init_thunk(&thunks[15], r, winIVRInput_IVRInput_006_GetSkeletalBoneData, 5, FALSE, FALSE); init_thunk(&thunks[16], r, winIVRInput_IVRInput_006_GetSkeletalSummaryData, 3, FALSE, FALSE); init_thunk(&thunks[17], r, winIVRInput_IVRInput_006_GetSkeletalBoneDataCompressed, 5, FALSE, FALSE); init_thunk(&thunks[18], r, winIVRInput_IVRInput_006_DecompressSkeletalBoneData, 5, FALSE, FALSE); init_thunk(&thunks[19], r, winIVRInput_IVRInput_006_TriggerHapticVibrationAction, 6, TRUE, TRUE); init_thunk(&thunks[20], r, winIVRInput_IVRInput_006_GetActionOrigins, 4, FALSE, FALSE); init_thunk(&thunks[21], r, winIVRInput_IVRInput_006_GetOriginLocalizedName, 4, FALSE, FALSE); init_thunk(&thunks[22], r, winIVRInput_IVRInput_006_GetOriginTrackedDeviceInfo, 3, FALSE, FALSE); init_thunk(&thunks[23], r, winIVRInput_IVRInput_006_ShowActionOrigins, 2, FALSE, FALSE); init_thunk(&thunks[24], r, winIVRInput_IVRInput_006_ShowBindingsForActionSet, 4, FALSE, FALSE); init_thunk(&thunks[25], r, winIVRInput_IVRInput_006_IsUsingLegacyInput, 0, FALSE, FALSE); for (i = 0; i < 26; i++) vtable[i] = &thunks[i]; r->u_iface = u_iface; r->vtable = (void *)vtable; return r; } void destroy_winIVRInput_IVRInput_006_FnTable(struct w_steam_iface *object) { TRACE("%p\n", object); VirtualFree(object->vtable[0], 0, MEM_RELEASE); HeapFree(GetProcessHeap(), 0, object->vtable); HeapFree(GetProcessHeap(), 0, object); } DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_SetActionManifestPath, 8) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_GetActionSetHandle, 12) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_GetActionHandle, 12) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_GetInputSourceHandle, 12) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_UpdateActionState, 16) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_GetDigitalActionData, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_GetAnalogActionData, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_GetPoseActionDataRelativeToNow, 36) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_GetPoseActionDataForNextFrame, 32) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_GetSkeletalActionData, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_GetBoneCount, 16) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_GetBoneHierarchy, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_GetBoneName, 24) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_GetSkeletalReferenceTransforms, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_GetSkeletalTrackingLevel, 16) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_GetSkeletalBoneData, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_GetSkeletalSummaryData, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_GetSkeletalBoneDataCompressed, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_DecompressSkeletalBoneData, 24) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_TriggerHapticVibrationAction, 36) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_GetActionOrigins, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_GetOriginLocalizedName, 24) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_GetOriginTrackedDeviceInfo, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_GetActionBindingInfo, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_ShowActionOrigins, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_ShowBindingsForActionSet, 24) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_IsUsingLegacyInput, 4) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_007_OpenBindingUI, 28) uint32_t __thiscall winIVRInput_IVRInput_007_SetActionManifestPath(struct w_steam_iface *_this, const char *pchActionManifestPath) { struct IVRInput_IVRInput_007_SetActionManifestPath_params params = { .linux_side = _this->u_iface, .pchActionManifestPath = pchActionManifestPath, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_SetActionManifestPath, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_GetActionSetHandle(struct w_steam_iface *_this, const char *pchActionSetName, uint64_t *pHandle) { struct IVRInput_IVRInput_007_GetActionSetHandle_params params = { .linux_side = _this->u_iface, .pchActionSetName = pchActionSetName, .pHandle = pHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_GetActionSetHandle, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_GetActionHandle(struct w_steam_iface *_this, const char *pchActionName, uint64_t *pHandle) { struct IVRInput_IVRInput_007_GetActionHandle_params params = { .linux_side = _this->u_iface, .pchActionName = pchActionName, .pHandle = pHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_GetActionHandle, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_GetInputSourceHandle(struct w_steam_iface *_this, const char *pchInputSourcePath, uint64_t *pHandle) { struct IVRInput_IVRInput_007_GetInputSourceHandle_params params = { .linux_side = _this->u_iface, .pchInputSourcePath = pchInputSourcePath, .pHandle = pHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_GetInputSourceHandle, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_UpdateActionState(struct w_steam_iface *_this, VRActiveActionSet_t_1016 *pSets, uint32_t unSizeOfVRSelectedActionSet_t, uint32_t unSetCount) { struct IVRInput_IVRInput_007_UpdateActionState_params params = { .linux_side = _this->u_iface, .pSets = pSets, .unSizeOfVRSelectedActionSet_t = unSizeOfVRSelectedActionSet_t, .unSetCount = unSetCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_UpdateActionState, ¶ms ); return params._ret; } extern uint32_t __thiscall winIVRInput_IVRInput_007_GetDigitalActionData(struct w_steam_iface *_this, uint64_t action, w_InputDigitalActionData_t *pActionData, uint32_t unActionDataSize, uint64_t ulRestrictToDevice); uint32_t __thiscall winIVRInput_IVRInput_007_GetAnalogActionData(struct w_steam_iface *_this, uint64_t action, w_InputAnalogActionData_t *pActionData, uint32_t unActionDataSize, uint64_t ulRestrictToDevice) { w_InputAnalogActionData_t w_pActionData; struct IVRInput_IVRInput_007_GetAnalogActionData_params params = { .linux_side = _this->u_iface, .action = action, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_007_GetAnalogActionData, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_GetPoseActionDataRelativeToNow(struct w_steam_iface *_this, uint64_t action, uint32_t eOrigin, float fPredictedSecondsFromNow, w_InputPoseActionData_t *pActionData, uint32_t unActionDataSize, uint64_t ulRestrictToDevice) { w_InputPoseActionData_t w_pActionData; struct IVRInput_IVRInput_007_GetPoseActionDataRelativeToNow_params params = { .linux_side = _this->u_iface, .action = action, .eOrigin = eOrigin, .fPredictedSecondsFromNow = fPredictedSecondsFromNow, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_007_GetPoseActionDataRelativeToNow, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_GetPoseActionDataForNextFrame(struct w_steam_iface *_this, uint64_t action, uint32_t eOrigin, w_InputPoseActionData_t *pActionData, uint32_t unActionDataSize, uint64_t ulRestrictToDevice) { w_InputPoseActionData_t w_pActionData; struct IVRInput_IVRInput_007_GetPoseActionDataForNextFrame_params params = { .linux_side = _this->u_iface, .action = action, .eOrigin = eOrigin, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_007_GetPoseActionDataForNextFrame, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_GetSkeletalActionData(struct w_steam_iface *_this, uint64_t action, w_InputSkeletalActionData_t_113b *pActionData, uint32_t unActionDataSize) { w_InputSkeletalActionData_t_113b w_pActionData; struct IVRInput_IVRInput_007_GetSkeletalActionData_params params = { .linux_side = _this->u_iface, .action = action, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_007_GetSkeletalActionData, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_GetBoneCount(struct w_steam_iface *_this, uint64_t action, uint32_t *pBoneCount) { struct IVRInput_IVRInput_007_GetBoneCount_params params = { .linux_side = _this->u_iface, .action = action, .pBoneCount = pBoneCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_GetBoneCount, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_GetBoneHierarchy(struct w_steam_iface *_this, uint64_t action, int32_t *pParentIndices, uint32_t unIndexArayCount) { struct IVRInput_IVRInput_007_GetBoneHierarchy_params params = { .linux_side = _this->u_iface, .action = action, .pParentIndices = pParentIndices, .unIndexArayCount = unIndexArayCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_GetBoneHierarchy, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_GetBoneName(struct w_steam_iface *_this, uint64_t action, int32_t nBoneIndex, char *pchBoneName, uint32_t unNameBufferSize) { struct IVRInput_IVRInput_007_GetBoneName_params params = { .linux_side = _this->u_iface, .action = action, .nBoneIndex = nBoneIndex, .pchBoneName = pchBoneName, .unNameBufferSize = unNameBufferSize, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_GetBoneName, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_GetSkeletalReferenceTransforms(struct w_steam_iface *_this, uint64_t action, uint32_t eTransformSpace, uint32_t eReferencePose, VRBoneTransform_t *pTransformArray, uint32_t unTransformArrayCount) { struct IVRInput_IVRInput_007_GetSkeletalReferenceTransforms_params params = { .linux_side = _this->u_iface, .action = action, .eTransformSpace = eTransformSpace, .eReferencePose = eReferencePose, .pTransformArray = pTransformArray, .unTransformArrayCount = unTransformArrayCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_GetSkeletalReferenceTransforms, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_GetSkeletalTrackingLevel(struct w_steam_iface *_this, uint64_t action, uint32_t *pSkeletalTrackingLevel) { struct IVRInput_IVRInput_007_GetSkeletalTrackingLevel_params params = { .linux_side = _this->u_iface, .action = action, .pSkeletalTrackingLevel = pSkeletalTrackingLevel, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_GetSkeletalTrackingLevel, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_GetSkeletalBoneData(struct w_steam_iface *_this, uint64_t action, uint32_t eTransformSpace, uint32_t eMotionRange, VRBoneTransform_t *pTransformArray, uint32_t unTransformArrayCount) { struct IVRInput_IVRInput_007_GetSkeletalBoneData_params params = { .linux_side = _this->u_iface, .action = action, .eTransformSpace = eTransformSpace, .eMotionRange = eMotionRange, .pTransformArray = pTransformArray, .unTransformArrayCount = unTransformArrayCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_GetSkeletalBoneData, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_GetSkeletalSummaryData(struct w_steam_iface *_this, uint64_t action, uint32_t eSummaryType, VRSkeletalSummaryData_t *pSkeletalSummaryData) { struct IVRInput_IVRInput_007_GetSkeletalSummaryData_params params = { .linux_side = _this->u_iface, .action = action, .eSummaryType = eSummaryType, .pSkeletalSummaryData = pSkeletalSummaryData, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_GetSkeletalSummaryData, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_GetSkeletalBoneDataCompressed(struct w_steam_iface *_this, uint64_t action, uint32_t eMotionRange, void *pvCompressedData, uint32_t unCompressedSize, uint32_t *punRequiredCompressedSize) { struct IVRInput_IVRInput_007_GetSkeletalBoneDataCompressed_params params = { .linux_side = _this->u_iface, .action = action, .eMotionRange = eMotionRange, .pvCompressedData = pvCompressedData, .unCompressedSize = unCompressedSize, .punRequiredCompressedSize = punRequiredCompressedSize, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_GetSkeletalBoneDataCompressed, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_DecompressSkeletalBoneData(struct w_steam_iface *_this, const void *pvCompressedBuffer, uint32_t unCompressedBufferSize, uint32_t eTransformSpace, VRBoneTransform_t *pTransformArray, uint32_t unTransformArrayCount) { struct IVRInput_IVRInput_007_DecompressSkeletalBoneData_params params = { .linux_side = _this->u_iface, .pvCompressedBuffer = pvCompressedBuffer, .unCompressedBufferSize = unCompressedBufferSize, .eTransformSpace = eTransformSpace, .pTransformArray = pTransformArray, .unTransformArrayCount = unTransformArrayCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_DecompressSkeletalBoneData, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_TriggerHapticVibrationAction(struct w_steam_iface *_this, uint64_t action, float fStartSecondsFromNow, float fDurationSeconds, float fFrequency, float fAmplitude, uint64_t ulRestrictToDevice) { struct IVRInput_IVRInput_007_TriggerHapticVibrationAction_params params = { .linux_side = _this->u_iface, .action = action, .fStartSecondsFromNow = fStartSecondsFromNow, .fDurationSeconds = fDurationSeconds, .fFrequency = fFrequency, .fAmplitude = fAmplitude, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_TriggerHapticVibrationAction, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_GetActionOrigins(struct w_steam_iface *_this, uint64_t actionSetHandle, uint64_t digitalActionHandle, uint64_t *originsOut, uint32_t originOutCount) { struct IVRInput_IVRInput_007_GetActionOrigins_params params = { .linux_side = _this->u_iface, .actionSetHandle = actionSetHandle, .digitalActionHandle = digitalActionHandle, .originsOut = originsOut, .originOutCount = originOutCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_GetActionOrigins, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_GetOriginLocalizedName(struct w_steam_iface *_this, uint64_t origin, char *pchNameArray, uint32_t unNameArraySize, int32_t unStringSectionsToInclude) { struct IVRInput_IVRInput_007_GetOriginLocalizedName_params params = { .linux_side = _this->u_iface, .origin = origin, .pchNameArray = pchNameArray, .unNameArraySize = unNameArraySize, .unStringSectionsToInclude = unStringSectionsToInclude, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_GetOriginLocalizedName, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_GetOriginTrackedDeviceInfo(struct w_steam_iface *_this, uint64_t origin, w_InputOriginInfo_t *pOriginInfo, uint32_t unOriginInfoSize) { w_InputOriginInfo_t w_pOriginInfo; struct IVRInput_IVRInput_007_GetOriginTrackedDeviceInfo_params params = { .linux_side = _this->u_iface, .origin = origin, .pOriginInfo = pOriginInfo ? &w_pOriginInfo : NULL, .unOriginInfoSize = unOriginInfoSize, }; TRACE("%p\n", _this); unOriginInfoSize = min( unOriginInfoSize, sizeof(w_pOriginInfo) ); if (pOriginInfo) memcpy( &w_pOriginInfo, pOriginInfo, unOriginInfoSize ); VRCLIENT_CALL( IVRInput_IVRInput_007_GetOriginTrackedDeviceInfo, ¶ms ); if (pOriginInfo) memcpy( pOriginInfo, &w_pOriginInfo, unOriginInfoSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_GetActionBindingInfo(struct w_steam_iface *_this, uint64_t action, InputBindingInfo_t_1517 *pOriginInfo, uint32_t unBindingInfoSize, uint32_t unBindingInfoCount, uint32_t *punReturnedBindingInfoCount) { struct IVRInput_IVRInput_007_GetActionBindingInfo_params params = { .linux_side = _this->u_iface, .action = action, .pOriginInfo = pOriginInfo, .unBindingInfoSize = unBindingInfoSize, .unBindingInfoCount = unBindingInfoCount, .punReturnedBindingInfoCount = punReturnedBindingInfoCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_GetActionBindingInfo, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_ShowActionOrigins(struct w_steam_iface *_this, uint64_t actionSetHandle, uint64_t ulActionHandle) { struct IVRInput_IVRInput_007_ShowActionOrigins_params params = { .linux_side = _this->u_iface, .actionSetHandle = actionSetHandle, .ulActionHandle = ulActionHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_ShowActionOrigins, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_ShowBindingsForActionSet(struct w_steam_iface *_this, VRActiveActionSet_t_1016 *pSets, uint32_t unSizeOfVRSelectedActionSet_t, uint32_t unSetCount, uint64_t originToHighlight) { struct IVRInput_IVRInput_007_ShowBindingsForActionSet_params params = { .linux_side = _this->u_iface, .pSets = pSets, .unSizeOfVRSelectedActionSet_t = unSizeOfVRSelectedActionSet_t, .unSetCount = unSetCount, .originToHighlight = originToHighlight, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_ShowBindingsForActionSet, ¶ms ); return params._ret; } int8_t __thiscall winIVRInput_IVRInput_007_IsUsingLegacyInput(struct w_steam_iface *_this) { struct IVRInput_IVRInput_007_IsUsingLegacyInput_params params = { .linux_side = _this->u_iface, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_IsUsingLegacyInput, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_007_OpenBindingUI(struct w_steam_iface *_this, const char *pchAppKey, uint64_t ulActionSetHandle, uint64_t ulDeviceHandle, int8_t bShowOnDesktop) { struct IVRInput_IVRInput_007_OpenBindingUI_params params = { .linux_side = _this->u_iface, .pchAppKey = pchAppKey, .ulActionSetHandle = ulActionSetHandle, .ulDeviceHandle = ulDeviceHandle, .bShowOnDesktop = bShowOnDesktop, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_007_OpenBindingUI, ¶ms ); return params._ret; } extern vtable_ptr winIVRInput_IVRInput_007_vtable; DEFINE_RTTI_DATA0(winIVRInput_IVRInput_007, 0, ".?AVIVRInput@@") __ASM_BLOCK_BEGIN(winIVRInput_IVRInput_007_vtables) __ASM_VTABLE(winIVRInput_IVRInput_007, VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_SetActionManifestPath) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_GetActionSetHandle) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_GetActionHandle) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_GetInputSourceHandle) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_UpdateActionState) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_GetDigitalActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_GetAnalogActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_GetPoseActionDataRelativeToNow) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_GetPoseActionDataForNextFrame) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_GetSkeletalActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_GetBoneCount) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_GetBoneHierarchy) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_GetBoneName) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_GetSkeletalReferenceTransforms) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_GetSkeletalTrackingLevel) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_GetSkeletalBoneData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_GetSkeletalSummaryData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_GetSkeletalBoneDataCompressed) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_DecompressSkeletalBoneData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_TriggerHapticVibrationAction) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_GetActionOrigins) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_GetOriginLocalizedName) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_GetOriginTrackedDeviceInfo) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_GetActionBindingInfo) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_ShowActionOrigins) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_ShowBindingsForActionSet) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_IsUsingLegacyInput) VTABLE_ADD_FUNC(winIVRInput_IVRInput_007_OpenBindingUI) ); __ASM_BLOCK_END struct w_steam_iface *create_winIVRInput_IVRInput_007(void *u_iface) { struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r)); TRACE("-> %p\n", r); r->vtable = &winIVRInput_IVRInput_007_vtable; r->u_iface = u_iface; return r; } void destroy_winIVRInput_IVRInput_007(struct w_steam_iface *object) { TRACE("%p\n", object); HeapFree(GetProcessHeap(), 0, object); } struct w_steam_iface *create_winIVRInput_IVRInput_007_FnTable(void *u_iface) { struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r)); struct thunk *thunks = alloc_thunks(28); struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 28 * sizeof(*vtable)); int i; TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks); init_thunk(&thunks[0], r, winIVRInput_IVRInput_007_SetActionManifestPath, 1, FALSE, FALSE); init_thunk(&thunks[1], r, winIVRInput_IVRInput_007_GetActionSetHandle, 2, FALSE, FALSE); init_thunk(&thunks[2], r, winIVRInput_IVRInput_007_GetActionHandle, 2, FALSE, FALSE); init_thunk(&thunks[3], r, winIVRInput_IVRInput_007_GetInputSourceHandle, 2, FALSE, FALSE); init_thunk(&thunks[4], r, winIVRInput_IVRInput_007_UpdateActionState, 3, FALSE, FALSE); init_thunk(&thunks[5], r, winIVRInput_IVRInput_007_GetDigitalActionData, 4, FALSE, FALSE); init_thunk(&thunks[6], r, winIVRInput_IVRInput_007_GetAnalogActionData, 4, FALSE, FALSE); init_thunk(&thunks[7], r, winIVRInput_IVRInput_007_GetPoseActionDataRelativeToNow, 6, TRUE, FALSE); init_thunk(&thunks[8], r, winIVRInput_IVRInput_007_GetPoseActionDataForNextFrame, 5, FALSE, FALSE); init_thunk(&thunks[9], r, winIVRInput_IVRInput_007_GetSkeletalActionData, 3, FALSE, FALSE); init_thunk(&thunks[10], r, winIVRInput_IVRInput_007_GetBoneCount, 2, FALSE, FALSE); init_thunk(&thunks[11], r, winIVRInput_IVRInput_007_GetBoneHierarchy, 3, FALSE, FALSE); init_thunk(&thunks[12], r, winIVRInput_IVRInput_007_GetBoneName, 4, FALSE, FALSE); init_thunk(&thunks[13], r, winIVRInput_IVRInput_007_GetSkeletalReferenceTransforms, 5, FALSE, FALSE); init_thunk(&thunks[14], r, winIVRInput_IVRInput_007_GetSkeletalTrackingLevel, 2, FALSE, FALSE); init_thunk(&thunks[15], r, winIVRInput_IVRInput_007_GetSkeletalBoneData, 5, FALSE, FALSE); init_thunk(&thunks[16], r, winIVRInput_IVRInput_007_GetSkeletalSummaryData, 3, FALSE, FALSE); init_thunk(&thunks[17], r, winIVRInput_IVRInput_007_GetSkeletalBoneDataCompressed, 5, FALSE, FALSE); init_thunk(&thunks[18], r, winIVRInput_IVRInput_007_DecompressSkeletalBoneData, 5, FALSE, FALSE); init_thunk(&thunks[19], r, winIVRInput_IVRInput_007_TriggerHapticVibrationAction, 6, TRUE, TRUE); init_thunk(&thunks[20], r, winIVRInput_IVRInput_007_GetActionOrigins, 4, FALSE, FALSE); init_thunk(&thunks[21], r, winIVRInput_IVRInput_007_GetOriginLocalizedName, 4, FALSE, FALSE); init_thunk(&thunks[22], r, winIVRInput_IVRInput_007_GetOriginTrackedDeviceInfo, 3, FALSE, FALSE); init_thunk(&thunks[23], r, winIVRInput_IVRInput_007_GetActionBindingInfo, 5, FALSE, FALSE); init_thunk(&thunks[24], r, winIVRInput_IVRInput_007_ShowActionOrigins, 2, FALSE, FALSE); init_thunk(&thunks[25], r, winIVRInput_IVRInput_007_ShowBindingsForActionSet, 4, FALSE, FALSE); init_thunk(&thunks[26], r, winIVRInput_IVRInput_007_IsUsingLegacyInput, 0, FALSE, FALSE); init_thunk(&thunks[27], r, winIVRInput_IVRInput_007_OpenBindingUI, 4, FALSE, FALSE); for (i = 0; i < 28; i++) vtable[i] = &thunks[i]; r->u_iface = u_iface; r->vtable = (void *)vtable; return r; } void destroy_winIVRInput_IVRInput_007_FnTable(struct w_steam_iface *object) { TRACE("%p\n", object); VirtualFree(object->vtable[0], 0, MEM_RELEASE); HeapFree(GetProcessHeap(), 0, object->vtable); HeapFree(GetProcessHeap(), 0, object); } DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_SetActionManifestPath, 8) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetActionSetHandle, 12) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetActionHandle, 12) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetInputSourceHandle, 12) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_UpdateActionState, 16) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetDigitalActionData, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetAnalogActionData, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetPoseActionDataRelativeToNow, 36) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetPoseActionDataForNextFrame, 32) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetSkeletalActionData, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetDominantHand, 8) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_SetDominantHand, 8) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetBoneCount, 16) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetBoneHierarchy, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetBoneName, 24) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetSkeletalReferenceTransforms, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetSkeletalTrackingLevel, 16) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetSkeletalBoneData, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetSkeletalSummaryData, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetSkeletalBoneDataCompressed, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_DecompressSkeletalBoneData, 24) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_TriggerHapticVibrationAction, 36) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetActionOrigins, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetOriginLocalizedName, 24) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetOriginTrackedDeviceInfo, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetActionBindingInfo, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_ShowActionOrigins, 20) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_ShowBindingsForActionSet, 24) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetComponentStateForBinding, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_IsUsingLegacyInput, 4) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_OpenBindingUI, 28) DEFINE_THISCALL_WRAPPER(winIVRInput_IVRInput_010_GetBindingVariant, 20) uint32_t __thiscall winIVRInput_IVRInput_010_SetActionManifestPath(struct w_steam_iface *_this, const char *pchActionManifestPath) { struct IVRInput_IVRInput_010_SetActionManifestPath_params params = { .linux_side = _this->u_iface, .pchActionManifestPath = pchActionManifestPath, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_SetActionManifestPath, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetActionSetHandle(struct w_steam_iface *_this, const char *pchActionSetName, uint64_t *pHandle) { struct IVRInput_IVRInput_010_GetActionSetHandle_params params = { .linux_side = _this->u_iface, .pchActionSetName = pchActionSetName, .pHandle = pHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_GetActionSetHandle, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetActionHandle(struct w_steam_iface *_this, const char *pchActionName, uint64_t *pHandle) { struct IVRInput_IVRInput_010_GetActionHandle_params params = { .linux_side = _this->u_iface, .pchActionName = pchActionName, .pHandle = pHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_GetActionHandle, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetInputSourceHandle(struct w_steam_iface *_this, const char *pchInputSourcePath, uint64_t *pHandle) { struct IVRInput_IVRInput_010_GetInputSourceHandle_params params = { .linux_side = _this->u_iface, .pchInputSourcePath = pchInputSourcePath, .pHandle = pHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_GetInputSourceHandle, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_UpdateActionState(struct w_steam_iface *_this, VRActiveActionSet_t_1016 *pSets, uint32_t unSizeOfVRSelectedActionSet_t, uint32_t unSetCount) { struct IVRInput_IVRInput_010_UpdateActionState_params params = { .linux_side = _this->u_iface, .pSets = pSets, .unSizeOfVRSelectedActionSet_t = unSizeOfVRSelectedActionSet_t, .unSetCount = unSetCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_UpdateActionState, ¶ms ); return params._ret; } extern uint32_t __thiscall winIVRInput_IVRInput_010_GetDigitalActionData(struct w_steam_iface *_this, uint64_t action, w_InputDigitalActionData_t *pActionData, uint32_t unActionDataSize, uint64_t ulRestrictToDevice); uint32_t __thiscall winIVRInput_IVRInput_010_GetAnalogActionData(struct w_steam_iface *_this, uint64_t action, w_InputAnalogActionData_t *pActionData, uint32_t unActionDataSize, uint64_t ulRestrictToDevice) { w_InputAnalogActionData_t w_pActionData; struct IVRInput_IVRInput_010_GetAnalogActionData_params params = { .linux_side = _this->u_iface, .action = action, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_010_GetAnalogActionData, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetPoseActionDataRelativeToNow(struct w_steam_iface *_this, uint64_t action, uint32_t eOrigin, float fPredictedSecondsFromNow, w_InputPoseActionData_t *pActionData, uint32_t unActionDataSize, uint64_t ulRestrictToDevice) { w_InputPoseActionData_t w_pActionData; struct IVRInput_IVRInput_010_GetPoseActionDataRelativeToNow_params params = { .linux_side = _this->u_iface, .action = action, .eOrigin = eOrigin, .fPredictedSecondsFromNow = fPredictedSecondsFromNow, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_010_GetPoseActionDataRelativeToNow, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetPoseActionDataForNextFrame(struct w_steam_iface *_this, uint64_t action, uint32_t eOrigin, w_InputPoseActionData_t *pActionData, uint32_t unActionDataSize, uint64_t ulRestrictToDevice) { w_InputPoseActionData_t w_pActionData; struct IVRInput_IVRInput_010_GetPoseActionDataForNextFrame_params params = { .linux_side = _this->u_iface, .action = action, .eOrigin = eOrigin, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_010_GetPoseActionDataForNextFrame, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetSkeletalActionData(struct w_steam_iface *_this, uint64_t action, w_InputSkeletalActionData_t_113b *pActionData, uint32_t unActionDataSize) { w_InputSkeletalActionData_t_113b w_pActionData; struct IVRInput_IVRInput_010_GetSkeletalActionData_params params = { .linux_side = _this->u_iface, .action = action, .pActionData = pActionData ? &w_pActionData : NULL, .unActionDataSize = unActionDataSize, }; TRACE("%p\n", _this); unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) ); if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize ); VRCLIENT_CALL( IVRInput_IVRInput_010_GetSkeletalActionData, ¶ms ); if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetDominantHand(struct w_steam_iface *_this, uint32_t *peDominantHand) { struct IVRInput_IVRInput_010_GetDominantHand_params params = { .linux_side = _this->u_iface, .peDominantHand = peDominantHand, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_GetDominantHand, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_SetDominantHand(struct w_steam_iface *_this, uint32_t eDominantHand) { struct IVRInput_IVRInput_010_SetDominantHand_params params = { .linux_side = _this->u_iface, .eDominantHand = eDominantHand, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_SetDominantHand, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetBoneCount(struct w_steam_iface *_this, uint64_t action, uint32_t *pBoneCount) { struct IVRInput_IVRInput_010_GetBoneCount_params params = { .linux_side = _this->u_iface, .action = action, .pBoneCount = pBoneCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_GetBoneCount, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetBoneHierarchy(struct w_steam_iface *_this, uint64_t action, int32_t *pParentIndices, uint32_t unIndexArayCount) { struct IVRInput_IVRInput_010_GetBoneHierarchy_params params = { .linux_side = _this->u_iface, .action = action, .pParentIndices = pParentIndices, .unIndexArayCount = unIndexArayCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_GetBoneHierarchy, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetBoneName(struct w_steam_iface *_this, uint64_t action, int32_t nBoneIndex, char *pchBoneName, uint32_t unNameBufferSize) { struct IVRInput_IVRInput_010_GetBoneName_params params = { .linux_side = _this->u_iface, .action = action, .nBoneIndex = nBoneIndex, .pchBoneName = pchBoneName, .unNameBufferSize = unNameBufferSize, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_GetBoneName, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetSkeletalReferenceTransforms(struct w_steam_iface *_this, uint64_t action, uint32_t eTransformSpace, uint32_t eReferencePose, VRBoneTransform_t *pTransformArray, uint32_t unTransformArrayCount) { struct IVRInput_IVRInput_010_GetSkeletalReferenceTransforms_params params = { .linux_side = _this->u_iface, .action = action, .eTransformSpace = eTransformSpace, .eReferencePose = eReferencePose, .pTransformArray = pTransformArray, .unTransformArrayCount = unTransformArrayCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_GetSkeletalReferenceTransforms, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetSkeletalTrackingLevel(struct w_steam_iface *_this, uint64_t action, uint32_t *pSkeletalTrackingLevel) { struct IVRInput_IVRInput_010_GetSkeletalTrackingLevel_params params = { .linux_side = _this->u_iface, .action = action, .pSkeletalTrackingLevel = pSkeletalTrackingLevel, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_GetSkeletalTrackingLevel, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetSkeletalBoneData(struct w_steam_iface *_this, uint64_t action, uint32_t eTransformSpace, uint32_t eMotionRange, VRBoneTransform_t *pTransformArray, uint32_t unTransformArrayCount) { struct IVRInput_IVRInput_010_GetSkeletalBoneData_params params = { .linux_side = _this->u_iface, .action = action, .eTransformSpace = eTransformSpace, .eMotionRange = eMotionRange, .pTransformArray = pTransformArray, .unTransformArrayCount = unTransformArrayCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_GetSkeletalBoneData, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetSkeletalSummaryData(struct w_steam_iface *_this, uint64_t action, uint32_t eSummaryType, VRSkeletalSummaryData_t *pSkeletalSummaryData) { struct IVRInput_IVRInput_010_GetSkeletalSummaryData_params params = { .linux_side = _this->u_iface, .action = action, .eSummaryType = eSummaryType, .pSkeletalSummaryData = pSkeletalSummaryData, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_GetSkeletalSummaryData, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetSkeletalBoneDataCompressed(struct w_steam_iface *_this, uint64_t action, uint32_t eMotionRange, void *pvCompressedData, uint32_t unCompressedSize, uint32_t *punRequiredCompressedSize) { struct IVRInput_IVRInput_010_GetSkeletalBoneDataCompressed_params params = { .linux_side = _this->u_iface, .action = action, .eMotionRange = eMotionRange, .pvCompressedData = pvCompressedData, .unCompressedSize = unCompressedSize, .punRequiredCompressedSize = punRequiredCompressedSize, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_GetSkeletalBoneDataCompressed, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_DecompressSkeletalBoneData(struct w_steam_iface *_this, const void *pvCompressedBuffer, uint32_t unCompressedBufferSize, uint32_t eTransformSpace, VRBoneTransform_t *pTransformArray, uint32_t unTransformArrayCount) { struct IVRInput_IVRInput_010_DecompressSkeletalBoneData_params params = { .linux_side = _this->u_iface, .pvCompressedBuffer = pvCompressedBuffer, .unCompressedBufferSize = unCompressedBufferSize, .eTransformSpace = eTransformSpace, .pTransformArray = pTransformArray, .unTransformArrayCount = unTransformArrayCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_DecompressSkeletalBoneData, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_TriggerHapticVibrationAction(struct w_steam_iface *_this, uint64_t action, float fStartSecondsFromNow, float fDurationSeconds, float fFrequency, float fAmplitude, uint64_t ulRestrictToDevice) { struct IVRInput_IVRInput_010_TriggerHapticVibrationAction_params params = { .linux_side = _this->u_iface, .action = action, .fStartSecondsFromNow = fStartSecondsFromNow, .fDurationSeconds = fDurationSeconds, .fFrequency = fFrequency, .fAmplitude = fAmplitude, .ulRestrictToDevice = ulRestrictToDevice, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_TriggerHapticVibrationAction, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetActionOrigins(struct w_steam_iface *_this, uint64_t actionSetHandle, uint64_t digitalActionHandle, uint64_t *originsOut, uint32_t originOutCount) { struct IVRInput_IVRInput_010_GetActionOrigins_params params = { .linux_side = _this->u_iface, .actionSetHandle = actionSetHandle, .digitalActionHandle = digitalActionHandle, .originsOut = originsOut, .originOutCount = originOutCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_GetActionOrigins, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetOriginLocalizedName(struct w_steam_iface *_this, uint64_t origin, char *pchNameArray, uint32_t unNameArraySize, int32_t unStringSectionsToInclude) { struct IVRInput_IVRInput_010_GetOriginLocalizedName_params params = { .linux_side = _this->u_iface, .origin = origin, .pchNameArray = pchNameArray, .unNameArraySize = unNameArraySize, .unStringSectionsToInclude = unStringSectionsToInclude, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_GetOriginLocalizedName, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetOriginTrackedDeviceInfo(struct w_steam_iface *_this, uint64_t origin, w_InputOriginInfo_t *pOriginInfo, uint32_t unOriginInfoSize) { w_InputOriginInfo_t w_pOriginInfo; struct IVRInput_IVRInput_010_GetOriginTrackedDeviceInfo_params params = { .linux_side = _this->u_iface, .origin = origin, .pOriginInfo = pOriginInfo ? &w_pOriginInfo : NULL, .unOriginInfoSize = unOriginInfoSize, }; TRACE("%p\n", _this); unOriginInfoSize = min( unOriginInfoSize, sizeof(w_pOriginInfo) ); if (pOriginInfo) memcpy( &w_pOriginInfo, pOriginInfo, unOriginInfoSize ); VRCLIENT_CALL( IVRInput_IVRInput_010_GetOriginTrackedDeviceInfo, ¶ms ); if (pOriginInfo) memcpy( pOriginInfo, &w_pOriginInfo, unOriginInfoSize ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetActionBindingInfo(struct w_steam_iface *_this, uint64_t action, InputBindingInfo_t_11030 *pOriginInfo, uint32_t unBindingInfoSize, uint32_t unBindingInfoCount, uint32_t *punReturnedBindingInfoCount) { struct IVRInput_IVRInput_010_GetActionBindingInfo_params params = { .linux_side = _this->u_iface, .action = action, .pOriginInfo = pOriginInfo, .unBindingInfoSize = unBindingInfoSize, .unBindingInfoCount = unBindingInfoCount, .punReturnedBindingInfoCount = punReturnedBindingInfoCount, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_GetActionBindingInfo, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_ShowActionOrigins(struct w_steam_iface *_this, uint64_t actionSetHandle, uint64_t ulActionHandle) { struct IVRInput_IVRInput_010_ShowActionOrigins_params params = { .linux_side = _this->u_iface, .actionSetHandle = actionSetHandle, .ulActionHandle = ulActionHandle, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_ShowActionOrigins, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_ShowBindingsForActionSet(struct w_steam_iface *_this, VRActiveActionSet_t_1016 *pSets, uint32_t unSizeOfVRSelectedActionSet_t, uint32_t unSetCount, uint64_t originToHighlight) { struct IVRInput_IVRInput_010_ShowBindingsForActionSet_params params = { .linux_side = _this->u_iface, .pSets = pSets, .unSizeOfVRSelectedActionSet_t = unSizeOfVRSelectedActionSet_t, .unSetCount = unSetCount, .originToHighlight = originToHighlight, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_ShowBindingsForActionSet, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetComponentStateForBinding(struct w_steam_iface *_this, const char *pchRenderModelName, const char *pchComponentName, const InputBindingInfo_t_11030 *pOriginInfo, uint32_t unBindingInfoSize, uint32_t unBindingInfoCount, RenderModel_ComponentState_t *pComponentState) { struct IVRInput_IVRInput_010_GetComponentStateForBinding_params params = { .linux_side = _this->u_iface, .pchRenderModelName = pchRenderModelName, .pchComponentName = pchComponentName, .pOriginInfo = pOriginInfo, .unBindingInfoSize = unBindingInfoSize, .unBindingInfoCount = unBindingInfoCount, .pComponentState = pComponentState, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_GetComponentStateForBinding, ¶ms ); return params._ret; } int8_t __thiscall winIVRInput_IVRInput_010_IsUsingLegacyInput(struct w_steam_iface *_this) { struct IVRInput_IVRInput_010_IsUsingLegacyInput_params params = { .linux_side = _this->u_iface, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_IsUsingLegacyInput, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_OpenBindingUI(struct w_steam_iface *_this, const char *pchAppKey, uint64_t ulActionSetHandle, uint64_t ulDeviceHandle, int8_t bShowOnDesktop) { struct IVRInput_IVRInput_010_OpenBindingUI_params params = { .linux_side = _this->u_iface, .pchAppKey = pchAppKey, .ulActionSetHandle = ulActionSetHandle, .ulDeviceHandle = ulDeviceHandle, .bShowOnDesktop = bShowOnDesktop, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_OpenBindingUI, ¶ms ); return params._ret; } uint32_t __thiscall winIVRInput_IVRInput_010_GetBindingVariant(struct w_steam_iface *_this, uint64_t ulDevicePath, char *pchVariantArray, uint32_t unVariantArraySize) { struct IVRInput_IVRInput_010_GetBindingVariant_params params = { .linux_side = _this->u_iface, .ulDevicePath = ulDevicePath, .pchVariantArray = pchVariantArray, .unVariantArraySize = unVariantArraySize, }; TRACE("%p\n", _this); VRCLIENT_CALL( IVRInput_IVRInput_010_GetBindingVariant, ¶ms ); return params._ret; } extern vtable_ptr winIVRInput_IVRInput_010_vtable; DEFINE_RTTI_DATA0(winIVRInput_IVRInput_010, 0, ".?AVIVRInput@@") __ASM_BLOCK_BEGIN(winIVRInput_IVRInput_010_vtables) __ASM_VTABLE(winIVRInput_IVRInput_010, VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_SetActionManifestPath) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetActionSetHandle) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetActionHandle) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetInputSourceHandle) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_UpdateActionState) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetDigitalActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetAnalogActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetPoseActionDataRelativeToNow) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetPoseActionDataForNextFrame) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetSkeletalActionData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetDominantHand) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_SetDominantHand) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetBoneCount) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetBoneHierarchy) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetBoneName) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetSkeletalReferenceTransforms) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetSkeletalTrackingLevel) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetSkeletalBoneData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetSkeletalSummaryData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetSkeletalBoneDataCompressed) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_DecompressSkeletalBoneData) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_TriggerHapticVibrationAction) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetActionOrigins) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetOriginLocalizedName) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetOriginTrackedDeviceInfo) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetActionBindingInfo) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_ShowActionOrigins) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_ShowBindingsForActionSet) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetComponentStateForBinding) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_IsUsingLegacyInput) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_OpenBindingUI) VTABLE_ADD_FUNC(winIVRInput_IVRInput_010_GetBindingVariant) ); __ASM_BLOCK_END struct w_steam_iface *create_winIVRInput_IVRInput_010(void *u_iface) { struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r)); TRACE("-> %p\n", r); r->vtable = &winIVRInput_IVRInput_010_vtable; r->u_iface = u_iface; return r; } void destroy_winIVRInput_IVRInput_010(struct w_steam_iface *object) { TRACE("%p\n", object); HeapFree(GetProcessHeap(), 0, object); } struct w_steam_iface *create_winIVRInput_IVRInput_010_FnTable(void *u_iface) { struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r)); struct thunk *thunks = alloc_thunks(32); struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 32 * sizeof(*vtable)); int i; TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks); init_thunk(&thunks[0], r, winIVRInput_IVRInput_010_SetActionManifestPath, 1, FALSE, FALSE); init_thunk(&thunks[1], r, winIVRInput_IVRInput_010_GetActionSetHandle, 2, FALSE, FALSE); init_thunk(&thunks[2], r, winIVRInput_IVRInput_010_GetActionHandle, 2, FALSE, FALSE); init_thunk(&thunks[3], r, winIVRInput_IVRInput_010_GetInputSourceHandle, 2, FALSE, FALSE); init_thunk(&thunks[4], r, winIVRInput_IVRInput_010_UpdateActionState, 3, FALSE, FALSE); init_thunk(&thunks[5], r, winIVRInput_IVRInput_010_GetDigitalActionData, 4, FALSE, FALSE); init_thunk(&thunks[6], r, winIVRInput_IVRInput_010_GetAnalogActionData, 4, FALSE, FALSE); init_thunk(&thunks[7], r, winIVRInput_IVRInput_010_GetPoseActionDataRelativeToNow, 6, TRUE, FALSE); init_thunk(&thunks[8], r, winIVRInput_IVRInput_010_GetPoseActionDataForNextFrame, 5, FALSE, FALSE); init_thunk(&thunks[9], r, winIVRInput_IVRInput_010_GetSkeletalActionData, 3, FALSE, FALSE); init_thunk(&thunks[10], r, winIVRInput_IVRInput_010_GetDominantHand, 1, FALSE, FALSE); init_thunk(&thunks[11], r, winIVRInput_IVRInput_010_SetDominantHand, 1, FALSE, FALSE); init_thunk(&thunks[12], r, winIVRInput_IVRInput_010_GetBoneCount, 2, FALSE, FALSE); init_thunk(&thunks[13], r, winIVRInput_IVRInput_010_GetBoneHierarchy, 3, FALSE, FALSE); init_thunk(&thunks[14], r, winIVRInput_IVRInput_010_GetBoneName, 4, FALSE, FALSE); init_thunk(&thunks[15], r, winIVRInput_IVRInput_010_GetSkeletalReferenceTransforms, 5, FALSE, FALSE); init_thunk(&thunks[16], r, winIVRInput_IVRInput_010_GetSkeletalTrackingLevel, 2, FALSE, FALSE); init_thunk(&thunks[17], r, winIVRInput_IVRInput_010_GetSkeletalBoneData, 5, FALSE, FALSE); init_thunk(&thunks[18], r, winIVRInput_IVRInput_010_GetSkeletalSummaryData, 3, FALSE, FALSE); init_thunk(&thunks[19], r, winIVRInput_IVRInput_010_GetSkeletalBoneDataCompressed, 5, FALSE, FALSE); init_thunk(&thunks[20], r, winIVRInput_IVRInput_010_DecompressSkeletalBoneData, 5, FALSE, FALSE); init_thunk(&thunks[21], r, winIVRInput_IVRInput_010_TriggerHapticVibrationAction, 6, TRUE, TRUE); init_thunk(&thunks[22], r, winIVRInput_IVRInput_010_GetActionOrigins, 4, FALSE, FALSE); init_thunk(&thunks[23], r, winIVRInput_IVRInput_010_GetOriginLocalizedName, 4, FALSE, FALSE); init_thunk(&thunks[24], r, winIVRInput_IVRInput_010_GetOriginTrackedDeviceInfo, 3, FALSE, FALSE); init_thunk(&thunks[25], r, winIVRInput_IVRInput_010_GetActionBindingInfo, 5, FALSE, FALSE); init_thunk(&thunks[26], r, winIVRInput_IVRInput_010_ShowActionOrigins, 2, FALSE, FALSE); init_thunk(&thunks[27], r, winIVRInput_IVRInput_010_ShowBindingsForActionSet, 4, FALSE, FALSE); init_thunk(&thunks[28], r, winIVRInput_IVRInput_010_GetComponentStateForBinding, 6, FALSE, FALSE); init_thunk(&thunks[29], r, winIVRInput_IVRInput_010_IsUsingLegacyInput, 0, FALSE, FALSE); init_thunk(&thunks[30], r, winIVRInput_IVRInput_010_OpenBindingUI, 4, FALSE, FALSE); init_thunk(&thunks[31], r, winIVRInput_IVRInput_010_GetBindingVariant, 3, FALSE, FALSE); for (i = 0; i < 32; i++) vtable[i] = &thunks[i]; r->u_iface = u_iface; r->vtable = (void *)vtable; return r; } void destroy_winIVRInput_IVRInput_010_FnTable(struct w_steam_iface *object) { TRACE("%p\n", object); VirtualFree(object->vtable[0], 0, MEM_RELEASE); HeapFree(GetProcessHeap(), 0, object->vtable); HeapFree(GetProcessHeap(), 0, object); } void init_winIVRInput_rtti( char *base ) { #ifdef __x86_64__ init_winIVRInput_IVRInput_003_rtti( base ); init_winIVRInput_IVRInput_004_rtti( base ); init_winIVRInput_IVRInput_005_rtti( base ); init_winIVRInput_IVRInput_006_rtti( base ); init_winIVRInput_IVRInput_007_rtti( base ); init_winIVRInput_IVRInput_010_rtti( base ); #endif /* __x86_64__ */ }