Blender V4.3
BKE_rigidbody.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2013 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
10#pragma once
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16struct RigidBodyOb;
17struct RigidBodyWorld;
18
19struct Collection;
20struct Depsgraph;
21struct Main;
22struct Object;
23struct ReportList;
24struct Scene;
25
26/* -------------------------------------------------------------------- */
33void BKE_rigidbody_free_world(struct Scene *scene);
37void BKE_rigidbody_free_object(struct Object *ob, struct RigidBodyWorld *rbw);
42
43/* ...... */
44
46 struct Object *ob_dst,
47 const struct Object *ob_src,
48 int flag);
49
52/* -------------------------------------------------------------------- */
59typedef void (*RigidbodyWorldIDFunc)(struct RigidBodyWorld *rbw,
60 struct ID **idpoin,
61 void *userdata,
62 int cb_flag);
63
66 void *userdata);
67
70/* -------------------------------------------------------------------- */
84 struct Object *ob,
85 short type);
90 struct Object *ob,
91 short type);
92
97 struct Scene *scene,
98 struct RigidBodyWorld *rbw);
100 struct RigidBodyWorld *rbw);
101
106 struct Collection *collection,
107 struct Object *object);
108
114
124void BKE_rigidbody_validate_sim_world(struct Scene *scene,
125 struct RigidBodyWorld *rbw,
126 bool rebuild);
127
133void BKE_rigidbody_calc_volume(struct Object *ob, float *r_vol);
134void BKE_rigidbody_calc_center_of_mass(struct Object *ob, float r_center[3]);
135
138/* -------------------------------------------------------------------- */
147struct RigidBodyWorld *BKE_rigidbody_get_world(struct Scene *scene);
148bool BKE_rigidbody_add_object(struct Main *bmain,
149 struct Scene *scene,
150 struct Object *ob,
151 int type,
152 struct ReportList *reports);
153void BKE_rigidbody_ensure_local_object(struct Main *bmain, struct Object *ob);
154void BKE_rigidbody_remove_object(struct Main *bmain,
155 struct Scene *scene,
156 struct Object *ob,
157 bool free_us);
158void BKE_rigidbody_remove_constraint(struct Main *bmain,
159 struct Scene *scene,
160 struct Object *ob,
161 bool free_us);
162
165/* -------------------------------------------------------------------- */
172#define RBO_GET_MASS(rbo) \
173 (((rbo) && (((rbo)->type == RBO_TYPE_PASSIVE) || ((rbo)->flag & RBO_FLAG_KINEMATIC) || \
174 ((rbo)->flag & RBO_FLAG_DISABLED))) ? \
175 (0.0f) : \
176 ((rbo)->mass))
181#define RBO_GET_MARGIN(rbo) \
182 (((rbo)->flag & RBO_FLAG_USE_MARGIN || (rbo)->shape == RB_SHAPE_CONVEXH || \
183 (rbo)->shape == RB_SHAPE_TRIMESH || (rbo)->shape == RB_SHAPE_CONE) ? \
184 ((rbo)->margin) : \
185 (0.04f))
186
189/* -------------------------------------------------------------------- */
197 float loc[3],
198 float rot[3],
199 float quat[4],
200 float rotAxis[3],
201 float rotAngle);
205void BKE_rigidbody_sync_transforms(struct RigidBodyWorld *rbw, struct Object *ob, float ctime);
206bool BKE_rigidbody_check_sim_running(struct RigidBodyWorld *rbw, float ctime);
214void BKE_rigidbody_rebuild_world(struct Depsgraph *depsgraph, struct Scene *scene, float ctime);
218void BKE_rigidbody_do_simulation(struct Depsgraph *depsgraph, struct Scene *scene, float ctime);
219
222/* -------------------------------------------------------------------- */
226void BKE_rigidbody_rebuild_sim(struct Depsgraph *depsgraph, struct Scene *scene);
227
228void BKE_rigidbody_eval_simulation(struct Depsgraph *depsgraph, struct Scene *scene);
229
231 struct Scene *scene,
232 struct Object *ob);
233
236#ifdef __cplusplus
237}
238#endif
void BKE_rigidbody_remove_constraint(struct Main *bmain, struct Scene *scene, struct Object *ob, bool free_us)
bool BKE_rigidbody_is_affected_by_simulation(struct Object *ob)
Definition rigidbody.cc:217
void BKE_rigidbody_rebuild_world(struct Depsgraph *depsgraph, struct Scene *scene, float ctime)
void(* RigidbodyWorldIDFunc)(struct RigidBodyWorld *rbw, struct ID **idpoin, void *userdata, int cb_flag)
struct RigidBodyCon * BKE_rigidbody_create_constraint(struct Scene *scene, struct Object *ob, short type)
void BKE_rigidbody_free_constraint(struct Object *ob)
Definition rigidbody.cc:197
void BKE_rigidbody_cache_reset(struct RigidBodyWorld *rbw)
void BKE_rigidbody_aftertrans_update(struct Object *ob, float loc[3], float rot[3], float quat[4], float rotAxis[3], float rotAngle)
void BKE_rigidbody_calc_center_of_mass(struct Object *ob, float r_center[3])
void BKE_rigidbody_remove_object(struct Main *bmain, struct Scene *scene, struct Object *ob, bool free_us)
void BKE_rigidbody_do_simulation(struct Depsgraph *depsgraph, struct Scene *scene, float ctime)
void BKE_rigidbody_free_world(struct Scene *scene)
Definition rigidbody.cc:89
void BKE_rigidbody_eval_simulation(struct Depsgraph *depsgraph, struct Scene *scene)
void BKE_rigidbody_constraints_collection_validate(struct Scene *scene, struct RigidBodyWorld *rbw)
bool BKE_rigidbody_check_sim_running(struct RigidBodyWorld *rbw, float ctime)
void BKE_rigidbody_world_id_loop(struct RigidBodyWorld *rbw, RigidbodyWorldIDFunc func, void *userdata)
void BKE_rigidbody_calc_volume(struct Object *ob, float *r_vol)
struct RigidBodyOb * BKE_rigidbody_create_object(struct Scene *scene, struct Object *ob, short type)
void BKE_rigidbody_ensure_local_object(struct Main *bmain, struct Object *ob)
struct RigidBodyWorld * BKE_rigidbody_world_copy(struct RigidBodyWorld *rbw, int flag)
void BKE_rigidbody_free_object(struct Object *ob, struct RigidBodyWorld *rbw)
Definition rigidbody.cc:146
void BKE_rigidbody_rebuild_sim(struct Depsgraph *depsgraph, struct Scene *scene)
void BKE_rigidbody_object_copy(struct Main *bmain, struct Object *ob_dst, const struct Object *ob_src, int flag)
struct RigidBodyWorld * BKE_rigidbody_create_world(struct Scene *scene)
void BKE_rigidbody_world_groups_relink(struct RigidBodyWorld *rbw)
struct RigidBodyWorld * BKE_rigidbody_get_world(struct Scene *scene)
void BKE_rigidbody_sync_transforms(struct RigidBodyWorld *rbw, struct Object *ob, float ctime)
void BKE_rigidbody_validate_sim_world(struct Scene *scene, struct RigidBodyWorld *rbw, bool rebuild)
void BKE_rigidbody_object_sync_transforms(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
bool BKE_rigidbody_add_object(struct Main *bmain, struct Scene *scene, struct Object *ob, int type, struct ReportList *reports)
void BKE_rigidbody_main_collection_object_add(struct Main *bmain, struct Collection *collection, struct Object *object)
void BKE_rigidbody_objects_collection_validate(struct Main *bmain, struct Scene *scene, struct RigidBodyWorld *rbw)
const Depsgraph * depsgraph
#define rot(x, k)
Definition DNA_ID.h:413
uint8_t flag
Definition wm_window.cc:138