39 #include "RNA_prototypes.h"
91 float (*vertexCos)[3],
102 printf(
"CollisionModifier: collision settings are missing!\n");
119 float current_time = 0;
127 printf(
"current_time %f, collmd->time_xnew %f\n", current_time, collmd->
time_xnew);
132 if (current_time < collmd->time_xnew) {
135 else if (current_time == collmd->
time_xnew) {
142 if (collmd->
x && (mvert_num != collmd->
mvert_num)) {
150 for (
uint i = 0; i < mvert_num; i++) {
178 else if (mvert_num == collmd->
mvert_num) {
180 tempVert = collmd->
x;
181 collmd->
x = collmd->
xnew;
182 collmd->
xnew = tempVert;
187 bool is_static =
true;
189 for (
uint i = 0; i < mvert_num; i++) {
214 else if (!collmd->
is_static || !is_static) {
227 else if (mvert_num != collmd->
mvert_num) {
248 uiItemL(layout,
TIP_(
"Settings are inside the Physics tab"), ICON_NONE);
266 collmd->mfaces =
newdataadr(fd, collmd->mfaces);
288 "CollisionModifierData",
290 &RNA_CollisionModifier,
struct BVHTree * bvhtree_build_from_mvert(const struct MVert *mvert, const struct MVertTri *tri, int tri_num, float epsilon)
void bvhtree_update_from_mvert(struct BVHTree *bvhtree, const struct MVert *mvert, const struct MVert *mvert_moving, const struct MVertTri *tri, int tri_num, bool moving)
struct ID * BKE_id_copy_ex(struct Main *bmain, const struct ID *id, struct ID **r_newid, int flag)
void BKE_id_free(struct Main *bmain, void *idv)
void BKE_mesh_vert_coords_apply(struct Mesh *mesh, const float(*vert_coords)[3])
void BKE_mesh_runtime_verttri_from_looptri(struct MVertTri *r_verttri, const struct MLoop *mloop, const struct MLoopTri *looptri, int looptri_num)
const struct MLoopTri * BKE_mesh_runtime_looptri_ensure(const struct Mesh *mesh)
int BKE_mesh_runtime_looptri_len(const struct Mesh *mesh)
@ eModifierTypeFlag_Single
@ eModifierTypeFlag_AcceptsMesh
@ eModifierTypeType_OnlyDeform
void BLI_bvhtree_free(BVHTree *tree)
float BLI_bvhtree_get_epsilon(const BVHTree *tree)
void mul_m4_v3(const float M[4][4], float r[3])
MINLINE bool equals_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
#define MEMCMP_STRUCT_AFTER_IS_ZERO(struct_var, member)
#define MEMCPY_STRUCT_AFTER(struct_dst, struct_src, member)
void DEG_add_modifier_to_transform_relation(struct DepsNodeHandle *node_handle, const char *description)
float DEG_get_ctime(const Depsgraph *graph)
#define DNA_struct_default_get(struct_name)
struct CollisionModifierData CollisionModifierData
@ eModifierType_Collision
Object is a sort of wrapper for general info.
Read Guarded memory(de)allocation.
static bool dependsOnTime(struct Scene *UNUSED(scene), ModifierData *UNUSED(md))
static void blendRead(BlendDataReader *UNUSED(reader), ModifierData *md)
static void updateDepsgraph(ModifierData *UNUSED(md), const ModifierUpdateDepsgraphContext *ctx)
static void deformVerts(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh, float(*vertexCos)[3], int verts_num)
ModifierTypeInfo modifierType_Collision
static void panel_draw(const bContext *UNUSED(C), Panel *panel)
static void initData(ModifierData *md)
static void panelRegister(ARegionType *region_type)
static void freeData(ModifierData *md)
PointerRNA * modifier_panel_get_property_pointers(Panel *panel, PointerRNA *r_ob_ptr)
void modifier_panel_end(uiLayout *layout, PointerRNA *ptr)
PanelType * modifier_panel_register(ARegionType *region_type, ModifierType type, PanelDrawFn draw)
Mesh * MOD_deform_mesh_eval_get(Object *ob, struct BMEditMesh *em, Mesh *mesh, const float(*vertexCos)[3], const int verts_num, const bool use_normals, const bool use_orco)
void uiItemL(uiLayout *layout, const char *name, int icon)
void *(* MEM_dupallocN)(const void *vmemh)
void *(* MEM_calloc_arrayN)(size_t len, size_t size, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
static void * newdataadr(FileData *fd, const void *adr)
struct MVert * current_xnew
struct Depsgraph * depsgraph
struct DepsNodeHandle * node