public ITargetingBeacon GetNearestTarget(Transform fromTransform)
        {
            List <ITargetingBeacon> potentialTargets = new List <ITargetingBeacon>();

            for (int i = 0; i < _targetGenerators.Length; i++)
            {
                ITargetingBeacon target = _targetGenerators[i].GetNearestTarget(fromTransform);
                if (target != null)
                {
                    potentialTargets.Add(target);
                }
            }

            ITargetingBeacon nearestTarget = null;

            foreach (ITargetingBeacon target in potentialTargets)
            {
                if ((nearestTarget == null) || (Vector3.Distance(fromTransform.position, target.Position) < Vector3.Distance(fromTransform.position, nearestTarget.Position)))
                {
                    nearestTarget = target;
                }
            }

            return(nearestTarget);
        }
 private void Start()
 {
     _transform     = transform;
     _target        = null;
     _currentAction = AgentBehaviourAction.Idle;
     _targetLocator = GetComponent <AgentTargetLocator>();
 }
Beispiel #3
0
        private void HandleSetTargetEvent(ITargetingBeacon target)
        {
            _target = target;
            if (_target != null)
            {
                _previousTargetPosition = target.Position;

                if (_navigatorRunning)
                {
                    UpdatePathToTarget();
                }
            }
        }
Beispiel #4
0
        public ITargetingBeacon GetNearestTarget(Transform fromTransform)
        {
            ITargetingBeacon target = null;

            for (int i = 0; i < _beacons.Count; i++)
            {
                if ((target == null) || (Vector3.Distance(fromTransform.position, _beacons[i].Position) < Vector3.Distance(fromTransform.position, target.Position)))
                {
                    target = _beacons[i];
                }
            }

            return(target);
        }
Beispiel #5
0
        private IEnumerator CreateNewTarget()
        {
            yield return(new WaitForSeconds(UnityEngine.Random.Range(1, 7)));

            Vector3 newTargetPosition = GetNewTargetPosition();

            if (newTargetPosition.x > float.MinValue)
            {
                GameObject newTarget = Instantiate(_targetPrefab, newTargetPosition, Quaternion.Euler(Vector3.zero), transform);

                ITargetingBeacon beacon = newTarget.GetComponent <ITargetingBeacon>();
                beacon.TargetRemovedEvent += HandleTargetRemovedEvent;
                _beacons.Add(beacon);
                _orchestrator.RegisterBeacon(beacon);

                if (NewTargetGeneratedEvent != null)
                {
                    NewTargetGeneratedEvent.Invoke();
                }
            }

            StartCoroutine(CreateNewTarget());
        }
 private void SelectNewTarget()
 {
     _target = _targetLocator.GetNearestTarget(_transform);
     SetTargetEvent.Invoke(_target);
 }
 public void HandleSetTargetEvent(ITargetingBeacon target)
 {
     _target = target;
 }
 public void DeregisterBeacon(ITargetingBeacon beacon)
 {
     _beacons.Remove(beacon);
 }
 public void RegisterBeacon(ITargetingBeacon beacon)
 {
     _beacons.Add(beacon);
 }
Beispiel #10
0
 private void HandleTargetRemovedEvent(ITargetingBeacon beacon)
 {
     _beacons.Remove(beacon);
     _orchestrator.DeregisterBeacon(beacon);
 }