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