- level_editor->player_layer = chop_player_layer(tmpmem, &input);
- rect_layer_reload(&level_editor->platforms_layer, tmpmem, &input);
- point_layer_reload(&level_editor->goals_layer, tmpmem, &input);
- rect_layer_reload(&level_editor->lava_layer, tmpmem, &input);
- rect_layer_reload(&level_editor->back_platforms_layer, tmpmem, &input);
- rect_layer_reload(&level_editor->boxes_layer, tmpmem, &input);
- label_layer_reload(&level_editor->label_layer, tmpmem, &input);
- rect_layer_reload(&level_editor->regions_layer, tmpmem, &input);
- undo_history_clean(&level_editor->undo_history);
-}
-
-void level_editor_clean(LevelEditor *level_editor)
-{
- level_editor->camera_scale = 1.0f;
- level_editor->camera_position = vec(0.0f, 0.0f);
- if (level_editor->file_name) {
- free(level_editor->file_name);
- level_editor->file_name = NULL;
- }
- level_editor->background_layer = create_background_layer(hexstr("fffda5"));
- level_editor->player_layer = create_player_layer(vec(0.0f, 0.0f), hexstr("ff8080"));
- rect_layer_clean(&level_editor->platforms_layer);
- point_layer_clean(&level_editor->goals_layer);
- rect_layer_clean(&level_editor->lava_layer);
- rect_layer_clean(&level_editor->back_platforms_layer);
- rect_layer_clean(&level_editor->boxes_layer);
- label_layer_clean(&level_editor->label_layer);
- rect_layer_clean(&level_editor->regions_layer);
- undo_history_clean(&level_editor->undo_history);
-}
-
-void destroy_level_editor(LevelEditor *level_editor)
-{
- trace_assert(level_editor);
- destroy_undo_history(level_editor->undo_history);
- destroy_rect_layer(level_editor->boxes_layer);
- destroy_rect_layer(level_editor->platforms_layer);
- destroy_rect_layer(level_editor->back_platforms_layer);
- destroy_point_layer(level_editor->goals_layer);
- destroy_rect_layer(level_editor->lava_layer);
- destroy_rect_layer(level_editor->regions_layer);
- destroy_label_layer(level_editor->label_layer);
-
- if (level_editor->file_name) {
- free(level_editor->file_name);
- }
+ level_editor->player_layer = chop_player_layer(memory, &input);
+ rect_layer_load(level_editor->platforms_layer, memory, &input);
+ point_layer_load(level_editor->goals_layer, memory, &input);
+ rect_layer_load(level_editor->lava_layer, memory, &input);
+ rect_layer_load(level_editor->back_platforms_layer, memory, &input);
+ rect_layer_load(level_editor->boxes_layer, memory, &input);
+ label_layer_load(level_editor->label_layer, memory, &input);
+ rect_layer_load(level_editor->regions_layer, memory, &input);
+ undo_history_clean(level_editor->undo_history);
+
+ return level_editor;