Browse Source

Merge pull request #16359 from Noshyaar/convert

Particles: fix corrupted scene when saved after convert
Rémi Verschelde 7 years ago
parent
commit
430e45c84a
2 changed files with 6 additions and 21 deletions
  1. 1 1
      drivers/gles3/rasterizer_storage_gles3.cpp
  2. 5 20
      scene/3d/particles.cpp

+ 1 - 1
drivers/gles3/rasterizer_storage_gles3.cpp

@@ -1912,7 +1912,7 @@ void RasterizerStorageGLES3::material_set_param(RID p_material, const StringName
 Variant RasterizerStorageGLES3::material_get_param(RID p_material, const StringName &p_param) const {
 
 	const Material *material = material_owner.get(p_material);
-	ERR_FAIL_COND_V(!material, RID());
+	ERR_FAIL_COND_V(!material, Variant());
 
 	if (material->params.has(p_param))
 		return material->params[p_param];

+ 5 - 20
scene/3d/particles.cpp

@@ -1227,28 +1227,19 @@ void ParticlesMaterial::set_emission_box_extents(Vector3 p_extents) {
 void ParticlesMaterial::set_emission_point_texture(const Ref<Texture> &p_points) {
 
 	emission_point_texture = p_points;
-	RID texture;
-	if (p_points.is_valid())
-		texture = p_points->get_rid();
-	VisualServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_texture_points, texture);
+	VisualServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_texture_points, p_points);
 }
 
 void ParticlesMaterial::set_emission_normal_texture(const Ref<Texture> &p_normals) {
 
 	emission_normal_texture = p_normals;
-	RID texture;
-	if (p_normals.is_valid())
-		texture = p_normals->get_rid();
-	VisualServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_texture_normal, texture);
+	VisualServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_texture_normal, p_normals);
 }
 
 void ParticlesMaterial::set_emission_color_texture(const Ref<Texture> &p_colors) {
 
 	emission_color_texture = p_colors;
-	RID texture;
-	if (p_colors.is_valid())
-		texture = p_colors->get_rid();
-	VisualServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_texture_color, texture);
+	VisualServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_texture_color, p_colors);
 	_queue_shader_change();
 }
 
@@ -1310,10 +1301,7 @@ void ParticlesMaterial::set_trail_size_modifier(const Ref<CurveTexture> &p_trail
 		curve->ensure_default_setup();
 	}
 
-	RID texture;
-	if (p_trail_size_modifier.is_valid())
-		texture = p_trail_size_modifier->get_rid();
-	VisualServer::get_singleton()->material_set_param(_get_material(), shader_names->trail_size_modifier, texture);
+	VisualServer::get_singleton()->material_set_param(_get_material(), shader_names->trail_size_modifier, curve);
 	_queue_shader_change();
 }
 
@@ -1325,10 +1313,7 @@ Ref<CurveTexture> ParticlesMaterial::get_trail_size_modifier() const {
 void ParticlesMaterial::set_trail_color_modifier(const Ref<GradientTexture> &p_trail_color_modifier) {
 
 	trail_color_modifier = p_trail_color_modifier;
-	RID texture;
-	if (p_trail_color_modifier.is_valid())
-		texture = p_trail_color_modifier->get_rid();
-	VisualServer::get_singleton()->material_set_param(_get_material(), shader_names->trail_color_modifier, texture);
+	VisualServer::get_singleton()->material_set_param(_get_material(), shader_names->trail_color_modifier, p_trail_color_modifier);
 	_queue_shader_change();
 }