[Bf-blender-cvs] [f92f756] hair_system: Read/Write code for hair data.
Lukas Tönne
noreply at git.blender.org
Sat Jul 26 10:36:06 CEST 2014
Commit: f92f756fe86c977c226c0c20d09830a817b02793
Author: Lukas Tönne
Date: Sat Jul 26 10:36:15 2014 +0200
Branches: hair_system
https://developer.blender.org/rBf92f756fe86c977c226c0c20d09830a817b02793
Read/Write code for hair data.
===================================================================
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 d5eebdb..0ddea30 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -68,6 +68,7 @@
#include "DNA_genfile.h"
#include "DNA_group_types.h"
#include "DNA_gpencil_types.h"
+#include "DNA_hair_types.h"
#include "DNA_ipo_types.h"
#include "DNA_key_types.h"
#include "DNA_lattice_types.h"
@@ -4583,6 +4584,17 @@ static void direct_link_pose(FileData *fd, bPose *pose)
}
}
+static void direct_link_hair_system(FileData *fd, HairSystem *hsys)
+{
+ HairCurve *hair;
+ int i;
+
+ hsys->curves = newdataadr(fd, hsys->curves);
+ for (hair = hsys->curves, i = 0; i < hsys->totcurves; ++hair, ++i) {
+ hair->points = newdataadr(fd, hair->points);
+ }
+}
+
static void direct_link_modifiers(FileData *fd, ListBase *lb)
{
ModifierData *md;
@@ -4843,6 +4855,13 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb)
}
lmd->cache_system = NULL;
}
+ else if (md->type == eModifierType_Hair) {
+ HairModifierData *hmd = (HairModifierData *)md;
+
+ hmd->hairsys = newdataadr(fd, hmd->hairsys);
+ if (hmd->hairsys)
+ direct_link_hair_system(fd, hmd->hairsys);
+ }
}
}
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index 13fa6f6..c4991bc 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -107,6 +107,7 @@
#include "DNA_group_types.h"
#include "DNA_gpencil_types.h"
#include "DNA_fileglobal_types.h"
+#include "DNA_hair_types.h"
#include "DNA_key_types.h"
#include "DNA_lattice_types.h"
#include "DNA_lamp_types.h"
@@ -1356,6 +1357,17 @@ static void write_defgroups(WriteData *wd, ListBase *defbase)
writestruct(wd, DATA, "bDeformGroup", 1, defgroup);
}
+static void write_hair_system(WriteData *wd, HairSystem *hsys)
+{
+ HairCurve *hair;
+ int i;
+
+ writestruct(wd, DATA, "HairSystem", 1, hsys);
+ writestruct(wd, DATA, "HairCurve", hsys->totcurves, hsys->curves);
+ for (hair = hsys->curves, i = 0; i < hsys->totcurves; ++hair, ++i)
+ writestruct(wd, DATA, "HairPoint", hair->totpoints, hair->points);
+}
+
static void write_modifiers(WriteData *wd, ListBase *modbase)
{
ModifierData *md;
@@ -1478,6 +1490,12 @@ static void write_modifiers(WriteData *wd, ListBase *modbase)
writedata(wd, DATA, sizeof(float)*lmd->total_verts * 3, lmd->vertexco);
}
+ else if (md->type==eModifierType_Hair) {
+ HairModifierData *hmd = (HairModifierData*) md;
+
+ if (hmd->hairsys)
+ write_hair_system(wd, hmd->hairsys);
+ }
}
}
More information about the Bf-blender-cvs
mailing list