Creo que su implementación supone que el nivel de sonido en una celda es acumulativo, y que la amplitud simplemente se mueve hacia afuera de manera uniforme en todas las direcciones. El sonido no se extiende, cuadro por cuadro, se está reproduciendo o no, y desea conocer la amplitud para reproducirlo en cualquier punto dado.
Raycasting a través de los mosaicos es una forma (y probablemente la más efectiva) de hacerlo. Simplemente dibuje una línea entre el emisor y el receptor, y reste el valor de amortiguación de cada celda en el camino. Si el número es positivo, reproduces el sonido.
Si desea modelar sonido indirecto, entonces tendrá que buscar el camino. Trate al emisor como la raíz de su árbol y modele cada celda adyacente como un nodo vinculado. Cada enlace tiene un costo, restado del volumen actual. Siga atravesando el gráfico hasta que encuentre el receptor o su volumen caiga por debajo de cero (si lo hace, retroceda e intente otra ruta). Si no hay rutas al receptor con un volumen positivo, no se puede escuchar su emisor. NB: no puede simplemente abandonar el recorrido cuando encuentra el receptor, porque puede haber múltiples rutas de emisor a receptor, y necesita la que tenga el volumen más alto.
Si está modelando una IA que se preocupa por el origen del sonido, el último enfoque ayudará: una IA estaría 'escuchando' el sonido proveniente de la dirección del último segmento en el camino. Bien, si hay dos rutas audibles hacia el receptor, la IA podría confundirse sobre los múltiples sonidos y qué dirección tomar.