TrackedHand TrackHand(InteractionSourceState state) { if (state.source.kind != InteractionSourceKind.Hand) { return(null); } Vector3 handPosition; if (!state.properties.location.TryGetPosition(out handPosition)) { return(null); } handPosition += state.headRay.direction * 0.1f; if (!trackedHands.ContainsKey(state.source.id)) { GameObject go = new GameObject(string.Format("TrackedHand_{0}", state.source.id)); TrackedHand trackedHand = go.AddComponent <TrackedHand>(); trackedHand.handId = state.source.id; trackedHand.UpdatePosition(handPosition); trackedHands.Add(state.source.id, trackedHand); } trackedHands[state.source.id].UpdatePosition(handPosition); return(trackedHands[state.source.id]); }
void LostTracking(InteractionSourceState state) { if (trackedHands.ContainsKey(state.source.id)) { TrackedHand trackedHand = trackedHands[state.source.id]; trackedHands.Remove(state.source.id); Destroy(trackedHand.gameObject); } }
// Update is called once per frame protected virtual void Update() { if (this.TrackedHand != null) { this.UpdateWrist(TrackedHand.GetIMURotation()); SG_HandPose handPose; if (this.TrackedHand.GetHandPose(out handPose)) { this.UpdateHand(handPose); } } }
void Update() { if (HardwareReady) //inherited from handComponent; the device is assigned hardware and it has been connected. { if (TrackedHand.GetNormalizedFlexions(out lastFlexions)) { foreach (SG_BasicGesture gesture in gestures) { gesture.UpdateGesture(lastFlexions); } } } }
void InteractionManager_SourceReleased(InteractionSourceState state) { TrackedHand trackedHand = TrackHand(state); trackedHand.isPressed = false; }
void InteractionManager_SourcePressed(InteractionSourceState state) { TrackedHand trackedHand = TrackHand(state); trackedHand.isPressed = true; }