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); }
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); }