Przeglądaj źródła

fixed spatialization (openal uses right handed coordinates)

ncannasse 8 lat temu
rodzic
commit
b2a63085b3
2 zmienionych plików z 6 dodań i 6 usunięć
  1. 3 3
      hxd/snd/Driver.hx
  2. 3 3
      hxd/snd/effect/Spatialization.hx

+ 3 - 3
hxd/snd/Driver.hx

@@ -305,16 +305,16 @@ class Driver {
 
 
 		// update listener parameters
 		// update listener parameters
 		AL.listenerf(AL.GAIN, masterVolume);
 		AL.listenerf(AL.GAIN, masterVolume);
-		AL.listener3f(AL.POSITION, listener.position.x, listener.position.y, listener.position.z);
+		AL.listener3f(AL.POSITION, -listener.position.x, listener.position.y, listener.position.z);
 
 
 		listener.direction.normalize();
 		listener.direction.normalize();
 		var tmpBytes = getTmp(24);
 		var tmpBytes = getTmp(24);
-		tmpBytes.setFloat(0,  listener.direction.x);
+		tmpBytes.setFloat(0,  -listener.direction.x);
 		tmpBytes.setFloat(4,  listener.direction.y);
 		tmpBytes.setFloat(4,  listener.direction.y);
 		tmpBytes.setFloat(8,  listener.direction.z);
 		tmpBytes.setFloat(8,  listener.direction.z);
 
 
 		listener.up.normalize();
 		listener.up.normalize();
-		tmpBytes.setFloat(12, listener.up.x);
+		tmpBytes.setFloat(12, -listener.up.x);
 		tmpBytes.setFloat(16, listener.up.y);
 		tmpBytes.setFloat(16, listener.up.y);
 		tmpBytes.setFloat(20, listener.up.z);
 		tmpBytes.setFloat(20, listener.up.z);
 
 

+ 3 - 3
hxd/snd/effect/Spatialization.hx

@@ -40,9 +40,9 @@ class Spatialization extends Effect {
 	override function apply(channel : Channel, s : Driver.Source) {
 	override function apply(channel : Channel, s : Driver.Source) {
 		AL.sourcei(s.inst,  AL.SOURCE_RELATIVE, AL.FALSE);
 		AL.sourcei(s.inst,  AL.SOURCE_RELATIVE, AL.FALSE);
 
 
-		AL.source3f(s.inst, AL.POSITION,  position.x,  position.y,  position.z);
-		AL.source3f(s.inst, AL.VELOCITY,  velocity.x,  velocity.y,  velocity.z);
-		AL.source3f(s.inst, AL.DIRECTION, direction.x, direction.y, direction.z);
+		AL.source3f(s.inst, AL.POSITION,  -position.x,  position.y,  position.z);
+		AL.source3f(s.inst, AL.VELOCITY,  -velocity.x,  velocity.y,  velocity.z);
+		AL.source3f(s.inst, AL.DIRECTION, -direction.x, direction.y, direction.z);
 
 
 		AL.sourcef(s.inst, AL.REFERENCE_DISTANCE, referenceDistance);
 		AL.sourcef(s.inst, AL.REFERENCE_DISTANCE, referenceDistance);
 		AL.sourcef(s.inst, AL.ROLLOFF_FACTOR, rollOffFactor);
 		AL.sourcef(s.inst, AL.ROLLOFF_FACTOR, rollOffFactor);