private void Awake()
 {
     if (_ghostProvider == null)
     {
         HandGhostProvider.TryGetDefault(out _ghostProvider);
     }
 }
        private void DrawGhostMenu(HandPose handPose, bool forceCreate)
        {
            GUIStyle boldStyle = new GUIStyle(GUI.skin.label)
            {
                fontStyle = FontStyle.Bold
            };

            EditorGUILayout.LabelField("Interactive Edition", boldStyle);

            HandGhostProvider provider = EditorGUILayout.ObjectField("Ghost Provider", _ghostVisualsProvider, typeof(HandGhostProvider), false) as HandGhostProvider;

            if (forceCreate ||
                provider != _ghostVisualsProvider ||
                _handGhost == null ||
                _lastHandedness != handPose.Handedness)
            {
                RegenerateGhost(provider);
            }
            _lastHandedness = handPose.Handedness;

            if (_handGrabPoint.SnapSurface == null)
            {
                _editingFingers = true;
            }
            else if (GUILayout.Button(_editingFingers ? "Follow Surface" : "Edit fingers"))
            {
                _editingFingers = !_editingFingers;
            }
        }
        private void AssignMissingGhostProvider()
        {
            if (_ghostVisualsProvider != null)
            {
                return;
            }

            HandGhostProvider.TryGetDefault(out _ghostVisualsProvider);
        }
 private void RegenerateGhost(HandGhostProvider provider)
 {
     _ghostVisualsProvider = provider;
     DestroyGhost();
     CreateGhost();
 }