Modifiers: New callbacks for reading and writing .blend files

This is part of a greater blenloader decentralization effort (T76372).
For modifiers the goal is that fewer files have to be modified when
a new modifier is added.

This patch just adds the `blendWrite` and `blendRead` callbacks to
`ModifierTypeInfo` but does not change any other code yet. In the next
steps, modifier specific code will be moved from `writefile.c` and
`readfile.c` into their corresponding `MOD_*` files.
This commit is contained in:
Jacques Lucke 2020-06-15 17:37:07 +02:00
parent eaff606f2d
commit b6981d9e48
57 changed files with 130 additions and 0 deletions

View File

@ -41,6 +41,8 @@ struct ModifierData;
struct Object;
struct Scene;
struct bArmature;
struct BlendWriter;
struct BlendDataReader;
typedef enum {
/* Should not be used, only for None modifier type */
@ -355,6 +357,21 @@ typedef struct ModifierTypeInfo {
/* Register the panel types for the modifier's UI. */
void (*panelRegister)(struct ARegionType *region_type);
/* Is called when the modifier is written to a file. The modifier data struct itself is written
* already.
*
* This method should write any additional arrays and referenced structs that should be
* stored in the file.
*/
void (*blendWrite)(struct BlendWriter *writer, const struct ModifierData *md);
/* Is called when the modifier is read from a file.
*
* It can be used to update pointers to arrays and other structs. Furthermore, fields that have
* not been written (e.g. runtime data) can be reset.
*/
void (*blendRead)(struct BlendDataReader *reader, struct ModifierData *md);
} ModifierTypeInfo;
/* Used to find a modifier's panel type. */

View File

@ -292,4 +292,6 @@ ModifierTypeInfo modifierType_Armature = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -1038,4 +1038,6 @@ ModifierTypeInfo modifierType_Array = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -446,4 +446,6 @@ ModifierTypeInfo modifierType_Bevel = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* uiPanel */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -413,4 +413,6 @@ ModifierTypeInfo modifierType_Boolean = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -360,4 +360,6 @@ ModifierTypeInfo modifierType_Build = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -607,4 +607,6 @@ ModifierTypeInfo modifierType_Cast = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -312,4 +312,6 @@ ModifierTypeInfo modifierType_Cloth = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -299,4 +299,6 @@ ModifierTypeInfo modifierType_Collision = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -847,4 +847,6 @@ ModifierTypeInfo modifierType_CorrectiveSmooth = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -241,4 +241,6 @@ ModifierTypeInfo modifierType_Curve = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -506,4 +506,6 @@ ModifierTypeInfo modifierType_DataTransfer = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -307,4 +307,6 @@ ModifierTypeInfo modifierType_Decimate = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -528,4 +528,6 @@ ModifierTypeInfo modifierType_Displace = {
/* foreachTexLink */ foreachTexLink,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -232,4 +232,6 @@ ModifierTypeInfo modifierType_DynamicPaint = {
/* foreachTexLink */ foreachTexLink,
/* freeRuntimeData */ freeRuntimeData,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -196,4 +196,6 @@ ModifierTypeInfo modifierType_EdgeSplit = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -1257,4 +1257,6 @@ ModifierTypeInfo modifierType_Explode = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -252,4 +252,6 @@ ModifierTypeInfo modifierType_Fluid = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -498,4 +498,6 @@ ModifierTypeInfo modifierType_Hook = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -884,4 +884,6 @@ ModifierTypeInfo modifierType_LaplacianDeform = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -649,4 +649,6 @@ ModifierTypeInfo modifierType_LaplacianSmooth = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -197,4 +197,6 @@ ModifierTypeInfo modifierType_Lattice = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -471,4 +471,6 @@ ModifierTypeInfo modifierType_Mask = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -410,4 +410,6 @@ ModifierTypeInfo modifierType_MeshCache = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -638,4 +638,6 @@ ModifierTypeInfo modifierType_MeshDeform = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -259,4 +259,6 @@ ModifierTypeInfo modifierType_MeshSequenceCache = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -245,4 +245,6 @@ ModifierTypeInfo modifierType_Mirror = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -449,4 +449,6 @@ ModifierTypeInfo modifierType_Multires = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ freeRuntimeData,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -67,4 +67,7 @@ ModifierTypeInfo modifierType_None = {
/* foreachIDLink */ NULL,
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ NULL,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -809,4 +809,6 @@ ModifierTypeInfo modifierType_NormalEdit = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -705,4 +705,6 @@ ModifierTypeInfo modifierType_Ocean = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -711,4 +711,6 @@ ModifierTypeInfo modifierType_ParticleInstance = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -329,4 +329,6 @@ ModifierTypeInfo modifierType_ParticleSystem = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -316,4 +316,6 @@ ModifierTypeInfo modifierType_Remesh = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -1277,4 +1277,6 @@ ModifierTypeInfo modifierType_Screw = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -148,4 +148,6 @@ ModifierTypeInfo modifierType_ShapeKey = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ NULL,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -306,4 +306,6 @@ ModifierTypeInfo modifierType_Shrinkwrap = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -571,4 +571,6 @@ ModifierTypeInfo modifierType_SimpleDeform = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -176,4 +176,6 @@ ModifierTypeInfo modifierType_Simulation = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -2035,4 +2035,6 @@ ModifierTypeInfo modifierType_Skin = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -300,4 +300,6 @@ ModifierTypeInfo modifierType_Smooth = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -133,4 +133,6 @@ ModifierTypeInfo modifierType_Softbody = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -290,4 +290,6 @@ ModifierTypeInfo modifierType_Solidify = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -457,4 +457,6 @@ ModifierTypeInfo modifierType_Subsurf = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ freeRuntimeData,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -241,4 +241,6 @@ ModifierTypeInfo modifierType_Surface = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -1468,4 +1468,6 @@ ModifierTypeInfo modifierType_SurfaceDeform = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -181,4 +181,6 @@ ModifierTypeInfo modifierType_Triangulate = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -392,4 +392,6 @@ ModifierTypeInfo modifierType_UVProject = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -351,4 +351,6 @@ ModifierTypeInfo modifierType_UVWarp = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -540,4 +540,6 @@ ModifierTypeInfo modifierType_Warp = {
/* foreachTexLink */ foreachTexLink,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -524,4 +524,6 @@ ModifierTypeInfo modifierType_Wave = {
/* foreachTexLink */ foreachTexLink,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -770,4 +770,6 @@ ModifierTypeInfo modifierType_WeightedNormal = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -430,4 +430,6 @@ ModifierTypeInfo modifierType_WeightVGEdit = {
/* foreachTexLink */ foreachTexLink,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -539,4 +539,6 @@ ModifierTypeInfo modifierType_WeightVGMix = {
/* foreachTexLink */ foreachTexLink,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -741,4 +741,6 @@ ModifierTypeInfo modifierType_WeightVGProximity = {
/* foreachTexLink */ foreachTexLink,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};

View File

@ -2004,6 +2004,8 @@ ModifierTypeInfo modifierType_Weld = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};
/** \} */

View File

@ -208,4 +208,6 @@ ModifierTypeInfo modifierType_Wireframe = {
/* foreachTexLink */ NULL,
/* freeRuntimeData */ NULL,
/* panelRegister */ panelRegister,
/* blendWrite */ NULL,
/* blendRead */ NULL,
};