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);
     }
 }
Ejemplo n.º 3
0
 // 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);
         }
     }
 }
Ejemplo n.º 4
0
 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;
    }