39 #include "RNA_prototypes.h"
78 if (hmd->
name[0] !=
'\0') {
100 bool UNUSED(useRenderParams))
160 for (i = 0, index_pt = hmd->
indexar; i < hmd->indexar_num; i++, index_pt++) {
161 const int j = *index_pt;
204 fac = 3.0f * fac * fac - 2.0f * fac * fac * fac;
218 fac =
sqrtf(2 * fac - fac * fac);
222 fac = fac * (2.0f - fac);
277 float (*vertexCos)[3],
301 int cd_dvert_offset = -1;
307 if (cd_dvert_offset == -1) {
361 if (hmd->
force == 0.0f) {
365 const int *origindex_ar;
368 int verts_orig_num = verts_num;
371 verts_orig_num = me_orig->
totvert;
374 for (i = 0; i < verts_num; i++) {
375 int i_orig = origindex_ar[i];
398 for (i = 0, index_pt = hmd->
indexar; i < hmd->indexar_num; i++, index_pt++) {
399 const int j = *index_pt;
419 for (i = 0; i < verts_num; i++) {
473 col,
ptr,
"subtarget", &hook_object_data_ptr,
"bones",
IFACE_(
"Bone"), ICON_NONE);
481 uiItemO(row,
IFACE_(
"Reset"), ICON_NONE,
"OBJECT_OT_hook_reset");
482 uiItemO(row,
IFACE_(
"Recenter"), ICON_NONE,
"OBJECT_OT_hook_recenter");
484 uiItemO(row,
IFACE_(
"Select"), ICON_NONE,
"OBJECT_OT_hook_select");
485 uiItemO(row,
IFACE_(
"Assign"), ICON_NONE,
"OBJECT_OT_hook_assign");
typedef float(TangentPoint)[2]
Blender kernel action and pose functionality.
struct bPoseChannel * BKE_pose_channel_find_name(const struct bPose *pose, const char *name)
void * CustomData_get_layer(const struct CustomData *data, int type)
int CustomData_get_offset(const struct CustomData *data, int type)
void BKE_id_free(struct Main *bmain, void *idv)
void(* IDWalkFunc)(void *userData, struct Object *ob, struct ID **idpoin, int cb_flag)
@ eModifierTypeFlag_AcceptsCVs
@ eModifierTypeFlag_SupportsEditmode
@ eModifierTypeFlag_AcceptsVertexCosOnly
void BKE_modifier_copydata_generic(const struct ModifierData *md, struct ModifierData *md_dst, int flag)
@ eModifierTypeType_OnlyDeform
#define BLI_BITMAP_NEW(_num, _alloc_string)
#define BLI_BITMAP_TEST(_bitmap, _index)
#define BLI_BITMAP_ENABLE(_bitmap, _index)
MINLINE float square_f(float a)
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
void unit_m3(float m[3][3])
void copy_m3_m4(float m1[3][3], const float m2[4][4])
bool invert_m4_m4(float R[4][4], const float A[4][4])
#define mul_m4_series(...)
void copy_m4_m4(float m1[4][4], const float m2[4][4])
void mul_v3_m4v3(float r[3], const float M[4][4], const float v[3])
void mul_v3_m3v3(float r[3], const float M[3][3], const float a[3])
MINLINE float len_squared_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
MINLINE void copy_v3_v3(float r[3], const float a[3])
void interp_v3_v3v3(float r[3], const float a[3], const float b[3], float t)
#define MEMCMP_STRUCT_AFTER_IS_ZERO(struct_var, member)
#define MEMCPY_STRUCT_AFTER(struct_dst, struct_src, member)
#define BLO_read_data_address(reader, ptr_p)
void BLO_write_int32_array(BlendWriter *writer, uint num, const int32_t *data_ptr)
void BLO_read_int32_array(BlendDataReader *reader, int array_size, int32_t **ptr_p)
#define BLO_write_struct(writer, struct_name, data_ptr)
void DEG_add_object_relation(struct DepsNodeHandle *node_handle, struct Object *object, eDepsObjectComponentType component, const char *description)
void DEG_add_modifier_to_transform_relation(struct DepsNodeHandle *node_handle, const char *description)
void DEG_add_bone_relation(struct DepsNodeHandle *handle, struct Object *object, const char *bone_name, eDepsObjectComponentType component, const char *description)
#define CD_MASK_ORIGINDEX
#define CD_MASK_MDEFORMVERT
#define DNA_struct_default_get(struct_name)
struct HookModifierData HookModifierData
@ eHook_Falloff_InvSquare
Object is a sort of wrapper for general info.
Read Guarded memory(de)allocation.
static void hook_co_apply(struct HookData_cb *hd, int j, const MDeformVert *dv)
static void copyData(const ModifierData *md, ModifierData *target, const int flag)
static void deformVerts(struct ModifierData *md, const struct ModifierEvalContext *ctx, struct Mesh *mesh, float(*vertexCos)[3], int verts_num)
static BLI_bitmap * hook_index_array_to_bitmap(HookModifierData *hmd, const int verts_num)
static void falloff_panel_draw(const bContext *UNUSED(C), Panel *panel)
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
static void deformVertsEM(struct ModifierData *md, const struct ModifierEvalContext *ctx, struct BMEditMesh *editData, struct Mesh *mesh, float(*vertexCos)[3], int verts_num)
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, bool UNUSED(useRenderParams))
static void blendRead(BlendDataReader *reader, ModifierData *md)
ModifierTypeInfo modifierType_Hook
static void foreachIDLink(ModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
static void panel_draw(const bContext *UNUSED(C), Panel *panel)
static void initData(ModifierData *md)
static float hook_falloff(const struct HookData_cb *hd, const float len_sq)
static void panelRegister(ARegionType *region_type)
static void deformVerts_do(HookModifierData *hmd, const ModifierEvalContext *UNUSED(ctx), Object *ob, Mesh *mesh, BMEditMesh *em, float(*vertexCos)[3], int verts_num)
static void blendWrite(BlendWriter *writer, const ID *UNUSED(id_owner), const ModifierData *md)
static void freeData(ModifierData *md)
static void requiredDataMask(Object *UNUSED(ob), ModifierData *md, CustomData_MeshMasks *r_cddata_masks)
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)
void modifier_vgroup_ui(uiLayout *layout, PointerRNA *ptr, PointerRNA *ob_ptr, const char *vgroup_prop, const char *invert_vgroup_prop, const char *text)
PanelType * modifier_subpanel_register(ARegionType *region_type, const char *name, const char *label, PanelDrawFn draw_header, PanelDrawFn draw, PanelType *parent)
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 MOD_get_vgroup(Object *ob, struct Mesh *mesh, const char *name, MDeformVert **dvert, int *defgrp_index)
void uiLayoutSetActive(uiLayout *layout, bool active)
void uiTemplateCurveMapping(uiLayout *layout, struct PointerRNA *ptr, const char *propname, int type, bool levels, bool brush, bool neg_slope, bool tone)
uiLayout * uiLayoutColumn(uiLayout *layout, bool align)
void uiLayoutSetPropSep(uiLayout *layout, bool is_sep)
uiLayout * uiLayoutRow(uiLayout *layout, bool align)
void uiItemR(uiLayout *layout, struct PointerRNA *ptr, const char *propname, int flag, const char *name, int icon)
void uiItemO(uiLayout *layout, const char *name, int icon, const char *opname)
void uiItemPointerR(uiLayout *layout, struct PointerRNA *ptr, const char *propname, struct PointerRNA *searchptr, const char *searchpropname, const char *name, int icon)
#define BM_ELEM_CD_GET_VOID_P(ele, offset)
#define BM_ITER_MESH_INDEX(ele, iter, bm, itype, indexvar)
ATTR_WARN_UNUSED_RESULT const BMVert * v
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
PointerRNA RNA_pointer_get(PointerRNA *ptr, const char *name)
bool RNA_pointer_is_null(const PointerRNA *ptr)
int RNA_enum_get(PointerRNA *ptr, const char *name)
struct CurveMapping * curfalloff
struct CurveMapping * curfalloff
struct DepsNodeHandle * node