private void Awake() { FingerGesturesModel parentModel = transform.parent.GetComponent <FingerGesturesModel>(); if (parentModel && !DirectlyReferenced(parentModel) && !parentModel.extra.Contains(this)) { parentModel.extra.Add(this); } }
void UpdateFingerGestureGroup(FingerGesturesModel gestures) { UpdateGesture(gestures.pinch); UpdateGesture(gestures.flex); UpdateGesture(gestures.strength); UpdateGesture(gestures.palmLine); UpdateGesture(gestures.baseRotation); gestures.extra.ForEach(g => UpdateGesture(g)); }
void InitFingerGesture(FingerGesture gesture, FingerGesturesModel model) { if (!gesture || !model) { return; } gesture.model = model; gesture.InitGesture(); }
bool DirectlyReferenced(FingerGesturesModel parentModel) { if (this == parentModel.pinch || this == parentModel.flex || this == parentModel.strength || this == parentModel.palmLine || this == parentModel.baseRotation) { return(true); } return(false); }
void InitFingerGestureGroup(FingerGesturesModel gestures, FingerModel model) { if (gestures && model) { gestures.finger = model; InitFingerGesture(gestures.pinch, gestures); InitFingerGesture(gestures.flex, gestures); InitFingerGesture(gestures.strength, gestures); InitFingerGesture(gestures.palmLine, gestures); InitFingerGesture(gestures.baseRotation, gestures); gestures.extra.ForEach(g => InitFingerGesture(g, gestures)); } }
public override sealed void Awake() { base.Awake(); model = GetComponent <FingerGesturesModel>(); }
public override sealed void FingerLerpUpdate() { base.FingerLerpUpdate(); // Lerp if (_model.flex.lerp < conf.minFlexLerpToDisablePinch) { if (_model == _model.parent.thumb) { _lerp = 0.0f; for (int f = 0; f < _model.parent.fingers.Count; f++) { FingerGesturesModel finger = _model.parent.fingers[f]; if (finger == _model.parent.thumb || finger.pinch == null) { continue; } if (finger.pinch.lerp > _lerp) { _lerp = finger.pinch.lerp; } } } else { minAbsDistance = conf.minPinchRelDistance * _model.finger.hand.totalScale; maxAbsDistance = conf.maxPinchRelDistance * _model.finger.hand.totalScale; distance = Vector3.Distance(_model.finger.tip.transformRef.position, _model.finger.hand.thumb.tip.transformRef.position); _lerp = 1.0f - Mathf.InverseLerp(minAbsDistance, maxAbsDistance, distance); } } else { _lerp = 0.0f; } // Gesture intention if (providesIntention) { // Backup previous values wasIntentionallyActive = isIntentionallyActive; if (isActive) { intentionTime = Mathf.Clamp(timeActive, 0.0f, conf.minTimeToIntention); } else if (intentionTime > 0.0f) { intentionTime = Mathf.Clamp(intentionTime - Time.deltaTime, 0.0f, conf.minTimeToIntention); } _intentionLerp = Mathf.InverseLerp(0.0f, conf.minTimeToIntention, intentionTime); _isIntentionallyActive = intentionLerp >= 1.0f; } }