コード例 #1
0
        /// <summary>
        /// Finds closest marker to player position.
        /// </summary>
        /// <param name="closestMarkerOut">Closest marker of specified type to player if found.</param>
        /// <param name="type">Marker type.</param>
        /// <param name="playerPos">Player position.</param>
        /// <returns>True if successful.</returns>
        public bool FindClosestMarker(out Vector3 closestMarkerOut, InteriorMarkerTypes type, Vector3 playerPos)
        {
            bool  foundOne    = false;
            float minDistance = float.MaxValue;

            closestMarkerOut = Vector3.zero;
            for (int i = 0; i < markers.Count; i++)
            {
                // Exclude markers of incorrect type
                if (markers[i].type != type)
                {
                    continue;
                }

                // Refine to closest marker
                float distance = Vector3.Distance(playerPos, markers[i].gameObject.transform.position);
                if (distance < minDistance || !foundOne)
                {
                    closestMarkerOut = markers[i].gameObject.transform.position;
                    minDistance      = distance;
                    foundOne         = true;
                }
            }

            if (!foundOne)
            {
                closestMarkerOut = Vector3.zero;
                return(false);
            }

            return(true);
        }
コード例 #2
0
        /// <summary>
        /// Find all marker positions of a specific type.
        /// </summary>
        public Vector3[] FindMarkers(InteriorMarkerTypes type)
        {
            List <Vector3> markerResults = new List <Vector3>();

            for (int i = 0; i < markers.Count; i++)
            {
                if (markers[i].type == type)
                {
                    markerResults.Add(markers[i].gameObject.transform.position);
                }
            }

            return(markerResults.ToArray());
        }
コード例 #3
0
        /// <summary>
        /// Find a specific marker. Will stop searching at first item found.
        /// </summary>
        /// <returns>True if at least one marker found.</returns>
        public bool FindMarker(out Vector3 markerOut, InteriorMarkerTypes type)
        {
            markerOut = Vector3.zero;

            for (int i = 0; i < markers.Count; i++)
            {
                if (markers[i].type == type)
                {
                    markerOut = markers[i].gameObject.transform.position;
                    return(true);
                }
            }

            return(false);
        }
コード例 #4
0
        /// <summary>
        /// Find a specific marker. Will stop searching at first item found, or at a random-ish marker if random=true.
        /// </summary>
        /// <returns>True if at least one marker found.</returns>
        public bool FindMarker(out Vector3 markerOut, InteriorMarkerTypes type, bool random = false)
        {
            markerOut = Vector3.zero;

            for (int i = 0; i < markers.Count; i++)
            {
                if (markers[i].type == type)
                {
                    markerOut = markers[i].gameObject.transform.position;
                    if (!random || UnityEngine.Random.Range(0, 2) == 0)
                    {
                        return(true);
                    }
                }
            }

            return(!(markerOut == Vector3.zero));
        }