@@ -50,6 +50,7 @@ class WorldInstance::ClassContents
5050 , dialogManager(world)
5151 , bspTree(world)
5252 , pfxManager(world)
53+ , musicZoneManager(world)
5354 {}
5455
5556 WorldMesh worldMesh;
@@ -61,6 +62,7 @@ class WorldInstance::ClassContents
6162 Content::Sky sky;
6263 Logic::DialogManager dialogManager;
6364 Logic::PfxManager pfxManager;
65+ Engine::MusicZoneManager musicZoneManager;
6466};
6567
6668struct LoadSection
@@ -81,7 +83,6 @@ WorldInstance::WorldInstance(Engine::BaseEngine& engine)
8183 : m_pEngine(&engine)
8284 , m_Allocators(std::make_unique<WorldAllocators>(engine))
8385 , m_ClassContents(std::make_unique<ClassContents>(*this ))
84- , m_MusicZoneManager(std::make_unique<Engine::MusicZoneManager>(*this ))
8586{
8687 Logic::MusicController::disableDebugDraw ();
8788}
@@ -135,7 +136,8 @@ bool WorldInstance::init(const std::string& zen,
135136 const json& worldJson,
136137 const json& scriptEngine,
137138 const json& dialogManager,
138- const json& logManager)
139+ const json& logManager,
140+ const json& musicManager)
139141{
140142 m_ZenFile = zen;
141143 Engine::BaseEngine& engine = *m_pEngine;
@@ -378,7 +380,7 @@ bool WorldInstance::init(const std::string& zen,
378380
379381 VobTypes::MusicVobInformation mus = VobTypes::asMusicVob (*this , e);
380382 mus.musicController ->initFromVobDescriptor (v);
381- m_MusicZoneManager-> addZone (v);
383+ m_ClassContents-> musicZoneManager . addZone (v);
382384
383385 /* Sets an increased factor to allow detection of very large
384386 music zones. For example, Khorinis's zone would be disabled
@@ -394,7 +396,7 @@ bool WorldInstance::init(const std::string& zen,
394396 else if (v.objectClass == " oCZoneMusicDefault:oCZoneMusic:zCVob" )
395397 {
396398 std::string zoneName = v.vobName .substr (v.vobName .find (' _' ) + 1 );
397- m_MusicZoneManager-> setDefaultZone (zoneName);
399+ m_ClassContents-> musicZoneManager . setDefaultZone (zoneName);
398400
399401 LogInfo () << " Found default music zone: " << v.vobName ;
400402 }
@@ -561,6 +563,11 @@ bool WorldInstance::init(const std::string& zen,
561563 engine.getSession ().getLogManager ().importLogManager (logManager);
562564 }
563565
566+ if (!musicManager.empty ())
567+ {
568+ m_ClassContents->musicZoneManager .importMusicZoneManager (musicManager);
569+ }
570+
564571 m_pEngine->getHud ().getLoadingScreen ().setSectionProgress (40 );
565572
566573 LogInfo () << " Running startup-scripts" ;
@@ -749,7 +756,7 @@ void WorldInstance::onFrameUpdate(double deltaTime, float updateRangeSquared, co
749756 ddDrawAxis(fpPosition.x, fpPosition.y, fpPosition.z, 0.5f);
750757 }*/
751758
752- m_MusicZoneManager-> onUpdate ();
759+ m_ClassContents-> musicZoneManager . onUpdate ();
753760}
754761
755762void WorldInstance::removeEntity (Handle::EntityHandle h)
@@ -1209,3 +1216,8 @@ Logic::CameraController* WorldInstance::getCameraController()
12091216 Logic::Controller* ptr = getCameraComp<Components::LogicComponent>().m_pLogicController ;
12101217 return dynamic_cast <Logic::CameraController*>(ptr);
12111218}
1219+
1220+ Engine::MusicZoneManager& WorldInstance::getMusicZoneManager ()
1221+ {
1222+ return m_ClassContents->musicZoneManager ;
1223+ }
0 commit comments