public override void GetPoseState(WVR_DeviceType type, WVR_PoseOriginModel originModel, uint predictedMilliSec, ref WVR_PoseState_t poseState) { WVR_GetPoseState_Android(type, originModel, predictedMilliSec, ref poseState); }
public static extern void WVR_GetSyncPose_Android(WVR_PoseOriginModel originModel, [In, Out] WVR_DevicePosePair_t[] poseArray, uint pairArrayCount);
public void UpdatePoses(WVR_PoseOriginModel origin) { Log.gpl.d(LOG_TAG, "UpdatePoses"); Interop.WVR_GetSyncPose(origin, poses, (uint)poses.Length); for (uint i = 0; i < DeviceTypes.Length; i++) { bool _hasType = false; for (uint j = 0; j < poses.Length; j++) { WVR_DevicePosePair_t _pose = poses[j]; if (_pose.type == DeviceTypes [i]) { _hasType = true; deviceIndexMap[i] = j; if (connected [i] != _pose.pose.IsValidPose) { connected [i] = _pose.pose.IsValidPose; Log.i(LOG_TAG, "device " + DeviceTypes [i] + " is " + (connected [i] ? "connected" : "disconnected")); WaveVR_Utils.Event.Send(WaveVR_Utils.Event.DEVICE_CONNECTED, DeviceTypes [i], connected[i]); } if (connected [i]) { rtPoses[j].update(_pose.pose.PoseMatrix); } break; } } // no such type if (!_hasType) { if (connected [i] == true) { connected [i] = false; Log.i(LOG_TAG, "device " + DeviceTypes [i] + " is disconnected."); WaveVR_Utils.Event.Send(WaveVR_Utils.Event.DEVICE_CONNECTED, DeviceTypes [i], connected[i]); } } } //for (int i = 0; i < poses.Length; i++) //{ // var vrpose = poses[i]; // if (vrpose.pose.IsValidPose != connected[i]) // { // connected[i] = vrpose.pose.IsValidPose; // connected_types [i] = vrpose.type; // Log.i(LOG_TAG, "device[" + i + "] " + vrpose.type + " is " + (connected[i] ? "connected" : "disconnected")); // WaveVR_Utils.Event.Send(WaveVR_Utils.DEVICE_CONNECTED, vrpose.type, connected[i]); // } // if (vrpose.pose.IsValidPose) // rtPoses[i].update(vrpose.pose.PoseMatrix); //} for (int i = 0; i < poses.Length; i++) { if (poses [i].pose.IsValidPose) { Log.gpl.d(LOG_TAG, "device " + i + " pos: {" + rtPoses [i].pos + "}" + "rot: {" + rtPoses [i].rot + "}"); } } WaveVR_Utils.Event.Send(WaveVR_Utils.Event.NEW_POSES, poses, rtPoses); Log.gpl.d(LOG_TAG, "after new poses"); WaveVR_Utils.Event.Send(WaveVR_Utils.Event.AFTER_NEW_POSES); }
public static extern void WVR_GetPoseState_Android(WVR_DeviceType type, WVR_PoseOriginModel originModel, uint predictedMilliSec, ref WVR_PoseState_t poseState);
public override void GetSyncPose(WVR_PoseOriginModel originModel, [In, Out] WVR_DevicePosePair_t[] poseArray, uint pairArrayCount) { system.GetSyncPose(originModel, poseArray, pairArrayCount); }
public void GetRigidTransform(WVR_DeviceType type, ref WaveVR_Utils.RigidTransform rtPose, WVR_PoseOriginModel origin) { switch (type) { case WVR_DeviceType.WVR_DeviceType_HMD: if (origin == WVR_PoseOriginModel.WVR_PoseOriginModel_OriginOnGround) { rtPose = rtPose_head_onGround; } else { rtPose = rtPose_head; } break; case WVR_DeviceType.WVR_DeviceType_Controller_Right: rtPose = rtPose_right; break; case WVR_DeviceType.WVR_DeviceType_Controller_Left: rtPose = rtPose_left; break; default: break; } }
public override void GetSyncPose(WVR_PoseOriginModel originModel, [In, Out] WVR_DevicePosePair_t[] poseArray, uint pairArrayCount) { WVR_GetSyncPose_S((int)originModel, poseArray, (int)pairArrayCount); }
public override WVR_Result GetHandTrackingData(ref WVR_HandSkeletonData_t skeleton, ref WVR_HandPoseData_t pose, WVR_PoseOriginModel originModel) { return(system.GetHandTrackingData(ref skeleton, ref pose, originModel)); }
void Awake() { Log.d(LOG_TAG, "Awake()+"); if (instance == null) { instance = this; } else { Log.w(LOG_TAG, "Render already Awaked"); } QualitySettings.SetQualityLevel(QualitySettings.GetQualityLevel(), true); synchronizer = new RenderThreadSynchronizer(); if (globalOrigin >= 0 && globalOrigin <= 3) { _origin = (WVR_PoseOriginModel)globalOrigin; Log.d(LOG_TAG, "Has global tracking space " + _origin); } if (WaveVR_Init.Instance == null || WaveVR.Instance == null) { Log.e(LOG_TAG, "Fail to initialize"); } #if UNITY_EDITOR if (!Application.isEditor) #endif { // This command can make sure native's render code are initialized in render thread. InitializeGraphic(synchronizer); // Setup render values uint w = 0, h = 0; Interop.WVR_GetRenderTargetSize(ref w, ref h); sceneWidth = (float)w; sceneHeight = (float)h; projRawL = new float[4] { 0.0f, 0.0f, 0.0f, 0.0f }; projRawR = new float[4] { 0.0f, 0.0f, 0.0f, 0.0f }; WVR_RenderProps_t props = new WVR_RenderProps_t(); Interop.WVR_GetRenderProps(ref props); targetFPS = (int)props.refreshRate; OnIpdChanged(null); } // May call eglMakeCurrent inside TextureManager() textureManager = new TextureManager(); WaveVR_Utils.IssueEngineEvent(WaveVR_Utils.EngineEventID.HMD_INITIAILZED); Screen.sleepTimeout = SleepTimeout.NeverSleep; Application.targetFrameRate = targetFPS; Log.d(LOG_TAG, "Awake()-"); }
public void UpdatePoses(WVR_PoseOriginModel origin, bool isSimulator) { Log.gpl.d(LOG_TAG, "UpdatePoses"); #if UNITY_EDITOR if (Application.isEditor) { if (isSimulator) { WaveVR_Utils.WVR_GetSyncPose_S((int)origin, poses, poses.Length); } } else #endif { bool _focusCapturedBySystem = Interop.WVR_IsInputFocusCapturedBySystem(); if (this.FocusCapturedBySystem != _focusCapturedBySystem) { this.FocusCapturedBySystem = _focusCapturedBySystem; WaveVR_Utils.Event.Send(WaveVR_Utils.Event.SYSTEMFOCUS_CHANGED, this.FocusCapturedBySystem); } Interop.WVR_GetSyncPose(origin, poses, (uint)poses.Length); } for (uint i = 0; i < DeviceTypes.Length; i++) { bool _hasType = false; for (uint j = 0; j < poses.Length; j++) { WVR_DevicePosePair_t _pose = poses[j]; if (_pose.type == DeviceTypes [i]) { _hasType = true; deviceIndexMap[i] = j; if (connected [i] != _pose.pose.IsValidPose) { connected [i] = _pose.pose.IsValidPose; Log.i(LOG_TAG, "device " + DeviceTypes [i] + " is " + (connected [i] ? "connected" : "disconnected")); WaveVR_Utils.Event.Send(WaveVR_Utils.Event.DEVICE_CONNECTED, DeviceTypes [i], connected[i]); } if (connected [i]) { rtPoses[j].update(_pose.pose.PoseMatrix); } break; } } // no such type if (!_hasType) { if (connected [i] == true) { connected [i] = false; Log.i(LOG_TAG, "device " + DeviceTypes [i] + " is disconnected."); WaveVR_Utils.Event.Send(WaveVR_Utils.Event.DEVICE_CONNECTED, DeviceTypes [i], connected[i]); } } } for (int i = 0; i < poses.Length; i++) { WVR_DeviceType _type = poses [i].type; bool _connected = false; #if UNITY_EDITOR if (isSimulator) { _connected = WaveVR_Utils.WVR_IsDeviceConnected_S((int)_type); } else #endif { _connected = Interop.WVR_IsDeviceConnected(_type); } bool _posevalid = poses [i].pose.IsValidPose; Log.gpl.d(LOG_TAG, "Device " + _type + " is " + (_connected ? "connected" : "disconnected") + ", pose is " + (_posevalid ? "valid" : "invalid") + ", pos: {" + rtPoses [i].pos.x + ", " + rtPoses [i].pos.y + ", " + rtPoses [i].pos.z + "}" + ", rot: {" + rtPoses [i].rot.x + ", " + rtPoses [i].rot.y + ", " + rtPoses [i].rot.z + ", " + rtPoses [i].rot.w + "}"); } try { WaveVR_Utils.Event.Send(WaveVR_Utils.Event.NEW_POSES, poses, rtPoses); } catch (Exception ex) { Log.e(LOG_TAG, "Send NEW_POSES Event Exception : " + ex); } Log.gpl.d(LOG_TAG, "after new poses"); try { WaveVR_Utils.Event.Send(WaveVR_Utils.Event.AFTER_NEW_POSES); } catch (Exception ex) { Log.e(LOG_TAG, "Send AFTER_NEW_POSES Event Exception : " + ex); } }
public void UpdatePoses(WVR_PoseOriginModel origin) { UpdatePoses(origin, false); }