diff options
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" */ |