mirror of
https://github.com/panda3d/panda3d.git
synced 2026-02-21 14:49:28 -06:00
56 lines
1.5 KiB
Python
56 lines
1.5 KiB
Python
from direct.showbase.Audio3DManager import Audio3DManager
|
|
from panda3d import core
|
|
import pytest
|
|
|
|
|
|
@pytest.fixture(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
|