[Bf-blender-cvs] [d5870270151] master: Modifiers: add StructRNA pointer field to ModifierTypeInfo
Jacques Lucke
noreply at git.blender.org
Fri Sep 25 12:49:32 CEST 2020
Commit: d5870270151920a04cd69bbe4a78f118be09baef
Author: Jacques Lucke
Date: Fri Sep 25 12:49:18 2020 +0200
Branches: master
https://developer.blender.org/rBd5870270151920a04cd69bbe4a78f118be09baef
Modifiers: add StructRNA pointer field to ModifierTypeInfo
This reduces the number of places that have to be modified
when a new modifier is added.
Reviewers: campbellbarton
Differential Revision: https://developer.blender.org/D9000
===================================================================
M source/blender/blenkernel/BKE_modifier.h
M source/blender/makesrna/RNA_access.h
M source/blender/makesrna/intern/rna_modifier.c
M source/blender/modifiers/CMakeLists.txt
M source/blender/modifiers/intern/MOD_armature.c
M source/blender/modifiers/intern/MOD_array.c
M source/blender/modifiers/intern/MOD_bevel.c
M source/blender/modifiers/intern/MOD_boolean.c
M source/blender/modifiers/intern/MOD_build.c
M source/blender/modifiers/intern/MOD_cast.c
M source/blender/modifiers/intern/MOD_cloth.c
M source/blender/modifiers/intern/MOD_collision.c
M source/blender/modifiers/intern/MOD_correctivesmooth.c
M source/blender/modifiers/intern/MOD_curve.c
M source/blender/modifiers/intern/MOD_datatransfer.c
M source/blender/modifiers/intern/MOD_decimate.c
M source/blender/modifiers/intern/MOD_displace.c
M source/blender/modifiers/intern/MOD_dynamicpaint.c
M source/blender/modifiers/intern/MOD_edgesplit.c
M source/blender/modifiers/intern/MOD_explode.c
M source/blender/modifiers/intern/MOD_fluid.c
M source/blender/modifiers/intern/MOD_hook.c
M source/blender/modifiers/intern/MOD_laplaciandeform.c
M source/blender/modifiers/intern/MOD_laplaciansmooth.c
M source/blender/modifiers/intern/MOD_lattice.c
M source/blender/modifiers/intern/MOD_mask.cc
M source/blender/modifiers/intern/MOD_meshcache.c
M source/blender/modifiers/intern/MOD_meshdeform.c
M source/blender/modifiers/intern/MOD_meshsequencecache.c
M source/blender/modifiers/intern/MOD_mirror.c
M source/blender/modifiers/intern/MOD_multires.c
M source/blender/modifiers/intern/MOD_none.c
M source/blender/modifiers/intern/MOD_normal_edit.c
M source/blender/modifiers/intern/MOD_ocean.c
M source/blender/modifiers/intern/MOD_particleinstance.c
M source/blender/modifiers/intern/MOD_particlesystem.c
M source/blender/modifiers/intern/MOD_remesh.c
M source/blender/modifiers/intern/MOD_screw.c
M source/blender/modifiers/intern/MOD_shapekey.c
M source/blender/modifiers/intern/MOD_shrinkwrap.c
M source/blender/modifiers/intern/MOD_simpledeform.c
M source/blender/modifiers/intern/MOD_simulation.cc
M source/blender/modifiers/intern/MOD_skin.c
M source/blender/modifiers/intern/MOD_smooth.c
M source/blender/modifiers/intern/MOD_softbody.c
M source/blender/modifiers/intern/MOD_solidify.c
M source/blender/modifiers/intern/MOD_subsurf.c
M source/blender/modifiers/intern/MOD_surface.c
M source/blender/modifiers/intern/MOD_surfacedeform.c
M source/blender/modifiers/intern/MOD_triangulate.c
M source/blender/modifiers/intern/MOD_uvproject.c
M source/blender/modifiers/intern/MOD_uvwarp.c
M source/blender/modifiers/intern/MOD_warp.c
M source/blender/modifiers/intern/MOD_wave.c
M source/blender/modifiers/intern/MOD_weighted_normal.c
M source/blender/modifiers/intern/MOD_weightvgedit.c
M source/blender/modifiers/intern/MOD_weightvgmix.c
M source/blender/modifiers/intern/MOD_weightvgproximity.c
M source/blender/modifiers/intern/MOD_weld.c
M source/blender/modifiers/intern/MOD_wireframe.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h
index 83d8177b390..6267642c577 100644
--- a/source/blender/blenkernel/BKE_modifier.h
+++ b/source/blender/blenkernel/BKE_modifier.h
@@ -170,6 +170,9 @@ typedef struct ModifierTypeInfo {
/* The size of the modifier data type, used by allocation. */
int structSize;
+ /* StructRNA of this modifier. This is typically something like RNA_*Modifier. */
+ struct StructRNA *srna;
+
ModifierTypeType type;
ModifierTypeFlag flags;
diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h
index 38438f66a0f..10c122171e4 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -491,6 +491,7 @@ extern StructRNA RNA_PropertyGroup;
extern StructRNA RNA_PropertyGroupItem;
extern StructRNA RNA_PythonConstraint;
extern StructRNA RNA_Region;
+extern StructRNA RNA_RemeshModifier;
extern StructRNA RNA_RenderEngine;
extern StructRNA RNA_RenderLayer;
extern StructRNA RNA_RenderPass;
@@ -563,6 +564,9 @@ extern StructRNA RNA_ShrinkwrapModifier;
extern StructRNA RNA_SimpleDeformModifier;
extern StructRNA RNA_SimplifyGpencilModifier;
extern StructRNA RNA_Simulation;
+#ifdef WITH_PARTICLE_NODES
+extern StructRNA RNA_SimulationModifier;
+#endif
extern StructRNA RNA_SimulationNode;
extern StructRNA RNA_SimulationNodeTree;
extern StructRNA RNA_SkinModifier;
@@ -678,6 +682,7 @@ extern StructRNA RNA_TrackToConstraint;
extern StructRNA RNA_TransformConstraint;
extern StructRNA RNA_TransformOrientationSlot;
extern StructRNA RNA_TransformSequence;
+extern StructRNA RNA_TriangulateModifier;
extern StructRNA RNA_UILayout;
extern StructRNA RNA_UIList;
extern StructRNA RNA_UIPieMenu;
diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c
index 8a82b37a1a8..6b6977287bc 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -614,126 +614,10 @@ static void rna_UVProject_projectors_begin(CollectionPropertyIterator *iter, Poi
static StructRNA *rna_Modifier_refine(struct PointerRNA *ptr)
{
ModifierData *md = (ModifierData *)ptr->data;
-
- switch ((ModifierType)md->type) {
- case eModifierType_Subsurf:
- return &RNA_SubsurfModifier;
- case eModifierType_Lattice:
- return &RNA_LatticeModifier;
- case eModifierType_Curve:
- return &RNA_CurveModifier;
- case eModifierType_Build:
- return &RNA_BuildModifier;
- case eModifierType_Mirror:
- return &RNA_MirrorModifier;
- case eModifierType_Decimate:
- return &RNA_DecimateModifier;
- case eModifierType_Wave:
- return &RNA_WaveModifier;
- case eModifierType_Armature:
- return &RNA_ArmatureModifier;
- case eModifierType_Hook:
- return &RNA_HookModifier;
- case eModifierType_Softbody:
- return &RNA_SoftBodyModifier;
- case eModifierType_Boolean:
- return &RNA_BooleanModifier;
- case eModifierType_Array:
- return &RNA_ArrayModifier;
- case eModifierType_EdgeSplit:
- return &RNA_EdgeSplitModifier;
- case eModifierType_Displace:
- return &RNA_DisplaceModifier;
- case eModifierType_UVProject:
- return &RNA_UVProjectModifier;
- case eModifierType_Smooth:
- return &RNA_SmoothModifier;
- case eModifierType_Cast:
- return &RNA_CastModifier;
- case eModifierType_MeshDeform:
- return &RNA_MeshDeformModifier;
- case eModifierType_ParticleSystem:
- return &RNA_ParticleSystemModifier;
- case eModifierType_ParticleInstance:
- return &RNA_ParticleInstanceModifier;
- case eModifierType_Explode:
- return &RNA_ExplodeModifier;
- case eModifierType_Cloth:
- return &RNA_ClothModifier;
- case eModifierType_Collision:
- return &RNA_CollisionModifier;
- case eModifierType_Bevel:
- return &RNA_BevelModifier;
- case eModifierType_Shrinkwrap:
- return &RNA_ShrinkwrapModifier;
- case eModifierType_Mask:
- return &RNA_MaskModifier;
- case eModifierType_SimpleDeform:
- return &RNA_SimpleDeformModifier;
- case eModifierType_Multires:
- return &RNA_MultiresModifier;
- case eModifierType_Surface:
- return &RNA_SurfaceModifier;
- case eModifierType_Fluid:
- return &RNA_FluidModifier;
- case eModifierType_Solidify:
- return &RNA_SolidifyModifier;
- case eModifierType_Screw:
- return &RNA_ScrewModifier;
- case eModifierType_Ocean:
- return &RNA_OceanModifier;
- case eModifierType_Warp:
- return &RNA_WarpModifier;
- case eModifierType_WeightVGEdit:
- return &RNA_VertexWeightEditModifier;
- case eModifierType_WeightVGMix:
- return &RNA_VertexWeightMixModifier;
- case eModifierType_WeightVGProximity:
- return &RNA_VertexWeightProximityModifier;
- case eModifierType_DynamicPaint:
- return &RNA_DynamicPaintModifier;
- case eModifierType_Remesh:
- return &RNA_RemeshModifier;
- case eModifierType_Skin:
- return &RNA_SkinModifier;
- case eModifierType_LaplacianSmooth:
- return &RNA_LaplacianSmoothModifier;
- case eModifierType_Triangulate:
- return &RNA_TriangulateModifier;
- case eModifierType_UVWarp:
- return &RNA_UVWarpModifier;
- case eModifierType_MeshCache:
- return &RNA_MeshCacheModifier;
- case eModifierType_LaplacianDeform:
- return &RNA_LaplacianDeformModifier;
- case eModifierType_Weld:
- return &RNA_WeldModifier;
- case eModifierType_Wireframe:
- return &RNA_WireframeModifier;
- case eModifierType_DataTransfer:
- return &RNA_DataTransferModifier;
- case eModifierType_NormalEdit:
- return &RNA_NormalEditModifier;
- case eModifierType_CorrectiveSmooth:
- return &RNA_CorrectiveSmoothModifier;
- case eModifierType_MeshSequenceCache:
- return &RNA_MeshSequenceCacheModifier;
- case eModifierType_SurfaceDeform:
- return &RNA_SurfaceDeformModifier;
- case eModifierType_WeightedNormal:
- return &RNA_WeightedNormalModifier;
- case eModifierType_Simulation:
-# ifdef WITH_PARTICLE_NODES
- return &RNA_SimulationModifier;
-# endif
- /* Default */
- case eModifierType_Fluidsim: /* deprecated */
- case eModifierType_None:
- case eModifierType_ShapeKey:
- case NUM_MODIFIER_TYPES:
- return &RNA_Modifier;
+ const ModifierTypeInfo *modifier_type = BKE_modifier_get_info(md->type);
+ if (modifier_type != NULL) {
+ return modifier_type->srna;
}
-
return &RNA_Modifier;
}
diff --git a/source/blender/modifiers/CMakeLists.txt b/source/blender/modifiers/CMakeLists.txt
index 7f65e72bf3e..8425d9bf569 100644
--- a/source/blender/modifiers/CMakeLists.txt
+++ b/source/blender/modifiers/CMakeLists.txt
@@ -177,6 +177,11 @@ if(WITH_GMP)
add_definitions(-DWITH_GMP)
endif()
+if(WITH_EXPERIMENTAL_FEATURES)
+ add_definitions(-DWITH_PARTICLE_NODES)
+ add_definitions(-DWITH_HAIR_NODES)
+endif()
+
# So we can have special tricks in modifier system.
blender_add_lib(bf_modifiers "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
diff --git a/source/blender/modifiers/intern/MOD_armature.c b/source/blender/modifiers/intern/MOD_armature.c
index 3f53a4c9552..f4b2df617af 100644
--- a/source/blender/modifiers/intern/MOD_armature.c
+++ b/source/blender/modifiers/intern/MOD_armature.c
@@ -278,6 +278,7 @@ ModifierTypeInfo modifierType_Armature = {
/* name */ "Armature",
/* structName */ "ArmatureModifierData",
/* structSize */ sizeof(ArmatureModifierData),
+ /* srna */ &RNA_ArmatureModifier,
/* type */ eModifierTypeType_OnlyDeform,
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsVertexCosOnly |
eModifierTypeFlag_SupportsEditmode,
diff --git a/source/blender/modifiers/intern/MOD_array.c b/source/blender/modifiers/intern/MOD_array.c
index ae4bc3ca4c6..70e557dd577 100644
--- a/source/blender/modifiers/intern/MOD_array.c
+++ b/source/blender/modifiers/intern/MOD_array.c
@@ -1010,6 +1010,7 @@ ModifierTypeInfo modifierType_Array = {
/* name */ "Array",
/* structName */ "ArrayModifierData",
/* structSize */ sizeof(ArrayModifierData),
+ /* srna */ &RNA_ArrayModifier,
/* type */ eModifierTypeType_Constructive,
/* flags */ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_SupportsMapping |
eModifierTypeFlag_SupportsEditmode | eModifierTypeFlag_EnableInEditmode |
diff --git a/source/blender/modifiers/intern/MOD_bevel.c b/source/blender/modifiers/intern/MOD_bevel.c
index 8ab6eccb576..407ba179ef8 100644
--- a/source/blender/modifiers/intern/MOD_bevel.c
+++ b/source/blender/modifiers/intern/MOD_bevel.c
@@ -446,6 +446,7 @@ ModifierTypeInfo modifierType_Bevel = {
/* name */ "Bevel",
/* structName */ "BevelModifierData",
/* structSize */ sizeof(BevelModifierData),
+ /* srna */ &RNA_BevelModifier,
/* type */ eModifierTypeType_Constructive,
/* flags */ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_SupportsEditmode |
eModifierTypeFlag_EnableInEditmode | eModifierTypeFlag_AcceptsCVs,
diff --git a/source/blender/modifiers/intern/MOD_boolean.c b/source/blender/modifiers/intern/MOD_boolean.c
index 59e2cf12e23..4005b56880f 100644
--- a/source/blender/modifiers/intern/MOD_boolean.c
+++ b/source/blender/modifiers/intern/MOD_boolean.c
@@ -751,6 +751,7 @@ ModifierTypeInfo modifierType_Boolean = {
/* name */ "Boolean",
/* structName */ "BooleanModifierData",
/* structSize */ sizeof(BooleanModifierData),
+ /* srna */ &RNA_BooleanModifier,
/* type */ eModifierTypeType_Nonconstructive,
/* flags */ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_SupportsEditmode,
/* icon */ ICON_MOD_BOOLEAN,
diff --git a/source/blender/modifiers/intern/MOD_build.c b/source/blender/modifiers/intern/MOD_build.c
index 0c2cae895e6..ac6c28e24c9 100644
--- a/source/blender/modifiers/intern/MOD_build.c
+++ b/source/blender/modifiers/intern/MOD_build.c
@@ -331,6 +331,7 @@ ModifierTypeInfo modifierType_Build = {
/* name */ "Build",
/* structName */ "BuildModifierData",
/* structSize */ sizeof(BuildModifierData),
+ /* srna */ &RNA_BuildMo
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list