示例#1
0
        public override void Enter()
        {
            CanExitAfter = Time.realtimeSinceStartup + IdleTime;

            if (DebugLevel.HasAny(DebugFlag.DebugLevel.Information))
            {
                Debug.Log(gameObject.name + " began idling");
            }
        }
示例#2
0
    // 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);
            }
        }
    }