Commit: 54845fbfa3dd814f5b8c6ef0feb8af517dbfcf2a
Author: Jacques Lucke
Date: Sun Dec 9 17:41:34 2018 +0100
Branches: rigid_deform
https://developer.blender.org/rB54845fbfa3dd814f5b8c6ef0feb8af517dbfcf2a
make writefile and readfile work
===================================================================
M source/blender/blenloader/intern/readfile.c
M source/blender/blenloader/intern/writefile.c
===================================================================
diff --git a/source/blender/blenloader/intern/readfile.c
b/source/blender/blenloader/intern/readfile.c
index 42f3c35034e..598f9cdc360 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -5334,6 +5334,21 @@ static void direct_link_modifiers(FileData *fd, ListBase
*lb)
}
lmd->cache_system = NULL;
}
+ else if (md->type == eModifierType_RigidDeform) {
+ RigidDeformModifierData *rdmd =
(RigidDeformModifierData *)md;
+ RigidDeformModifierBindData *bind = newdataadr(fd,
rdmd->bind_data);
+ rdmd->bind_data = bind;
+ rdmd->cache = NULL;
+
+ if (bind) {
+ bind->initial_positions = newdataadr(fd,
bind->initial_positions);
+ bind->anchor_indices = newdataadr(fd,
bind->anchor_indices);
+ if (fd->flags & FD_FLAGS_SWITCH_ENDIAN) {
+ BLI_endian_switch_float_array((float
*)bind->initial_positions, bind->vertex_amount * sizeof(float) * 3);
+
BLI_endian_switch_int32_array(bind->anchor_indices, bind->anchor_amount *
sizeof(int));
+ }
+ }
+ }
else if (md->type == eModifierType_CorrectiveSmooth) {
CorrectiveSmoothModifierData *csmd =
(CorrectiveSmoothModifierData *)md;
diff --git a/source/blender/blenloader/intern/writefile.c
b/source/blender/blenloader/intern/writefile.c
index fb5d41d0071..b83f95c024c 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -1773,12 +1773,19 @@ static void write_modifiers(WriteData *wd, ListBase
*modbase)
writedata(wd, DATA, sizeof(float) * lmd->total_verts *
3, lmd->vertexco);
}
+ else if (md->type == eModifierType_RigidDeform) {
+ RigidDeformModifierData *rdmd =
(RigidDeformModifierData *)md;
+ RigidDeformModifierBindData *bind = rdmd->bind_data;
+ writestruct(wd, DATA, RigidDeformModifierBindData, 1,
bind);
+
+ if (bind) {
+ writedata(wd, DATA, sizeof(float) * 3 *
bind->vertex_amount, bind->initial_positions);
+ writedata(wd, DATA, sizeof(int) *
bind->anchor_amount, bind->anchor_indices);
+ }
+ }
else if (md->type == eModifierType_CorrectiveSmooth) {
CorrectiveSmoothModifierData *csmd =
(CorrectiveSmoothModifierData *)md;
- if (csmd->bind_coords) {
- writedata(wd, DATA, sizeof(float[3]) *
csmd->bind_coords_num, csmd->bind_coords);
- }
}
else if (md->type == eModifierType_SurfaceDeform) {
SurfaceDeformModifierData *smd =
(SurfaceDeformModifierData *)md;
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs