Cleanup: wrap function args
This commit is contained in:
@@ -253,7 +253,8 @@ bool ED_vgroup_parray_alloc(ID *id, MDeformVert ***dvert_arr, int *dvert_tot, co
|
|||||||
*
|
*
|
||||||
* \note \a dvert_array has mirrored weights filled in, incase cleanup operations are needed on both.
|
* \note \a dvert_array has mirrored weights filled in, incase cleanup operations are needed on both.
|
||||||
*/
|
*/
|
||||||
void ED_vgroup_parray_mirror_sync(Object *ob,
|
void ED_vgroup_parray_mirror_sync(
|
||||||
|
Object *ob,
|
||||||
MDeformVert **dvert_array, const int dvert_tot,
|
MDeformVert **dvert_array, const int dvert_tot,
|
||||||
const bool *vgroup_validmap, const int vgroup_tot)
|
const bool *vgroup_validmap, const int vgroup_tot)
|
||||||
{
|
{
|
||||||
@@ -298,7 +299,8 @@ void ED_vgroup_parray_mirror_sync(Object *ob,
|
|||||||
*
|
*
|
||||||
* similar to #ED_vgroup_parray_mirror_sync but only fill in mirror points.
|
* similar to #ED_vgroup_parray_mirror_sync but only fill in mirror points.
|
||||||
*/
|
*/
|
||||||
void ED_vgroup_parray_mirror_assign(Object *ob,
|
void ED_vgroup_parray_mirror_assign(
|
||||||
|
Object *ob,
|
||||||
MDeformVert **dvert_array, const int dvert_tot)
|
MDeformVert **dvert_array, const int dvert_tot)
|
||||||
{
|
{
|
||||||
BMEditMesh *em = BKE_editmesh_from_object(ob);
|
BMEditMesh *em = BKE_editmesh_from_object(ob);
|
||||||
@@ -330,7 +332,8 @@ void ED_vgroup_parray_mirror_assign(Object *ob,
|
|||||||
MEM_freeN(dvert_array_all);
|
MEM_freeN(dvert_array_all);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ED_vgroup_parray_remove_zero(MDeformVert **dvert_array, const int dvert_tot,
|
void ED_vgroup_parray_remove_zero(
|
||||||
|
MDeformVert **dvert_array, const int dvert_tot,
|
||||||
const bool *vgroup_validmap, const int vgroup_tot,
|
const bool *vgroup_validmap, const int vgroup_tot,
|
||||||
const float epsilon, const bool keep_single)
|
const float epsilon, const bool keep_single)
|
||||||
{
|
{
|
||||||
@@ -482,7 +485,8 @@ void ED_vgroup_parray_from_weight_array(
|
|||||||
|
|
||||||
|
|
||||||
/* TODO, cache flip data to speedup calls within a loop. */
|
/* TODO, cache flip data to speedup calls within a loop. */
|
||||||
static void mesh_defvert_mirror_update_internal(Object *ob,
|
static void mesh_defvert_mirror_update_internal(
|
||||||
|
Object *ob,
|
||||||
MDeformVert *dvert_dst, MDeformVert *dvert_src,
|
MDeformVert *dvert_dst, MDeformVert *dvert_src,
|
||||||
const int def_nr)
|
const int def_nr)
|
||||||
{
|
{
|
||||||
@@ -502,7 +506,8 @@ static void mesh_defvert_mirror_update_internal(Object *ob,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ED_mesh_defvert_mirror_update_em(Object *ob, BMVert *eve, int def_nr, int vidx,
|
static void ED_mesh_defvert_mirror_update_em(
|
||||||
|
Object *ob, BMVert *eve, int def_nr, int vidx,
|
||||||
const int cd_dvert_offset)
|
const int cd_dvert_offset)
|
||||||
{
|
{
|
||||||
Mesh *me = ob->data;
|
Mesh *me = ob->data;
|
||||||
@@ -711,23 +716,27 @@ const EnumPropertyItem *ED_object_vgroup_selection_itemf_helper(
|
|||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const EnumPropertyItem *rna_vertex_group_with_single_itemf(bContext *C, PointerRNA *ptr,
|
static const EnumPropertyItem *rna_vertex_group_with_single_itemf(
|
||||||
|
bContext *C, PointerRNA *ptr,
|
||||||
PropertyRNA *prop, bool *r_free)
|
PropertyRNA *prop, bool *r_free)
|
||||||
{
|
{
|
||||||
return ED_object_vgroup_selection_itemf_helper(C, ptr, prop, r_free, WT_VGROUP_MASK_ALL);
|
return ED_object_vgroup_selection_itemf_helper(C, ptr, prop, r_free, WT_VGROUP_MASK_ALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const EnumPropertyItem *rna_vertex_group_select_itemf(bContext *C, PointerRNA *ptr,
|
static const EnumPropertyItem *rna_vertex_group_select_itemf(
|
||||||
|
bContext *C, PointerRNA *ptr,
|
||||||
PropertyRNA *prop, bool *r_free)
|
PropertyRNA *prop, bool *r_free)
|
||||||
{
|
{
|
||||||
return ED_object_vgroup_selection_itemf_helper(C, ptr, prop, r_free, WT_VGROUP_MASK_ALL & ~(1 << WT_VGROUP_ACTIVE));
|
return ED_object_vgroup_selection_itemf_helper(
|
||||||
|
C, ptr, prop, r_free, WT_VGROUP_MASK_ALL & ~(1 << WT_VGROUP_ACTIVE));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vgroup_operator_subset_select_props(wmOperatorType *ot, bool use_active)
|
static void vgroup_operator_subset_select_props(wmOperatorType *ot, bool use_active)
|
||||||
{
|
{
|
||||||
PropertyRNA *prop;
|
PropertyRNA *prop;
|
||||||
|
|
||||||
prop = RNA_def_enum(ot->srna,
|
prop = RNA_def_enum(
|
||||||
|
ot->srna,
|
||||||
"group_select_mode", DummyRNA_NULL_items,
|
"group_select_mode", DummyRNA_NULL_items,
|
||||||
use_active ? WT_VGROUP_ACTIVE : WT_VGROUP_ALL, "Subset",
|
use_active ? WT_VGROUP_ACTIVE : WT_VGROUP_ALL, "Subset",
|
||||||
"Define which subset of Groups shall be used");
|
"Define which subset of Groups shall be used");
|
||||||
@@ -747,7 +756,8 @@ static void vgroup_operator_subset_select_props(wmOperatorType *ot, bool use_act
|
|||||||
|
|
||||||
/* for Mesh in Object mode */
|
/* for Mesh in Object mode */
|
||||||
/* allows editmode for Lattice */
|
/* allows editmode for Lattice */
|
||||||
static void ED_vgroup_nr_vert_add(Object *ob,
|
static void ED_vgroup_nr_vert_add(
|
||||||
|
Object *ob,
|
||||||
const int def_nr, const int vertnum,
|
const int def_nr, const int vertnum,
|
||||||
const float weight, const int assignmode)
|
const float weight, const int assignmode)
|
||||||
{
|
{
|
||||||
@@ -1220,7 +1230,8 @@ static void getSingleCoordinate(MVert *points, int count, float coord[3])
|
|||||||
* compute the amount of vertical distance relative to the plane and store it in dists,
|
* compute the amount of vertical distance relative to the plane and store it in dists,
|
||||||
* then get the horizontal and vertical change and store them in changes
|
* then get the horizontal and vertical change and store them in changes
|
||||||
*/
|
*/
|
||||||
static void getVerticalAndHorizontalChange(const float norm[3], float d, const float coord[3],
|
static void getVerticalAndHorizontalChange(
|
||||||
|
const float norm[3], float d, const float coord[3],
|
||||||
const float start[3], float distToStart,
|
const float start[3], float distToStart,
|
||||||
float *end, float (*changes)[2], float *dists, int index)
|
float *end, float (*changes)[2], float *dists, int index)
|
||||||
{
|
{
|
||||||
@@ -1273,7 +1284,8 @@ static DerivedMesh *dm_deform_recalc(Scene *scene, Object *ob)
|
|||||||
* norm and d are the plane's properties for the equation: ax + by + cz + d = 0
|
* norm and d are the plane's properties for the equation: ax + by + cz + d = 0
|
||||||
* coord is a point on the plane
|
* coord is a point on the plane
|
||||||
*/
|
*/
|
||||||
static void moveCloserToDistanceFromPlane(Scene *scene, Object *ob, Mesh *me, int index, float norm[3],
|
static void moveCloserToDistanceFromPlane(
|
||||||
|
Scene *scene, Object *ob, Mesh *me, int index, float norm[3],
|
||||||
float coord[3], float d, float distToBe, float strength, float cp)
|
float coord[3], float d, float distToBe, float strength, float cp)
|
||||||
{
|
{
|
||||||
DerivedMesh *dm;
|
DerivedMesh *dm;
|
||||||
@@ -1494,7 +1506,8 @@ static void vgroup_fix(Scene *scene, Object *ob, float distToBe, float strength,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vgroup_levels_subset(Object *ob, const bool *vgroup_validmap, const int vgroup_tot,
|
static void vgroup_levels_subset(
|
||||||
|
Object *ob, const bool *vgroup_validmap, const int vgroup_tot,
|
||||||
const int UNUSED(subset_count),
|
const int UNUSED(subset_count),
|
||||||
const float offset, const float gain)
|
const float offset, const float gain)
|
||||||
{
|
{
|
||||||
@@ -1531,7 +1544,8 @@ static void vgroup_levels_subset(Object *ob, const bool *vgroup_validmap, const
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (use_mirror && use_vert_sel) {
|
if (use_mirror && use_vert_sel) {
|
||||||
ED_vgroup_parray_mirror_sync(ob, dvert_array, dvert_tot,
|
ED_vgroup_parray_mirror_sync(
|
||||||
|
ob, dvert_array, dvert_tot,
|
||||||
vgroup_validmap, vgroup_tot);
|
vgroup_validmap, vgroup_tot);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1589,11 +1603,13 @@ static bool vgroup_normalize_all(
|
|||||||
/* in case its not selected */
|
/* in case its not selected */
|
||||||
if ((dv = dvert_array[i])) {
|
if ((dv = dvert_array[i])) {
|
||||||
if (lock_flags) {
|
if (lock_flags) {
|
||||||
defvert_normalize_lock_map(dv, vgroup_validmap, vgroup_tot,
|
defvert_normalize_lock_map(
|
||||||
|
dv, vgroup_validmap, vgroup_tot,
|
||||||
lock_flags, defbase_tot);
|
lock_flags, defbase_tot);
|
||||||
}
|
}
|
||||||
else if (lock_active) {
|
else if (lock_active) {
|
||||||
defvert_normalize_lock_single(dv, vgroup_validmap, vgroup_tot,
|
defvert_normalize_lock_single(
|
||||||
|
dv, vgroup_validmap, vgroup_tot,
|
||||||
def_nr);
|
def_nr);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -1661,7 +1677,8 @@ static void vgroup_lock_all(Object *ob, int action)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vgroup_invert_subset(Object *ob,
|
static void vgroup_invert_subset(
|
||||||
|
Object *ob,
|
||||||
const bool *vgroup_validmap, const int vgroup_tot,
|
const bool *vgroup_validmap, const int vgroup_tot,
|
||||||
const int UNUSED(subset_count), const bool auto_assign, const bool auto_remove)
|
const int UNUSED(subset_count), const bool auto_assign, const bool auto_remove)
|
||||||
{
|
{
|
||||||
@@ -1702,12 +1719,14 @@ static void vgroup_invert_subset(Object *ob,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (use_mirror && use_vert_sel) {
|
if (use_mirror && use_vert_sel) {
|
||||||
ED_vgroup_parray_mirror_sync(ob, dvert_array, dvert_tot,
|
ED_vgroup_parray_mirror_sync(
|
||||||
|
ob, dvert_array, dvert_tot,
|
||||||
vgroup_validmap, vgroup_tot);
|
vgroup_validmap, vgroup_tot);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (auto_remove) {
|
if (auto_remove) {
|
||||||
ED_vgroup_parray_remove_zero(dvert_array, dvert_tot,
|
ED_vgroup_parray_remove_zero(
|
||||||
|
dvert_array, dvert_tot,
|
||||||
vgroup_validmap, vgroup_tot,
|
vgroup_validmap, vgroup_tot,
|
||||||
0.0f, false);
|
0.0f, false);
|
||||||
}
|
}
|
||||||
@@ -1929,7 +1948,8 @@ static void vgroup_smooth_subset(
|
|||||||
/* not so efficient to get 'dvert_array' again just so unselected verts are NULL'd */
|
/* not so efficient to get 'dvert_array' again just so unselected verts are NULL'd */
|
||||||
if (use_mirror) {
|
if (use_mirror) {
|
||||||
ED_vgroup_parray_alloc(ob->data, &dvert_array, &dvert_tot, true);
|
ED_vgroup_parray_alloc(ob->data, &dvert_array, &dvert_tot, true);
|
||||||
ED_vgroup_parray_mirror_sync(ob, dvert_array, dvert_tot,
|
ED_vgroup_parray_mirror_sync(
|
||||||
|
ob, dvert_array, dvert_tot,
|
||||||
vgroup_validmap, vgroup_tot);
|
vgroup_validmap, vgroup_tot);
|
||||||
if (dvert_array)
|
if (dvert_array)
|
||||||
MEM_freeN(dvert_array);
|
MEM_freeN(dvert_array);
|
||||||
@@ -1954,7 +1974,8 @@ static int inv_cmp_mdef_vert_weights(const void *a1, const void *a2)
|
|||||||
/* Used for limiting the number of influencing bones per vertex when exporting
|
/* Used for limiting the number of influencing bones per vertex when exporting
|
||||||
* skinned meshes. if all_deform_weights is True, limit all deform modifiers
|
* skinned meshes. if all_deform_weights is True, limit all deform modifiers
|
||||||
* to max_weights regardless of type, otherwise, only limit the number of influencing bones per vertex*/
|
* to max_weights regardless of type, otherwise, only limit the number of influencing bones per vertex*/
|
||||||
static int vgroup_limit_total_subset(Object *ob,
|
static int vgroup_limit_total_subset(
|
||||||
|
Object *ob,
|
||||||
const bool *vgroup_validmap,
|
const bool *vgroup_validmap,
|
||||||
const int vgroup_tot,
|
const int vgroup_tot,
|
||||||
const int subset_count,
|
const int subset_count,
|
||||||
@@ -2025,7 +2046,8 @@ static int vgroup_limit_total_subset(Object *ob,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void vgroup_clean_subset(Object *ob, const bool *vgroup_validmap, const int vgroup_tot, const int UNUSED(subset_count),
|
static void vgroup_clean_subset(
|
||||||
|
Object *ob, const bool *vgroup_validmap, const int vgroup_tot, const int UNUSED(subset_count),
|
||||||
const float epsilon, const bool keep_single)
|
const float epsilon, const bool keep_single)
|
||||||
{
|
{
|
||||||
MDeformVert **dvert_array = NULL;
|
MDeformVert **dvert_array = NULL;
|
||||||
@@ -2043,7 +2065,8 @@ static void vgroup_clean_subset(Object *ob, const bool *vgroup_validmap, const i
|
|||||||
ED_vgroup_parray_mirror_assign(ob, dvert_array, dvert_tot);
|
ED_vgroup_parray_mirror_assign(ob, dvert_array, dvert_tot);
|
||||||
}
|
}
|
||||||
|
|
||||||
ED_vgroup_parray_remove_zero(dvert_array, dvert_tot,
|
ED_vgroup_parray_remove_zero(
|
||||||
|
dvert_array, dvert_tot,
|
||||||
vgroup_validmap, vgroup_tot,
|
vgroup_validmap, vgroup_tot,
|
||||||
epsilon, keep_single);
|
epsilon, keep_single);
|
||||||
|
|
||||||
@@ -2051,7 +2074,8 @@ static void vgroup_clean_subset(Object *ob, const bool *vgroup_validmap, const i
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vgroup_quantize_subset(Object *ob, const bool *vgroup_validmap, const int vgroup_tot, const int UNUSED(subset_count),
|
static void vgroup_quantize_subset(
|
||||||
|
Object *ob, const bool *vgroup_validmap, const int vgroup_tot, const int UNUSED(subset_count),
|
||||||
const int steps)
|
const int steps)
|
||||||
{
|
{
|
||||||
MDeformVert **dvert_array = NULL;
|
MDeformVert **dvert_array = NULL;
|
||||||
@@ -2090,7 +2114,8 @@ static void vgroup_quantize_subset(Object *ob, const bool *vgroup_validmap, cons
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dvert_mirror_op(MDeformVert *dvert, MDeformVert *dvert_mirr,
|
static void dvert_mirror_op(
|
||||||
|
MDeformVert *dvert, MDeformVert *dvert_mirr,
|
||||||
const char sel, const char sel_mirr,
|
const char sel, const char sel_mirr,
|
||||||
const int *flip_map, const int flip_map_len,
|
const int *flip_map, const int flip_map_len,
|
||||||
const bool mirror_weights, const bool flip_vgroups, const bool all_vgroups,
|
const bool mirror_weights, const bool flip_vgroups, const bool all_vgroups,
|
||||||
@@ -2153,7 +2178,8 @@ static void dvert_mirror_op(MDeformVert *dvert, MDeformVert *dvert_mirr,
|
|||||||
|
|
||||||
/* TODO, vgroup locking */
|
/* TODO, vgroup locking */
|
||||||
/* TODO, face masking */
|
/* TODO, face masking */
|
||||||
void ED_vgroup_mirror(Object *ob,
|
void ED_vgroup_mirror(
|
||||||
|
Object *ob,
|
||||||
const bool mirror_weights, const bool flip_vgroups,
|
const bool mirror_weights, const bool flip_vgroups,
|
||||||
const bool all_vgroups, const bool use_topology,
|
const bool all_vgroups, const bool use_topology,
|
||||||
int *r_totmirr, int *r_totfail)
|
int *r_totmirr, int *r_totfail)
|
||||||
@@ -3277,7 +3303,8 @@ static int vertex_group_mirror_exec(bContext *C, wmOperator *op)
|
|||||||
Object *ob = ED_object_context(C);
|
Object *ob = ED_object_context(C);
|
||||||
int totmirr = 0, totfail = 0;
|
int totmirr = 0, totfail = 0;
|
||||||
|
|
||||||
ED_vgroup_mirror(ob,
|
ED_vgroup_mirror(
|
||||||
|
ob,
|
||||||
RNA_boolean_get(op->ptr, "mirror_weights"),
|
RNA_boolean_get(op->ptr, "mirror_weights"),
|
||||||
RNA_boolean_get(op->ptr, "flip_group_names"),
|
RNA_boolean_get(op->ptr, "flip_group_names"),
|
||||||
RNA_boolean_get(op->ptr, "all_groups"),
|
RNA_boolean_get(op->ptr, "all_groups"),
|
||||||
|
@@ -76,7 +76,8 @@ struct VertProjUpdate {
|
|||||||
/* -------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------- */
|
||||||
/* Internal Init */
|
/* Internal Init */
|
||||||
|
|
||||||
static void vpaint_proj_dm_map_cosnos_init__map_cb(void *userData, int index, const float co[3],
|
static void vpaint_proj_dm_map_cosnos_init__map_cb(
|
||||||
|
void *userData, int index, const float co[3],
|
||||||
const float no_f[3], const short no_s[3])
|
const float no_f[3], const short no_s[3])
|
||||||
{
|
{
|
||||||
struct VertProjHandle *vp_handle = userData;
|
struct VertProjHandle *vp_handle = userData;
|
||||||
@@ -98,7 +99,8 @@ static void vpaint_proj_dm_map_cosnos_init__map_cb(void *userData, int index, co
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vpaint_proj_dm_map_cosnos_init(Scene *scene, Object *ob,
|
static void vpaint_proj_dm_map_cosnos_init(
|
||||||
|
Scene *scene, Object *ob,
|
||||||
struct VertProjHandle *vp_handle)
|
struct VertProjHandle *vp_handle)
|
||||||
{
|
{
|
||||||
Mesh *me = ob->data;
|
Mesh *me = ob->data;
|
||||||
@@ -128,7 +130,8 @@ static void vpaint_proj_dm_map_cosnos_init(Scene *scene, Object *ob,
|
|||||||
|
|
||||||
/* Same as init but take mouse location into account */
|
/* Same as init but take mouse location into account */
|
||||||
|
|
||||||
static void vpaint_proj_dm_map_cosnos_update__map_cb(void *userData, int index, const float co[3],
|
static void vpaint_proj_dm_map_cosnos_update__map_cb(
|
||||||
|
void *userData, int index, const float co[3],
|
||||||
const float no_f[3], const short no_s[3])
|
const float no_f[3], const short no_s[3])
|
||||||
{
|
{
|
||||||
struct VertProjUpdate *vp_update = userData;
|
struct VertProjUpdate *vp_update = userData;
|
||||||
@@ -141,7 +144,8 @@ static void vpaint_proj_dm_map_cosnos_update__map_cb(void *userData, int index,
|
|||||||
/* first find distance to this vertex */
|
/* first find distance to this vertex */
|
||||||
float co_ss[2]; /* screenspace */
|
float co_ss[2]; /* screenspace */
|
||||||
|
|
||||||
if (ED_view3d_project_float_object(vp_update->ar,
|
if (ED_view3d_project_float_object(
|
||||||
|
vp_update->ar,
|
||||||
co, co_ss,
|
co, co_ss,
|
||||||
V3D_PROJ_TEST_CLIP_BB | V3D_PROJ_TEST_CLIP_NEAR) == V3D_PROJ_RET_OK)
|
V3D_PROJ_TEST_CLIP_BB | V3D_PROJ_TEST_CLIP_NEAR) == V3D_PROJ_RET_OK)
|
||||||
{
|
{
|
||||||
@@ -169,7 +173,8 @@ static void vpaint_proj_dm_map_cosnos_update__map_cb(void *userData, int index,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vpaint_proj_dm_map_cosnos_update(struct VertProjHandle *vp_handle,
|
static void vpaint_proj_dm_map_cosnos_update(
|
||||||
|
struct VertProjHandle *vp_handle,
|
||||||
ARegion *ar, const float mval_fl[2])
|
ARegion *ar, const float mval_fl[2])
|
||||||
{
|
{
|
||||||
struct VertProjUpdate vp_update = {vp_handle, ar, mval_fl};
|
struct VertProjUpdate vp_update = {vp_handle, ar, mval_fl};
|
||||||
@@ -198,7 +203,8 @@ static void vpaint_proj_dm_map_cosnos_update(struct VertProjHandle *vp_handle,
|
|||||||
/* -------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------- */
|
||||||
/* Public Functions */
|
/* Public Functions */
|
||||||
|
|
||||||
struct VertProjHandle *ED_vpaint_proj_handle_create(Scene *scene, Object *ob,
|
struct VertProjHandle *ED_vpaint_proj_handle_create(
|
||||||
|
Scene *scene, Object *ob,
|
||||||
DMCoNo **r_vcosnos)
|
DMCoNo **r_vcosnos)
|
||||||
{
|
{
|
||||||
struct VertProjHandle *vp_handle = MEM_mallocN(sizeof(struct VertProjHandle), __func__);
|
struct VertProjHandle *vp_handle = MEM_mallocN(sizeof(struct VertProjHandle), __func__);
|
||||||
@@ -228,7 +234,8 @@ struct VertProjHandle *ED_vpaint_proj_handle_create(Scene *scene, Object *ob,
|
|||||||
return vp_handle;
|
return vp_handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ED_vpaint_proj_handle_update(struct VertProjHandle *vp_handle,
|
void ED_vpaint_proj_handle_update(
|
||||||
|
struct VertProjHandle *vp_handle,
|
||||||
ARegion *ar, const float mval_fl[2])
|
ARegion *ar, const float mval_fl[2])
|
||||||
{
|
{
|
||||||
if (vp_handle->use_update) {
|
if (vp_handle->use_update) {
|
||||||
|
Reference in New Issue
Block a user