[Bf-blender-cvs] [03adc7e] hair_system: Store a dynamics world reference in the solver externals struct.

Lukas Tönne noreply at git.blender.org
Thu Jul 31 19:56:17 CEST 2014


Commit: 03adc7e387d06c165a900373c6b4a804788fe3ce
Author: Lukas Tönne
Date:   Thu Jul 31 19:54:15 2014 +0200
Branches: hair_system
https://developer.blender.org/rB03adc7e387d06c165a900373c6b4a804788fe3ce

Store a dynamics world reference in the solver externals struct.

This will provide the solver with contact points of the Bullet engine.

===================================================================

M	source/blender/hair/HAIR_capi.cpp
M	source/blender/hair/intern/HAIR_scene.cpp
M	source/blender/hair/intern/HAIR_scene.h
M	source/blender/hair/intern/HAIR_solver.h

===================================================================

diff --git a/source/blender/hair/HAIR_capi.cpp b/source/blender/hair/HAIR_capi.cpp
index 649c066..9afce88 100644
--- a/source/blender/hair/HAIR_capi.cpp
+++ b/source/blender/hair/HAIR_capi.cpp
@@ -68,8 +68,6 @@ void HAIR_solver_build_data(struct HAIR_Solver *csolver, Scene *scene, Object *o
 {
 	Solver *solver = (Solver *)csolver;
 	
-	solver->forces().gravity = float3(scene->physics_settings.gravity);
-	
 	SolverData *data = SceneConverter::build_solver_data(scene, ob, dm, hsys, time);
 	solver->set_data(data);
 }
@@ -78,7 +76,7 @@ void HAIR_solver_update_externals(struct HAIR_Solver *csolver, Scene *scene, Obj
 {
 	Solver *solver = (Solver *)csolver;
 	
-	SceneConverter::update_solver_data_externals(solver->data(), scene, ob, dm, hsys, time);
+	SceneConverter::update_solver_data_externals(solver->data(), solver->forces(), scene, ob, dm, hsys, time);
 }
 
 void HAIR_solver_step(struct HAIR_Solver *csolver, float time, float timestep)
diff --git a/source/blender/hair/intern/HAIR_scene.cpp b/source/blender/hair/intern/HAIR_scene.cpp
index 56a7b46..e33e7ee 100644
--- a/source/blender/hair/intern/HAIR_scene.cpp
+++ b/source/blender/hair/intern/HAIR_scene.cpp
@@ -30,6 +30,8 @@ extern "C" {
 #include "DNA_hair_types.h"
 #include "DNA_meshdata_types.h"
 #include "DNA_object_types.h"
+#include "DNA_scene_types.h"
+#include "DNA_rigidbody_types.h"
 
 #include "BKE_DerivedMesh.h"
 #include "BKE_mesh_sample.h"
@@ -101,7 +103,7 @@ SolverData *SceneConverter::build_solver_data(Scene *scene, Object *ob, DerivedM
 	return data;
 }
 
-void SceneConverter::update_solver_data_externals(SolverData *data, Scene *scene, Object *ob, DerivedMesh *dm, HairSystem *hsys, float time)
+void SceneConverter::update_solver_data_externals(SolverData *data, SolverForces &forces, Scene *scene, Object *ob, DerivedMesh *dm, HairSystem *hsys, float time)
 {
 	int i;
 	
@@ -120,6 +122,9 @@ void SceneConverter::update_solver_data_externals(SolverData *data, Scene *scene
 		curve->root0 = curve->root1;
 		mesh_sample_eval(dm, mat, &hcurve->root, curve->root1.co, curve->root1.nor);
 	}
+	
+	forces.dynamics_world = (rbDynamicsWorld *)scene->rigidbody_world->physics_world;
+	forces.gravity = float3(scene->physics_settings.gravity);
 }
 
 void SceneConverter::apply_solver_data(SolverData *data, Scene *scene, Object *ob, HairSystem *hsys)
diff --git a/source/blender/hair/intern/HAIR_scene.h b/source/blender/hair/intern/HAIR_scene.h
index 777e59c..95e3d4d 100644
--- a/source/blender/hair/intern/HAIR_scene.h
+++ b/source/blender/hair/intern/HAIR_scene.h
@@ -35,10 +35,11 @@ struct HairSystem;
 HAIR_NAMESPACE_BEGIN
 
 struct SolverData;
+struct SolverForces;
 
 struct SceneConverter {
 	static SolverData *build_solver_data(Scene *scene, Object *ob, DerivedMesh *dm, HairSystem *hsys, float time);
-	static void update_solver_data_externals(SolverData *data, Scene *scene, Object *ob, DerivedMesh *dm, HairSystem *hsys, float time);
+	static void update_solver_data_externals(SolverData *data, SolverForces &force, Scene *scene, Object *ob, DerivedMesh *dm, HairSystem *hsys, float time);
 	
 	static void apply_solver_data(SolverData *data, Scene *scene, Object *ob, HairSystem *hsys);
 };
diff --git a/source/blender/hair/intern/HAIR_solver.h b/source/blender/hair/intern/HAIR_solver.h
index 1f90e16..33226f2 100644
--- a/source/blender/hair/intern/HAIR_solver.h
+++ b/source/blender/hair/intern/HAIR_solver.h
@@ -34,6 +34,8 @@ extern "C" {
 #include "HAIR_curve.h"
 #include "HAIR_memalloc.h"
 
+struct rbDynamicsWorld;
+
 HAIR_NAMESPACE_BEGIN
 
 struct SolverData {
@@ -57,6 +59,8 @@ struct SolverData {
 struct SolverForces {
 	SolverForces();
 	
+	struct rbDynamicsWorld *dynamics_world;
+	
 	float3 gravity;
 };




More information about the Bf-blender-cvs mailing list