From 25099004e926a97f09ef4530f57f31744391cfe6 Mon Sep 17 00:00:00 2001 From: luboslenco Date: Fri, 24 Jul 2026 18:00:54 +0200 Subject: [PATCH] paint: add turntable.c template --- paint/sources/minic_api.c | 2 ++ paint/sources/ui/tab_scripts.c | 19 ++++++++++++++++++- paint/sources/util/util_script.c | 6 ++++++ paint/sources/util/util_shortcut.c | 8 +++++++- 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/paint/sources/minic_api.c b/paint/sources/minic_api.c index f1ebafd6..1f8898c4 100644 --- a/paint/sources/minic_api.c +++ b/paint/sources/minic_api.c @@ -85,6 +85,7 @@ context_t *script_get_context(); config_t *script_get_config(); project_t *script_get_project(); void script_set_stage(char *name); +void script_show_envmap(bool b); void script_fade_to_stage(char *stage); void script_timer(f32 delay, void *fn); char *script_get_stage(); @@ -1220,6 +1221,7 @@ void minic_register_builtins() { R(script_get_project, "p()"); R(script_get_object, "p(p)"); R(script_set_stage, "v(p)"); + R(script_show_envmap, "v(i)"); R(script_fade_to_stage, "v(p)"); R(script_timer, "v(f,p)"); R(script_get_stage, "p()"); diff --git a/paint/sources/ui/tab_scripts.c b/paint/sources/ui/tab_scripts.c index 4fa192c5..96bb4066 100644 --- a/paint/sources/ui/tab_scripts.c +++ b/paint/sources/ui/tab_scripts.c @@ -119,7 +119,7 @@ void tab_scripts_draw_edit() { ui_files_show("c", true, false, &tab_scripts_draw_export); } if (ui_menu_sub_button(ui_handle(__ID__), tr("Templates"))) { - ui_menu_sub_begin(2); + ui_menu_sub_begin(3); if (ui_menu_button("hello.c", "", ICON_DRAFT)) { tab_scripts_set("\ void main() {\n\ @@ -138,6 +138,23 @@ void on_update() {\n\ void main() {\n\ script_notify_on_update(on_update);\n\ }\n\ +"); + } + if (ui_menu_button("turntable.c", "", ICON_DRAFT)) { + tab_scripts_set("\ +void on_update() {\n\ + mesh_object_t *o = context_main_object();\n\ + if (!mouse_down(\"right\")) {\n\ + transform_rotate(o->base->transform, vec4_z_axis(), 0.003);\n\ + }\n\ + context_t *c = script_get_context();\n\ + c->ddirty = 2;\n\ +}\n\ +void main() {\n\ + context_set_viewport_mode(1); // base\n\ + script_show_envmap(true);\n\ + script_notify_on_update(on_update);\n\ +}\n\ "); } ui_menu_sub_end(); diff --git a/paint/sources/util/util_script.c b/paint/sources/util/util_script.c index 2ae4fffe..434c3ddc 100644 --- a/paint/sources/util/util_script.c +++ b/paint/sources/util/util_script.c @@ -15,6 +15,12 @@ void script_set_stage(char *name) { } } +void script_show_envmap(bool b) { + g_context->show_envmap = b; + context_load_envmap(); + g_context->ddirty = 2; +} + char *script_get_stage() { stage_t *s = tab_stages_get_stage(); return s != NULL ? s->name : NULL; diff --git a/paint/sources/util/util_shortcut.c b/paint/sources/util/util_shortcut.c index 356b0bf8..b478b39c 100644 --- a/paint/sources/util/util_shortcut.c +++ b/paint/sources/util/util_shortcut.c @@ -88,7 +88,13 @@ void util_shortcut_global() { box_preferences_show(); } if (keyboard_started(any_map_get(g_keymap, "view_distract_free")) || (keyboard_started("escape") && !ui_base_show && !ui_box_show)) { - ui_base_toggle_distract_free(); + bool allow = true; +#ifdef IRON_WASM + allow = g_config->workspace != WORKSPACE_PLAYER; +#endif + if (allow) { + ui_base_toggle_distract_free(); + } } if (keyboard_started("f5") && g_config->workspace != WORKSPACE_PLAYER) { // g_config->workspace = WORKSPACE_PLAYER;