From 41e1e866bd7a91caf4b66fd368de2fd44b1a734a Mon Sep 17 00:00:00 2001 From: Amorilia <amorilia@users.sourceforge.net> Date: Sat, 17 Sep 2011 10:43:53 +0100 Subject: [PATCH] Final changlog whitespace fix: it is now valid restructured text. --- change_log.txt | 1232 ++++++++++++++++++++++++------------------------ 1 file changed, 616 insertions(+), 616 deletions(-) diff --git a/change_log.txt b/change_log.txt index 66d2d647..08c840d8 100644 --- a/change_log.txt +++ b/change_log.txt @@ -1,1030 +1,1030 @@ Version 0.7.3 ============= - * AsQuaternion is now a const member function (contributed by Dragongeo2). +* AsQuaternion is now a const member function (contributed by Dragongeo2). - * Some math operators for TexCoord and Color4 (contributed by Dragongeo2). +* Some math operators for TexCoord and Color4 (contributed by Dragongeo2). - * Make base_type field public (requested by DragoonWraith). +* Make base_type field public (requested by DragoonWraith). - * Store block number in NiObject when reading a nif file (requested by DragoonWraith). +* Store block number in NiObject when reading a nif file (requested by DragoonWraith). - * Added cmake build script. +* Added cmake build script. - * GetTexture() now returns a TexDesc reference (requested by DragoonWraith). +* GetTexture() now returns a TexDesc reference (requested by DragoonWraith). - * Type::Create() method (requested by DragoonWraith). +* Type::Create() method (requested by DragoonWraith). Version 0.7.2 ============= - * Added some internal template functions for extracting flags and fields from - bitfields to NIF_IO.h. +* Added some internal template functions for extracting flags and fields from + bitfields to NIF_IO.h. - * Finished new MatTexCollection helper class which makes it possible to - manipulate material properties and texture objects with the same classes - regardless of the intended NIF version. +* Finished new MatTexCollection helper class which makes it possible to + manipulate material properties and texture objects with the same classes + regardless of the intended NIF version. - * Implemented write for files of version < 3.3.0.13, so now old files can be - both read and written. +* Implemented write for files of version < 3.3.0.13, so now old files can be + both read and written. - * Made some minor formatting improvements through alteration in the XML Python - script. +* Made some minor formatting improvements through alteration in the XML Python + script. - * Pre-main initialization of objects was causing problems with both static and - DLL linking of the library. I fixed the DLL issues, but statically linking - the library caused none of the objects to register themselves, so I went - back to using a single function that registers all objects the first time - ReadNifTree is called. This fixes the issues with crashing and missing - objects. +* Pre-main initialization of objects was causing problems with both static and + DLL linking of the library. I fixed the DLL issues, but statically linking + the library caused none of the objects to register themselves, so I went + back to using a single function that registers all objects the first time + ReadNifTree is called. This fixes the issues with crashing and missing + objects. - * Moved Object Registration/Creation functionality into new ObjectRegistry - class. This allows users of the library to register new NIF object or - overwrite exiting ones without recompiling the library. +* Moved Object Registration/Creation functionality into new ObjectRegistry + class. This allows users of the library to register new NIF object or + overwrite exiting ones without recompiling the library. - * Restored some missing function implementations. +* Restored some missing function implementations. Version 0.7 =========== - - * Removed predefines from Doxyfile since they are no longer needed with the - new Python generation method. - * Disabled Whole Program Optimization in project settings. This makes a full - recompile take longer, but makes compiling after small changes to a few - files much much faster. +* Removed predefines from Doxyfile since they are no longer needed with the + new Python generation method. - * Niflib is now using a new XML update method. This means: +* Disabled Whole Program Optimization in project settings. This makes a full + recompile take longer, but makes compiling after small changes to a few + files much much faster. - - There are no longer any defines, things like inheritance class name, NIF - attribute variables, and default constructor code are all visible without - looking at another file. +* Niflib is now using a new XML update method. This means: - - All non-custom parts of the Object files are now totally identical and in - the same order, so it will be easier to compare them. + - There are no longer any defines, things like inheritance class name, NIF + attribute variables, and default constructor code are all visible without + looking at another file. - - NiObjects are now completely self-contained. To remove them from Niflib, - you have only to exclude their CPP file from the build. To add new ones, - you only have to include their new CPP file. + - All non-custom parts of the Object files are now totally identical and in + the same order, so it will be easier to compare them. - - Making a change to a NiObject implementation file only causes that one - file to be re-compiled, which is generally much quicker than before since - the large obj_define and obj_impl files do not have to be parsed or - compiled. + - NiObjects are now completely self-contained. To remove them from Niflib, + you have only to exclude their CPP file from the build. To add new ones, + you only have to include their new CPP file. - - There are no longer any "Internal" versions of the Read, Write, asString, - FixLinks, or GetRefs functions. Now there is just one function for each - of these with pre and post custom code areas (except for GetRefs which I - didn't think needed it.) + - Making a change to a NiObject implementation file only causes that one + file to be re-compiled, which is generally much quicker than before since + the large obj_define and obj_impl files do not have to be parsed or + compiled. - - Updates to the hierarchy in the XML should now be almost completely - automatic. All that should be necessary to make an update is to add any - new NiObject CPP files to the build. + - There are no longer any "Internal" versions of the Read, Write, asString, + FixLinks, or GetRefs functions. Now there is just one function for each + of these with pre and post custom code areas (except for GetRefs which I + didn't think needed it.) - - Changes to the generated parts of the NiObject files can now be made at - any time, and immediately applied to all NiObjects without editing each - existing one. + - Updates to the hierarchy in the XML should now be almost completely + automatic. All that should be necessary to make an update is to add any + new NiObject CPP files to the build. - * Moved FixLink template file from obj_impl.cpp to its own file. + - Changes to the generated parts of the NiObject files can now be made at + any time, and immediately applied to all NiObjects without editing each + existing one. - * Moving array template to nif_basic_types so that NIF_IO won't need to be - exposed. +* Moved FixLink template file from obj_impl.cpp to its own file. - * Removed erroneous bhkMeshShape object. +* Moving array template to nif_basic_types so that NIF_IO won't need to be + exposed. - * Added support in the version parsing functions for versions such as "3.03" - which were being parsed as "3.3.0.0" before. These will now be parsed as - "3.0.3.0." +* Removed erroneous bhkMeshShape object. - * All Bridge Commander demo NIF files other than those that contain voxel 3D - textures can now be read. +* Added support in the version parsing functions for versions such as "3.03" + which were being parsed as "3.3.0.0" before. These will now be parsed as + "3.0.3.0." - * All DAoC demo NIF files except those of version 2.3 and those that do not - appear to store NIF data can now be read. +* All Bridge Commander demo NIF files other than those that contain voxel 3D + textures can now be read. - * Updated user's guide. +* All DAoC demo NIF files except those of version 2.3 and those that do not + appear to store NIF data can now be read. - * Added functions to NiImage and NiTextureProperty to allow texture name to be - manipulated in <= 3.1 files. +* Updated user's guide. - * Updated ComplexShape to take the above objects into account when deciding - whether to include UV coordinates. +* Added functions to NiImage and NiTextureProperty to allow texture name to be + manipulated in <= 3.1 files. - * Fixed one more bug that allows 3.3.0.13 files to work again. +* Updated ComplexShape to take the above objects into account when deciding + whether to include UV coordinates. - * Added 10.0.1.2 to the list of "supported" versions. +* Fixed one more bug that allows 3.3.0.13 files to work again. - * Added version 3.1 to list of "supported" versions. +* Added 10.0.1.2 to the list of "supported" versions. - * Fixed several bugs that were preventing support for old 3.1 and below files - from working. Many of these can now be loaded. +* Added version 3.1 to list of "supported" versions. - * Updated Niflib to the latest XML which adds support for: bhkMeshShape, - NiMultiTextureProperty, NiRawImageData, NiRollController, NiSequence, - NiBinaryVoxelExtraData, NiBinaryVoxelData, NiPSysCollider, NiBone, - NiPSysSphericalCollider, BSWindModifier, NiTriShapeSkinController objects, - and possibly more. This also significantly improves the class hierarchy. +* Fixed several bugs that were preventing support for old 3.1 and below files + from working. Many of these can now be loaded. - * Objects now have a Create methods and register themselves in the global - object map with pre-main initialization, making obj_factories.cpp obsolete. +* Updated Niflib to the latest XML which adds support for: bhkMeshShape, + NiMultiTextureProperty, NiRawImageData, NiRollController, NiSequence, + NiBinaryVoxelExtraData, NiBinaryVoxelData, NiPSysCollider, NiBone, + NiPSysSphericalCollider, BSWindModifier, NiTriShapeSkinController objects, + and possibly more. This also significantly improves the class hierarchy. - * Re-exposed TYPE constants and marked them NIFLIB_API, making the TypeConst - function obsolete. You now must use NiObject::TYPE instead of - NiObject::TypeConst() again. +* Objects now have a Create methods and register themselves in the global + object map with pre-main initialization, making obj_factories.cpp obsolete. - * Re-exposed IDENTITY constants and marked then NIFLIB_API. Now you must use - MatrixXX::IDENTITY instead of MatrixXX::Identity() again. +* Re-exposed TYPE constants and marked them NIFLIB_API, making the TypeConst + function obsolete. You now must use NiObject::TYPE instead of + NiObject::TypeConst() again. - * Changed the default linkage to DLL. You now have to define - NIFLIB_STATIC_LINK if you want to use static linking instead of having to - define USE_NIFLIB_DLL if you want to use the DLL. +* Re-exposed IDENTITY constants and marked then NIFLIB_API. Now you must use + MatrixXX::IDENTITY instead of MatrixXX::Identity() again. - * Added a new Debug - DLL configuration. +* Changed the default linkage to DLL. You now have to define + NIFLIB_STATIC_LINK if you want to use static linking instead of having to + define USE_NIFLIB_DLL if you want to use the DLL. - * Static configurations now create either niflib_static.lib or - niflib_static_debug.lib, while DLL configurations create niflib_dll.lib and - niflib_dll_debug.lib along with niflib.dll and niflib_debug.dll. +* Added a new Debug - DLL configuration. - * Added ClearHardareSkinInfo function to NiTriBasedGeom so that - SetSkinPartition functions could be made NIFLIB_HIDDEN. +* Static configurations now create either niflib_static.lib or + niflib_static_debug.lib, while DLL configurations create niflib_dll.lib and + niflib_dll_debug.lib along with niflib.dll and niflib_debug.dll. - * Removed access to unknown data in NiPSysEmitterCtlrData. +* Added ClearHardareSkinInfo function to NiTriBasedGeom so that + SetSkinPartition functions could be made NIFLIB_HIDDEN. - * Some function and enum name changes in NiAlphaProperty and - NiStencilProperty to be more consistent with OpenGL and the rest of Niflib. +* Removed access to unknown data in NiPSysEmitterCtlrData. - * Removed access to unknown parameters in NiSourceTexture and merged file name - access functions. +* Some function and enum name changes in NiAlphaProperty and + NiStencilProperty to be more consistent with OpenGL and the rest of Niflib. - * Removed redundant Get/SetHidden functions from NiAVObject, use - Get/SetVisibility instead. +* Removed access to unknown parameters in NiSourceTexture and merged file name + access functions. - * Renamed Get/SetCollision to Get/SetCollisionMode in NiAVObject. +* Removed redundant Get/SetHidden functions from NiAVObject, use + Get/SetVisibility instead. - * Made sure all classes fell into 3 namespaces: Niflib, triangle_stripper, - and NvTriStrip. +* Renamed Get/SetCollision to Get/SetCollisionMode in NiAVObject. - * Removed some functions from NiObject that did nothing. +* Made sure all classes fell into 3 namespaces: Niflib, triangle_stripper, + and NvTriStrip. - * Moved structures contained within the ComplexShape class outside of it so - they're easier to reference. +* Removed some functions from NiObject that did nothing. - * Moved ListAncestors and FindCommonAncestor helper functions from inside of - NiGeometry to public interface. +* Moved structures contained within the ComplexShape class outside of it so + they're easier to reference. - * Added IsAnimated function to NiObjectNET. +* Moved ListAncestors and FindCommonAncestor helper functions from inside of + NiGeometry to public interface. - * Implemented experimental endian support which means that Niflib may be able - to work on PowrePC Macs and other big-endian CPUs, however support is not - complete. Theoretically it should be possible to read a big-endian file on - a little-endian system, but it is not possible to do the opposite, or to - create a little-endian file due to issues with the header needing to switch - endian types int he middle of the generated code and always read the bytes - that make up the NIF version in the same order. +* Added IsAnimated function to NiObjectNET. - * DLL files built with the MSVC project will now appear in the niflib/bin - folder instead of the common ../bin folder. This should make it easier to - find the files if only the niflib folder is checked out. +* Implemented experimental endian support which means that Niflib may be able + to work on PowrePC Macs and other big-endian CPUs, however support is not + complete. Theoretically it should be possible to read a big-endian file on + a little-endian system, but it is not possible to do the opposite, or to + create a little-endian file due to issues with the header needing to switch + endian types int he middle of the generated code and always read the bytes + that make up the NIF version in the same order. - * Added warning comments to generated files advising the user not to edit them - manually. +* DLL files built with the MSVC project will now appear in the niflib/bin + folder instead of the common ../bin folder. This should make it easier to + find the files if only the niflib folder is checked out. - * Changed NiNode AddChild function to keep NiTriBasedGeom-derived objects at - the top of the list. Fixes issue with Oblivion flattened skin file - hierarchies where the NiTriBasedGeom skin was appearing after the NiNode - bones that it used in the child list of their mutual parent. +* Added warning comments to generated files advising the user not to edit them + manually. - * Project file now properly uses "Multithreaded DLL" runtime library for - "Release - DLL" configuration. +* Changed NiNode AddChild function to keep NiTriBasedGeom-derived objects at + the top of the list. Fixes issue with Oblivion flattened skin file + hierarchies where the NiTriBasedGeom skin was appearing after the NiNode + bones that it used in the child list of their mutual parent. - * Removed old SWIG-related code as SWIG will no longer be suppoted. +* Project file now properly uses "Multithreaded DLL" runtime library for + "Release - DLL" configuration. - * Fixed GetIDString virtual function missmatch that was causing the name not - to show up when the function was called from a NiObjectRef. +* Removed old SWIG-related code as SWIG will no longer be suppoted. - * Removed precompiled header file stuff from project files that is no longer - used. +* Fixed GetIDString virtual function missmatch that was causing the name not + to show up when the function was called from a NiObjectRef. - * Fixed Niflib DLL compile. All public functions should now be marked with - either NIFLIB_API or NIFLIB_HIDDEN. May have missed a few here or there - but they should be noticed eventually. +* Removed precompiled header file stuff from project files that is no longer + used. - * All public functions are now documented with Doxygen comments. +* Fixed Niflib DLL compile. All public functions should now be marked with + either NIFLIB_API or NIFLIB_HIDDEN. May have missed a few here or there + but they should be noticed eventually. - * Changed all occurrences of uint and ushort to unsigned int and unsigned - short. +* All public functions are now documented with Doxygen comments. - * Fixed many GCC compile problems. Niflib should compile in GCC now: +* Changed all occurrences of uint and ushort to unsigned int and unsigned + short. - - Replaced array template with a simpler one that works with GCC. +* Fixed many GCC compile problems. Niflib should compile in GCC now: - - Replaced "unsigned" with "unsigned int" GCC doesn't like this. + - Replaced array template with a simpler one that works with GCC. - - Changed C++ style unsigned int casts so GCC will be able to understand - them. + - Replaced "unsigned" with "unsigned int" GCC doesn't like this. - - Properly capitalized include file names in niflib.cpp. + - Changed C++ style unsigned int casts so GCC will be able to understand + them. - * Changed as many functions as possible to take pointer arguments instead of - Ref template arguments. + - Properly capitalized include file names in niflib.cpp. - * Prevented the link map from being copied unnecessarily, improving - performance and memory usage. - +* Changed as many functions as possible to take pointer arguments instead of + Ref template arguments. + +* Prevented the link map from being copied unnecessarily, improving + performance and memory usage. + Version 0.6.2 ============= - * Improved support for Freedom Force games thanks to Symon. +* Improved support for Freedom Force games thanks to Symon. + +* Change NodeGroup to use pointers instead of Refs. - * Change NodeGroup to use pointers instead of Refs. +* NiGeometry::BindSkin now throws an exception if one of the passed in bone + references is NULL. - * NiGeometry::BindSkin now throws an exception if one of the passed in bone - references is NULL. +* NiNode::IsSplitMeshProxy now returns false if it is a skin influence. - * NiNode::IsSplitMeshProxy now returns false if it is a skin influence. +* NiTriShapeData::GetTriangles now only returns valid triangles. - * NiTriShapeData::GetTriangles now only returns valid triangles. +* Fixed a bug in ComplexShape::Merge that occurred when a shape had no UV set, + but, for some reason, had a texture referencing UV set zero. - * Fixed a bug in ComplexShape::Merge that occurred when a shape had no UV set, - but, for some reason, had a texture referencing UV set zero. +* Added NiGeometry::NormalizeSkinWeights function to ensure all skin weights + add up to 1.0 on export. - * Added NiGeometry::NormalizeSkinWeights function to ensure all skin weights - add up to 1.0 on export. +* ComplexShape::Split now cuts out weights below 0.1 and normalizes the + result. - * ComplexShape::Split now cuts out weights below 0.1 and normalizes the - result. +* Fixed a bug which could cause NiSkinInstance to try to call a function on a + NiNode that was in the midst of destruction. - * Fixed a bug which could cause NiSkinInstance to try to call a function on a - NiNode that was in the midst of destruction. +* Added NiGeometry::ApplySkinOffset function to clear nodes between skins and + the skeleton root. - * Added NiGeometry::ApplySkinOffset function to clear nodes between skins and - the skeleton root. +* Added some new object types for NIF version 3.1, but most files still can't + be opened. - * Added some new object types for NIF version 3.1, but most files still can't - be opened. +* Fixed object auto-destruct. Niflib is now destroying objects properly and + reporting the right number of Objects from NiObject::NumObjectsInMemory. - * Fixed object auto-destruct. Niflib is now destroying objects properly and - reporting the right number of Objects from NiObject::NumObjectsInMemory. +* Generated array code now prints 20 items per 2D array in total when verbose + is off. - * Generated array code now prints 20 items per 2D array in total when verbose - is off. +* Fixed duplicated Read call. All FFvt3R demo files can now be read by + Niflib. - * Fixed duplicated Read call. All FFvt3R demo files can now be read by - Niflib. +* Added NiGeometry::ApplyTransforms function to automatically zero out the + transforms of a mesh and apply them to its vertices. - * Added NiGeometry::ApplyTransforms function to automatically zero out the - transforms of a mesh and apply them to its vertices. +* Added NiGeometryData::Transform function to apply an arbitrary transform + to all vertices and normals of a mesh (used by above). - * Added NiGeometryData::Transform function to apply an arbitrary transform - to all vertices and normals of a mesh (used by above). +* Added NiNode::PropagateTransform function to apply a NiNode's local + transform to its children and then zero it out. - * Added NiNode::PropagateTransform function to apply a NiNode's local - transform to its children and then zero it out. +* Fixed NiTriShapeData to properly set numTriangles when SetTriangles is + called. - * Fixed NiTriShapeData to properly set numTriangles when SetTriangles is - called. +* Removed "set root to scene root" option from NiGeometry::BindSkin. - * Removed "set root to scene root" option from NiGeometry::BindSkin. +* Replaced GetSkinInfluencedVertices function with GetSkinDeformation + function which takes in references to two vectors and fills them with the + skin deformed vertices and normals - * Replaced GetSkinInfluencedVertices function with GetSkinDeformation - function which takes in references to two vectors and fills them with the - skin deformed vertices and normals +* Added constructor to Matrix44 to convert from Matrix33. - * Added constructor to Matrix44 to convert from Matrix33. +* Change default to little endian instead of big endian. - * Change default to little endian instead of big endian. +* Added NiClodSkinInstance and fixed NiClodData. Niflib can now open all + Freedom Force demo NIF files. - * Added NiClodSkinInstance and fixed NiClodData. Niflib can now open all - Freedom Force demo NIF files. +* Corrected Shape/particle hierarchy by adding NiGeometry and NiGeometryData. - * Corrected Shape/particle hierarchy by adding NiGeometry and NiGeometryData. - Version 0.6.0 ============= - * Fixed ComplexShape::Merge and ComplexShape::Split to properly take new uvSet - member of TexDesc into account. +* Fixed ComplexShape::Merge and ComplexShape::Split to properly take new uvSet + member of TexDesc into account. + +* Cleared up all Doxygen and SWIG warnings. - * Cleared up all Doxygen and SWIG warnings. +* Replaced _WRITE, _READ, _STRING, AND _FIXLINKS defines with the + corresponding internal function call. - * Replaced _WRITE, _READ, _STRING, AND _FIXLINKS defines with the - corresponding internal function call. +* Replaced STANDARD_INTERNAL_FUNCTIONS with the internal function signatures. - * Replaced STANDARD_INTERNAL_FUNCTIONS with the internal function signatures. +* Made my Doxygen config file use relative paths and added it to SVN so + everyone can generate the same documentation for themselves. - * Made my Doxygen config file use relative paths and added it to SVN so - everyone can generate the same documentation for themselves. +* Added missing NifInfo arguments to ReadNifList calls. - * Added missing NifInfo arguments to ReadNifList calls. +* Several fixes to XML and Niflib to enable all my files from Freedom Force + (except with NiClodData), Oblivion, CivIV, Morrowind, Zoo Tycoon 2, and + DAoC to load in Niflib and NifSkope. Includes the two strange Oblivion files with version 3.3.0.13 and version + 10.0.1.2. - * Several fixes to XML and Niflib to enable all my files from Freedom Force - (except with NiClodData), Oblivion, CivIV, Morrowind, Zoo Tycoon 2, and - DAoC to load in Niflib and NifSkope. Includes the two strange Oblivion files with version 3.3.0.13 and version - 10.0.1.2. +* Fixed the array bug by reversing the template arguments and re-doing the + declarations in the Python script. - * Fixed the array bug by reversing the template arguments and re-doing the - declarations in the Python script. +* Added support for sub version 4 headers, object storage, and link method. + Some objects like NiNodes already read correctly. - * Added support for sub version 4 headers, object storage, and link method. - Some objects like NiNodes already read correctly. +* Renamed the following functions: + CheckNifHeader -> GetNifVersion + GetVersion -> ParseVersionString + IsVersionSupported -> IsSupportedVersion - * Renamed the following functions: - CheckNifHeader -> GetNifVersion - GetVersion -> ParseVersionString - IsVersionSupported -> IsSupportedVersion +* Added new function, FormatVersionString, to format integer version numbers + as a "#.#.#.#" string. - * Added new function, FormatVersionString, to format integer version numbers - as a "#.#.#.#" string. +* Changed GetNifVersion so it no longer returns VER_UNSUPPORTED. It now + always returns the actual version value, if possible, which can be passed + to IsSupportedVersion if desired. - * Changed GetNifVersion so it no longer returns VER_UNSUPPORTED. It now - always returns the actual version value, if possible, which can be passed - to IsSupportedVersion if desired. +* GetNifVersion now supports version numbers lower than 4. - * GetNifVersion now supports version numbers lower than 4. +* Added versions 4.0.0.0 and 10.1.0.106 to version constants and + IsSupportedVersion function. - * Added versions 4.0.0.0 and 10.1.0.106 to version constants and - IsSupportedVersion function. +* Fix iterator problem with skin partition. - * Fix iterator problem with skin partition. +* Changed WriteNifTree, and WriteFileGroup functions to take NifInfo + structures instead of version and user_version arguments. - * Changed WriteNifTree, and WriteFileGroup functions to take NifInfo - structures instead of version and user_version arguments. +* Changed ReadNifList and ReadNifTree to optionally fill a passed in NifInfo + structure with information from the header of the NIF file they read. - * Changed ReadNifList and ReadNifTree to optionally fill a passed in NifInfo - structure with information from the header of the NIF file they read. +* Fixed some tabs that were done with spaces instead of actual tab characters. - * Fixed some tabs that were done with spaces instead of actual tab characters. +* Added * dot product and ^ cross product aliases. - * Added * dot product and ^ cross product aliases. +* Removed unused vars from UpdateTangentSpace(). - * Removed unused vars from UpdateTangentSpace(). +* Made UpdateTangentSpace set the name of newly created NiBinaryExtraData + objects. - * Made UpdateTangentSpace set the name of newly created NiBinaryExtraData - objects. +* Added option to ComplexShape::Split to request the generation of tangent + space. - * Added option to ComplexShape::Split to request the generation of tangent - space. +* Fixed NiSkinData overall offset transform calculation. - * Fixed NiSkinData overall offset transform calculation. +* Added an exception and some extra checks to + NiTriBasedGeomData::UpdateTangentSpace. Also made minor style changes. - * Added an exception and some extra checks to - NiTriBasedGeomData::UpdateTangentSpace. Also made minor style changes. +* Fixed warning created by changing NiStencilProperty's enabled value to a + byte. - * Fixed warning created by changing NiStencilProperty's enabled value to a - byte. +* Added UpdateTangentSpace() to NiTriBasedGeom class. - * Added UpdateTangentSpace() to NiTriBasedGeom class. +* Rewrote large chunks of WriteFileGroup related routines. - * Rewrote large chunks of WriteFileGroup related routines. +* Added a WriteNifTree which allows for multiple roots (not exposed + publically) - * Added a WriteNifTree which allows for multiple roots (not exposed - publically) +* Added option to BindSkin to scene instead of skeleton root. - * Added option to BindSkin to scene instead of skeleton root. +* Fixed bug in RemoveController - * Fixed bug in RemoveController +* Added helpers to NiControllerManager for sequence management - * Added helpers to NiControllerManager for sequence management +* Propegated user_version in routines which take a version - * Propegated user_version in routines which take a version +* Add more rigorous recursive block reordering for Oblivion collision objects. - * Add more rigorous recursive block reordering for Oblivion collision objects. +* Add NiClod and NiClodData. - * Add NiClod and NiClodData. +* Add NifSkope base partitioning algorithm - * Add NifSkope base partitioning algorithm +* Add ability to use TriStripper instead of NvStripper for tristripdata - * Add ability to use TriStripper instead of NvStripper for tristripdata +* Changed XML Name of NiLODNode's data ref. - * Changed XML Name of NiLODNode's data ref. +* Updated method names to use 'LOD'. - * Updated method names to use 'LOD'. +* Really put the skin calculations back the way they were this time. Helps, + but the hands of better bodies meshes still end up in the wrong place. - * Really put the skin calculations back the way they were this time. Helps, - but the hands of better bodies meshes still end up in the wrong place. +* Added transform parameter to ComplexShape::Split because changing the + transforms after the fact ruins the skin binds. - * Added transform parameter to ComplexShape::Split because changing the - transforms after the fact ruins the skin binds. +* Fixed missing includes in enum files to work without PCH. - * Fixed missing includes in enum files to work without PCH. +* Added missing NvTriStripper files back into solution. - * Added missing NvTriStripper files back into solution. +* Created accessors for LOD type nodes. - * Created accessors for LOD type nodes. +* Fixed the relative include paths and tried to update solution, but havn't + got the precompiled header working right. - * Fixed the relative include paths and tried to update solution, but havn't - got the precompiled header working right. +* Removed gen and obj folder and added lib folder. - * Removed gen and obj folder and added lib folder. +* Restructured folder hierarchy. Now with separate include, src, and lib + folders. - * Restructured folder hierarchy. Now with separate include, src, and lib - folders. +* Reverted a previous change to the skin calculations which turned out to be + incorrect. - * Reverted a previous change to the skin calculations which turned out to be - incorrect. +* Forgot to include NiLODData.cpp in project file. - * Forgot to include NiLODData.cpp in project file. +* Included missing implementation of Weight methods. - * Included missing implementation of Weight methods. +* Fix issues with NiControllerSequence in niflib. - * Fix issues with NiControllerSequence in niflib. +* StringOffset now defaults to -1 - * StringOffset now defaults to -1 +* Search in StringPalette now finds exact matches rather than partial matches. - * Search in StringPalette now finds exact matches rather than partial matches. +* Reuse same StringPalette for Controller and all child blocks - * Reuse same StringPalette for Controller and all child blocks +* Convert bspline controller offsets from ushort to uint - * Convert bspline controller offsets from ushort to uint +* fix bug in nicontrollersequence with string palette - * fix bug in nicontrollersequence with string palette +* Add LOD Bone Controller handler - * Add LOD Bone Controller handler +* Added a max_bones_per_partition parameter to ComplexShape::Split and + NiTriBasedGeom::GenHardwareSkinInfo in anticipation of Tazpn adding that + capability. - * Added a max_bones_per_partition parameter to ComplexShape::Split and - NiTriBasedGeom::GenHardwareSkinInfo in anticipation of Tazpn adding that - capability. +* Modify so that niflib compiles as it points to the correct enum file. - * Modify so that niflib compiles as it points to the correct enum file. +* Changed around XML enum support a bit. - * Changed around XML enum support a bit. +* Remove enum value maps and update comments in generated files. - * Remove enum value maps and update comments in generated files. +* Update niflib with Enumerations generated from nif.xml. - * Update niflib with Enumerations generated from nif.xml. +* Fixed problems I created in nif.xml - * Fixed problems I created in nif.xml +* Some simple updates to Niflib documentation. - * Some simple updates to Niflib documentation. +* Updated ComplexShape::Split to optionally support stripification and skin + partition generation. - * Updated ComplexShape::Split to optionally support stripification and skin - partition generation. +* Altered exception message for NiTriBasedGeomData::SetTriangles - * Altered exception message for NiTriBasedGeomData::SetTriangles +* Casting functions now check for NULL as of last commit. - * Casting functions now check for NULL as of last commit. +* First pass at strippifier in niflib. - * First pass at strippifier in niflib. +* Adding some helpers on to access priority on controllers. - * Adding some helpers on to access priority on controllers. +* Changed the order of file includes so that ControllerLink vectors would be + recognized by Swig. - * Changed the order of file includes so that ControllerLink vectors would be - recognized by Swig. +* Added some end lines to make Swig 1.3.29 work. - * Added some end lines to make Swig 1.3.29 work. +* Fix issues with writing out KF files related to footer - * Fix issues with writing out KF files related to footer +* Add support for changing the priority on NiSequenceControllers - * Add support for changing the priority on NiSequenceControllers +* Added Key templates to Python wrapper. - * Added Key templates to Python wrapper. +* Renamed CreateBlock to CreateObject and made it clear that it is not + necessary for the user to call this function unless s/he is working through + Python. - * Renamed CreateBlock to CreateObject and made it clear that it is not - necessary for the user to call this function unless s/he is working through - Python. +* Removed BlocksInMemory function. Call NiObject::NumObjectsInMemory instead. - * Removed BlocksInMemory function. Call NiObject::NumObjectsInMemory instead. +* Implemented GetScale and SetScale functions of bhkNiTriStripsShape to fix + linker errors when compiling Python wrapper. - * Implemented GetScale and SetScale functions of bhkNiTriStripsShape to fix - linker errors when compiling Python wrapper. +* Initial changes for skin partition access. Needs more work around + protecting the user from inconsistencies. - * Initial changes for skin partition access. Needs more work around - protecting the user from inconsistencies. +* Update bounding sphere info. on skin so not unknown anymore - * Update bounding sphere info. on skin so not unknown anymore +* Fixed Matrix44 != operator - * Fixed Matrix44 != operator +* Added bounding box related functions to NiAVObject. - * Added bounding box related functions to NiAVObject. +* Hopefully fixed the skin calculations. Results in skin files that always + seem to look correct in Morrowind but do not always look correct in + NifSkope. - * Hopefully fixed the skin calculations. Results in skin files that always - seem to look correct in Morrowind but do not always look correct in - NifSkope. +* Merged in changes required by 3ds Max Exporter as I try to remove the + cloned copy of niflib completely from svn. - * Merged in changes required by 3ds Max Exporter as I try to remove the - cloned copy of niflib completely from svn. +* Added Merge function to ComplexShape. - * Added Merge function to ComplexShape. +* Added != operator to Matrix44. - * Added != operator to Matrix44. +* Added IsSplitMeshProxy function to NiNode. - * Added IsSplitMeshProxy function to NiNode. +* Fixed some include problems. - * Fixed some include problems. - Version 0.5.6 ============= - * Added code to ensure that bones have their flag set properly, even if they - are not so in the original NIF file. +* Added code to ensure that bones have their flag set properly, even if they + are not so in the original NIF file. - * Added SendNifTreeToBindPos function to set a whole file to the bind - position. +* Added SendNifTreeToBindPos function to set a whole file to the bind + position. - * NiTriStripsData::GetTriangles no longer returns triangles that have - matching vertices and, thus, no surface area. +* NiTriStripsData::GetTriangles no longer returns triangles that have + matching vertices and, thus, no surface area. - * Added a SetBoneWeights function to NiTriBasedGeom which automatically - calculates the correct bone center and radius. +* Added a SetBoneWeights function to NiTriBasedGeom which automatically + calculates the correct bone center and radius. - * The NiSkinData::SetBoneWeights function now requires the radius and center - as arguments. +* The NiSkinData::SetBoneWeights function now requires the radius and center + as arguments. - * Removed lingering cout statements except those within debug defines. +* Removed lingering cout statements except those within debug defines. - * NiNode flags now default to 8 for "Not a skin influence." +* NiNode flags now default to 8 for "Not a skin influence." - * The code I added to make NiTriBasedGeom select the correct skeleton root - was wrong and has been re-written and tested. It now seems to select the - same skeleton root as real NIF files. +* The code I added to make NiTriBasedGeom select the correct skeleton root + was wrong and has been re-written and tested. It now seems to select the + same skeleton root as real NIF files. - * The NiTriBasedGeomData::SetUVSetCount function now sets the hasUVs bool - value correctly. +* The NiTriBasedGeomData::SetUVSetCount function now sets the hasUVs bool + value correctly. - * Fixed some skin related bugs in ComplexShape::Split. +* Fixed some skin related bugs in ComplexShape::Split. - * Created a new ComplexShape class which can currently be used to - automatically split the sort of complicated mesh that contains - per-point-per-face attributes into NiTriShape classes. Should support - skinning as well, but has not been tested. +* Created a new ComplexShape class which can currently be used to + automatically split the sort of complicated mesh that contains + per-point-per-face attributes into NiTriShape classes. Should support + skinning as well, but has not been tested. - * Added TexCoord == operator. +* Added TexCoord == operator. - * Changed type of Triangle members to unsigned short. +* Changed type of Triangle members to unsigned short. - * Color4 now defaults to all zeros. +* Color4 now defaults to all zeros. - * NiAVObject::AddProperty now takes a const argument. +* NiAVObject::AddProperty now takes a const argument. - * Fixed exception in NiTexturingProperty to throw a runtime_error instead of - a string. +* Fixed exception in NiTexturingProperty to throw a runtime_error instead of + a string. - * NiTriBasedGeom::BindSkin should now automatically finds the skeleton root - by itself. The skeleton_root argument has been removed. - +* NiTriBasedGeom::BindSkin should now automatically finds the skeleton root + by itself. The skeleton_root argument has been removed. + Version 0.5.4 ============= - * Added a != operator to Vector3. +* Added a != operator to Vector3. - * Initialized TexCoord values to 0.0f. +* Initialized TexCoord values to 0.0f. - * Added Visibility flag functions to NiAVObject.cpp +* Added Visibility flag functions to NiAVObject.cpp - * Fixed NiTexturingProperty::SetTexture to set the internal hasXTexture - variables correctly. +* Fixed NiTexturingProperty::SetTexture to set the internal hasXTexture + variables correctly. - * Fix DAoC bug with kob_m_head01.nif +* Fix DAoC bug with kob_m_head01.nif - * Cycle type is now set correctly on controllers created or modified by - MergeNifTrees function. +* Cycle type is now set correctly on controllers created or modified by + MergeNifTrees function. - * Changed default for new controllers to 12; Active/Clamped. Should get - cycle type from NiControllerSequence. +* Changed default for new controllers to 12; Active/Clamped. Should get + cycle type from NiControllerSequence. - * Add a default value for the new controller so that its active. +* Add a default value for the new controller so that its active. - * Update niflib with bspline interpolation abilities +* Update niflib with bspline interpolation abilities - * Change mergeniftrees to default phase to 0.0f instead of 1.0f as its a - better default value. +* Change mergeniftrees to default phase to 0.0f instead of 1.0f as its a + better default value. - * Determined that there are references to NiBSplineData and - NiBSplineBasisData in all NiBSplineInterpolator derived classes. - Consolidated the various references from the derived classes to the - NiBSplineInterpolator class in the XML and in Niflib. +* Determined that there are references to NiBSplineData and + NiBSplineBasisData in all NiBSplineInterpolator derived classes. + Consolidated the various references from the derived classes to the + NiBSplineInterpolator class in the XML and in Niflib. - * We can't have functions on compounds as all files for them are generated. Removed CalcNumTriangles so Niflib programs will link. +* We can't have functions on compounds as all files for them are generated. Removed CalcNumTriangles so Niflib programs will link. - * Applied latest XML changes. +* Applied latest XML changes. - * Split some things that were previously part of NIF_IO.h into their own - files to make SWIG wrapping work better. +* Split some things that were previously part of NIF_IO.h into their own + files to make SWIG wrapping work better. - * Made the MergeNifTree function set the start time, stop time, and - frequency of the controller it attaches an interpolator to. +* Made the MergeNifTree function set the start time, stop time, and + frequency of the controller it attaches an interpolator to. - * Made the MergeNifTree function create a controller of the right type and - attach it to the specified node if one does not already exist. +* Made the MergeNifTree function create a controller of the right type and + attach it to the specified node if one does not already exist. - * Fixed an include statement to be relative. +* Fixed an include statement to be relative. - * Add extra targets getter/setter for multitargeter controller. Probably - need to fix GetRefs() at some point get return weak pointer references as - well as strong ones. +* Add extra targets getter/setter for multitargeter controller. Probably + need to fix GetRefs() at some point get return weak pointer references as + well as strong ones. - * Fix Math so that it decomposes rotations back to stored rotation and not - the inverse. Fix Scale so that it returns the correct value rather than - x+y + (z/3). +* Fix Math so that it decomposes rotations back to stored rotation and not + the inverse. Fix Scale so that it returns the correct value rather than + x+y + (z/3). - * Add helper methods for useful flags for importing data in avobject and - controller sequence. +* Add helper methods for useful flags for importing data in avobject and + controller sequence. - * Suppressed most SWIG warnings. +* Suppressed most SWIG warnings. - * Tried to implement MergeNifTrees for KF files with a NiControllerSequence - root. Untested. +* Tried to implement MergeNifTrees for KF files with a NiControllerSequence + root. Untested. + +* Minor change to Python wrapper file. - * Minor change to Python wrapper file. - Version 0.5 =========== - * Niflib can now operate on most or all files from the following games: - Oblivion, Civilization IV, Zoo Tycoon 2, Dark Ages of Camelot, - and Morrowind +* Niflib can now operate on most or all files from the following games: + Oblivion, Civilization IV, Zoo Tycoon 2, Dark Ages of Camelot, + and Morrowind - * Cloning support for both single NIF classes and entire NIF trees. +* Cloning support for both single NIF classes and entire NIF trees. - * Major API redesign featuring: +* Major API redesign featuring: - - Type-aware smart pointers instead of a single generic blk_ref. + - Type-aware smart pointers instead of a single generic blk_ref. - - Direct access to functions of all classes instead of interfaces. + - Direct access to functions of all classes instead of interfaces. - - Ability to test whether one class is derived from another and do dynamic - and static casting between compatible types. + - Ability to test whether one class is derived from another and do dynamic + and static casting between compatible types. - - No more attributes, values are accessed directly with functions in the - classes that hold them instead. + - No more attributes, values are accessed directly with functions in the + classes that hold them instead. - - Math structures now feature operations such as matrix inverse, as well - as operators such as multiplying matrices and vertices. + - Math structures now feature operations such as matrix inverse, as well + as operators such as multiplying matrices and vertices. - - Much faster operation overall due to hard-coded read and write functions - generated from the XML and no sting look-ups when accessing attributes. + - Much faster operation overall due to hard-coded read and write functions + generated from the XML and no sting look-ups when accessing attributes. - - New skin API which makes skin morphed vertices availiable and makes - moving the mesh to the bind position optional. + - New skin API which makes skin morphed vertices availiable and makes + moving the mesh to the bind position optional. - - All symbols are now enclosed in the Niflib namespace + - All symbols are now enclosed in the Niflib namespace - - Most old interfaces transitioned directly to new equivalents to reduce - code re-writing when upgrading from previous versions. - + - Most old interfaces transitioned directly to new equivalents to reduce + code re-writing when upgrading from previous versions. + Version 0.4 =========== - * Deleted redundant autoconf macro file. +* Deleted redundant autoconf macro file. - * Zombie killed. +* Zombie killed. - * Improved compiler flags for windows build. +* Improved compiler flags for windows build. - * fixed key type in NiMorphData +* fixed key type in NiMorphData - * Started work on 10.x compatibility. +* Started work on 10.x compatibility. - * Added GetMorphKeyType, and SetMorphKeyType to IMorphData interface. +* Added GetMorphKeyType, and SetMorphKeyType to IMorphData interface. - * Supported new header formats for version 5.0.0.1 to version 20.0.0.4 in - WriteNifTree function. +* Supported new header formats for version 5.0.0.1 to version 20.0.0.4 in + WriteNifTree function. - * Updated texsource and texdesc attributes to the latest DocSys info. +* Updated texsource and texdesc attributes to the latest DocSys info. - * Finished updating all existing blocks to the latest DocSys info. +* Finished updating all existing blocks to the latest DocSys info. - * Added NiBoolData and APSysData blocks. +* Added NiBoolData and APSysData blocks. - * Fixed new attr_bool and attr_unk292bytes attributes so that they can be - used by blocks. +* Fixed new attr_bool and attr_unk292bytes attributes so that they can be + used by blocks. - * added -fPIC to cppflags to resolve amd64 compilation issue under linux +* added -fPIC to cppflags to resolve amd64 compilation issue under linux - * fixed GCC compilation issue +* fixed GCC compilation issue - * removed linux library prefix for the python wrapper +* removed linux library prefix for the python wrapper - * Made internal cross-reference system more general. +* Made internal cross-reference system more general. - * Implemented NiControllerSequence block and interface. +* Implemented NiControllerSequence block and interface. - * Implemented NiBoneLODController. Problems with writing connected NiSkinData - blocks, however. +* Implemented NiBoneLODController. Problems with writing connected NiSkinData + blocks, however. - * Some internal changes. +* Some internal changes. - * Fixed destructor of NiControllerSequence to remove itself as the parent of - blocks it points to if it is destroyed. +* Fixed destructor of NiControllerSequence to remove itself as the parent of + blocks it points to if it is destroyed. - * Implemented NiLookAtInterpolator. +* Implemented NiLookAtInterpolator. - * Several fixes to blocks that didn't have arrays expanded in the DocSys. +* Several fixes to blocks that didn't have arrays expanded in the DocSys. - * DocSys is now fully implemented, so all versions 4.x and 10.x files that - it supports are now supported. +* DocSys is now fully implemented, so all versions 4.x and 10.x files that + it supports are now supported. - * Fixed one warning in GCC. +* Fixed one warning in GCC. - * Implemented GetLinks() functions for NiBoneLODController and - NiControllerSequence blocks so that their internal links will be followed - when writing files. +* Implemented GetLinks() functions for NiBoneLODController and + NiControllerSequence blocks so that their internal links will be followed + when writing files. - * scons example program compilation (see comments in SConstruct) +* scons example program compilation (see comments in SConstruct) - * Merged NiKeyframeData and NiTransformData under AKeyframeData. +* Merged NiKeyframeData and NiTransformData under AKeyframeData. - * Implemented most of the IPixelData interface. +* Implemented most of the IPixelData interface. - * adding cygwin support +* adding cygwin support - * Attempted to implement IPixelData and IPalette interfaces. Yet to be - thoroughly tested. +* Attempted to implement IPixelData and IPalette interfaces. Yet to be + thoroughly tested. - * Debugged and tested IPixelData functions. +* Debugged and tested IPixelData functions. - * Fixed a bug that was causing a Segmentation Fault when Nif files that - had NiSourceTexture blocks were read by code compiled with GCC. +* Fixed a bug that was causing a Segmentation Fault when Nif files that + had NiSourceTexture blocks were read by code compiled with GCC. - * updated python wrapper interface +* updated python wrapper interface - * niftexture workaround +* niftexture workaround - * CPPFLAGS fix in compile examples. +* CPPFLAGS fix in compile examples. - * Removed two more memset calls just in case. +* Removed two more memset calls just in case. - * fixed NiPixelData bugs +* fixed NiPixelData bugs - * fixed GCC warnings, fixed NIF footer +* fixed GCC warnings, fixed NIF footer - * Fixed a few more bugs in IPixelData. +* Fixed a few more bugs in IPixelData. Version 0.3 =========== - * updated Makefile to compile the complete library +* updated Makefile to compile the complete library + +* fixed small error in NiStringExtraData asString() function - * fixed small error in NiStringExtraData asString() function +* Began work on multiple version support. - * Began work on multiple version support. +* Added NiParticleSystemController block and started on particlegroup + attribute. - * Added NiParticleSystemController block and started on particlegroup - attribute. +* Changed the type name of some attributes to match DocSys database. - * Changed the type name of some attributes to match DocSys database. +* Changed IndexAttr to LinkAttr for consistency. Type name is now "link." - * Changed IndexAttr to LinkAttr for consistency. Type name is now "link." +* Fixed inheritance of light blocks - didn't notice they didn't work since no + official file seems to use them. - * Fixed inheritance of light blocks - didn't notice they didn't work since no - official file seems to use them. +* Finished basic version support - still need to implement new block reading + scheme for version 5 and up. - * Finished basic version support - still need to implement new block reading - scheme for version 5 and up. +* Updated all basic blocks with correctly versioned attributes from DocSys + database. - * Updated all basic blocks with correctly versioned attributes from DocSys - database. +* Updated all data blocks except for NiSkinPartition and NiControllerSequence + to react correctly to known version differences up to 10.1.0.0. - * Updated all data blocks except for NiSkinPartition and NiControllerSequence - to react correctly to known version differences up to 10.1.0.0. +* All blocks but the above now have both a Read and a Write function. - * All blocks but the above now have both a Read and a Write function. +* Sped up CreateBlock and AddAttr functions. - * Sped up CreateBlock and AddAttr functions. +* Implemented the new header scheme for reading. - * Implemented the new header scheme for reading. +* Fixed up the new header scheme for reading. All 10.0.1.0 files can now be + read as long as they don't contain unsupported block types. - * Fixed up the new header scheme for reading. All 10.0.1.0 files can now be - read as long as they don't contain unsupported block types. +* Updated the WriteNifTree function to write the correct version string and + hex number for the version requested. Still doesn't support the new header + layout. - * Updated the WriteNifTree function to write the correct version string and - hex number for the version requested. Still doesn't support the new header - layout. +* Made a few fixes as I updated the Maya importer to the changes. - * Made a few fixes as I updated the Maya importer to the changes. +* NiSkinPartition and NiLODNode are now read fully and can be examined by + calling the asString function or written back out to a file unchanged. - * NiSkinPartition and NiLODNode are now read fully and can be examined by - calling the asString function or written back out to a file unchanged. +* NiTriStripsData has been given a public interface, ITriStripsData, so that + the triangle strips it contains can be extracted. - * NiTriStripsData has been given a public interface, ITriStripsData, so that - the triangle strips it contains can be extracted. +* added autoconf/automake files + small changes to make things GCC compatible + again - * added autoconf/automake files + small changes to make things GCC compatible - again +* libtool fix in automake for compilation of shared libraries under Cygwin - * libtool fix in automake for compilation of shared libraries under Cygwin +* Fixed GCC compilation issues. - * Fixed GCC compilation issues. +* Decided to start putting generated files on CVS. - * Decided to start putting generated files on CVS. +* automake small improvement (now only builds the python wrapper independent + of additional library files) - * automake small improvement (now only builds the python wrapper independent - of additional library files) +* Removed py_wrap.cpp and added a simple windows compilation script for use + with the MS Visual C++ Toolkit. - * Removed py_wrap.cpp and added a simple windows compilation script for use - with the MS Visual C++ Toolkit. +* Fixed bug in Matrix33.Set(...) - * Fixed bug in Matrix33.Set(...) +* Matrix22.Set(...) bugfix - * Matrix22.Set(...) bugfix +* Python wrapper fixes & improvements. - * Python wrapper fixes & improvements. +* Python wrapper exception support fix. - * Python wrapper exception support fix. +* More Python wrapper fixes and upgrades. - * More Python wrapper fixes and upgrades. +* Fixed AShapeData::SetVertexCount to allow for zero normals and/or colors. - * Fixed AShapeData::SetVertexCount to allow for zero normals and/or colors. +* Removed some other recent changes. - * Removed some other recent changes. +* Suppressed all the warnings except one. - * Suppressed all the warnings except one. +* Changed attr_nodeancestor to attr_controllertarget and fixed it so it + recognizes any controllable block, not just nodes. - * Changed attr_nodeancestor to attr_controllertarget and fixed it so it - recognizes any controllable block, not just nodes. +* Made all struct types consistent with proper constructors. - * Made all struct types consistent with proper constructors. +* Cleaned up the attributes a bit, inheriting some from others so that code + isn't duplicated and special arguments are no longer needed to create any + type of attribute. - * Cleaned up the attributes a bit, inheriting some from others so that code - isn't duplicated and special arguments are no longer needed to create any - type of attribute. +* "Name" is an attribute again; special functions to set it have been + removed. - * "Name" is an attribute again; special functions to set it have been - removed. +* Synced supported blocks to the DocSys, adopting the new position of the + AParticleModifier block. - * Synced supported blocks to the DocSys, adopting the new position of the - AParticleModifier block. +* SetTriangles() bugfix and added range checking on vertex & triangle counts. - * SetTriangles() bugfix and added range checking on vertex & triangle counts. +* Fix writing NIF header + small fix in AShapeData - * Fix writing NIF header + small fix in AShapeData +* Python SWIG support for strings in structure members - * Python SWIG support for strings in structure members +* Starting to write code for exporting x*.kf and x*.nif files. (unfinished) - * Starting to write code for exporting x*.kf and x*.nif files. (unfinished) +* Fixed a bug in TargetControllerAttr. - * Fixed a bug in TargetControllerAttr. +* Added IsController function. - * Added IsController function. +* Added ParentAttr for use in the AParticleModifier block. - * Added ParentAttr for use in the AParticleModifier block. +* Minor fixes for the Python wrapper. Initial try to write XKf and XNif + files. - * Minor fixes for the Python wrapper. Initial try to write XKf and XNif - files. +* Rewrote children of AKeyedData using NifStream function, and added public + interfaces for them. - * Rewrote children of AKeyedData using NifStream function, and added public - interfaces for them. +* Added some const qualifiers. - * Added some const qualifiers. +* Fixed NiTextKeyExtraData read & write. - * Fixed NiTextKeyExtraData read & write. +* Finished code that creates XNif & XKf files; fixed bug in + AttrControllerTarget. - * Finished code that creates XNif & XKf files; fixed bug in - AttrControllerTarget. +* Fixed a bug I introduced yesterday. - * Fixed a bug I introduced yesterday. +* Killed a zombie. - * Killed a zombie. +* Added const correctness; fixed a few GCC compilation problems. - * Added const correctness; fixed a few GCC compilation problems. +* Fixed a few bugs I introduced because I forgot to add a few consts. :oops: - * Fixed a few bugs I introduced because I forgot to add a few consts. :oops: +* Added a function to calculate an X-aligned bone matrix from the bone vector + and the bone roll, which is convenient to have for the Blender exporter. - * Added a function to calculate an X-aligned bone matrix from the bone vector - and the bone roll, which is convenient to have for the Blender exporter. +* Attempted to fix NiSkinData to be const friendly. - * Attempted to fix NiSkinData to be const friendly. +* Fixed a bug that was introduced in the reference bone reference tracking. - * Fixed a bug that was introduced in the reference bone reference tracking. +* Bone matrix calculation function (Blender helper function) fixed. - * Bone matrix calculation function (Blender helper function) fixed. +* Removed BoneToMatrix44 helper functions. (They will be implemented in + Python in the Blender exporter.) - * Removed BoneToMatrix44 helper functions. (They will be implemented in - Python in the Blender exporter.) +* Fixed a little bug I introduced earlier. :oops: - * Fixed a little bug I introduced earlier. :oops: +* Corrected default state of node flags. - * Corrected default state of node flags. +* Added SCons support for building niflib. - * Added SCons support for building niflib. +* Corrected skeleton root calculation. - * Corrected skeleton root calculation. +* Fixed error that caused an invalid number to be written in the unknown 4 + floats within NiSkinData. Now simply write 4 zeros. - * Fixed error that caused an invalid number to be written in the unknown 4 - floats within NiSkinData. Now simply write 4 zeros. +* Re-implemented NiMorphData with NifStream function, fixing a bug in its + Write function at the same time. - * Re-implemented NiMorphData with NifStream function, fixing a bug in its - Write function at the same time. +* Changed several of the attributes of NiPixelData to attributes in + preparation for creating an interface for it. - * Changed several of the attributes of NiPixelData to attributes in - preparation for creating an interface for it. +* Fixed a bug in AExtraData for version 10.0.1.0+ - * Fixed a bug in AExtraData for version 10.0.1.0+ +* Started adding Doxygen format documentation comments to niflib.h. - * Started adding Doxygen format documentation comments to niflib.h. +* Renamed Color structure to Color4. - * Renamed Color structure to Color4. +* More documentation comments added. - * More documentation comments added. +* Renamed TextureSource to TexSource and Texture to TexDesc. - * Renamed TextureSource to TexSource and Texture to TexDesc. +* Fixed overall transformation in NiSkinData. - * Fixed overall transformation in NiSkinData. +* Added more documentation. - * Added more documentation. +* Renamed INode functions dealing with bind position so that each function + clearly expresses the type of matrix its dealing with - local or world. - * Renamed INode functions dealing with bind position so that each function - clearly expresses the type of matrix its dealing with - local or world. +* Removed the GNU buildsystem; SCons supersedes it. - * Removed the GNU buildsystem; SCons supersedes it. - Version 0.2.1 ============= - * Changed Float3, Matrix33, and Matrix44 from C arrays to structures that - mimic C arrays ensure accessibility from scripting languages. +* Changed Float3, Matrix33, and Matrix44 from C arrays to structures that + mimic C arrays ensure accessibility from scripting languages. - * Made Get() functions for Matrix33, Matrix44, and Float3 return a value - instead of a reference. +* Made Get() functions for Matrix33, Matrix44, and Float3 return a value + instead of a reference. - * Fixed broken SWIG wrapper; still needs some more fixing... +* Fixed broken SWIG wrapper; still needs some more fixing... - * Added Makefile for building the python wrapper on linux/cygwin +* Added Makefile for building the python wrapper on linux/cygwin - * Some fixes to the SWIG wrapper file. +* Some fixes to the SWIG wrapper file. - * Removed the idea of getting attributes by index, instead returning a vector - of attributes. +* Removed the idea of getting attributes by index, instead returning a vector + of attributes. - * Changed Set(float, float, float) to Set(Float3&) in IAttr and relevant - descendent classes. +* Changed Set(float, float, float) to Set(Float3&) in IAttr and relevant + descendent classes. - * Added a Set(float, float, float) function to the Float3 struct to allow - setting all values in one call. +* Added a Set(float, float, float) function to the Float3 struct to allow + setting all values in one call. - * Changed IBlock::GetAttrList() to GetAttrs() to be more consistent with other - functions. +* Changed IBlock::GetAttrList() to GetAttrs() to be more consistent with other + functions. - * Made some changes to help Niflib work better with GCC. +* Made some changes to help Niflib work better with GCC. - * All the cpp files now seem to compile in GCC. +* All the cpp files now seem to compile in GCC. - * Added list<blk_ref> template to SWIG file. +* Added list<blk_ref> template to SWIG file. - * Capitalized interface ID constants. +* Capitalized interface ID constants. - * Added support for [] operator to attr_ref in Python. +* Added support for [] operator to attr_ref in Python. - * Added Python support for [] to Matrix33, Matrix44, and Float3 +* Added Python support for [] to Matrix33, Matrix44, and Float3 - * Added __setitem__ operators to blk_ref for Python. +* Added __setitem__ operators to blk_ref for Python. - * Un-commented attr_ref operator=(blk_ref) function. +* Un-commented attr_ref operator=(blk_ref) function. - * Changed MatrixRowN types to FloatN, merging MatrixRow3 and Float3. +* Changed MatrixRowN types to FloatN, merging MatrixRow3 and Float3. - * Added Matrix22 and Float2 types. +* Added Matrix22 and Float2 types. - * Changed bump mapping members in Texture struct to use Matrix22. +* Changed bump mapping members in Texture struct to use Matrix22. - * Changed members in BoundingBox struct to use Vector3 and Matrix33 types. +* Changed members in BoundingBox struct to use Vector3 and Matrix33 types. Version 0.2 =========== - * Made NiSkinData and the bone nodes it references aware of each other so they - can be properly destroyed. +* Made NiSkinData and the bone nodes it references aware of each other so they + can be properly destroyed. - * Added BlocksInMemory() function to verify that all blocks are now dying when - the root block dies. +* Added BlocksInMemory() function to verify that all blocks are now dying when + the root block dies. - * Made the bone influence flag automatic. +* Made the bone influence flag automatic. - * Changed NiNode Print() function to asString() as it should have been and - moved it to the cpp file. +* Changed NiNode Print() function to asString() as it should have been and + moved it to the cpp file. - * Added a readout of a list of skin data blocks that are connected to each - NiNode for testing. +* Added a readout of a list of skin data blocks that are connected to each + NiNode for testing. - * Fixed other functions that were still Print() instead of asString() +* Fixed other functions that were still Print() instead of asString() - * Finished up NiSkinData block. +* Finished up NiSkinData block. - * Automated NiSkinInstance Skeleton Root attribute and AController Target Node - attribute. All back references should now be automatic. +* Automated NiSkinInstance Skeleton Root attribute and AController Target Node + attribute. All back references should now be automatic. - * Fixed bug in Bounding Box attribute Write() function +* Fixed bug in Bounding Box attribute Write() function - * Added Write() Function for NiKeyFrameData, NiTextKeyExtraData, and - NiStringExtraData +* Added Write() Function for NiKeyFrameData, NiTextKeyExtraData, and + NiStringExtraData - * Added AExtraData class with a proper index attribute. ExtraData blocks will - now be part of the tree as they should have been. +* Added AExtraData class with a proper index attribute. ExtraData blocks will + now be part of the tree as they should have been. - * Added IKeyframeData interface. +* Added IKeyframeData interface. - * Fixed a bug that was causing multiple copies of the same block to be written - by WriteNifTree() +* Fixed a bug that was causing multiple copies of the same block to be written + by WriteNifTree() - * Fixed a bug that was causing the Skeleton Root in NiSkinInstance to be - calculated incorrectly. +* Fixed a bug that was causing the Skeleton Root in NiSkinInstance to be + calculated incorrectly. - * Added QueryKeyframeData() function. +* Added QueryKeyframeData() function. - * Finished support for NiTextKeyExtraData. +* Finished support for NiTextKeyExtraData. - * Added Write() function for NiMoprhData +* Added Write() function for NiMoprhData - * Finished NiMorphData interface and functions. +* Finished NiMorphData interface and functions. - * Added template directives for new key templates to pyniflib.i. +* Added template directives for new key templates to pyniflib.i. -- GitLab