|
@@ -4075,6 +4075,25 @@ JointSpatialGizmoPlugin::JointSpatialGizmoPlugin() {
|
|
|
create_material("joint_material", EDITOR_DEF("editors/3d_gizmos/gizmo_colors/joint", Color(0.5, 0.8, 1)));
|
|
|
create_material("joint_body_a_material", EDITOR_DEF("editors/3d_gizmos/gizmo_colors/joint_body_a", Color(0.6, 0.8, 1)));
|
|
|
create_material("joint_body_b_material", EDITOR_DEF("editors/3d_gizmos/gizmo_colors/joint_body_b", Color(0.6, 0.9, 1)));
|
|
|
+
|
|
|
+ update_timer = memnew(Timer);
|
|
|
+ update_timer->set_name("JointGizmoUpdateTimer");
|
|
|
+ update_timer->set_wait_time(1.0 / 120.0);
|
|
|
+ update_timer->connect("timeout", this, "incremental_update_gizmos");
|
|
|
+ update_timer->set_autostart(true);
|
|
|
+ EditorNode::get_singleton()->call_deferred("add_child", update_timer);
|
|
|
+}
|
|
|
+
|
|
|
+void JointSpatialGizmoPlugin::_bind_methods() {
|
|
|
+ ClassDB::bind_method(D_METHOD("incremental_update_gizmos"), &JointSpatialGizmoPlugin::incremental_update_gizmos);
|
|
|
+}
|
|
|
+
|
|
|
+void JointSpatialGizmoPlugin::incremental_update_gizmos() {
|
|
|
+ if (!current_gizmos.empty()) {
|
|
|
+ update_idx++;
|
|
|
+ update_idx = update_idx % current_gizmos.size();
|
|
|
+ redraw(current_gizmos[update_idx]);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
bool JointSpatialGizmoPlugin::has_gizmo(Spatial *p_spatial) {
|