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));
 }