protected override void OnNodeAdded(ClarteXRNodeState node) { if (!trackedIds.ContainsKey(node.uniqueID)) { trackedIds.Add(uniqueID, 0); } trackedIds[uniqueID]++; Debug.LogFormat("Tracker '{0}' of type '{1}' is associated to object '{2}'", uniqueID, type, gameObject.name); }
protected virtual void Update() { ClarteXRNodeState.GetNodeStates(nodes); if (ShowNodes) { string log = "Devices:"; foreach (ClarteXRNodeState nd in nodes) { log += "\n" + nd.nodeType + " " + nd.uniqueID + " '" + nd.name + "'"; } Debug.Log(log); ShowNodes = false; } if (uniqueID == 0) { SearchValidNode(nodes); } else if (!CheckConnectedNode(nodes)) { RemoveNode(); SearchValidNode(nodes); } if (uniqueID != 0) { foreach (ClarteXRNodeState node in nodes) { if (node.uniqueID == uniqueID) { if (node.tracked != Tracked) { Tracked = node.tracked; } if (Tracked) { Vector3 pos; Quaternion rot; if (node.TryGetPosition(out pos)) { if (node.TryGetRotation(out rot)) { if (InverseTransform) { rot = Quaternion.Inverse(rot); pos = rot * -pos; } transform.localRotation = rot; transform.localPosition = pos; } else { if (InverseTransform) { pos = -pos; } transform.localPosition = pos; } } } break; } } } }
protected override bool IsSameNode(ClarteXRNodeState node) { return(node.nodeType == type && trackedIds.ContainsKey(node.uniqueID) && trackedIds[node.uniqueID] > 0); }
protected abstract void OnNodeAdded(ClarteXRNodeState node);
protected abstract bool IsSameNode(ClarteXRNodeState node);
protected override void OnNodeAdded(ClarteXRNodeState node) { Debug.LogFormat("Named tracker '{0}' is associated to object '{1}'", deviceName, gameObject.name); }
protected override bool IsSameNode(ClarteXRNodeState node) { return(node.name.Trim().ToUpper() == deviceName.Trim().ToUpper()); }
protected override bool IsSameNode(ClarteXRNodeState node) { return(node.uniqueID == id); }