diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2015-10-08 15:38:48 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2015-10-08 16:05:37 +0300 |
commit | b0bce65d67ac65bef114cdf22e66f997b4028269 (patch) | |
tree | 889a5a25c065fa43e9c9354e4c33e5344d94622b /source/blender/blenkernel/intern/library_query.c | |
parent | f375028a2542981732aef6ce4700aa951325e63d (diff) |
Add a bunch of missing IDs in ID looper...
Diffstat (limited to 'source/blender/blenkernel/intern/library_query.c')
-rw-r--r-- | source/blender/blenkernel/intern/library_query.c | 74 |
1 files changed, 73 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/library_query.c b/source/blender/blenkernel/intern/library_query.c index 75ba68686c7..e7d96baea8e 100644 --- a/source/blender/blenkernel/intern/library_query.c +++ b/source/blender/blenkernel/intern/library_query.c @@ -174,12 +174,15 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u case ID_SCE: { Scene *scene = (Scene *) id; + ToolSettings *toolsett = scene->toolsettings; SceneRenderLayer *srl; Base *base; CALLBACK_INVOKE(scene->camera, IDWALK_NOP); CALLBACK_INVOKE(scene->world, IDWALK_USER); CALLBACK_INVOKE(scene->set, IDWALK_NOP); + CALLBACK_INVOKE(scene->clip, IDWALK_NOP); + CALLBACK_INVOKE(scene->nodetree, IDWALK_NOP); if (scene->basact) { CALLBACK_INVOKE(scene->basact->object, IDWALK_NOP); } @@ -218,6 +221,7 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u CALLBACK_INVOKE(seq->scene_camera, IDWALK_NOP); CALLBACK_INVOKE(seq->clip, IDWALK_USER); CALLBACK_INVOKE(seq->mask, IDWALK_USER); + CALLBACK_INVOKE(seq->sound, IDWALK_USER); } SEQ_END } @@ -227,6 +231,34 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u for (base = scene->base.first; base; base = base->next) { CALLBACK_INVOKE(base->object, IDWALK_USER); } + + if (toolsett) { + CALLBACK_INVOKE(toolsett->skgen_template, IDWALK_NOP); + CALLBACK_INVOKE(toolsett->particle.scene, IDWALK_NOP); + CALLBACK_INVOKE(toolsett->particle.object, IDWALK_NOP); + CALLBACK_INVOKE(toolsett->particle.shape_object, IDWALK_NOP); + CALLBACK_INVOKE(toolsett->imapaint.stencil, IDWALK_NOP); + CALLBACK_INVOKE(toolsett->imapaint.clone, IDWALK_NOP); + CALLBACK_INVOKE(toolsett->imapaint.canvas, IDWALK_NOP); + if (toolsett->vpaint) { + CALLBACK_INVOKE(toolsett->vpaint->paint.brush, IDWALK_NOP); + CALLBACK_INVOKE(toolsett->vpaint->paint.palette, IDWALK_NOP); + } + if (toolsett->wpaint) { + CALLBACK_INVOKE(toolsett->wpaint->paint.brush, IDWALK_NOP); + CALLBACK_INVOKE(toolsett->wpaint->paint.palette, IDWALK_NOP); + } + if (toolsett->sculpt) { + CALLBACK_INVOKE(toolsett->sculpt->paint.brush, IDWALK_NOP); + CALLBACK_INVOKE(toolsett->sculpt->paint.palette, IDWALK_NOP); + CALLBACK_INVOKE(toolsett->sculpt->gravity_object, IDWALK_NOP); + } + if (toolsett->uvsculpt) { + CALLBACK_INVOKE(toolsett->uvsculpt->paint.brush, IDWALK_NOP); + CALLBACK_INVOKE(toolsett->uvsculpt->paint.palette, IDWALK_NOP); + } + } + break; } @@ -248,6 +280,7 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u CALLBACK_INVOKE(object->parent, IDWALK_NOP); CALLBACK_INVOKE(object->track, IDWALK_NOP); + /* object->proxy is refcounted, but not object->proxy_group... *sigh* */ CALLBACK_INVOKE(object->proxy, IDWALK_USER); CALLBACK_INVOKE(object->proxy_group, IDWALK_NOP); CALLBACK_INVOKE(object->proxy_from, IDWALK_NOP); @@ -351,6 +384,16 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u Tex *texture = (Tex *) id; CALLBACK_INVOKE(texture->nodetree, IDWALK_NOP); CALLBACK_INVOKE(texture->ima, IDWALK_USER); + if (texture->env) { + CALLBACK_INVOKE(texture->env->object, IDWALK_NOP); + CALLBACK_INVOKE(texture->env->ima, IDWALK_USER); + } + if (texture->pd) + CALLBACK_INVOKE(texture->pd->object, IDWALK_NOP); + if (texture->vd) + CALLBACK_INVOKE(texture->vd->object, IDWALK_NOP); + if (texture->ot) + CALLBACK_INVOKE(texture->ot->object, IDWALK_NOP); break; } @@ -427,6 +470,7 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u { bNodeTree *ntree = (bNodeTree *) id; bNode *node; + CALLBACK_INVOKE(ntree->gpd, IDWALK_USER); for (node = ntree->nodes.first; node; node = node->next) { CALLBACK_INVOKE_ID(node->id, IDWALK_USER); } @@ -437,6 +481,8 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u { Brush *brush = (Brush *) id; CALLBACK_INVOKE(brush->toggle_brush, IDWALK_NOP); + CALLBACK_INVOKE(brush->clone.image, IDWALK_NOP); + CALLBACK_INVOKE(brush->paint_curve, IDWALK_USER); library_foreach_mtex(&data, &brush->mtex); library_foreach_mtex(&data, &brush->mask_mtex); break; @@ -448,9 +494,35 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u CALLBACK_INVOKE(psett->dup_group, IDWALK_NOP); CALLBACK_INVOKE(psett->dup_ob, IDWALK_NOP); CALLBACK_INVOKE(psett->bb_ob, IDWALK_NOP); + + for (i = 0; i < MAX_MTEX; i++) { + if (psett->mtex[i]) { + library_foreach_mtex(&data, psett->mtex[i]); + } + } + if (psett->effector_weights) { CALLBACK_INVOKE(psett->effector_weights->group, IDWALK_NOP); } + + if (psett->boids) { + BoidState *state; + BoidRule *rule; + + for (state = psett->boids->states.first; state; state = state->next) { + for (rule = state->rules.first; rule; rule = rule->next) { + if (rule->type == eBoidRuleType_Avoid) { + BoidRuleGoalAvoid *gabr = (BoidRuleGoalAvoid *)rule; + CALLBACK_INVOKE(gabr->ob, IDWALK_NOP); + } + else if (rule->type == eBoidRuleType_FollowLeader) { + BoidRuleFollowLeader *flbr = (BoidRuleFollowLeader *)rule; + CALLBACK_INVOKE(flbr->ob, IDWALK_NOP); + } + } + } + } + break; } @@ -549,4 +621,4 @@ void BKE_library_update_ID_link_user(ID *id_dst, ID *id_src, const int cd_flag) id_us_plus(id_dst); } } -}
\ No newline at end of file +} |