public void Sense()
        {
            InteractorObject _best_interactor = null;
            GameObject       _best_creature   = null;
            int _best_priority = 0;

            float _best_distance = Mathf.Infinity;

            for (int i = 0; i < Interactors.Count; ++i)
            {
                InteractorObject _interactor = Interactors[i];

                if (!_interactor.Enabled)
                {
                    continue;
                }

                GameObject _creature = CreatureRegister.FindNearestCreature(_interactor.Name, m_Owner.transform.position, _interactor.GetStartDistance());

                if (_creature != null)
                {
                    float _creature_distance = Tools.GetHorizontalDistance(m_Owner.transform.position, _creature.transform.position);

                    if (_creature_distance <= _best_distance)
                    {
                        int _priority = GetPriority(_creature, _interactor.Selectors.Priority);

                        if (_priority >= _best_priority)
                        {
                            _best_priority   = _priority;
                            _best_creature   = _creature;
                            _best_distance   = _creature_distance;
                            _best_interactor = _interactor;
                        }
                    }
                }
            }


            if (_best_creature != null && _best_interactor != null)
            {
                if (m_Interactor == null || m_Interactor.Target.TargetGameObject != _best_creature)
                {
                    m_Interactor = _best_interactor;

                    m_Interactor.Target = new TargetObject(TargetType.INTERACTOR);
                    m_Interactor.Target.TargetGameObject = _best_creature;


                    PrepareTarget();
                }
            }
            else
            {
                m_Interactor = null;
            }
        }