diff --git a/paint/sources/globals.h b/paint/sources/globals.h index f7f36725..f038452f 100644 --- a/paint/sources/globals.h +++ b/paint/sources/globals.h @@ -199,7 +199,6 @@ bool ui_view2d_tiled_show = false; bool ui_view2d_grid_redraw = true; ui_handle_t *ui_view2d_htab; bool sim_running = false; -bool sim_record = false; bool viewport_recording = false; bool node_shader_dump_to_script = false; node_shader_context_t *parser_material_con; diff --git a/paint/sources/sim.c b/paint/sources/sim.c index bfa39cea..9e8e54c7 100644 --- a/paint/sources/sim.c +++ b/paint/sources/sim.c @@ -1,8 +1,7 @@ #include "global.h" -any_array_t *sim_transforms; -bool sim_initialized = false; +bool sim_initialized = false; void sim_init() { if (sim_initialized) { @@ -19,58 +18,16 @@ void sim_update() { trait_update(); physics_world_update(); iron_delay_idle_sleep(); - if (sim_record) { - render_target_t *rt = any_map_get(render_path_render_targets, "last"); - buffer_t *pixels = gpu_get_texture_pixels(rt->_image); -#ifdef IRON_BGRA - buffer_bgra_swap(pixels); -#endif - // iron_mp4_encode(pixels); - } } } void sim_play() { sim_running = true; - - if (sim_record) { - if (string_equals(g_project->_->filepath, "")) { - console_error(tr("Save project first")); - sim_record = false; - return; - } - char *path = string("%s/output.mp4", path_base_dir(g_project->_->filepath)); - render_target_t *rt = any_map_get(render_path_render_targets, "last"); - // iron_mp4_begin(path, rt._image.width, rt._image.height); - } - - // Save transforms - sim_transforms = any_array_create_from_raw((void *[]){}, 0); - mesh_object_t_array_t *pos = g_project->_->paint_objects; - for (i32 i = 0; i < pos->length; ++i) { - mat4_t *m = calloc(1, sizeof(mat4_t)); - memcpy(m->m, pos->buffer[i]->base->transform->local.m, sizeof(m->m)); - any_array_push(sim_transforms, m); - } } void sim_stop() { sim_running = false; trait_stop(); - - if (sim_record) { - // iron_mp4_end(); - } - - // Restore transforms - mesh_object_t_array_t *pos = g_project->_->paint_objects; - for (i32 i = 0; i < pos->length; ++i) { - transform_set_matrix(pos->buffer[i]->base->transform, *(mat4_t *)sim_transforms->buffer[i]); - physics_body_t *pb = pos->buffer[i]->base->_->body; - if (pb != NULL) { - physics_body_sync_transform(pb); - } - } } void sim_add_body(object_t *o, physics_shape_t shape, f32 mass) { diff --git a/paint/sources/viewport.c b/paint/sources/viewport.c index a3a36aa6..19658eb4 100644 --- a/paint/sources/viewport.c +++ b/paint/sources/viewport.c @@ -153,7 +153,10 @@ void viewport_capture_video_update(void *_) { #ifdef IRON_BGRA buffer_bgra_swap(pixels); #endif + +#ifdef WITH_VIDEO_WRITE iron_mp4_encode(pixels); +#endif } void viewport_capture_video_begin() { @@ -164,12 +167,16 @@ void viewport_capture_video_begin() { viewport_recording = true; char *path = string("%s/output.mp4", path_base_dir(g_project->_->filepath)); render_target_t *rt = any_map_get(render_path_render_targets, "last"); +#ifdef WITH_VIDEO_WRITE iron_mp4_begin(path, rt->_image->width, rt->_image->height); +#endif sys_notify_on_update(viewport_capture_video_update, NULL); } void viewport_capture_video_end() { sys_remove_update(viewport_capture_video_update); +#ifdef WITH_VIDEO_WRITE iron_mp4_end(); +#endif viewport_recording = false; }