Skip to content

Commit 35f93cb

Browse files
committed
Loading TOBJ: added try{}catch{} blocks.
1 parent 08d5b99 commit 35f93cb

File tree

1 file changed

+42
-14
lines changed

1 file changed

+42
-14
lines changed

source/main/terrain/TerrainObjectManager.cpp

+42-14
Original file line numberDiff line numberDiff line change
@@ -190,12 +190,19 @@ void TerrainObjectManager::LoadTObjFile(Ogre::String tobj_name)
190190
{
191191
for (TObjTree tree : tobj->trees)
192192
{
193-
this->ProcessTree(
194-
tree.yaw_from, tree.yaw_to,
195-
tree.scale_from, tree.scale_to,
196-
tree.color_map, tree.density_map, tree.tree_mesh, tree.collision_mesh,
197-
tree.grid_spacing, tree.high_density,
198-
tree.min_distance, tree.max_distance, mapsizex, mapsizez);
193+
try
194+
{
195+
this->ProcessTree(
196+
tree.yaw_from, tree.yaw_to,
197+
tree.scale_from, tree.scale_to,
198+
tree.color_map, tree.density_map, tree.tree_mesh, tree.collision_mesh,
199+
tree.grid_spacing, tree.high_density,
200+
tree.min_distance, tree.max_distance, mapsizex, mapsizez);
201+
}
202+
catch (...)
203+
{
204+
RoR::HandleGenericException(fmt::format("Error processing 'trees' line (mesh: {}) from TOBJ file {}", tree.tree_mesh, tobj_name));
205+
}
199206
}
200207
}
201208

@@ -204,19 +211,33 @@ void TerrainObjectManager::LoadTObjFile(Ogre::String tobj_name)
204211
{
205212
for (TObjGrass grass : tobj->grass)
206213
{
207-
this->ProcessGrass(
208-
grass.sway_speed, grass.sway_length, grass.sway_distrib, grass.density,
209-
grass.min_x, grass.min_y, grass.min_h,
210-
grass.max_x, grass.max_y, grass.max_h,
211-
grass.material_name, grass.color_map_filename, grass.density_map_filename,
212-
grass.grow_techniq, grass.technique, grass.range, mapsizex, mapsizez);
214+
try
215+
{
216+
this->ProcessGrass(
217+
grass.sway_speed, grass.sway_length, grass.sway_distrib, grass.density,
218+
grass.min_x, grass.min_y, grass.min_h,
219+
grass.max_x, grass.max_y, grass.max_h,
220+
grass.material_name, grass.color_map_filename, grass.density_map_filename,
221+
grass.grow_techniq, grass.technique, grass.range, mapsizex, mapsizez);
222+
}
223+
catch (...)
224+
{
225+
RoR::HandleGenericException(fmt::format("Error processing 'grass' line (material: {}) from TOBJ file {}", grass.material_name, tobj_name));
226+
}
213227
}
214228
}
215229

216230
// Procedural roads
217231
for (ProceduralObjectPtr& po : tobj->proc_objects)
218232
{
219-
m_procedural_manager->addObject(po);
233+
try
234+
{
235+
m_procedural_manager->addObject(po);
236+
}
237+
catch (...)
238+
{
239+
RoR::HandleGenericException(fmt::format("Error processing procedural road {} from TOBJ file {}", po->name, tobj_name));
240+
}
220241
}
221242

222243
// Vehicles
@@ -249,7 +270,14 @@ void TerrainObjectManager::LoadTObjFile(Ogre::String tobj_name)
249270
// Entries
250271
for (TObjEntry entry : tobj->objects)
251272
{
252-
this->LoadTerrainObject(entry.odef_name, entry.position, entry.rotation, entry.instance_name, entry.type, entry.rendering_distance);
273+
try
274+
{
275+
this->LoadTerrainObject(entry.odef_name, entry.position, entry.rotation, entry.instance_name, entry.type, entry.rendering_distance);
276+
}
277+
catch (...)
278+
{
279+
RoR::HandleGenericException(fmt::format("Error processing object line (ODEF: {}) from TOBJ file {}", entry.odef_name, tobj_name));
280+
}
253281
}
254282

255283
if (App::diag_terrn_log_roads->getBool())

0 commit comments

Comments
 (0)