Fixes in TinyAudio, play sound on collision impact, can be configured in URDF/SDF file.

Requires a modified setup.py (or use premake4 to compile)

Example script:
import pybullet as p
import time
p.connect(p.GUI)
plane = p.loadURDF("plane_with_collision_audio.urdf")
box = p.loadURDF("cube.urdf",[0,0,1])
p.setGravity(0,0,-10)
while (1):
  p.stepSimulation()
  time.sleep(1./240.)
This commit is contained in:
Erwin Coumans
2020-07-13 14:07:58 -07:00
parent d88d0e92ef
commit caa8b26ce5
2 changed files with 4 additions and 4 deletions

View File

@@ -3236,15 +3236,15 @@ bool PhysicsServerCommandProcessor::processImportedObjects(const char* fileName,
#ifdef B3_ENABLE_TINY_AUDIO
{
SDFAudioSource audioSource;
int urdfLinkIndex = creation.m_mb2urdfLink[link];
int urdfLinkIndex = creation.m_mb2urdfLink[i];
if (u2b.getLinkAudioSource(urdfLinkIndex, audioSource))
{
int flags = mb->getLink(link).m_collider->getCollisionFlags();
int flags = mb->getLink(i).m_collider->getCollisionFlags();
mb->getLink(i).m_collider->setCollisionFlags(flags | btCollisionObject::CF_HAS_COLLISION_SOUND_TRIGGER);
audioSource.m_userIndex = m_data->m_soundEngine.loadWavFile(audioSource.m_uri.c_str());
if (audioSource.m_userIndex >= 0)
{
bodyHandle->m_audioSources.insert(link, audioSource);
bodyHandle->m_audioSources.insert(i, audioSource);
}
}
}