예제 #1
0
        /// <summary>
        /// Begin with the selection and movement of the focused target.
        /// </summary>
        public void DragAndDrop_Start()
        {
            if ((EyeTrackingProvider?.GazeTarget == gameObject) && (!objIsGrabbed))
            {
                if (AudioFeedbackPlayer.Instance != null)
                {
                    AudioFeedbackPlayer.Instance.PlaySound(audio_OnDragStart);
                }

                objIsGrabbed = true;
                EyeTrackingDemoUtils.GameObject_ChangeTransparency(gameObject, transparency_inTransition, ref originalTransparency);
                initialHandPos = handPos_absolute;
                initalGazeDir  = new Vector3(EyeTrackingProvider.GazeDirection.x, EyeTrackingProvider.GazeDirection.y, EyeTrackingProvider.GazeDirection.z);

                Rigidbody rbody = GetComponent <Rigidbody>();
                if (rbody != null)
                {
                    originalUseGravity = rbody.useGravity;
                    originalDrag       = rbody.drag;

                    rbody.useGravity = false;
                    rbody.drag       = float.PositiveInfinity;
                }

                OnDragStart.Invoke();
            }
        }
예제 #2
0
        /// <summary>
        /// Turn on the preview of the to-be-placed target.
        /// </summary>
        private void ActivatePreview()
        {
            if (previewGameObject == null)
            {
                previewGameObject = Instantiate(gameObject);
                previewGameObject.GetComponent <Collider>().enabled = false;
                EyeTrackingDemoUtils.GameObject_ChangeTransparency(previewGameObject, transparency_preview);
                placePreviewAtHitPoint = false;
            }

            previewGameObject.SetActive(true);
        }
예제 #3
0
        /// <summary>
        /// Finalize placing the currently selected target.
        /// </summary>
        public void DragAndDrop_Finish()
        {
            if (objIsGrabbed)
            {
                if (AudioFeedbackPlayer.Instance != null)
                {
                    AudioFeedbackPlayer.Instance.PlaySound(audio_OnDragStop);
                }

                if (onlyEyeWarpOnRelease)
                {
                    manualTargetManip = true;
                    if (plausibleLocation.HasValue)
                    {
                        MoveTargetTo(plausibleLocation.Value);
                    }
                }

                objIsGrabbed = false;
                DeactivatePreview();

                EyeTrackingDemoUtils.GameObject_ChangeTransparency(gameObject, originalTransparency);
                Rigidbody rbody = GetComponent <Rigidbody>();
                if (rbody != null)
                {
                    rbody.useGravity = originalUseGravity;
                    rbody.drag       = originalDrag;
                }

                if (useAsSlider)
                {
                    OnDrop_SnapToClosestDecimal();
                }

                OnDrop.Invoke();
            }
        }