Fix AudioNode issues when using velocityFromTranslation and small refactoring (#875)
* Fix AudioNode issues when using velocityFromTranslation and small refactoring * Fix audionode fix
This commit is contained in:
parent
9c949891b0
commit
f12d7e4e60
@ -722,25 +722,14 @@ public class AudioNode extends Node implements AudioSource {
|
|||||||
@Override
|
@Override
|
||||||
public void updateGeometricState() {
|
public void updateGeometricState() {
|
||||||
super.updateGeometricState();
|
super.updateGeometricState();
|
||||||
|
if (channel < 0 || this.getParent() == null) return;
|
||||||
if (channel < 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Vector3f currentWorldTranslation = worldTransform.getTranslation();
|
Vector3f currentWorldTranslation = worldTransform.getTranslation();
|
||||||
|
if (!previousWorldTranslation.equals(currentWorldTranslation)) {
|
||||||
if (Float.isNaN(previousWorldTranslation.x)
|
|
||||||
|| !previousWorldTranslation.equals(currentWorldTranslation)) {
|
|
||||||
|
|
||||||
getRenderer().updateSourceParam(this, AudioParam.Position);
|
getRenderer().updateSourceParam(this, AudioParam.Position);
|
||||||
|
if (velocityFromTranslation && !Float.isNaN(previousWorldTranslation.x)) {
|
||||||
if (velocityFromTranslation) {
|
velocity.set(currentWorldTranslation).subtractLocal(previousWorldTranslation).multLocal(1f / lastTpf);
|
||||||
velocity.set(currentWorldTranslation).subtractLocal(previousWorldTranslation);
|
|
||||||
velocity.multLocal(1f / lastTpf);
|
|
||||||
|
|
||||||
getRenderer().updateSourceParam(this, AudioParam.Velocity);
|
getRenderer().updateSourceParam(this, AudioParam.Velocity);
|
||||||
}
|
}
|
||||||
|
|
||||||
previousWorldTranslation.set(currentWorldTranslation);
|
previousWorldTranslation.set(currentWorldTranslation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -748,10 +737,6 @@ public class AudioNode extends Node implements AudioSource {
|
|||||||
@Override
|
@Override
|
||||||
public AudioNode clone(){
|
public AudioNode clone(){
|
||||||
AudioNode clone = (AudioNode) super.clone();
|
AudioNode clone = (AudioNode) super.clone();
|
||||||
|
|
||||||
clone.direction = direction.clone();
|
|
||||||
clone.velocity = velocity.clone();
|
|
||||||
|
|
||||||
return clone;
|
return clone;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -760,10 +745,11 @@ public class AudioNode extends Node implements AudioSource {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void cloneFields( Cloner cloner, Object original ) {
|
public void cloneFields( Cloner cloner, Object original ) {
|
||||||
super.cloneFields(cloner, original);
|
super.cloneFields(cloner, original);
|
||||||
|
|
||||||
this.direction = cloner.clone(direction);
|
this.direction=cloner.clone(direction);
|
||||||
this.velocity = cloner.clone(velocity);
|
this.velocity=velocityFromTranslation?new Vector3f():cloner.clone(velocity);
|
||||||
|
this.previousWorldTranslation=Vector3f.NAN.clone();
|
||||||
|
|
||||||
// Change in behavior: the filters were not cloned before meaning
|
// Change in behavior: the filters were not cloned before meaning
|
||||||
// that two cloned audio nodes would share the same filter instance.
|
// that two cloned audio nodes would share the same filter instance.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user