Blender  V3.3
BKE_rigidbody.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2013 Blender Foundation. All rights reserved. */
3 
9 #pragma once
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 struct RigidBodyOb;
16 struct RigidBodyWorld;
17 
18 struct Collection;
19 struct Depsgraph;
20 struct Main;
21 struct Object;
22 struct ReportList;
23 struct Scene;
24 
25 /* -------------------------------------------------------------------- */
36 void BKE_rigidbody_free_object(struct Object *ob, struct RigidBodyWorld *rbw);
40 void BKE_rigidbody_free_constraint(struct Object *ob);
41 
42 /* ...... */
43 
44 void BKE_rigidbody_object_copy(struct Main *bmain,
45  struct Object *ob_dst,
46  const struct Object *ob_src,
47  int flag);
48 
51 /* -------------------------------------------------------------------- */
58 typedef void (*RigidbodyWorldIDFunc)(struct RigidBodyWorld *rbw,
59  struct ID **idpoin,
60  void *userdata,
61  int cb_flag);
62 
65  void *userdata);
66 
69 /* -------------------------------------------------------------------- */
83  struct Object *ob,
84  short type);
89  struct Object *ob,
90  short type);
91 
96  struct Scene *scene,
97  struct RigidBodyWorld *rbw);
99  struct RigidBodyWorld *rbw);
100 
105  struct Collection *collection,
106  struct Object *object);
107 
113 
124  struct RigidBodyWorld *rbw,
125  bool rebuild);
126 
132 void BKE_rigidbody_calc_volume(struct Object *ob, float *r_vol);
133 void BKE_rigidbody_calc_center_of_mass(struct Object *ob, float r_center[3]);
134 
137 /* -------------------------------------------------------------------- */
147 bool BKE_rigidbody_add_object(struct Main *bmain,
148  struct Scene *scene,
149  struct Object *ob,
150  int type,
151  struct ReportList *reports);
152 void BKE_rigidbody_ensure_local_object(struct Main *bmain, struct Object *ob);
153 void BKE_rigidbody_remove_object(struct Main *bmain,
154  struct Scene *scene,
155  struct Object *ob,
156  bool free_us);
157 void BKE_rigidbody_remove_constraint(struct Main *bmain,
158  struct Scene *scene,
159  struct Object *ob,
160  bool free_us);
161 
164 /* -------------------------------------------------------------------- */
171 #define RBO_GET_MASS(rbo) \
172  (((rbo) && (((rbo)->type == RBO_TYPE_PASSIVE) || ((rbo)->flag & RBO_FLAG_KINEMATIC) || \
173  ((rbo)->flag & RBO_FLAG_DISABLED))) ? \
174  (0.0f) : \
175  ((rbo)->mass))
180 #define RBO_GET_MARGIN(rbo) \
181  (((rbo)->flag & RBO_FLAG_USE_MARGIN || (rbo)->shape == RB_SHAPE_CONVEXH || \
182  (rbo)->shape == RB_SHAPE_TRIMESH || (rbo)->shape == RB_SHAPE_CONE) ? \
183  ((rbo)->margin) : \
184  (0.04f))
185 
188 /* -------------------------------------------------------------------- */
196  float loc[3],
197  float rot[3],
198  float quat[4],
199  float rotAxis[3],
200  float rotAngle);
204 void BKE_rigidbody_sync_transforms(struct RigidBodyWorld *rbw, struct Object *ob, float ctime);
205 bool BKE_rigidbody_check_sim_running(struct RigidBodyWorld *rbw, float ctime);
207 void BKE_rigidbody_cache_reset(struct RigidBodyWorld *rbw);
213 void BKE_rigidbody_rebuild_world(struct Depsgraph *depsgraph, struct Scene *scene, float ctime);
217 void BKE_rigidbody_do_simulation(struct Depsgraph *depsgraph, struct Scene *scene, float ctime);
218 
221 /* -------------------------------------------------------------------- */
226 
228 
230  struct Scene *scene,
231  struct Object *ob);
232 
235 #ifdef __cplusplus
236 }
237 #endif
void BKE_rigidbody_remove_constraint(struct Main *bmain, struct Scene *scene, struct Object *ob, bool free_us)
Definition: rigidbody.c:2342
bool BKE_rigidbody_is_affected_by_simulation(struct Object *ob)
Definition: rigidbody.c:213
void BKE_rigidbody_rebuild_world(struct Depsgraph *depsgraph, struct Scene *scene, float ctime)
Definition: rigidbody.c:2359
void(* RigidbodyWorldIDFunc)(struct RigidBodyWorld *rbw, struct ID **idpoin, void *userdata, int cb_flag)
Definition: BKE_rigidbody.h:58
void BKE_rigidbody_free_constraint(struct Object *ob)
Definition: rigidbody.c:193
void BKE_rigidbody_cache_reset(struct RigidBodyWorld *rbw)
Definition: rigidbody.c:2356
void BKE_rigidbody_aftertrans_update(struct Object *ob, float loc[3], float rot[3], float quat[4], float rotAxis[3], float rotAngle)
Definition: rigidbody.c:2348
void BKE_rigidbody_calc_center_of_mass(struct Object *ob, float r_center[3])
Definition: rigidbody.c:2296
void BKE_rigidbody_remove_object(struct Main *bmain, struct Scene *scene, struct Object *ob, bool free_us)
Definition: rigidbody.c:2339
void BKE_rigidbody_do_simulation(struct Depsgraph *depsgraph, struct Scene *scene, float ctime)
Definition: rigidbody.c:2362
void BKE_rigidbody_free_world(struct Scene *scene)
Definition: rigidbody.c:90
void BKE_rigidbody_eval_simulation(struct Depsgraph *depsgraph, struct Scene *scene)
Definition: rigidbody.c:2394
void BKE_rigidbody_constraints_collection_validate(struct Scene *scene, struct RigidBodyWorld *rbw)
Definition: rigidbody.c:2368
struct RigidBodyWorld * BKE_rigidbody_create_world(struct Scene *scene)
Definition: rigidbody.c:2300
bool BKE_rigidbody_check_sim_running(struct RigidBodyWorld *rbw, float ctime)
Definition: rigidbody.c:2352
void BKE_rigidbody_world_id_loop(struct RigidBodyWorld *rbw, RigidbodyWorldIDFunc func, void *userdata)
Definition: rigidbody.c:2311
void BKE_rigidbody_calc_volume(struct Object *ob, float *r_vol)
Definition: rigidbody.c:2290
void BKE_rigidbody_ensure_local_object(struct Main *bmain, struct Object *ob)
Definition: rigidbody.c:2329
void BKE_rigidbody_free_object(struct Object *ob, struct RigidBodyWorld *rbw)
Definition: rigidbody.c:146
void BKE_rigidbody_rebuild_sim(struct Depsgraph *depsgraph, struct Scene *scene)
Definition: rigidbody.c:2384
struct RigidBodyWorld * BKE_rigidbody_get_world(struct Scene *scene)
Definition: rigidbody.c:2324
void BKE_rigidbody_object_copy(struct Main *bmain, struct Object *ob_dst, const struct Object *ob_src, int flag)
void BKE_rigidbody_world_groups_relink(struct RigidBodyWorld *rbw)
Definition: rigidbody.c:2308
struct RigidBodyCon * BKE_rigidbody_create_constraint(struct Scene *scene, struct Object *ob, short type)
Definition: rigidbody.c:2320
void BKE_rigidbody_sync_transforms(struct RigidBodyWorld *rbw, struct Object *ob, float ctime)
Definition: rigidbody.c:2345
void BKE_rigidbody_validate_sim_world(struct Scene *scene, struct RigidBodyWorld *rbw, bool rebuild)
Definition: rigidbody.c:2286
void BKE_rigidbody_object_sync_transforms(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
Definition: rigidbody.c:2406
bool BKE_rigidbody_add_object(struct Main *bmain, struct Scene *scene, struct Object *ob, int type, struct ReportList *reports)
Definition: rigidbody.c:2333
struct RigidBodyOb * BKE_rigidbody_create_object(struct Scene *scene, struct Object *ob, short type)
Definition: rigidbody.c:2316
void BKE_rigidbody_main_collection_object_add(struct Main *bmain, struct Collection *collection, struct Object *object)
Definition: rigidbody.c:2371
struct RigidBodyWorld * BKE_rigidbody_world_copy(struct RigidBodyWorld *rbw, int flag)
Definition: rigidbody.c:2304
void BKE_rigidbody_objects_collection_validate(struct Main *bmain, struct Scene *scene, struct RigidBodyWorld *rbw)
Definition: rigidbody.c:2365
struct Depsgraph Depsgraph
Definition: DEG_depsgraph.h:35
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
Scene scene
const Depsgraph * depsgraph
SyclQueue void void size_t num_bytes void
#define rot(x, k)
Definition: DNA_ID.h:368
Definition: BKE_main.h:121
short flag