In FxGen 0.6, operator's properties change (properties added or removed) are managed manually by developer in order to keep compatibility with older files versions.
A NMapVarsBlocDesc structs array are added to describe operator's properties change from previous version.
Example when a new property is added (see 'Type'):
static NMapVarsBlocDesc mapblocdescBlurOp[] =
{
MAP(1, eubyte, "0", "" ) //V1 => 0-Width
MAP(1, eubyte, "1", "" ) //V1 => 1-Height
MAP(1, eubyte, "2", "" ) //V1 => 2-Amplify
MAP(2, eubyte, "0", "*0.0039215" ) //V2 => 0-Width
MAP(2, eubyte, "1", "*0.0039215" ) //V2 => 1-Height
MAP(2, eubyte, "2", "" ) //V2 => 2-Amplify
MAP(2, eubyte, "3", "" ) //V2 => 3-Type
};
static NVarsBlocDesc blocdescBlurOp[] =
{
VAR(efloat, true, "Width", "0.01", "NFloatProp") //0
VAR(efloat, true, "Height", "0.01", "NFloatProp") //1
VAR(eubyte, true, "Amplify", "16", "NUbyteProp") //2
VAR(eubyte, false, "Type", "0,[Box,Gaussian]", "NUbyteComboProp") //3
};
---
Now in FxGen 0.7 all this operations are transparant for developer and are managed by binary serializer.
In each fxgen project file, all class's properties declarations are saved (name and type).
So I can detect now what properties are added or removed with current version while reading an old file format.