|
@@ -0,0 +1,55 @@
|
|
|
|
|
+from direct.showbase.Audio3DManager import Audio3DManager
|
|
|
|
|
+from panda3d import core
|
|
|
|
|
+import pytest
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
[email protected](scope='session')
|
|
|
|
|
+def manager3d():
|
|
|
|
|
+ root = core.NodePath("root")
|
|
|
|
|
+ manager = core.AudioManager.create_AudioManager()
|
|
|
|
|
+ manager3d = Audio3DManager(manager, root=root)
|
|
|
|
|
+ yield manager3d
|
|
|
|
|
+ del manager3d
|
|
|
|
|
+ manager.shutdown()
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+def test_audio3dmanager_velocity(manager3d):
|
|
|
|
|
+ sound = manager3d.load_sfx("nonexistent")
|
|
|
|
|
+
|
|
|
|
|
+ # Generate an object with movement
|
|
|
|
|
+ object = core.NodePath("object")
|
|
|
|
|
+ object.set_pos(0, 0, 0)
|
|
|
|
|
+ object.set_fluid_pos(1, 2, 3)
|
|
|
|
|
+ assert object.get_pos_delta() == (1, 2, 3)
|
|
|
|
|
+
|
|
|
|
|
+ res = manager3d.attach_sound_to_object(sound, object)
|
|
|
|
|
+ assert res
|
|
|
|
|
+
|
|
|
|
|
+ clock = core.ClockObject.get_global_clock()
|
|
|
|
|
+ clock.mode = core.ClockObject.M_slave
|
|
|
|
|
+ clock.dt = 0.5
|
|
|
|
|
+
|
|
|
|
|
+ # Test auto velocity calculation
|
|
|
|
|
+ manager3d.set_sound_velocity_auto(sound)
|
|
|
|
|
+ assert manager3d.get_sound_velocity(sound) == (2, 4, 6)
|
|
|
|
|
+
|
|
|
|
|
+ # Test setting to fixed value
|
|
|
|
|
+ manager3d.set_sound_velocity(sound, (5, 5, 5))
|
|
|
|
|
+ assert manager3d.get_sound_velocity(sound) == (5, 5, 5)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+def test_audio3dmanager_weak(manager3d):
|
|
|
|
|
+ sound = manager3d.load_sfx("nonexistent")
|
|
|
|
|
+ object = core.NodePath("object")
|
|
|
|
|
+
|
|
|
|
|
+ res = manager3d.attach_sound_to_object(sound, object)
|
|
|
|
|
+ assert res
|
|
|
|
|
+ assert object in manager3d.sound_dict
|
|
|
|
|
+
|
|
|
|
|
+ manager3d.update()
|
|
|
|
|
+ assert object in manager3d.sound_dict
|
|
|
|
|
+
|
|
|
|
|
+ object.remove_node()
|
|
|
|
|
+ manager3d.update()
|
|
|
|
|
+
|
|
|
|
|
+ assert object not in manager3d.sound_dict
|