public TrackingPoint ApplyPoint(string name, ETrackedDeviceClass deviceClass, Vector3 position, Quaternion rotation, bool isOK) { //ignore "LIV Virtual Camera" if (AllTrackingPoints.TryGetValue(name, out var trackingPoint) == false) { trackingPoint = new TrackingPoint(name, deviceClass); var targetGameObject = new GameObject(name); trackingPoint.TrackingWatcher = targetGameObject.AddComponent <TrackingWatcher>(); trackingPoint.TargetTransform = targetGameObject.transform; trackingPoint.TargetTransform.SetParent(transform, false); AllTrackingPoints[name] = trackingPoint; if (deviceClass == ETrackedDeviceClass.HMD) { HmdTrackingPoints[name] = trackingPoint; } else if (deviceClass == ETrackedDeviceClass.Controller) { ControllerTrackingPoints[name] = trackingPoint; } else if (deviceClass == ETrackedDeviceClass.GenericTracker) { TrackerTrackingPoints[name] = trackingPoint; } } if (trackingPoint.SetPositionAndRotationLocal(position, rotation)) { TrackerMovedEvent?.Invoke(this, name); } trackingPoint.TrackingWatcher.IsOK(isOK); return(trackingPoint); }
private static void CheckPosition(DeviceInfo device) { if (lastPositions.ContainsKey(device.serialNumber) == false) { lastPositions.Add(device.serialNumber, device.transform.pos); } else { if (Vector3.Distance(lastPositions[device.serialNumber], device.transform.pos) > 0.1f) { TrackerMovedEvent?.Invoke(null, device.serialNumber); lastPositions[device.serialNumber] = device.transform.pos; } } }
private static void CheckPosition(string serial, Vector3 pos) { if (lastPositions.ContainsKey(serial) == false) { lastPositions.Add(serial, pos); } else { if (Vector3.Distance(lastPositions[serial], pos) > 0.1f) { TrackerMovedEvent?.Invoke(null, serial); lastPositions[serial] = pos; } } }