/// <summary> /// It saves the reference to objects passed as arguments for later use. /// </summary> /// <param name="isRight">Whether this picker is for right hand.</param> /// <param name="triggerColliderModel">The trigger collider hand model.</param> /// <param name="palmCenterTransform">Transform of the palm center.</param> /// <param name="handControllerSettings">Hand controller settings that allow modification.</param> public void AttachHandController(bool isRight, UnityHandModel triggerColliderModel, Transform palmCenterTransform, IHandControllerSettings handControllerSettings) { if (triggerColliderModel == null) { Debug.LogError("Trigger collider model is null"); return; } int n = triggerColliderModel.Fingers.Length; for (int i = 0; i < n; i++) { UnityFingerModel fingerModel = triggerColliderModel.Fingers[i]; IFingerTriggerColliderManager manager = fingerModel.Finger.GetComponent <IFingerTriggerColliderManager>(); if (manager == null) { Debug.LogErrorFormat("Unable to find trigger collider manager on finger {0}", i); } _fingerTriggers[i] = manager; } PalmCenter = palmCenterTransform; _handRootTransform = triggerColliderModel.HandRootTransform; _initialized = true; FindSnapper(isRight, _handRootTransform, palmCenterTransform, handControllerSettings); FindTriggeringTouchableManager(triggerColliderModel.Hand); }
/// <summary> /// Save references to variables for later use. /// </summary> /// <param name="isRight">Whether the hand model is right hand.</param> /// <param name="handRootTransform">Most parent transform of the hand model.</param> /// <param name="palmCenterTransform">Palm center transform of the hand model.</param> /// <param name="handControllerSettings">Hand controller settings that allow to /// be modified.</param> public void AttachHandController(bool isRight, Transform handRootTransform, Transform palmCenterTransform, IHandControllerSettings handControllerSettings) { _handRootTranform = handRootTransform; _palmCenter = palmCenterTransform; IsRight = isRight; _handControllerSettings = handControllerSettings; }
/// <summary> /// Find snapper object from hand transform. Snapper gives snapping behaviour /// of its hand model. It lets hand model to snap onto other objects attached with /// snappable scripts. /// </summary> /// <param name="isRight">Whether the hand model is right hand.</param> /// <param name="handRootTransform">Hand root transform of the hand model</param> /// <param name="palmCenterTransform">Palm centre transform</param> /// <param name="handControllerSettings">Public hand controller settings /// that may be modified by snapper.</param> private void FindSnapper(bool isRight, Transform handRootTransform, Transform palmCenterTransform, IHandControllerSettings handControllerSettings) { _snapper = _handRootTransform.GetComponentInChildren <SnapperDexmo>(); if (_snapper == null) { Debug.LogWarning("Unable to find snapperDexmo."); return; } // Save some variables in snapper for later use. _snapper.AttachHandController(isRight, handRootTransform, palmCenterTransform, handControllerSettings); }