public override void Enter() { CanExitAfter = Time.realtimeSinceStartup + IdleTime; if (DebugLevel.HasAny(DebugFlag.DebugLevel.Information)) { Debug.Log(gameObject.name + " began idling"); } }
// Update is called once per frame void Update() { if (Time.realtimeSinceStartup < NextScan) { return; } NextScan = Time.realtimeSinceStartup + ScanDelay; var hits = Physics.OverlapSphere(transform.position, ScanRange) .Where(m => (FilterMode == TaglistMode.Whitelist && TagList.Contains(m.gameObject.tag)) || (FilterMode == TaglistMode.Blacklist && !TagList.Contains(m.gameObject.tag))) .Select(m => m.gameObject) .ToList(); if (DebugLevel.HasAny(DebugFlag.DebugLevel.Information)) { Debug.Log(gameObject.name + " scanned " + hits.Count + " responsive tags"); } if (UseSingleBroadcast) { BroadcastMessage("OnScannerDetect", new Result { IncludesTag = "All", Items = hits }, options: SendMessageOptions.DontRequireReceiver); } else { var sets = hits.GroupBy(m => m.tag); foreach (var x in sets) { BroadcastMessage("OnScannerDetect", new Result { IncludesTag = x.Key, Items = x.ToList() }, options: SendMessageOptions.DontRequireReceiver); } } }