Fix multiplayer sound keep playing

This commit is contained in:
Benau 2018-09-30 14:06:40 +08:00
parent cb9a17563e
commit 6478a0714d
3 changed files with 14 additions and 9 deletions

View File

@ -169,9 +169,9 @@ void TrackObject::init(const XMLNode &xml_node, scene::ISceneNode* parent,
// FIXME: at this time sound emitters are just disabled in multiplayer
// otherwise the sounds would be constantly heard, for networking
// the index of item needs to be same so we create and disable it
m_presentation = new TrackObjectPresentationSound(xml_node, parent);
if (race_manager->getNumLocalPlayers() < 2)
m_presentation->setEnable(false);
// in TrackObjectPresentationSound constructor
m_presentation = new TrackObjectPresentationSound(xml_node, parent,
race_manager->getNumLocalPlayers() > 1);
}
else if (type == "action-trigger")
{

View File

@ -652,7 +652,8 @@ void TrackObjectPresentationMesh::reset()
// ----------------------------------------------------------------------------
TrackObjectPresentationSound::TrackObjectPresentationSound(
const XMLNode& xml_node,
scene::ISceneNode* parent)
scene::ISceneNode* parent,
bool disable_for_multiplayer)
: TrackObjectPresentation(xml_node)
{
// TODO: respect 'parent' if any
@ -680,6 +681,13 @@ TrackObjectPresentationSound::TrackObjectPresentationSound(
float max_dist = 390.0f;
xml_node.get("max_dist", &max_dist );
if (trigger_when_near)
{
ItemManager::get()->placeTrigger(m_init_xyz, trigger_distance, this);
}
if (disable_for_multiplayer)
return;
// first try track dir, then global dir
std::string soundfile = Track::getCurrentTrack()->getTrackFile(sound);
//std::string soundfile = file_manager->getAsset(FileManager::MODEL,sound);
@ -708,10 +716,6 @@ TrackObjectPresentationSound::TrackObjectPresentationSound(
else
Log::error("TrackObject", "Sound emitter object could not be created.");
if (trigger_when_near)
{
ItemManager::get()->placeTrigger(m_init_xyz, trigger_distance, this);
}
} // TrackObjectPresentationSound
// ----------------------------------------------------------------------------

View File

@ -286,7 +286,8 @@ private:
public:
TrackObjectPresentationSound(const XMLNode& xml_node,
scene::ISceneNode* parent);
scene::ISceneNode* parent,
bool disable_for_multiplayer);
virtual ~TrackObjectPresentationSound();
virtual void onTriggerItemApproached() OVERRIDE;
virtual void update(float dt) OVERRIDE;