diff --git a/src/openrct2/Context.cpp b/src/openrct2/Context.cpp index 69aac52c44..b3554692b9 100644 --- a/src/openrct2/Context.cpp +++ b/src/openrct2/Context.cpp @@ -416,7 +416,6 @@ namespace OpenRCT2 } _env->SetBasePath(DIRBASE::RCT2, rct2InstallPath); } - TrackMetaData::Init(); _objectRepository = CreateObjectRepository(_env); _objectManager = CreateObjectManager(*_objectRepository); diff --git a/src/openrct2/ride/TrackData.cpp b/src/openrct2/ride/TrackData.cpp index 3a4a7942fe..5e76b16373 100644 --- a/src/openrct2/ride/TrackData.cpp +++ b/src/openrct2/ride/TrackData.cpp @@ -5702,15 +5702,13 @@ namespace OpenRCT2 { namespace TrackMetaData { - static std::vector _trackElementDescriptors; - void Init() + static constexpr auto BuildDescriptorTable() { - _trackElementDescriptors.clear(); - _trackElementDescriptors.reserve(TrackElemType::Count); + std::array res{}; - TrackElementDescriptor desc; for (int i = 0; i < TrackElemType::Count; i++) { + TrackElementDescriptor& desc = res[i]; desc.Description = RideConfigurationStringIds[i]; desc.AlternativeType = AlternativeTrackTypes[i]; desc.Block = const_cast(TrackBlocks[i]); @@ -5729,12 +5727,17 @@ namespace OpenRCT2 desc.SequenceElementAllowedWallEdges[j] = TrackSequenceElementAllowedWallEdges[i][j]; desc.SequenceProperties[j] = TrackSequenceProperties[i][j]; } - _trackElementDescriptors.push_back(desc); } + + return res; } + + static constexpr auto _trackElementDescriptors = BuildDescriptorTable(); + const TrackElementDescriptor& GetTrackElementDescriptor(const uint32_t type) { return _trackElementDescriptors[type]; } + } // namespace TrackMetaData } // namespace OpenRCT2 diff --git a/src/openrct2/ride/TrackData.h b/src/openrct2/ride/TrackData.h index 2ae7f8be41..08ab77f20b 100644 --- a/src/openrct2/ride/TrackData.h +++ b/src/openrct2/ride/TrackData.h @@ -97,7 +97,6 @@ namespace OpenRCT2 { namespace TrackMetaData { - void Init(); const TrackElementDescriptor& GetTrackElementDescriptor(const uint32_t type); } // namespace TrackMetaData } // namespace OpenRCT2