[Bf-blender-cvs] [7c86782ff21] temp-workspace-object-mode-removal: Pass object mode to multires functions
Campbell Barton
noreply at git.blender.org
Tue Feb 6 15:27:34 CET 2018
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. @@
More information about the Bf-blender-cvs
mailing list