/* eslint-disable @typescript-eslint/naming-convention */ import { formatJsonStr, formatResponse, convertDataToPointer } from '../utils'; let wxStartGyroscopeCallback; let wxStopGyroscopeCallback; let wxOnGyroscopeChangeCallback; const OnGyroscopeChange = (res) => { formatResponse('OnGyroscopeChangeListenerResult', res); const xPtr = convertDataToPointer(res.x); const yPtr = convertDataToPointer(res.y); const zPtr = convertDataToPointer(res.z); GameGlobal.Module.dynCall_viii(wxOnGyroscopeChangeCallback, xPtr, yPtr, zPtr); GameGlobal.Module._free(xPtr); GameGlobal.Module._free(yPtr); GameGlobal.Module._free(zPtr); }; function handleCallback(callback, id, callbackType, res) { formatResponse('GeneralCallbackResult', res); const idPtr = convertDataToPointer(id); const msgPtr = convertDataToPointer(res.errMsg); GameGlobal.Module.dynCall_viii(callback, idPtr, callbackType, msgPtr); GameGlobal.Module._free(idPtr); GameGlobal.Module._free(msgPtr); } function WX_StartGyroscope(id, conf) { const config = formatJsonStr(conf); wx.startGyroscope({ ...config, success(res) { handleCallback(wxStartGyroscopeCallback, id, 2, res); }, fail(res) { handleCallback(wxStartGyroscopeCallback, id, 1, res); }, complete(res) { handleCallback(wxStartGyroscopeCallback, id, 0, res); }, }); } function WX_StopGyroscope(id, conf) { const config = formatJsonStr(conf); wx.stopGyroscope({ ...config, success(res) { handleCallback(wxStopGyroscopeCallback, id, 2, res); }, fail(res) { handleCallback(wxStopGyroscopeCallback, id, 1, res); }, complete(res) { handleCallback(wxStopGyroscopeCallback, id, 0, res); }, }); } function WX_OnGyroscopeChange() { wx.onGyroscopeChange(OnGyroscopeChange); } function WX_OffGyroscopeChange() { wx.offGyroscopeChange(); } function WX_RegisterStartGyroscopeCallback(callback) { wxStartGyroscopeCallback = callback; } function WX_RegisterStopGyroscopeCallback(callback) { wxStopGyroscopeCallback = callback; } function WX_RegisterOnGyroscopeChangeCallback(callback) { wxOnGyroscopeChangeCallback = callback; } export default { WX_StartGyroscope, WX_StopGyroscope, WX_OnGyroscopeChange, WX_OffGyroscopeChange, WX_RegisterStartGyroscopeCallback, WX_RegisterStopGyroscopeCallback, WX_RegisterOnGyroscopeChangeCallback, };