test_Audio3DManager.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. from direct.showbase.Audio3DManager import Audio3DManager
  2. from panda3d import core
  3. import pytest
  4. @pytest.fixture(scope='session')
  5. def manager3d():
  6. root = core.NodePath("root")
  7. manager = core.AudioManager.create_AudioManager()
  8. manager3d = Audio3DManager(manager, root=root)
  9. yield manager3d
  10. del manager3d
  11. manager.shutdown()
  12. def test_audio3dmanager_velocity(manager3d):
  13. sound = manager3d.load_sfx("nonexistent")
  14. # Generate an object with movement
  15. object = core.NodePath("object")
  16. object.set_pos(0, 0, 0)
  17. object.set_fluid_pos(1, 2, 3)
  18. assert object.get_pos_delta() == (1, 2, 3)
  19. res = manager3d.attach_sound_to_object(sound, object)
  20. assert res
  21. clock = core.ClockObject.get_global_clock()
  22. clock.mode = core.ClockObject.M_slave
  23. clock.dt = 0.5
  24. # Test auto velocity calculation
  25. manager3d.set_sound_velocity_auto(sound)
  26. assert manager3d.get_sound_velocity(sound) == (2, 4, 6)
  27. # Test setting to fixed value
  28. manager3d.set_sound_velocity(sound, (5, 5, 5))
  29. assert manager3d.get_sound_velocity(sound) == (5, 5, 5)
  30. def test_audio3dmanager_weak(manager3d):
  31. sound = manager3d.load_sfx("nonexistent")
  32. object = core.NodePath("object")
  33. res = manager3d.attach_sound_to_object(sound, object)
  34. assert res
  35. assert object in manager3d.sound_dict
  36. manager3d.update()
  37. assert object in manager3d.sound_dict
  38. object.remove_node()
  39. manager3d.update()
  40. assert object not in manager3d.sound_dict