private void DebugDrawSoundPropagation()
    {
        if (AkSoundEngine.QuerySoundPropagationPaths(gameObject, pathsParams, propagationPathInfoArray,
                                                     (uint)propagationPathInfoArray.Count()) == AKRESULT.AK_Success)
        {
            for (var idxPath = (int)pathsParams.numValidPaths - 1; idxPath >= 0; --idxPath)
            {
                var path       = propagationPathInfoArray[idxPath];
                var emitterPos = ConvertVector(pathsParams.emitterPos);
                var prevPt     = ConvertVector(pathsParams.listenerPos);

                for (var idxSeg = 0; idxSeg < (int)path.numNodes; ++idxSeg)
                {
                    var portalPt = ConvertVector(path.GetNodePoint((uint)idxSeg));

                    UnityEngine.Debug.DrawLine(prevPt, portalPt, colorPurple);

                    var radWet = radiusSphereMin + (1.0f - path.wetDiffraction) * (radiusSphereMax - radiusSphereMin);
                    var radDry = radiusSphereMin + (1.0f - path.dryDiffraction) * (radiusSphereMax - radiusSphereMin);

                    UnityEngine.Gizmos.color = colorGreen;
                    UnityEngine.Gizmos.DrawWireSphere(portalPt, radWet);
                    UnityEngine.Gizmos.color = colorRed;
                    UnityEngine.Gizmos.DrawWireSphere(portalPt, radDry);

                    prevPt = portalPt;
                }

                UnityEngine.Debug.DrawLine(prevPt, emitterPos, colorPurple);
            }
        }
    }
    void DebugDrawSoundPropagation()
    {
        if (AkSoundEngine.QuerySoundPropagationPaths(gameObject, soundPropagationPathsParams, propagationPathInfoArray, (uint)propagationPathInfoArray.Count()) == AKRESULT.AK_Success)
        {
            for (int idxPath = (int)soundPropagationPathsParams.numValidPaths - 1; idxPath >= 0; --idxPath)
            {
                var path = propagationPathInfoArray.GetPropagationPathInfo(idxPath);

                {
                    Vector3 emitterPos = ConvertVector(soundPropagationPathsParams.emitterPos);
                    Vector3 prevPt     = ConvertVector(soundPropagationPathsParams.listenerPos);

                    for (int idxSeg = 0; idxSeg < (int)path.numNodes; ++idxSeg)
                    {
                        Vector3 portalPt = ConvertVector(path.GetNodePoint((uint)idxSeg));

                        if (idxSeg != 0)
                        {
                            Debug.DrawLine(prevPt, portalPt, colorPurple);
                        }

                        float radWet = radiusSphereMin + (1.0f - path.wetDiffractionAngle / (float)Math.PI) * (radiusSphereMax - radiusSphereMin);
                        float radDry = radiusSphereMin + (1.0f - path.dryDiffractionAngle / (float)Math.PI) * (radiusSphereMax - radiusSphereMin);

                        Gizmos.color = colorGreen;
                        Gizmos.DrawWireSphere(portalPt, radWet);
                        Gizmos.color = colorRed;
                        Gizmos.DrawWireSphere(portalPt, radDry);

                        prevPt = portalPt;
                    }

                    Debug.DrawLine(prevPt, emitterPos, colorPurple);
                }
            }
        }
    }