From 6d439373efc6c205426ef0fb1eb6a044aa9c39b6 Mon Sep 17 00:00:00 2001 From: Jesse Dubay Date: Sun, 28 Feb 2021 13:02:19 -0800 Subject: [PATCH] Add configurable model rotation speed to Preview3D --- material_maker/panels/preview_3d/preview_3d.gd | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/material_maker/panels/preview_3d/preview_3d.gd b/material_maker/panels/preview_3d/preview_3d.gd index cfd1cac3..d8c74c2c 100644 --- a/material_maker/panels/preview_3d/preview_3d.gd +++ b/material_maker/panels/preview_3d/preview_3d.gd @@ -18,7 +18,10 @@ signal need_update(me) const MENU = [ { menu="Model", submenu="model_list", description="Select" }, { menu="Model", command="configure_model", description="Configure" }, - { menu="Model", command="rotate_model", description="Rotate", toggle=true }, + { menu="Model/Rotate", command="set_rotate_model_speed", description="Off", command_parameter=0 }, + { menu="Model/Rotate", command="set_rotate_model_speed", description="Slow", command_parameter=0.01 }, + { menu="Model/Rotate", command="set_rotate_model_speed", description="Medium", command_parameter=0.05 }, + { menu="Model/Rotate", command="set_rotate_model_speed", description="Fast", command_parameter=0.1 }, { menu="Model/Generate map", submenu="generate_mesh_normal_map", description="Mesh normal" }, { menu="Model/Generate map", submenu="generate_inverse_uv_map", description="Inverse UV" }, { menu="Model/Generate map", submenu="generate_curvature_map", description="Curvature" }, @@ -106,14 +109,13 @@ func configure_model() -> void: add_child(popup) popup.configure_mesh(current_object) -func rotate_model(button_pressed = null) -> bool: +func set_rotate_model_speed(speed: float) -> void: var object_rotate = $MaterialPreview/Preview3d/ObjectRotate - if button_pressed is bool: - if button_pressed: - object_rotate.play("rotate") - else: - object_rotate.stop(false) - return object_rotate.is_playing() + object_rotate.playback_speed = speed + if speed == 0: + object_rotate.stop(false) + else: + object_rotate.play("rotate") func get_materials() -> Array: if current_object != null and current_object.get_surface_material(0) != null: