/// <summary> /// Register this audio source in spatializer /// </summary> internal void RegisterSourceInternal() { nativeSource = GetComponent <AudioSource>(); positionArray[0] = transform.position.x; positionArray[1] = transform.position.y; positionArray[2] = -transform.position.z; PXR_Audio.Spatializer.Result ret = Context.AddSource( PXR_Audio.Spatializer.SourceMode.Spatialize, positionArray, ref sourceId, true); if (ret != PXR_Audio.Spatializer.Result.Success) { Debug.LogError("Failed to add source."); return; } SetGainDB(sourceGainDB); ret = Context.SetSourceSize(sourceId, sourceSize); if (ret != PXR_Audio.Spatializer.Result.Success) { Debug.LogError("Failed to recover source size."); } isActive = true; Debug.Log("Source #" + sourceId + " is added."); }
void Update() { if (isActive && sourceId >= 0 && context != null && context.Initialized) { if (transform.hasChanged) { positionArray[0] = transform.position.x; positionArray[1] = transform.position.y; positionArray[2] = -transform.position.z; PXR_Audio.Spatializer.Result ret = Context.SetSourcePosition(sourceId, positionArray); } if (nativeSource.isPlaying) { playheadPosition = nativeSource.time; } wasPlaying = nativeSource.isPlaying; if (sourceGainChanged) { PXR_Audio.Spatializer.Result ret = Context.SetSourceGain(sourceId, DB2Mag(sourceGainDB)); if (ret == PXR_Audio.Spatializer.Result.Success) { sourceGainChanged = false; } } if (sourceSizeChanged) { PXR_Audio.Spatializer.Result ret = Context.SetSourceSize(sourceId, sourceSize); if (ret == PXR_Audio.Spatializer.Result.Success) { sourceSizeChanged = false; } } } }