1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-06 06:32:56 +01:00

fix track manager preview

This commit is contained in:
Ted John
2016-07-07 00:09:31 +01:00
parent fa951a29cd
commit d7e1933f12
4 changed files with 15 additions and 17 deletions

View File

@@ -462,4 +462,10 @@ extern "C"
IObjectManager * objectManager = GetObjectManager();
objectManager->UnloadObjects(entries, count);
}
void object_manager_unload_all_objects()
{
IObjectManager * objectManager = GetObjectManager();
objectManager->UnloadAll();
}
}

View File

@@ -53,5 +53,6 @@ void * object_manager_get_loaded_object(const rct_object_entry * entry);
uint8 object_manager_get_loaded_object_entry_index(const void * loadedObject);
void * object_manager_load_object(const rct_object_entry * entry);
void object_manager_unload_objects(const rct_object_entry * entries, size_t count);
void object_manager_unload_all_objects();
#endif

View File

@@ -22,6 +22,7 @@
#include "../localisation/string_ids.h"
#include "../management/finance.h"
#include "../network/network.h"
#include "../object/ObjectManager.h"
#include "../rct1.h"
#include "../util/sawyercoding.h"
#include "../util/util.h"
@@ -325,26 +326,18 @@ void track_design_dispose(rct_track_td6 *td6)
*/
static void track_design_load_scenery_objects(rct_track_td6 *td6)
{
uint8 entry_index = RCT2_GLOBAL(0xF44157, uint8);
rct_object_entry_extended* object_entry = &object_entry_groups[0].entries[entry_index];
object_manager_unload_all_objects();
rct_object_entry* copied_entry = RCT2_ADDRESS(0xF43414, rct_object_entry);
memcpy(copied_entry, object_entry, sizeof(rct_object_entry));
object_unload_all();
object_load_chunk(-1, copied_entry, 0);
uint8 entry_type;
find_object_in_entry_group(copied_entry, &entry_type, &entry_index);
RCT2_GLOBAL(0xF44157, uint8) = entry_index;
// Load ride object
rct_object_entry * rideEntry = &td6->vehicle_object;
void * loadedObject = object_manager_load_object(rideEntry);
// Load scenery objects
rct_td6_scenery_element *scenery = td6->scenery_elements;
for (; (scenery->scenery_object.flags & 0xFF) != 0xFF; scenery++) {
if (!find_object_in_entry_group(&scenery->scenery_object, &entry_type, &entry_index)) {
object_load_chunk(-1, &scenery->scenery_object, 0);
}
rct_object_entry * sceneryEntry = &scenery->scenery_object;
object_manager_load_object(sceneryEntry);
}
reset_loaded_objects();
}
/**

View File

@@ -1693,8 +1693,6 @@ static void window_editor_object_selection_manage_tracks()
int entry_index = 0;
for (; ((int)object_entry_groups[0].chunks[entry_index]) == -1; ++entry_index);
RCT2_GLOBAL(0xF44157, uint8) = entry_index;
rct_ride_entry* ride_entry = get_ride_entry(entry_index);
uint8* ride_type_array = &ride_entry->ride_type[0];