public void SpawnAlertForEntity(EntitySystem.Entity entity, AlertBehavior behavior, float priority = 1f) { if (behavior == null) { return; } // Limit messages if screen is getting too noisy, but still pass along high priorty messages. if (Random.Range(0f, alertNoise) < 1f || priority > 3f) { if (individualChannelNoise.ContainsKey(entity)) { if (individualChannelNoise[entity] > priority) { return; // channel noisier than priority } FinallySpawn(entity, behavior); } else { toAdd.Add(new NotifyData() { entity = entity, behavior = behavior }); } } }
private void FinallySpawn(EntitySystem.Entity entity, AlertBehavior behavior) { if (behavior == null || behavior.gameObject == null || entity == null) { return; } GameObject clone = Instantiate(behavior.gameObject, entity.transform.position, Quaternion.identity); clone.GetComponent <AlertBehavior>().playerCam = playerCam; alertNoise += 0.2f; individualChannelNoise[entity] += 1; }