Newer
Older
Version 0.8.0
=============
* Fully updated for Skyrim.
Amorilia
committed
Version 0.7.3
=============
* AsQuaternion is now a const member function (contributed by Dragongeo2).
Amorilia
committed
* Some math operators for TexCoord and Color4 (contributed by Dragongeo2).
Amorilia
committed
* Make base_type field public (requested by DragoonWraith).
Amorilia
committed
* Store block number in NiObject when reading a nif file (requested by DragoonWraith).
Amorilia
committed
* Added cmake build script.
Amorilia
committed
* GetTexture() now returns a TexDesc reference (requested by DragoonWraith).
Amorilia
committed
* Type::Create() method (requested by DragoonWraith).
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
* Types now have an internal type number (requested by DragoonWraith).
* Fixed RemoveChild for nifs that have their skin influence flag set
on NiNodes that aren't actually bone influences.
* New GetPtrs() method, similar to GetRefs().
* Fixed bug in link writing code.
* Fixed various bugs relating to NiSkinPartition.numTriangles
(reported by DragoonWraith and gentle_sal).
* Added AddEntity, RemoveEntity, ClearEntities, GetEntities to
bhkConstraint (contributed by LogicDragon).
* Added AddConstraint, RemoveConstraint, ClearConstraints,
GetConstraints to bhkRigidBody (contributed by LogicDragon).
* Fixed EnumerateObjects to write the correct block order (contributed
by LogicDragon).
* Dropping eof check to allow reading multiple nifs from a single
stream (suggested by athile).
* Small refactorings in code generator.
* NiSkinPartition methods now raise an exception when passed an
invalid partition number.
* Fixed NiSkinPartition.SetStripCount bug (see niftools issue
#3395587, reported by gentle_sal).
* Provide defaults for the read values, and check for premature read
failures (contributed by gentle_sal, see niftools issue #3403926).
* Added SetSkinFlag test.
* Improved changelog formatting.
* Update to qhull 2011.1 (contributed by Cold Blood).
* Fixed NiSkinInstance.FixLinks for NULL bones.
Amorilia
committed
* Fixed bug when writing 10.1.0.106 nifs (contributed by gentle_sal,
see issue #3411665).
* Added subshape and material access to bhkConvexListShape
(contributed by gentle_sal, see issue #3411666).
Amorilia
committed
* Added scale access to bhkPackedNiTriStripsShape (contributed by
gentle_sal, see issue #3411667).
* Added method to remove match data from NiTriShapeData (contributed
by gentle_sal, see issue #3411674).
* Made various NiSkinPartition methods public, so they can be
manipulated (contributed by gentle_sal, see issue #3411675).
* SkinWeight is now sortable (contributed by gentle_sal, see issue
#3411664).
Amorilia
committed
Version 0.7.2
=============
* Added some internal template functions for extracting flags and fields from
bitfields to NIF_IO.h.
Amorilia
committed
* 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.
Amorilia
committed
* Implemented write for files of version < 3.3.0.13, so now old files can be
both read and written.
Amorilia
committed
* Made some minor formatting improvements through alteration in the XML Python
script.
Amorilia
committed
* 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.
Amorilia
committed
* 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.
Amorilia
committed
* Restored some missing function implementations.
Amorilia
committed
Version 0.7
===========
* Removed predefines from Doxyfile since they are no longer needed with the
new Python generation method.
Amorilia
committed
* 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.
Amorilia
committed
* Niflib is now using a new XML update method. This means:
Amorilia
committed
- 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.
Amorilia
committed
- 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.
Amorilia
committed
- 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.
Amorilia
committed
- 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.
Amorilia
committed
- 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.)
Amorilia
committed
- 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.
Amorilia
committed
- 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.
Amorilia
committed
* Moved FixLink template file from obj_impl.cpp to its own file.
Amorilia
committed
* Moving array template to nif_basic_types so that NIF_IO won't need to be
exposed.
Amorilia
committed
* Removed erroneous bhkMeshShape object.
Amorilia
committed
* 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."
Amorilia
committed
* All Bridge Commander demo NIF files other than those that contain voxel 3D
textures can now be read.
Amorilia
committed
* 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.
Amorilia
committed
* Updated user's guide.
Amorilia
committed
* Added functions to NiImage and NiTextureProperty to allow texture name to be
manipulated in <= 3.1 files.
Amorilia
committed
* Updated ComplexShape to take the above objects into account when deciding
whether to include UV coordinates.
Amorilia
committed
* Fixed one more bug that allows 3.3.0.13 files to work again.
Amorilia
committed
* Added 10.0.1.2 to the list of "supported" versions.
Amorilia
committed
* Added version 3.1 to list of "supported" versions.
Amorilia
committed
* Fixed several bugs that were preventing support for old 3.1 and below files
from working. Many of these can now be loaded.
Amorilia
committed
* 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.
Amorilia
committed
* Objects now have a Create methods and register themselves in the global
object map with pre-main initialization, making obj_factories.cpp obsolete.
Amorilia
committed
* 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.
Amorilia
committed
* Re-exposed IDENTITY constants and marked then NIFLIB_API. Now you must use
MatrixXX::IDENTITY instead of MatrixXX::Identity() again.
Amorilia
committed
* 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.
Amorilia
committed
* Added a new Debug - DLL configuration.
Amorilia
committed
* 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.
Amorilia
committed
* Added ClearHardareSkinInfo function to NiTriBasedGeom so that
SetSkinPartition functions could be made NIFLIB_HIDDEN.
Amorilia
committed
* Removed access to unknown data in NiPSysEmitterCtlrData.
Amorilia
committed
* Some function and enum name changes in NiAlphaProperty and
NiStencilProperty to be more consistent with OpenGL and the rest of Niflib.
Amorilia
committed
* Removed access to unknown parameters in NiSourceTexture and merged file name
access functions.
Amorilia
committed
* Removed redundant Get/SetHidden functions from NiAVObject, use
Get/SetVisibility instead.
Amorilia
committed
* Renamed Get/SetCollision to Get/SetCollisionMode in NiAVObject.
Amorilia
committed
* Made sure all classes fell into 3 namespaces: Niflib, triangle_stripper,
and NvTriStrip.
Amorilia
committed
* Removed some functions from NiObject that did nothing.
Amorilia
committed
* Moved structures contained within the ComplexShape class outside of it so
they're easier to reference.
Amorilia
committed
* Moved ListAncestors and FindCommonAncestor helper functions from inside of
NiGeometry to public interface.
Amorilia
committed
* Added IsAnimated function to NiObjectNET.
Amorilia
committed
* 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.
Amorilia
committed
* 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.
Amorilia
committed
* Added warning comments to generated files advising the user not to edit them
manually.
Amorilia
committed
* 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.
Amorilia
committed
* Project file now properly uses "Multithreaded DLL" runtime library for
"Release - DLL" configuration.
Amorilia
committed
* Removed old SWIG-related code as SWIG will no longer be suppoted.
Amorilia
committed
* Fixed GetIDString virtual function missmatch that was causing the name not
to show up when the function was called from a NiObjectRef.
Amorilia
committed
* Removed precompiled header file stuff from project files that is no longer
used.
Amorilia
committed
* 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.
Amorilia
committed
* All public functions are now documented with Doxygen comments.
Amorilia
committed
* Changed all occurrences of uint and ushort to unsigned int and unsigned
short.
Amorilia
committed
* Fixed many GCC compile problems. Niflib should compile in GCC now:
Amorilia
committed
- Replaced array template with a simpler one that works with GCC.
Amorilia
committed
- Replaced "unsigned" with "unsigned int" GCC doesn't like this.
Amorilia
committed
- Changed C++ style unsigned int casts so GCC will be able to understand
them.
Amorilia
committed
- Properly capitalized include file names in niflib.cpp.
Amorilia
committed
* 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.
Amorilia
committed
Version 0.6.2
=============
* Improved support for Freedom Force games thanks to Symon.
* Change NodeGroup to use pointers instead of Refs.
Amorilia
committed
* NiGeometry::BindSkin now throws an exception if one of the passed in bone
references is NULL.
Amorilia
committed
* NiNode::IsSplitMeshProxy now returns false if it is a skin influence.
Amorilia
committed
* NiTriShapeData::GetTriangles now only returns valid triangles.
Amorilia
committed
* 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.
Amorilia
committed
* Added NiGeometry::NormalizeSkinWeights function to ensure all skin weights
add up to 1.0 on export.
Amorilia
committed
* ComplexShape::Split now cuts out weights below 0.1 and normalizes the
result.
Amorilia
committed
* Fixed a bug which could cause NiSkinInstance to try to call a function on a
NiNode that was in the midst of destruction.
Amorilia
committed
* Added NiGeometry::ApplySkinOffset function to clear nodes between skins and
the skeleton root.
Amorilia
committed
* Added some new object types for NIF version 3.1, but most files still can't
be opened.
Amorilia
committed
* Fixed object auto-destruct. Niflib is now destroying objects properly and
reporting the right number of Objects from NiObject::NumObjectsInMemory.
Amorilia
committed
* Generated array code now prints 20 items per 2D array in total when verbose
is off.
Amorilia
committed
* Fixed duplicated Read call. All FFvt3R demo files can now be read by
Niflib.
Amorilia
committed
* Added NiGeometry::ApplyTransforms function to automatically zero out the
transforms of a mesh and apply them to its vertices.
Amorilia
committed
* Added NiGeometryData::Transform function to apply an arbitrary transform
to all vertices and normals of a mesh (used by above).
Amorilia
committed
* Added NiNode::PropagateTransform function to apply a NiNode's local
transform to its children and then zero it out.
Amorilia
committed
* Fixed NiTriShapeData to properly set numTriangles when SetTriangles is
called.
Amorilia
committed
* Removed "set root to scene root" option from NiGeometry::BindSkin.
Amorilia
committed
* Replaced GetSkinInfluencedVertices function with GetSkinDeformation
function which takes in references to two vectors and fills them with the
skin deformed vertices and normals
Amorilia
committed
* Added constructor to Matrix44 to convert from Matrix33.
Amorilia
committed
* Change default to little endian instead of big endian.
Amorilia
committed
* Added NiClodSkinInstance and fixed NiClodData. Niflib can now open all
Freedom Force demo NIF files.
Amorilia
committed
* Corrected Shape/particle hierarchy by adding NiGeometry and NiGeometryData.
Amorilia
committed
Version 0.6.0
=============
* Fixed ComplexShape::Merge and ComplexShape::Split to properly take new uvSet
member of TexDesc into account.
* Cleared up all Doxygen and SWIG warnings.
Amorilia
committed
* Replaced _WRITE, _READ, _STRING, AND _FIXLINKS defines with the
corresponding internal function call.
Amorilia
committed
* Replaced STANDARD_INTERNAL_FUNCTIONS with the internal function signatures.
Amorilia
committed
* Made my Doxygen config file use relative paths and added it to SVN so
everyone can generate the same documentation for themselves.
Amorilia
committed
* Added missing NifInfo arguments to ReadNifList calls.
Amorilia
committed
* 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.
Amorilia
committed
* Fixed the array bug by reversing the template arguments and re-doing the
declarations in the Python script.
Amorilia
committed
* Added support for sub version 4 headers, object storage, and link method.
Some objects like NiNodes already read correctly.
Amorilia
committed
* Renamed the following functions:
CheckNifHeader -> GetNifVersion
GetVersion -> ParseVersionString
IsVersionSupported -> IsSupportedVersion
Amorilia
committed
* Added new function, FormatVersionString, to format integer version numbers
as a "#.#.#.#" string.
Amorilia
committed
* 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.
Amorilia
committed
* GetNifVersion now supports version numbers lower than 4.
Amorilia
committed
* Added versions 4.0.0.0 and 10.1.0.106 to version constants and
IsSupportedVersion function.
Amorilia
committed
* Fix iterator problem with skin partition.
Amorilia
committed
* Changed WriteNifTree, and WriteFileGroup functions to take NifInfo
structures instead of version and user_version arguments.
Amorilia
committed
* Changed ReadNifList and ReadNifTree to optionally fill a passed in NifInfo
structure with information from the header of the NIF file they read.
Amorilia
committed
* Fixed some tabs that were done with spaces instead of actual tab characters.
Amorilia
committed
* Added * dot product and ^ cross product aliases.
Amorilia
committed
* Removed unused vars from UpdateTangentSpace().
Amorilia
committed
* Made UpdateTangentSpace set the name of newly created NiBinaryExtraData
objects.
Amorilia
committed
* Added option to ComplexShape::Split to request the generation of tangent
space.
Amorilia
committed
* Fixed NiSkinData overall offset transform calculation.
Amorilia
committed
* Added an exception and some extra checks to
NiTriBasedGeomData::UpdateTangentSpace. Also made minor style changes.
Amorilia
committed
* Fixed warning created by changing NiStencilProperty's enabled value to a
byte.
Amorilia
committed
* Added UpdateTangentSpace() to NiTriBasedGeom class.
Amorilia
committed
* Rewrote large chunks of WriteFileGroup related routines.
Amorilia
committed
* Added a WriteNifTree which allows for multiple roots (not exposed
publically)
Amorilia
committed
* Added option to BindSkin to scene instead of skeleton root.
Amorilia
committed
* Fixed bug in RemoveController
Amorilia
committed
* Added helpers to NiControllerManager for sequence management
Amorilia
committed
* Propegated user_version in routines which take a version
Amorilia
committed
* Add more rigorous recursive block reordering for Oblivion collision objects.
Amorilia
committed
* Add NiClod and NiClodData.
Amorilia
committed
* Add NifSkope base partitioning algorithm
Amorilia
committed
* Add ability to use TriStripper instead of NvStripper for tristripdata
Amorilia
committed
* Changed XML Name of NiLODNode's data ref.
Amorilia
committed
* Updated method names to use 'LOD'.
Amorilia
committed
* 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.
Amorilia
committed
* Added transform parameter to ComplexShape::Split because changing the
transforms after the fact ruins the skin binds.
Amorilia
committed
* Fixed missing includes in enum files to work without PCH.
Amorilia
committed
* Added missing NvTriStripper files back into solution.
Amorilia
committed
* Created accessors for LOD type nodes.
Amorilia
committed
* Fixed the relative include paths and tried to update solution, but havn't
got the precompiled header working right.
Amorilia
committed
* Removed gen and obj folder and added lib folder.
Amorilia
committed
* Restructured folder hierarchy. Now with separate include, src, and lib
folders.
Amorilia
committed
* Reverted a previous change to the skin calculations which turned out to be
incorrect.
Amorilia
committed
* Forgot to include NiLODData.cpp in project file.
Amorilia
committed
* Included missing implementation of Weight methods.
Amorilia
committed
* Fix issues with NiControllerSequence in niflib.
Amorilia
committed
* StringOffset now defaults to -1
Amorilia
committed
* Search in StringPalette now finds exact matches rather than partial matches.
Amorilia
committed
* Reuse same StringPalette for Controller and all child blocks
Amorilia
committed
* Convert bspline controller offsets from ushort to uint
Amorilia
committed
* fix bug in nicontrollersequence with string palette
Amorilia
committed
* Add LOD Bone Controller handler
Amorilia
committed
* Added a max_bones_per_partition parameter to ComplexShape::Split and
NiTriBasedGeom::GenHardwareSkinInfo in anticipation of Tazpn adding that
capability.
Amorilia
committed
* Modify so that niflib compiles as it points to the correct enum file.
Amorilia
committed
* Changed around XML enum support a bit.
Amorilia
committed
* Remove enum value maps and update comments in generated files.
Amorilia
committed
* Update niflib with Enumerations generated from nif.xml.
Amorilia
committed
* Fixed problems I created in nif.xml
Amorilia
committed
* Some simple updates to Niflib documentation.
Amorilia
committed
* Updated ComplexShape::Split to optionally support stripification and skin
partition generation.
Amorilia
committed
* Altered exception message for NiTriBasedGeomData::SetTriangles
Amorilia
committed
* Casting functions now check for NULL as of last commit.
Amorilia
committed
* First pass at strippifier in niflib.
Amorilia
committed
* Adding some helpers on to access priority on controllers.
Amorilia
committed
* Changed the order of file includes so that ControllerLink vectors would be
recognized by Swig.
Amorilia
committed
* Added some end lines to make Swig 1.3.29 work.
Amorilia
committed
* Fix issues with writing out KF files related to footer
Amorilia
committed
* Add support for changing the priority on NiSequenceControllers
Amorilia
committed
* Added Key templates to Python wrapper.
Amorilia
committed
* 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.
Amorilia
committed
* Removed BlocksInMemory function. Call NiObject::NumObjectsInMemory instead.
Amorilia
committed
* Implemented GetScale and SetScale functions of bhkNiTriStripsShape to fix
linker errors when compiling Python wrapper.
Amorilia
committed
* Initial changes for skin partition access. Needs more work around
protecting the user from inconsistencies.
Amorilia
committed
* Update bounding sphere info. on skin so not unknown anymore
Amorilia
committed
* Fixed Matrix44 != operator
Amorilia
committed
* Added bounding box related functions to NiAVObject.
Amorilia
committed
* 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.
Amorilia
committed
* Merged in changes required by 3ds Max Exporter as I try to remove the
cloned copy of niflib completely from svn.
Amorilia
committed
* Added Merge function to ComplexShape.
Amorilia
committed
* Added != operator to Matrix44.
Amorilia
committed
* Added IsSplitMeshProxy function to NiNode.
Amorilia
committed
* Fixed some include problems.
Amorilia
committed
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.
Amorilia
committed
* Added SendNifTreeToBindPos function to set a whole file to the bind
position.
Amorilia
committed
* NiTriStripsData::GetTriangles no longer returns triangles that have
matching vertices and, thus, no surface area.
Amorilia
committed
* Added a SetBoneWeights function to NiTriBasedGeom which automatically
calculates the correct bone center and radius.
Amorilia
committed
* The NiSkinData::SetBoneWeights function now requires the radius and center
as arguments.
Amorilia
committed
* Removed lingering cout statements except those within debug defines.
Amorilia
committed
* NiNode flags now default to 8 for "Not a skin influence."
Amorilia
committed
* 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.
Amorilia
committed
* The NiTriBasedGeomData::SetUVSetCount function now sets the hasUVs bool
value correctly.
Amorilia
committed
* Fixed some skin related bugs in ComplexShape::Split.
Amorilia
committed
* 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.
Amorilia
committed
* Added TexCoord == operator.
Amorilia
committed
* Changed type of Triangle members to unsigned short.
Amorilia
committed
* Color4 now defaults to all zeros.
Amorilia
committed
* NiAVObject::AddProperty now takes a const argument.
Amorilia
committed
* Fixed exception in NiTexturingProperty to throw a runtime_error instead of
a string.
Amorilia
committed
* NiTriBasedGeom::BindSkin should now automatically finds the skeleton root
by itself. The skeleton_root argument has been removed.
Amorilia
committed
Version 0.5.4
=============
* Added a != operator to Vector3.
Amorilia
committed
* Initialized TexCoord values to 0.0f.
Amorilia
committed
* Added Visibility flag functions to NiAVObject.cpp
Amorilia
committed
* Fixed NiTexturingProperty::SetTexture to set the internal hasXTexture
variables correctly.
Amorilia
committed
* Fix DAoC bug with kob_m_head01.nif
Amorilia
committed
* Cycle type is now set correctly on controllers created or modified by
MergeNifTrees function.
Amorilia
committed
* Changed default for new controllers to 12; Active/Clamped. Should get
cycle type from NiControllerSequence.
Amorilia
committed
* Add a default value for the new controller so that its active.
Amorilia
committed
* Update niflib with bspline interpolation abilities
Amorilia
committed
* Change mergeniftrees to default phase to 0.0f instead of 1.0f as its a
better default value.
Amorilia
committed
* 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.
Amorilia
committed
* We can't have functions on compounds as all files for them are generated. Removed CalcNumTriangles so Niflib programs will link.
Amorilia
committed
* Applied latest XML changes.
Amorilia
committed
* Split some things that were previously part of NIF_IO.h into their own
files to make SWIG wrapping work better.
Amorilia
committed
* Made the MergeNifTree function set the start time, stop time, and
frequency of the controller it attaches an interpolator to.
Amorilia
committed
* Made the MergeNifTree function create a controller of the right type and
attach it to the specified node if one does not already exist.
Amorilia
committed
* Fixed an include statement to be relative.
Amorilia
committed
* 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.
Amorilia
committed
* 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).
Amorilia
committed
* Add helper methods for useful flags for importing data in avobject and
controller sequence.
Amorilia
committed
* Suppressed most SWIG warnings.
Amorilia
committed
* Tried to implement MergeNifTrees for KF files with a NiControllerSequence
root. Untested.
* Minor change to Python wrapper file.
Amorilia
committed
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
Amorilia
committed
* Cloning support for both single NIF classes and entire NIF trees.
Amorilia
committed
* Major API redesign featuring:
Amorilia
committed
- Type-aware smart pointers instead of a single generic blk_ref.
Amorilia
committed
- Direct access to functions of all classes instead of interfaces.
Amorilia
committed
- Ability to test whether one class is derived from another and do dynamic
and static casting between compatible types.
Amorilia
committed
- No more attributes, values are accessed directly with functions in the
classes that hold them instead.
Amorilia
committed
- Math structures now feature operations such as matrix inverse, as well
as operators such as multiplying matrices and vertices.
Amorilia
committed
- Much faster operation overall due to hard-coded read and write functions
generated from the XML and no sting look-ups when accessing attributes.
Amorilia
committed
- New skin API which makes skin morphed vertices availiable and makes
moving the mesh to the bind position optional.
Amorilia
committed
- All symbols are now enclosed in the Niflib namespace
Amorilia
committed
- Most old interfaces transitioned directly to new equivalents to reduce
code re-writing when upgrading from previous versions.
Amorilia
committed
Version 0.4
===========
* Deleted redundant autoconf macro file.
Amorilia
committed
* Zombie killed.
Amorilia
committed
* Improved compiler flags for windows build.
Amorilia
committed
* fixed key type in NiMorphData
Amorilia
committed
* Started work on 10.x compatibility.
Amorilia
committed
* Added GetMorphKeyType, and SetMorphKeyType to IMorphData interface.
Amorilia
committed
* Supported new header formats for version 5.0.0.1 to version 20.0.0.4 in
WriteNifTree function.
Amorilia
committed
* Updated texsource and texdesc attributes to the latest DocSys info.
Amorilia
committed
* Finished updating all existing blocks to the latest DocSys info.
Amorilia
committed
* Added NiBoolData and APSysData blocks.
Amorilia
committed
* Fixed new attr_bool and attr_unk292bytes attributes so that they can be
used by blocks.
Amorilia
committed
* added -fPIC to cppflags to resolve amd64 compilation issue under linux
Amorilia
committed
* fixed GCC compilation issue
Amorilia
committed
* removed linux library prefix for the python wrapper
Amorilia
committed
* Made internal cross-reference system more general.
Amorilia
committed
* Implemented NiControllerSequence block and interface.
Amorilia
committed
* Implemented NiBoneLODController. Problems with writing connected NiSkinData
blocks, however.
Amorilia
committed
* Some internal changes.
Amorilia
committed
* Fixed destructor of NiControllerSequence to remove itself as the parent of
blocks it points to if it is destroyed.
Amorilia
committed
* Implemented NiLookAtInterpolator.
Amorilia
committed
* Several fixes to blocks that didn't have arrays expanded in the DocSys.
Amorilia
committed
* DocSys is now fully implemented, so all versions 4.x and 10.x files that
it supports are now supported.
Amorilia
committed
* Fixed one warning in GCC.
Amorilia
committed
* Implemented GetLinks() functions for NiBoneLODController and
NiControllerSequence blocks so that their internal links will be followed
when writing files.
Amorilia
committed
* scons example program compilation (see comments in SConstruct)
Amorilia
committed
* Merged NiKeyframeData and NiTransformData under AKeyframeData.
Amorilia
committed
* Implemented most of the IPixelData interface.
Amorilia
committed
* adding cygwin support
Amorilia
committed
* Attempted to implement IPixelData and IPalette interfaces. Yet to be
thoroughly tested.
Amorilia
committed
* Debugged and tested IPixelData functions.
Amorilia
committed
* Fixed a bug that was causing a Segmentation Fault when Nif files that
had NiSourceTexture blocks were read by code compiled with GCC.
Amorilia
committed
* updated python wrapper interface
Amorilia
committed
* niftexture workaround
Amorilia
committed
* CPPFLAGS fix in compile examples.
Amorilia
committed
* Removed two more memset calls just in case.
Amorilia
committed
* fixed NiPixelData bugs
Amorilia
committed
* fixed GCC warnings, fixed NIF footer
Amorilia
committed
* Fixed a few more bugs in IPixelData.
Amorilia
committed
Version 0.3
===========
* updated Makefile to compile the complete library
* fixed small error in NiStringExtraData asString() function
Amorilia
committed
* Began work on multiple version support.
Amorilia
committed
* Added NiParticleSystemController block and started on particlegroup
attribute.
Amorilia
committed
* Changed the type name of some attributes to match DocSys database.
Amorilia
committed
* Changed IndexAttr to LinkAttr for consistency. Type name is now "link."
Amorilia
committed
* Fixed inheritance of light blocks - didn't notice they didn't work since no
official file seems to use them.
Amorilia
committed
* Finished basic version support - still need to implement new block reading
scheme for version 5 and up.
Amorilia
committed
* Updated all basic blocks with correctly versioned attributes from DocSys
database.
Amorilia
committed
* Updated all data blocks except for NiSkinPartition and NiControllerSequence
to react correctly to known version differences up to 10.1.0.0.
Amorilia
committed
* All blocks but the above now have both a Read and a Write function.
Amorilia
committed
* Sped up CreateBlock and AddAttr functions.
Amorilia
committed
* Implemented the new header scheme for reading.
Amorilia
committed
* 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.
Amorilia
committed
* 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.
Amorilia
committed
* Made a few fixes as I updated the Maya importer to the changes.
Amorilia
committed
* NiSkinPartition and NiLODNode are now read fully and can be examined by
calling the asString function or written back out to a file unchanged.
Amorilia
committed
* NiTriStripsData has been given a public interface, ITriStripsData, so that
the triangle strips it contains can be extracted.
Amorilia
committed
* added autoconf/automake files + small changes to make things GCC compatible
again
Amorilia
committed
* libtool fix in automake for compilation of shared libraries under Cygwin
Amorilia
committed
* Fixed GCC compilation issues.
Amorilia
committed
* Decided to start putting generated files on CVS.
Amorilia
committed
* automake small improvement (now only builds the python wrapper independent
of additional library files)
Amorilia
committed
* Removed py_wrap.cpp and added a simple windows compilation script for use
with the MS Visual C++ Toolkit.
Amorilia
committed
* Fixed bug in Matrix33.Set(...)
Amorilia
committed
* Matrix22.Set(...) bugfix
Amorilia
committed
* Python wrapper fixes & improvements.
Amorilia
committed
* Python wrapper exception support fix.
Amorilia
committed
* More Python wrapper fixes and upgrades.
Amorilia
committed
* Fixed AShapeData::SetVertexCount to allow for zero normals and/or colors.
Amorilia
committed
* Removed some other recent changes.
Amorilia
committed
* Suppressed all the warnings except one.
Amorilia
committed
* Changed attr_nodeancestor to attr_controllertarget and fixed it so it
recognizes any controllable block, not just nodes.
Amorilia
committed
* Made all struct types consistent with proper constructors.
Amorilia
committed
* 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.
Amorilia
committed
* "Name" is an attribute again; special functions to set it have been
removed.
Amorilia
committed
* Synced supported blocks to the DocSys, adopting the new position of the
AParticleModifier block.
Amorilia
committed
* SetTriangles() bugfix and added range checking on vertex & triangle counts.
Amorilia
committed
* Fix writing NIF header + small fix in AShapeData
Amorilia
committed
* Python SWIG support for strings in structure members
Amorilia
committed
* Starting to write code for exporting x*.kf and x*.nif files. (unfinished)
Amorilia
committed
* Fixed a bug in TargetControllerAttr.
Amorilia
committed
* Added IsController function.
Amorilia
committed
* Added ParentAttr for use in the AParticleModifier block.
Amorilia
committed
* Minor fixes for the Python wrapper. Initial try to write XKf and XNif
files.
Amorilia
committed
* Rewrote children of AKeyedData using NifStream function, and added public
interfaces for them.
Amorilia
committed
* Added some const qualifiers.
Amorilia
committed
* Fixed NiTextKeyExtraData read & write.
Amorilia
committed
* Finished code that creates XNif & XKf files; fixed bug in
AttrControllerTarget.
Amorilia
committed
* Fixed a bug I introduced yesterday.
Amorilia
committed
* Killed a zombie.
Amorilia
committed
* Added const correctness; fixed a few GCC compilation problems.
Amorilia
committed
* Fixed a few bugs I introduced because I forgot to add a few consts. :oops:
Amorilia
committed
* 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.
Amorilia
committed
* Attempted to fix NiSkinData to be const friendly.
Amorilia
committed
* Fixed a bug that was introduced in the reference bone reference tracking.
Amorilia
committed
* Bone matrix calculation function (Blender helper function) fixed.
Amorilia
committed
* Removed BoneToMatrix44 helper functions. (They will be implemented in
Python in the Blender exporter.)
Amorilia
committed
* Fixed a little bug I introduced earlier. :oops:
Amorilia
committed
* Corrected default state of node flags.
Amorilia
committed
* Added SCons support for building niflib.
Amorilia
committed
* Corrected skeleton root calculation.
Amorilia
committed
* Fixed error that caused an invalid number to be written in the unknown 4
floats within NiSkinData. Now simply write 4 zeros.
Amorilia
committed
* Re-implemented NiMorphData with NifStream function, fixing a bug in its
Write function at the same time.
Amorilia
committed
* Changed several of the attributes of NiPixelData to attributes in
preparation for creating an interface for it.
Amorilia
committed
* Fixed a bug in AExtraData for version 10.0.1.0+
Amorilia
committed
* Started adding Doxygen format documentation comments to niflib.h.
Amorilia
committed
* Renamed Color structure to Color4.
Amorilia
committed
* More documentation comments added.
Amorilia
committed
* Renamed TextureSource to TexSource and Texture to TexDesc.
Amorilia
committed
* Fixed overall transformation in NiSkinData.
Amorilia
committed
* Added more documentation.
Amorilia
committed
* Renamed INode functions dealing with bind position so that each function
clearly expresses the type of matrix its dealing with - local or world.
Amorilia
committed
* Removed the GNU buildsystem; SCons supersedes it.
Amorilia
committed
Version 0.2.1
=============
* Changed Float3, Matrix33, and Matrix44 from C arrays to structures that