package mightypork.rogue.sounds; import mightypork.utils.math.Calc; import mightypork.utils.objects.Mutable; /** * Volume multiplex * * @author MightyPork */ public class JointVolume extends Mutable { private Mutable[] volumes; /** * CReate joint volume with master gain of 1 * * @param volumes individual volumes to join */ public JointVolume(Mutable... volumes) { super(1F); this.volumes = volumes; } /** * Get combined gain (multiplied) */ @Override public Float get() { float f = super.get(); for (Mutable v : volumes) f *= v.get(); return Calc.clampf(f, 0, 1); } /** * Set master gain */ @Override public void set(Float o) { super.set(o); } }