Example #1
0
        /// <returns>
        /// Estimated remaining time until arrival.
        /// </returns>
        public static float SetDestination(GameObject travelerObject, Vector2 destination)
        {
            TravelerView view = travelerObject.GetComponent <TravelerView>();

            if (view == null)
            {
                return(0f);
            }

            return(SetDestination(view.Data, destination));
        }
        private void SetDestination(int pathIndex)
        {
            if (pathIndex >= m_Path.Length)
            {
                m_Traveler.Data.speed = 0f;
                // Destroy(gameObject);
                return;
            }

            Site site = m_Path[pathIndex];

            TravelerView.SetDestination(m_Traveler.Data, site.waypoint.position);
        }
        private void OnEnable()
        {
            if (m_OnPositionChanged == null)
            {
                m_OnPositionChanged = UpdateDistance;
            }

            if (m_TravelerPublisher == null)
            {
                m_TravelerPublisher = gameObject.GetComponent <TravelerView>();
            }

            m_TravelerPublisher.OnPositionChanged -= m_OnPositionChanged;
            m_TravelerPublisher.OnPositionChanged += m_OnPositionChanged;
        }
        private void AttractEmission(Emission emission)
        {
            float change = GetChange(emission.Type);

            if (change == 0f)
            {
                return;
            }

            Vector2      destination = m_Lerper == null ? transform.position : m_Lerper.transform.position;
            float        duration    = TravelerView.SetDestination(emission.gameObject, destination);
            TimedEmitter emitter     = emission.GetComponent <TimedEmitter>();

            if (emitter == null)
            {
                return;
            }

            emitter.RateOverTime = duration;
        }