Commit: 7c86782ff21cf88f191da3eaf2807c3696374d20 Author: Campbell Barton Date: Wed Feb 7 01:13:30 2018 +1100 Branches: temp-workspace-object-mode-removal https://developer.blender.org/rB7c86782ff21cf88f191da3eaf2807c3696374d20
Pass object mode to multires functions =================================================================== M source/blender/blenkernel/BKE_DerivedMesh.h M source/blender/blenkernel/BKE_multires.h M source/blender/blenkernel/BKE_object.h M source/blender/blenkernel/intern/cdderivedmesh.c M source/blender/blenkernel/intern/multires.c M source/blender/blenkernel/intern/object.c M source/blender/blenkernel/intern/paint.c M source/blender/blenkernel/intern/subsurf_ccg.c M source/blender/bmesh/intern/bmesh_mesh.c M source/blender/editors/object/object_bake.c M source/blender/editors/object/object_modifier.c M source/blender/editors/object/object_relations.c M source/blender/editors/sculpt_paint/paint_hide.c M source/blender/editors/sculpt_paint/sculpt.c M source/blender/modifiers/intern/MOD_multires.c =================================================================== diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h index f3d803a6394..c3cea6c883c 100644 --- a/source/blender/blenkernel/BKE_DerivedMesh.h +++ b/source/blender/blenkernel/BKE_DerivedMesh.h @@ -100,6 +100,8 @@ struct GPUDrawObject; struct PBVH; struct EvaluationContext; +#include "DNA_object_enums.h" + /* number of sub-elements each mesh element has (for interpolation) */ #define SUB_ELEMS_VERT 0 #define SUB_ELEMS_EDGE 2 @@ -381,7 +383,7 @@ struct DerivedMesh { /** Get the BVH used for paint modes */ - struct PBVH *(*getPBVH)(const struct EvaluationContext *eval_ctx, struct Object *ob, DerivedMesh *dm); + struct PBVH *(*getPBVH)(struct Object *ob, DerivedMesh *dm, eObjectMode object_mode); /* Drawing Operations */ diff --git a/source/blender/blenkernel/BKE_multires.h b/source/blender/blenkernel/BKE_multires.h index e27a0f919ff..22933a093ed 100644 --- a/source/blender/blenkernel/BKE_multires.h +++ b/source/blender/blenkernel/BKE_multires.h @@ -48,21 +48,21 @@ struct MVert; struct MPoly; struct MLoopTri; +#include "DNA_object_enums.h" + /* Delete mesh mdisps and grid paint masks */ void multires_customdata_delete(struct Mesh *me); -void multires_set_tot_level( - const struct EvaluationContext *eval_ctx, struct Object *ob, - struct MultiresModifierData *mmd, int lvl); +void multires_set_tot_level(struct MultiresModifierData *mmd, int lvl, eObjectMode object_mode); void multires_mark_as_modified(struct Object *ob, enum MultiresModifiedFlags flags); void multires_force_update(struct Object *ob); -void multires_force_render_update(const struct EvaluationContext *eval_ctx, struct Object *ob); +void multires_force_render_update(struct Object *ob, eObjectMode object_mode); void multires_force_external_reload(struct Object *ob); /* internal, only called in subsurf_ccg.c */ -void multires_modifier_update_mdisps(const struct EvaluationContext *eval_ctx, struct DerivedMesh *dm); +void multires_modifier_update_mdisps(struct DerivedMesh *dm, eObjectMode object_mode); void multires_modifier_update_hidden(struct DerivedMesh *dm); void multiresModifier_set_levels_from_disps(struct MultiresModifierData *mmd, struct Object *ob); @@ -75,11 +75,11 @@ typedef enum { } MultiresFlags; struct DerivedMesh *multires_make_derived_from_derived( - const struct EvaluationContext *eval_ctx, struct DerivedMesh *dm, struct MultiresModifierData *mmd, struct Object *ob, - MultiresFlags flags); + MultiresFlags flags, + eObjectMode object_mode); struct MultiresModifierData *find_multires_modifier_before(struct Scene *scene, struct ModifierData *lastmd); @@ -87,15 +87,14 @@ struct MultiresModifierData *get_multires_modifier(struct Scene *scene, struct O struct DerivedMesh *get_multires_dm(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct MultiresModifierData *mmd, struct Object *ob); void multiresModifier_del_levels( - const struct EvaluationContext *eval_ctx, - struct MultiresModifierData *, struct Object *, int direction); + struct MultiresModifierData *, struct Object *, int direction, eObjectMode object_mode); void multiresModifier_base_apply( - const struct EvaluationContext *eval_ctx, struct MultiresModifierData *mmd, struct Object *ob); + struct MultiresModifierData *mmd, struct Object *ob, eObjectMode object_mode); void multiresModifier_subdivide( - const struct EvaluationContext *eval_ctx, struct MultiresModifierData *mmd, struct Object *ob, int updateblock, int simple); + struct MultiresModifierData *mmd, struct Object *ob, int updateblock, int simple, eObjectMode object_mode); void multiresModifier_sync_levels_ex( - const struct EvaluationContext *eval_ctx, - struct Object *ob_dst, struct MultiresModifierData *mmd_src, struct MultiresModifierData *mmd_dst); + struct Object *ob_dst, struct MultiresModifierData *mmd_src, struct MultiresModifierData *mmd_dst, + eObjectMode object_mode); int multiresModifier_reshape(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct MultiresModifierData *mmd, struct Object *dst, struct Object *src); int multiresModifier_reshapeFromDM(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct MultiresModifierData *mmd, @@ -111,7 +110,7 @@ enum { MULTIRES_SPACE_OBJECT, MULTIRES_SPACE_ABSOLUTE }; -void multires_set_space(const struct EvaluationContext *eval_ctx, struct DerivedMesh *dm, struct Object *ob, int from, int to); +void multires_set_space(struct DerivedMesh *dm, struct Object *ob, int from, int to, eObjectMode object_mode); /* Related to the old multires */ void multires_free(struct Multires *mr); diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h index 913561d5dc4..f4983741071 100644 --- a/source/blender/blenkernel/BKE_object.h +++ b/source/blender/blenkernel/BKE_object.h @@ -75,8 +75,8 @@ void BKE_object_modifier_hook_reset(struct Object *ob, struct HookModifierData * bool BKE_object_support_modifier_type_check(struct Object *ob, int modifier_type); void BKE_object_link_modifiers( - const struct EvaluationContext *eval_ctx, - struct Object *ob_dst, const struct Object *ob_src); + struct Object *ob_dst, const struct Object *ob_src, + eObjectMode object_mode); void BKE_object_free_modifiers(struct Object *ob); void BKE_object_make_proxy(struct Object *ob, struct Object *target, struct Object *gob); diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 33224332b03..c4e9ace2d5d 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -263,7 +263,7 @@ static bool can_pbvh_draw(Object *ob, DerivedMesh *dm) } static PBVH *cdDM_getPBVH( - const EvaluationContext *UNUSED(eval_ctx), Object *ob, DerivedMesh *dm) + Object *ob, DerivedMesh *dm, eObjectMode UNUSED(object_mode)) { CDDerivedMesh *cddm = (CDDerivedMesh *) dm; diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index c440ec81772..e7c36685c42 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -339,12 +339,12 @@ MultiresModifierData *get_multires_modifier(Scene *scene, Object *ob, bool use_f } static int multires_get_level( - const EvaluationContext *eval_ctx, MultiresModifierData *mmd, - bool render, bool ignore_simplify) + MultiresModifierData *mmd, + bool render, bool ignore_simplify, eObjectMode object_mode) { if (render) return (mmd->modifier.scene) ? get_render_subsurf_level(&mmd->modifier.scene->r, mmd->renderlvl, true) : mmd->renderlvl; - else if (eval_ctx->object_mode == OB_MODE_SCULPT) + else if (object_mode == OB_MODE_SCULPT) return mmd->sculptlvl; else if (ignore_simplify) return mmd->lvl; @@ -352,13 +352,13 @@ static int multires_get_level( return (mmd->modifier.scene) ? get_render_subsurf_level(&mmd->modifier.scene->r, mmd->lvl, false) : mmd->lvl; } -void multires_set_tot_level( - const EvaluationContext *eval_ctx, Object *UNUSED(ob), MultiresModifierData *mmd, int lvl) +void multires_set_tot_level(MultiresModifierData *mmd, int lvl, eObjectMode object_mode) { mmd->totlvl = lvl; - if (eval_ctx->object_mode != OB_MODE_SCULPT) + if (object_mode != OB_MODE_SCULPT) { mmd->lvl = CLAMPIS(MAX2(mmd->lvl, lvl), 0, mmd->totlvl); + } mmd->sculptlvl = CLAMPIS(MAX2(mmd->sculptlvl, lvl), 0, mmd->totlvl); mmd->renderlvl = CLAMPIS(MAX2(mmd->renderlvl, lvl), 0, mmd->totlvl); @@ -396,9 +396,9 @@ void multires_force_external_reload(Object *ob) multires_force_update(ob); } -void multires_force_render_update(const EvaluationContext *eval_ctx, Object *ob) +void multires_force_render_update(Object *ob, eObjectMode object_mode) { - if (ob && (eval_ctx->object_mode & OB_MODE_SCULPT) && modifiers_findByType(ob, eModifierType_Multires)) + if (ob && (object_mode & OB_MODE_SCULPT) && modifiers_findByType(ob, eModifierType_Multires)) multires_force_update(ob); } @@ -438,7 +438,7 @@ int multiresModifier_reshapeFromDeformMod(const struct EvaluationContext *eval_c int numVerts, result; float (*deformedVerts)[3]; - if (multires_get_level(eval_ctx, mmd, false, true) == 0) + if (multires_get_level(mmd, false, true, eval_ctx->object_mode) == 0) return 0; /* Create DerivedMesh for deformation modifier */ @@ -618,8 +618,7 @@ static void multires_grid_paint_mask_downsample(GridPaintMask *gpm, int level) } } -static void multires_del_higher( - const EvaluationContext *eval_ctx, MultiresModifierData *mmd, Object *ob, int lvl) +static void multires_del_higher(MultiresModifierData *mmd, Object *ob, int lvl, eObjectMode object_mode) { Mesh *me = (Mesh *)ob->data; int levels = mmd->totlvl - lvl; @@ -681,15 +680,14 @@ static void multires_del_higher( } } - multires_set_tot_level(eval_ctx, ob, mmd, lvl); + multires_set_tot_level(mmd, lvl, object_mode); } /* (direction = 1) for delete higher, (direction = 0) for lower (not implemented yet) */ -void multiresModifier_del_levels( - const EvaluationContext *eval_ctx, MultiresModifierData *mmd, Object *ob, int direction) +void multiresModifier_del_levels(MultiresModifierData *mmd, Object *ob, int direction, eObjectMode object_mode) { Mesh *me = BKE_mesh_from_object(ob); - int lvl = multires_get_level(eval_ctx, mmd, false, true); + int lvl = multires_get_level(mmd, false, true, object_mode); int levels = mmd->totlvl - lvl; MDisps *mdisps; @@ -700,15 +698,14 @@ void multiresModifier_del_levels( multires_force_update(ob); if (mdisps && levels > 0 && direction == 1) { - multires_del_higher(eval_ctx, mmd, ob, lvl); + multires_del_higher(mmd, ob, lvl, object_mode); } - multires_set_tot_level(eval_ctx, ob, mmd, lvl); + multires_set_tot_level(mmd, lvl, object_mode); } @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs