17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-10-17 05:09:20 +02:00

perf(models): replacable skins of scenery models located once for a skin name; light and season variant submodels located once for a model instead of for each instance

This commit is contained in:
2026-10-06 03:35:00 +02:00
parent 4eb14a9419
commit 3a05d0d649
3 changed files with 50 additions and 21 deletions

View File

@@ -1567,6 +1567,23 @@ TSubModel *TModel3d::GetFromName(std::string const &Name) const
}
};
// returns submodels which scenery instances of the model refer to by name, locating them on first use
TModel3d::instance_submodels const &TModel3d::instance_parts()
{
if (false == m_instancesubmodelslocated)
{
for (std::size_t idx = 0; idx < m_instancesubmodels.lights_on.size(); ++idx)
{
auto const index{(idx < 10 ? "0" : "") + std::to_string(idx)};
m_instancesubmodels.lights_on[idx] = GetFromName("Light_On" + index);
m_instancesubmodels.lights_off[idx] = GetFromName("Light_Off" + index);
}
m_instancesubmodels.variants = {GetFromName("winter_variant"), GetFromName("spring_variant"), GetFromName("summer_variant"), GetFromName("autumn_variant")};
m_instancesubmodelslocated = true;
}
return m_instancesubmodels;
}
// locates particle source submodels and stores them on internal list
nameoffset_sequence const &TModel3d::find_smoke_sources()
{