void Update() { // case needs to update PV information if (id >= 0) { // case this object is currently playing: update the emission, and update the output if (source) { PlaneverbContext.UpdateEmission(id, transform.position); PlaneverbDSPContext.UpateEmitter(id, transform.position, transform.forward); output = PlaneverbContext.GetOutput(id); } // case this emission has ended since the last frame: end emission and reset the id else { OnEndEmission(); id = -1; } if (PlaneverbContext.GetInstance().debugDraw) { Debug.DrawRay(transform.position, transform.forward); } } }
// two versions of Emit. one for playing stored Clip, other for AudioSource.PlayOneShot functionality public void Emit() { // start the emission and create the source id = PlaneverbContext.Emit(transform.position); PlaneverbDSPContext.UpateEmitter(id, transform.position, transform.forward); PlaneverbDSPContext.SetEmitterDirectivityPattern(id, DirectivityPattern); output = PlaneverbContext.GetOutput(id); source = PlaneverbAudioManager.pvDSPAudioManager.Play(Clip, id, this, Loop); if (source == null) { OnEndEmission(); } }
public PlaneverbDSPInput GetInput() { PlaneverbOutput pvoutput = emitter.GetOutput(); dspParams.obstructionGain = pvoutput.occlusion; dspParams.wetGain = pvoutput.wetGain; dspParams.lowpass = pvoutput.lowpass; dspParams.rt60 = pvoutput.rt60; dspParams.directionX = pvoutput.directionX; dspParams.directionY = pvoutput.directionY; dspParams.sourceDirectionX = pvoutput.sourceDirectionX; dspParams.sourceDirectionY = pvoutput.sourceDirectionY; return(dspParams); }