The name change is due to occasional mix-ups between NifScript and the Blender Nif Scripts. Because I don't want to infringe on NifTools' excellent work, I decided to rename this utility. NifSE, of course, is a portmanteau of OBSE and Niflib, the principal components of this utility. It's not really a "Nif Script Extender", so, like the SATs, I'm going to declare that it doesn't stand for anything, the name is just "NifSE" (in my head I pronounce it "nif-sea"). Cuz I'm weird like that.
Anyway, for v1.0 we have a staggering number of new functions, plus an entirely new backbone system for storing, manipulating, and saving nif files. There is no more hard-drive bloat, as the nif files are only very briefly written to disk for Oblivion to read when it needs them, and deleted again as soon as it is finished. Nifs are saved in the .obse co-save file, and recreated as needed. The old functions are both now considered deprecated (as is the undocumented function NifGetBackShield, which was never supported in the first place), but backwards compatibility has been maintained, and the old functions have been somewhat updated to use the new system and therefore no longer clutter the user's harddrive.
Download available from http://code.google.com/p/nifse/. Source code also available through SVN at the same place.
(Currently none)
- β:1
- Semi-stable release of α:5, for UV2 beta.
- Future β
- Get/Set NiAlphaProperty
- Get/Set NiStencilProperty
- Basic collision functionality (check that it's there, remove, etc)
- Get/Set NiAlphaProperty
- Future versions
- Copy/paste branches from one nif to another
- Get/Set UV coordinates
- Animations
- Copy/paste branches from one nif to another
- NifSE v1.0 (changes from NifScript v0.9)
- NifGetAltGrip and NifGetOffhand deprecated.
- New system for handling Nif files prevents extraneous or unnecessary files from being saved to the harddrive, and eliminates all files while Oblivion is not running.
- New Functions:Spoiler
- NifOpen
- NifClose
- NifGetPath
- NifGetOriginalPath
- NifGetNumBlocks
- GetNifTypeIndex
- NiObjectGetType
- NiObjectGetTypeName
- NiObjectTypeDerivesFrom
- NiObjectNETGetName
- NiObjectNETSetName
- NiObjectNETGetNumExtraData
- NiObjectNETGetExtraData
- NiObjectNETGetExtraDataByName
- NiObjectNETAddExtraData
- NiObjectNETDeleteExtraData
- NiExtraDataGetName
- NiExtraDataSetName
- NiExtraDataGetNumber
- NiExtraDataSetNumber
- NiExtraDataGetString
- NiExtraDataSetString
- NiExtraDataGetArray
- NiExtraDataSetArray
- NiAVObjectGetLocalTransform
- NiAVObjectGetLocalTranslation
- NiAVObjectGetLocalRotation
- NiAVObjectGetLocalScale
- NiAVObjectSetLocalTransform
- NiAVObjectSetLocalTranslation
- NiAVObjectSetLocalRotation
- NiAVObjectSetLocalScale
- NiAVObjectSetLocalTransformTEMP
- NiAVObjectSetLocalTranslationTEMP
- NiAVObjectSetLocalRotationTEMP
- NiAVObjectGetNumProperties
- NiAVObjectGetProperties
- NiAVObjectGetPropertyByType
- NiAVObjectAddProperty
- NiAVObjectDeleteProperty
- NiNodeGetNumChildren
- NiNodeGetChildren
- NiNodeGetChildByName
- NiNodeDeleteChild
- NiTexturingPropertyGetTextureCount
- NiTexturingPropertySetTextureCount
- NiTexturingPropertyHasTexture
- NiTexturingPropertyGetTextureSource
- NiTexturingPropertyGetTextureClampMode
- NiTexturingPropertyGetTextureFilterMode
- NiTexturingPropertyGetTextureFlags
- NiTexturingPropertyGetTextureUVSet
- NiTexturingPropertyTextureHasTransform
- NiTexturingPropertyGetTextureTranslation
- NiTexturingPropertyGetTextureTiling
- NiTexturingPropertyGetTextureRotation
- NiTexturingPropertyGetTextureCenterOffset
- NiSourceTextureIsixternal
- NiSourceTextureGetFile
- NiSourceTextureSetExternalTexture
- NifOpen
- Functions Deprecated:Spoiler
- NifGetAltGrip
- NifGetOffHand
- NifGetBackShield (undocumented, untested function)
- NifGetAltGrip
- Alpha Changelog:Spoiler
- α:6
- Improved BSA reading code somewhat to read BSAs that have incorrectly set compression bits.
- No new functionality; use α:5 example plugin.
- Improved BSA reading code somewhat to read BSAs that have incorrectly set compression bits.
- α:5
- Complete refactoring of almost every function.
- Now better reflects underlying structure of the nif.
- Functions are far more flexible - will allow you to read or change any block that supports that type of data.
- Functions now take and return a block's absolute position within the nif, rather than position relative to the root node - allows for access to sub-sub-nodes.
- Still more fixes to deprecated functions - old random crashes should be fixed.
- Complete refactoring of almost every function.
- α:4
- Requires OBSE v0019.
- Passing documentation to CSE re-disabled.
- Deprecated functions fixed to utilize new system; backwards compatibility and general cleanliness now simultaneously supported.
- Requires OBSE v0019.
- α1.3
- Private alpha requiring early, debug build of OBSE v0019.
- Passing documentation to CSE re-enabled, tested - no hang-ups with new OBSE.
- Loaded savefiles correctly find modified nifs; no more missing mesh markers!
- Private alpha requiring early, debug build of OBSE v0019.
- α1.2
- Passing documentation to CSE disabled due to Editor hang-ups. Will be re-enabled once hangs are fixed.
- Fixed Bug: NifOpen now gives each model a unique ID.
- Fixed Bug: NifClose no longer crashes the game.
- Passing documentation to CSE disabled due to Editor hang-ups. Will be re-enabled once hangs are fixed.
- α1.1
- Addition of documentation-passing function to Editor initiation for use with shadeMe's CSE.
- Fixed Bug: NifGetNthChildLocalRotation now correctly returns the actual local rotation matrix.
- Changes to the structure of the DLL and the method of including zlib has dramatically increased the size of the DLL. Changes are also not widely tested.
- Addition of documentation-passing function to Editor initiation for use with shadeMe's CSE.
- α1.0
- Initial version
- α:6
- NifGetAltGrip and NifGetOffhand deprecated.
- NifScript v0.9
- Proof of Concept
- Functions:Spoiler
- NifGetAltGrip
- NifGetOffhand
- NifGetAltGrip
- Proof of Concept
Full documentation of all of the functions in v1.0 can be found http://cs.elderscrolls.com/constwiki/index.php/Category:NifSE.
http://www.gamesas.com/index.php?/topic/1089336-alpha-nifse-v10/
http://www.gamesas.com/index.php?/topic/922622-betawipz-nifscript/
- an OBSE plug-in by DragoonWraith
2. Participating in the Alpha
3. Contact
4. Credits
== Introduction ==
NifSE is an OBSE plug-in that allows Oblivion script to operate on Nif files during run-time. Nif files, or NetImmerse Format files, are 3D meshes which are used by Oblivion. These files have long been editable with 3D software and NifTools' excellent NifSkope utility, but certain operations on Nif files have been desirable for scripters and therefore impossible - until now.
More specifically, NifSE uses the NifTools' incredible "C++ library for loading, modifying, and exporting NIF files," NifLib, to create new functions through OBSE's plug-in API. Much thanks to both the OBSE and NifTools teams for their hard work that has made this possible.
== Participating in the Alpha ==
The download is available at http://code.google.com/p/nifse/. It is for testing purposes only, and will break any mods that require the deprecated functions, as backwards-compatibility has been broken in the alpha (it will be restored). Please e-mail me at dragoonwraith+nifse [at] gmail.com if you would like to test it, as there are some additional things you need to know. If you're not interested in testing it, please wait at least until the Beta.
== Contact ==
The preferred method of contacting me is just posting in this thread. Alternatively, a PM on these forums also works.
Notes on my Talk page on the CS Wiki are also acceptable, as are e-mails to: dragoonwraith+nifse [at] gmail.com
Messages or posts on any other forum or website may likely be missed for extended periods of time.
== Credits ==
- The Oblivion Script Extender team: ianpatt, behippo, and scruggsywuggsy the ferretWithout OBSE, I would have lost interest in modding Oblivion long, long ago, and without the plug-in API that they created, this project never could have happened
Special thanks to Scruggs and behippo for answering myriad questions about coding for the OBSE plug-in API, and to Scruggs for implementing new features just for me!
Extra-double-thanks for Scruggs's continued support, including writing crucial new hooks that allow NifSE to avoid ever cluttering your HD. - The NifTools NifLib team: Shon, amorilia, tazpn, xoalinThe NifTools team had done all the hard work for me - all I did was provide an interface between OBSE and NifLib. Kudos to them on an incredible piece of work.
Special thanks to amorilia for answering some questions on Nifs in general, and to tazpn for answering some NifLib specific questions. - Timeslip, author of the Oblivion Mod Manager and a C++ BSA ReaderFor his excellent BSA reading code, which he had contributed to the NifTools team. Many thanks for his tireless help in debugging the utility, and many apologies for wasting his time with such a silly mistake! Also thanks for OBMM, which I'm using to distribute this mod.
- Jean-Loup Gailly and Mark AdlerThe zlib code allows me to read BSA files that I otherwise would not be able to read. zlib is an excellent free utility, one of the best products of open source design to date.
- SpeedoHelp with statically linking zlib into NifScript.
- throttlekitty, JDFan, and trollfFor answering questions that I had about Nifs on the CS Forum.
- opajFor help testing.
- HeX_0ffFor creating Unnecessary Violence, an incredible mod using NifScript, NifSE's precursor and for general help and feedback on NifScript. Also for helping to spur on NifSE's development
- SkycaptainFor getting me back into the game, and giving great feedback on what should be added to NifScript for NifSE.
- ShowlerFor early support of NifSE and an offer to alpha test.
- Wyzard256, zone22, Skycaptain, HeX_0ff, shadeMe, Gekko64, anithinks, Obliver, and all those who offered good luck and well wishes when my hard drive failed.For serious help, advice, links, downloads, and even offers to help pay (!) for a data recovery service when my harddrive failed. Special thanks to zone22 for actually calling me on Skype and spending a good four hours (!) talking me through the data recovery process, and to HeX and shade for offering to do the same. It is only thanks to them that this project, along with ARES and hundreds of my own personal files, did not get entirely destroyed in that failure.
Please post any ideas you have for the utility here!