diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-06-25 17:04:56 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-06-25 18:15:07 +0300 |
commit | 2c9b32949bc00e73603bcabadb74e5b3176a161a (patch) | |
tree | f6bb1ee5b514cce92db337c3116ac967821a4c65 /source/blender/depsgraph/DEG_depsgraph_physics.h | |
parent | 26251282e093d4c0d04c4c667b0b32ad66d329b2 (diff) |
Cleanup: refactor depsgraph physics API functions.
Diffstat (limited to 'source/blender/depsgraph/DEG_depsgraph_physics.h')
-rw-r--r-- | source/blender/depsgraph/DEG_depsgraph_physics.h | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/source/blender/depsgraph/DEG_depsgraph_physics.h b/source/blender/depsgraph/DEG_depsgraph_physics.h index c90f66838cc..fd35a7fb2c0 100644 --- a/source/blender/depsgraph/DEG_depsgraph_physics.h +++ b/source/blender/depsgraph/DEG_depsgraph_physics.h @@ -34,21 +34,49 @@ struct Colllection; struct Depsgraph; +struct DepsNodeHandle; +struct EffectorWeights; struct ListBase; +struct Object; #ifdef __cplusplus extern "C" { #endif +typedef enum ePhysicsRelationType { + DEG_PHYSICS_EFFECTOR = 0, + DEG_PHYSICS_COLLISION = 1, + DEG_PHYSICS_SMOKE_COLLISION = 2, + DEG_PHYSICS_DYNAMIC_BRUSH = 3, + DEG_PHYSICS_RELATIONS_NUM = 4 +} ePhysicsRelationType; + /* Get collision/effector relations from collection or entire scene. These * created during depsgraph relations building and should only be accessed * during evaluation. */ struct ListBase *DEG_get_effector_relations(const struct Depsgraph *depsgraph, struct Collection *collection); struct ListBase *DEG_get_collision_relations(const struct Depsgraph *depsgraph, - struct Collection *collection); -struct ListBase *DEG_get_smoke_collision_relations(const struct Depsgraph *depsgraph, - struct Collection *collection); + struct Collection *collection, + unsigned int modifier_type); + + +/* Build collision/effector relations for depsgraph. */ +typedef bool (*DEG_CollobjFilterFunction)(struct Object *obj, + struct ModifierData *md); + +void DEG_add_collision_relations(struct DepsNodeHandle *handle, + struct Object *object, + struct Collection *collection, + unsigned int modifier_type, + DEG_CollobjFilterFunction fn, + const char *name); +void DEG_add_forcefield_relations(struct DepsNodeHandle *handle, + struct Object *object, + struct EffectorWeights *eff, + bool add_absorption, + int skip_forcefield, + const char *name); #ifdef __cplusplus } /* extern "C" */ |