예제 #1
0
    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
                });
            }
        }
    }
예제 #2
0
    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;
    }