Selaa lähdekoodia

Fix the update of the inspector when instance shader uniform has changed

Yuri Rubinsky 2 vuotta sitten
vanhempi
commit
bf3966abf9
1 muutettua tiedostoa jossa 7 lisäystä ja 0 poistoa
  1. 7 0
      scene/3d/visual_instance_3d.cpp

+ 7 - 0
scene/3d/visual_instance_3d.cpp

@@ -30,6 +30,7 @@
 
 
 #include "visual_instance_3d.h"
 #include "visual_instance_3d.h"
 
 
+#include "core/core_string_names.h"
 #include "scene/scene_string_names.h"
 #include "scene/scene_string_names.h"
 
 
 AABB VisualInstance3D::get_aabb() const {
 AABB VisualInstance3D::get_aabb() const {
@@ -134,7 +135,13 @@ VisualInstance3D::~VisualInstance3D() {
 }
 }
 
 
 void GeometryInstance3D::set_material_override(const Ref<Material> &p_material) {
 void GeometryInstance3D::set_material_override(const Ref<Material> &p_material) {
+	if (material_override.is_valid()) {
+		material_override->disconnect(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::notify_property_list_changed));
+	}
 	material_override = p_material;
 	material_override = p_material;
+	if (material_override.is_valid()) {
+		material_override->connect(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::notify_property_list_changed));
+	}
 	RS::get_singleton()->instance_geometry_set_material_override(get_instance(), p_material.is_valid() ? p_material->get_rid() : RID());
 	RS::get_singleton()->instance_geometry_set_material_override(get_instance(), p_material.is_valid() ? p_material->get_rid() : RID());
 }
 }