Ejemplo n.º 1
0
        Vector3 GetEffectPosition(AmbienceSoundBank.EffectData effectData, Vector3 center)
        {
            Vector3 offset = Vector3.zero;

            switch (effectData.SpawnMode)
            {
            case AmbienceSoundBank.EffectData.SpatialMode.XZHemisphere:
                offset   = Random.insideUnitSphere * effectData.SpawnDistance.ChooseRandom();
                offset.y = Mathf.Abs(offset.y);
                break;

            case AmbienceSoundBank.EffectData.SpatialMode.XZCircle:
                offset = RandomUtils.InsideUnitCircleOnPlane(Vector3.up) * effectData.SpawnDistance.ChooseRandom();
                break;

            case AmbienceSoundBank.EffectData.SpatialMode.XYCircle:
                offset = RandomUtils.InsideUnitCircleOnPlane(Vector3.forward) * effectData.SpawnDistance.ChooseRandom();
                break;

            case AmbienceSoundBank.EffectData.SpatialMode.Sphere:
                offset = Random.insideUnitSphere * effectData.SpawnDistance.ChooseRandom();
                break;
            }

            return(center + offset);
        }
Ejemplo n.º 2
0
        public AmbienceSoundInstance AddEffect(AmbienceSoundBank.EffectData effectData)
        {
            Assert.IsFalse(IsPooled, "Tried to use SoundInstance while in pool. Make sure not to keep references to SoundInstances that have been destroyed.");
            Assert.IsNotNull(effectData);

            _effectData.Add(effectData);
            _effectCooldowns.Add(effectData.Cooldown.ChooseRandom());

            return(this);
        }