Esempio n. 1
0
        private IEnumerable <GameObject> FindObjectsInGaze(IEnumerable <GazePoint> gazePoints, Camera camera)
        {
            var points = gazePoints
                         .Where(gazePoint => gazePoint.IsWithinScreenBounds)
                         .Select(gazePoint => gazePoint.Screen);
            var objectsInGaze = new List <GameObject>();

            IEnumerable <RaycastHit> hitInfos;

            if (HitTestFromPoint.FindMultipleObjectsInWorldFromMultiplePoints(out hitInfos, points, camera,
                                                                              MaximumDistance, LayerMask))
            {
                foreach (var raycastHit in hitInfos)
                {
                    objectsInGaze.Add(raycastHit.collider.gameObject);
                }
            }

            return(objectsInGaze);
        }
Esempio n. 2
0
        private IEnumerable <GameObject> FindObjectsInGaze(Vector2 gazePoint, Camera camera)
        {
            var   objectsInGaze = new List <GameObject>();
            float fovealAngle   = 2.0f;
            float distanceGazeOriginToScreen_inches = 24f;
            var   dpi = Screen.dpi > 0 ? Screen.dpi : 100;
            float fovealRadius_inches = Mathf.Tan(fovealAngle * Mathf.Deg2Rad) * distanceGazeOriginToScreen_inches;
            int   fovealRadius_pixels = Mathf.RoundToInt(fovealRadius_inches * dpi);

            var points = PatternGenerator.CreateCircularAreaUniformPattern(gazePoint, fovealRadius_pixels, 4);
            IEnumerable <RaycastHit> hitInfos;

            if (HitTestFromPoint.FindMultipleObjectsInWorldFromMultiplePoints(out hitInfos, points, camera,
                                                                              MaximumDistance, LayerMask))
            {
                foreach (var raycastHit in hitInfos)
                {
                    objectsInGaze.Add(raycastHit.collider.gameObject);
                }
            }

            return(objectsInGaze);
        }