[Bf-blender-cvs] [f0d8395] gooseberry: Fix for cache modifier linking and handling of the default case (no cachd modifier).
Lukas Tönne
noreply at git.blender.org
Mon Mar 23 13:01:37 CET 2015
Commit: f0d83951918c87233f109c7827716a8ec751d010
Author: Lukas Tönne
Date: Thu Feb 26 13:42:24 2015 +0100
Branches: gooseberry
https://developer.blender.org/rBf0d83951918c87233f109c7827716a8ec751d010
Fix for cache modifier linking and handling of the default case (no
cachd modifier).
===================================================================
M source/blender/blenkernel/intern/DerivedMesh.c
M source/blender/blenloader/intern/readfile.c
===================================================================
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index 414513d..b2feb72 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -1589,13 +1589,17 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
if (BKE_cache_read_derived_mesh(G.main, scene, scene->r.cfra, ob, &cachedm)) {
CacheModifierData *cmd = (CacheModifierData *)mesh_find_cache_modifier(scene, ob, required_mode);
- firstmd = &cmd->modifier;
-
- /* use the cache result as output of the modifier
- * rather than as the final dm
- */
- cmd->output_dm = cachedm;
- cachedm = NULL;
+ if (cmd) {
+ firstmd = &cmd->modifier;
+
+ /* use the cache result as output of the modifier
+ * rather than as the final dm
+ */
+ cmd->output_dm = cachedm;
+ cachedm = NULL;
+ }
+ else
+ firstmd = NULL;
}
else {
firstmd = mesh_find_start_modifier(scene, ob, &virtualModifierData, required_mode, useDeform);
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 494eb7e..85537ab 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -4975,6 +4975,12 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb)
}
lmd->cache_system = NULL;
}
+ else if (md->type == eModifierType_Cache) {
+ CacheModifierData *cmd = (CacheModifierData *)md;
+
+ cmd->output_dm = NULL;
+ cmd->flag &= ~MOD_CACHE_USE_OUTPUT;
+ }
}
}
More information about the Bf-blender-cvs
mailing list