1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-22 14:24:33 +01:00

Implement #1329: Add remove-unused-objects command (#6324)

This commit is contained in:
Olivier Wervers
2017-09-29 16:32:30 +02:00
committed by Michael Steenbeek
parent 0260633953
commit f2c9fc58d5
3 changed files with 56 additions and 0 deletions

View File

@@ -1877,3 +1877,44 @@ bool editor_check_object_group_at_least_one_selected(sint32 checkObjectType)
}
return false;
}
sint32 editor_remove_unused_objects()
{
bool createSelectionFlags = (_objectSelectionFlags == nullptr);
if (createSelectionFlags && !sub_6AB211())
{
return 0;
}
setup_in_use_selection_flags();
sint32 numObjects = (sint32)object_repository_get_items_count();
const ObjectRepositoryItem * items = object_repository_get_items();
sint32 numUnselectedObjects = 0;
for (sint32 i = 0; i < numObjects; i++)
{
if (!(_objectSelectionFlags[i] & OBJECT_SELECTION_FLAG_IN_USE) && !(_objectSelectionFlags[i] & OBJECT_SELECTION_FLAG_ALWAYS_REQUIRED))
{
const ObjectRepositoryItem * item = &items[i];
uint8 objectType = item->ObjectEntry.flags & 0xF;
if (objectType == OBJECT_TYPE_PARK_ENTRANCE || objectType == OBJECT_TYPE_SCENARIO_TEXT || objectType == OBJECT_TYPE_WATER || objectType == OBJECT_TYPE_SCENERY_SETS)
{
continue;
}
_numSelectedObjectsForType[objectType]--;
_objectSelectionFlags[i] &= ~OBJECT_SELECTION_FLAG_SELECTED;
numUnselectedObjects++;
}
}
unload_unselected_objects();
if (createSelectionFlags)
{
editor_object_flags_free();
}
return numUnselectedObjects;
}