When should I have my Interface and/or Type Definition preprocessed (and built)? :

My type/interface/enumeration requires…. Then you should
Nothing. My type/interface/enumeration SQF file does not utilize any variables or commands dependant on the mission or any addon to evaluate anything such as key names, attributes, etc.. Use XPS_Type_Definitions class and set:
preCache = 1;
recompile = 0;
isFinal = 1;
Recompiling during development Set FilePatching enabled and/or use -debug parameter
-OR-
Use XPS_Type_Definitions class and set:
recompile = 1;
isFinal = 0;
I do not want my private keys (_underscore keys) obfuscated during development Use -debug parameter
Use of Attributes or key names/values that are dependant on an addon being loaded and processed (post preStart phase but before my addons preInit phase).

Example: property dependant on a global set by some addon during preStart: [”Enabled”, SomeAddonLoaded] | Use XPS_Type_Definitions class and set: preCache = 0; recompile = 0; isFinal = 1; | | Use of Attributes or key names/values that are dependant on an addon being loaded and processed (during or post my addons preInit phase OR at a specified time during the mission).

Example: property dependant on a global set by some addon during preInit: [”Enabled”, SomeAddonLoaded] | DO NOT Use XPS_Type_Definitions class and instead call function with script or array when desired: myDef = [call compilescript [”type.sqf”,false]] call XPS_fnc_buildTypeDefinition myIfc = [call compileScript [”interface.sqf”,false]] call XPS_fnc_preprocessInterface | | Keys/Values to be modified during mission. | Use XPS_Type_Definitions class and set: isFinal = 0; |