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); }
public bool TryGetTrackingPoint(string name, out TrackingPoint trackingPoint) { return(AllTrackingPoints.TryGetValue(name, out trackingPoint)); }