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:
parent
eaff606f2d
commit
b6981d9e48
|
@ -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. */
|
||||
|
|
|
@ -292,4 +292,6 @@ ModifierTypeInfo modifierType_Armature = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -1038,4 +1038,6 @@ ModifierTypeInfo modifierType_Array = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -446,4 +446,6 @@ ModifierTypeInfo modifierType_Bevel = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* uiPanel */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -413,4 +413,6 @@ ModifierTypeInfo modifierType_Boolean = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -360,4 +360,6 @@ ModifierTypeInfo modifierType_Build = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -607,4 +607,6 @@ ModifierTypeInfo modifierType_Cast = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -312,4 +312,6 @@ ModifierTypeInfo modifierType_Cloth = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -299,4 +299,6 @@ ModifierTypeInfo modifierType_Collision = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -847,4 +847,6 @@ ModifierTypeInfo modifierType_CorrectiveSmooth = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -241,4 +241,6 @@ ModifierTypeInfo modifierType_Curve = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -506,4 +506,6 @@ ModifierTypeInfo modifierType_DataTransfer = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -307,4 +307,6 @@ ModifierTypeInfo modifierType_Decimate = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -528,4 +528,6 @@ ModifierTypeInfo modifierType_Displace = {
|
|||
/* foreachTexLink */ foreachTexLink,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -232,4 +232,6 @@ ModifierTypeInfo modifierType_DynamicPaint = {
|
|||
/* foreachTexLink */ foreachTexLink,
|
||||
/* freeRuntimeData */ freeRuntimeData,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -196,4 +196,6 @@ ModifierTypeInfo modifierType_EdgeSplit = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -1257,4 +1257,6 @@ ModifierTypeInfo modifierType_Explode = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -252,4 +252,6 @@ ModifierTypeInfo modifierType_Fluid = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -498,4 +498,6 @@ ModifierTypeInfo modifierType_Hook = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -884,4 +884,6 @@ ModifierTypeInfo modifierType_LaplacianDeform = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -649,4 +649,6 @@ ModifierTypeInfo modifierType_LaplacianSmooth = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -197,4 +197,6 @@ ModifierTypeInfo modifierType_Lattice = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -471,4 +471,6 @@ ModifierTypeInfo modifierType_Mask = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -410,4 +410,6 @@ ModifierTypeInfo modifierType_MeshCache = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -638,4 +638,6 @@ ModifierTypeInfo modifierType_MeshDeform = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -259,4 +259,6 @@ ModifierTypeInfo modifierType_MeshSequenceCache = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -245,4 +245,6 @@ ModifierTypeInfo modifierType_Mirror = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -449,4 +449,6 @@ ModifierTypeInfo modifierType_Multires = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ freeRuntimeData,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -67,4 +67,7 @@ ModifierTypeInfo modifierType_None = {
|
|||
/* foreachIDLink */ NULL,
|
||||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ NULL,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -809,4 +809,6 @@ ModifierTypeInfo modifierType_NormalEdit = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -705,4 +705,6 @@ ModifierTypeInfo modifierType_Ocean = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -711,4 +711,6 @@ ModifierTypeInfo modifierType_ParticleInstance = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -329,4 +329,6 @@ ModifierTypeInfo modifierType_ParticleSystem = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -316,4 +316,6 @@ ModifierTypeInfo modifierType_Remesh = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -1277,4 +1277,6 @@ ModifierTypeInfo modifierType_Screw = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -148,4 +148,6 @@ ModifierTypeInfo modifierType_ShapeKey = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ NULL,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -306,4 +306,6 @@ ModifierTypeInfo modifierType_Shrinkwrap = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -571,4 +571,6 @@ ModifierTypeInfo modifierType_SimpleDeform = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -176,4 +176,6 @@ ModifierTypeInfo modifierType_Simulation = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -2035,4 +2035,6 @@ ModifierTypeInfo modifierType_Skin = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -300,4 +300,6 @@ ModifierTypeInfo modifierType_Smooth = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -133,4 +133,6 @@ ModifierTypeInfo modifierType_Softbody = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -290,4 +290,6 @@ ModifierTypeInfo modifierType_Solidify = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -457,4 +457,6 @@ ModifierTypeInfo modifierType_Subsurf = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ freeRuntimeData,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -241,4 +241,6 @@ ModifierTypeInfo modifierType_Surface = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -1468,4 +1468,6 @@ ModifierTypeInfo modifierType_SurfaceDeform = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -181,4 +181,6 @@ ModifierTypeInfo modifierType_Triangulate = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -392,4 +392,6 @@ ModifierTypeInfo modifierType_UVProject = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -351,4 +351,6 @@ ModifierTypeInfo modifierType_UVWarp = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -540,4 +540,6 @@ ModifierTypeInfo modifierType_Warp = {
|
|||
/* foreachTexLink */ foreachTexLink,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -524,4 +524,6 @@ ModifierTypeInfo modifierType_Wave = {
|
|||
/* foreachTexLink */ foreachTexLink,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -770,4 +770,6 @@ ModifierTypeInfo modifierType_WeightedNormal = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -430,4 +430,6 @@ ModifierTypeInfo modifierType_WeightVGEdit = {
|
|||
/* foreachTexLink */ foreachTexLink,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -539,4 +539,6 @@ ModifierTypeInfo modifierType_WeightVGMix = {
|
|||
/* foreachTexLink */ foreachTexLink,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -741,4 +741,6 @@ ModifierTypeInfo modifierType_WeightVGProximity = {
|
|||
/* foreachTexLink */ foreachTexLink,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
|
@ -2004,6 +2004,8 @@ ModifierTypeInfo modifierType_Weld = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
||||
/** \} */
|
||||
|
|
|
@ -208,4 +208,6 @@ ModifierTypeInfo modifierType_Wireframe = {
|
|||
/* foreachTexLink */ NULL,
|
||||
/* freeRuntimeData */ NULL,
|
||||
/* panelRegister */ panelRegister,
|
||||
/* blendWrite */ NULL,
|
||||
/* blendRead */ NULL,
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue