Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2018-12-19 17:36:09 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-12-19 17:36:09 +0300
commit4563849c1b3ca6eb7418ea2870f35a624ec04f81 (patch)
tree46ff162d9c06ca41025b51de3e756c8877e0f9cc /source
parent259879e135476da6255d1411d66089ccdc78ad9d (diff)
Fixes for particle system and physics
- Silence harmless error print about relation. Object with particle system which doesn't use physics will not have point cache component. - Tag relations for update when particle system physics type change. This ensures correct state of point cache component. This is all part of T59258.
Diffstat (limited to 'source')
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_relations.cc6
-rw-r--r--source/blender/editors/object/object_relations.c3
-rw-r--r--source/blender/makesrna/intern/rna_particle.c2
3 files changed, 9 insertions, 2 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index 23328721e2c..c8822df28e6 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@ -1714,8 +1714,10 @@ void DepsgraphRelationBuilder::build_particle_systems(Object *object)
DEG_NODE_TYPE_PARTICLE_SYSTEM,
DEG_OPCODE_PARTICLE_SYSTEM_DONE);
ComponentKey eval_key(&object->id, DEG_NODE_TYPE_PARTICLE_SYSTEM);
- ComponentKey point_cache_key(&object->id, DEG_NODE_TYPE_POINT_CACHE);
- add_relation(eval_key, point_cache_key, "Particle Point Cache");
+ if (BKE_ptcache_object_has(scene_, object, 0)) {
+ ComponentKey point_cache_key(&object->id, DEG_NODE_TYPE_POINT_CACHE);
+ add_relation(eval_key, point_cache_key, "Particle Point Cache");
+ }
/* Particle systems. */
LISTBASE_FOREACH (ParticleSystem *, psys, &object->particlesystem) {
ParticleSettings *part = psys->part;
diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c
index d61c5334ee6..867b807c908 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -1872,6 +1872,9 @@ static void single_mat_users(Main *bmain, Scene *scene, ViewLayer *view_layer, V
if (ma->id.us > 1) {
man = BKE_material_copy(bmain, ma);
BKE_animdata_copy_id_action(bmain, &man->id, false);
+ if (man->nodetree != NULL) {
+ BKE_animdata_copy_id_action(bmain, &man->nodetree->id, false);
+ }
man->id.us = 0;
assign_material(bmain, ob, man, a, BKE_MAT_ASSIGN_USERPREF);
diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c
index bc6c6917ed3..1eb96860c3e 100644
--- a/source/blender/makesrna/intern/rna_particle.c
+++ b/source/blender/makesrna/intern/rna_particle.c
@@ -670,6 +670,8 @@ static void rna_Particle_change_physics_type(Main *bmain, Scene *scene, PointerR
part->fluid = MEM_callocN(sizeof(SPHFluidSettings), "SPH Fluid Settings");
BKE_particlesettings_fluid_default_settings(part);
}
+
+ DEG_relations_tag_update(bmain);
}
static void rna_Particle_redo_child(Main *bmain, Scene *scene, PointerRNA *ptr)