[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