What we have (italicized functions need testing):
- NifOpen - opens a nif for reading and/or writing.
- NifClose - closes a previously opened nif, useful for freeing up some memory if you're done with it.
- NifGetPath - returns the path to a nif-file - useful if it's writable, since this is different from the path that was passed to NifOpen.
- NifGetOriginalPath - returns the path to the original file that a writable nif is a copy of.
- NifGetNumExtraData - returns the number of ExtraData nodes attached to the root of a nif.
- NifGetExtraDataIndexByName - returns the index number of a given ExtraData node. Useful for finding, for example, the Prn node.
- NifAddExtraData - adds an ExtraData node
- NifDeleteNthExtraData - deletes the specified ExtraData
- NifGetNthExtraDataName - returns the name of the ExtraData
- NifSetNthExtraDataName - sets the name of the ExtraData
- NifGetNthExtraDataType - returns the type of the ExtraData (as far as I can tell, Oblivion uses only String and BSXFlags ExtraDatas).
- NifGetNthExtraDataString - returns the value of a StringExtraData node. If the Nth ExtraData node is not a String, it fails.
- NifSetNthExtraDataString - sets the value of a StringExtraData node. If the Nth ExtraData node is not a String, it fails.
- NifGetNumChildren - returns the number of Child nodes attached to the root of a nif.
- NifGetChildIndexByName - returns the index number of a given Child node. Useful for finding, for example, the Scb node.
- NifDeleteNthChild - deletes the specified Child (removing said scabbard, perhaps).
- NifGetNthChildLocalTransform - returns the Local Transform matrix (4x4) of the given Child.
- NifGetNthChildLocalTranslation - returns the Local Translation vector (3) of the given Child.
- NifGetNthChildLocalRotation - returns the Local Rotation matrix (3x3) of the given Child.
- NifGetNthChildLocalScale - returns the Local Scale float of the given Child.
- NifSetNthChildLocalTransformTEMP - takes 16 floats and 2 ints, the 16 floats being the entries of a 4x4 matrix that will be the new Local Transform matrix, and the ints specifying which Child of which nif. Will be replaced to take an array when the ability to accept arrays as a parameter is added to OBSE's plugin API. Backwards compatibility will remain, however.
- NifSetNthChildLocalTranslation - takes 3 floats for the new Local Translation vector. Will be replaced as above.
- NifSetNthChildLocalRotation - takes 9 floats for the new Local Rotation matrix. Will be replaced as above.
- NifSetNthChildLocalScale - takes 1 float. Will not be replaced (no need).
- NifNthChildHasMaterial - returns whether or not the Nth child has a Material property node.
- NifGetNthChildMaterial - returns the name of the Material property.
- NifSetNthChildMaterial - allows you to set the name of the Material property.
- NifNthChildHasTexture - returns whether or not the Nth child has a Texture property node.
- NifGetNthChildTexture - returns the filepath to the Nth child's texture file.
- NifSetNthChildTexture - sets the filepath of the Nth child's texture property to a new texture file.
So, kind of a last call for new features for v1.0. The collision stuff is not likely to make it.
Also, Scruggs's new code doesn't quite fix the problem I was having with the load. He's looking into how to get me access to the .obse co-save file when I need it, though, so it should be fixed for final release. Many, many thanks to him for doing that; I know he's extremely busy and it's a rather non-trivial request.