[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