============================
* nif format:
- a large number of functions have moved from the optimizer spell to
to the main interface, so they can be easily used in other scripts
without having to import this spell module
(getInterchangeableTriShape, getInterchangeableTriStrips,
isInterchangeable)
- new convenience functions in NiObjectNET, NiAVObject, and NiNode
(setExtraDatas, setProperties, setEffects, setChildren, etc.)
- updates for Fallout 3
* niftoaster
- new fix_addtangentspace spell to add missing tangent space blocks
- new fix_deltangentspace spell to remove tangent space blocks
- new fix_texturepath spell to change / into \ and to fix corrupted
newline characters (which sometimes resulted from older versions of
nifskope) in NiSourceTexture file paths
- new fix_clampmaterialalpha spell
- new fix_detachhavoktristripsdata spell
- the ffvt3r skin partition spell is now fix_ffvt3rskinpartition
- new opt_cleanreflists spell
- new opt_mergeduplicates spell
- new opt_geometry spell
- the optimize spell is now simply implemented as a combination of other
spells
* new internal implementation of bsdiff algorithm
* removed cry dae filter (an improved version of this filter is now
bundled with ColladaCGF)
* reorganization of file format description code
- all generic format description specific code has been moved to the
PyFFI.ObjectModels.FileFormat module
- all xml/xsd description specific code has been moved to the
PyFFI.ObjectModels.XML/XSD.FileFormat modules
- new NifFormat.Data class which now implements all the NIF file read and
write functions
* completely revamped spell system, which makes it much easier to customize
spells, and also enables more efficient implementations (thanks to tazpn for
some useful suggestions, see issue 2122196)
- toaster can call multiple spells at once
- toaster takes spell classes instead of modules
- for backwards compatibility, there is a class factory which turns any old
spell module into a new spell class (the Toaster class will automatically
convert any modules that it finds in its list of spells, so you do not need
to be worried about call the factory explicitly)
- early inspection of the header is possible, to avoid having to read all of
the file if no blocks of interest are present
- possibility to prevent the spell to cast itself on particular branches
(mostly useful to speed up the spell casting process)
- spells have callbacks for global initialization and finalization of
data within the toaster
- possibility to write output to a log file instead of to sys.stdout
- better messaging system (auto indentation, list nif tree as spell runs)
- support for spell hierarchies and spell grouping, in parallel or in series
or any combination of these
* replaced ad hoc class customization with partial classes (still wip
converting all the classes)
* xml object model expression parser
- implemented not operator
- expressions can combine multiple operators (only use this if the result
is independent of the order in which these operators are applied)
- new < and > operators
- support for vercond attribute for Fallout 3
* started on a new object model based on an ANTLR parser of a grammar aimed at
file format descriptions; this parser will eventually yield a more streamlined,
more optimized, and more customizable version of the current xml object model
(this is not yet bundled with the release, initial code is on svn)