Переглянути джерело

Fix errors when materials attached to 3d object are not freed

Yuri Rubinsky 3 роки тому
батько
коміт
8f57d9519e
2 змінених файлів з 10 додано та 0 видалено
  1. 9 0
      scene/3d/visual_instance_3d.cpp
  2. 1 0
      scene/3d/visual_instance_3d.h

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

@@ -496,3 +496,12 @@ void GeometryInstance3D::_bind_methods() {
 GeometryInstance3D::GeometryInstance3D() {
 	//RS::get_singleton()->instance_geometry_set_baked_light_texture_index(get_instance(),0);
 }
+
+GeometryInstance3D::~GeometryInstance3D() {
+	if (material_overlay.is_valid()) {
+		set_material_overlay(Ref<Material>());
+	}
+	if (material_override.is_valid()) {
+		set_material_override(Ref<Material>());
+	}
+}

+ 1 - 0
scene/3d/visual_instance_3d.h

@@ -188,6 +188,7 @@ public:
 
 	TypedArray<String> get_configuration_warnings() const override;
 	GeometryInstance3D();
+	virtual ~GeometryInstance3D();
 };
 
 VARIANT_ENUM_CAST(GeometryInstance3D::ShadowCastingSetting);