skyrim-item-roulette/nif.xml

7342 lines
456 KiB
XML
Raw Permalink Normal View History

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE niftoolsxml>
<niftoolsxml version="0.9.0.0">
<!--These are the version numbers marked as supported by NifSkope.
The num argument is the numeric representation created by storing
each part of the version in a byte. For example, 4.0.0.2 is
0x04000002 and 10.1.0.0 is 0x0A010000.-->
<version num="2.3">Dark Age of Camelot</version>
<version num="3.0">Star Trek: Bridge Commander</version>
<version num="3.03">Dark Age of Camelot</version>
<version num="3.1">Dark Age of Camelot, Star Trek: Bridge Commander</version>
<version num="3.3.0.13">Oblivion</version>
<version num="4.0.0.0">Freedom Force</version>
<version num="4.0.0.2">Morrowind, Freedom Force</version>
<version num="4.1.0.12">Dark Age of Camelot</version>
<version num="4.2.0.2">Civilization IV</version>
<version num="4.2.1.0">Dark Age of Camelot, Civilization IV</version>
<version num="4.2.2.0">Dark Age of Camelot, Civilization IV, Empire Earth II, Culpa Innata</version>
<version num="10.0.1.0">Zoo Tycoon 2, Civilization IV, Oblivion</version>
<version num="10.0.1.2">Oblivion</version>
<version num="10.0.1.3">?</version>
<version num="10.1.0.0">Dark Age of Camelot, Civilization IV, Freedom Force vs. the 3rd Reich, Axis and Allies, Kohan 2, Entropia Universe, Wildlife Park 2, The Guild 2, NeoSteam, Empire Earth II</version>
<version num="10.1.0.101">Oblivion</version>
<version num="10.1.0.106">Oblivion</version>
<version num="10.2.0.0">Civilization IV, Oblivion, Loki, Pro Cycling Manager, Prison Tycoon, Red Ocean, Wildlife Park 2</version>
<version num="10.2.0.1">Worldshift</version>
<version num="10.4.0.1">Worldshift</version>
<version num="20.0.0.4">Civilization IV, Oblivion, Sid Meier's Railroads</version>
<version num="20.0.0.5">Oblivion</version>
<version num="20.1.0.3">Megami Tensei: Imagine</version>
<version num="20.2.0.7">Emerge, Empire Earth III, Fallout 3, Skyrim, Fallout 4</version>
<version num="20.2.0.8">Emerge, Empire Earth III, Atlantica</version>
<!-- version 20.3.0.1 is found in Props/GDCLargeContainer.nif-->
<version num="20.3.0.1">Emerge</version>
<!-- version 20.3.0.2 is found in PFX/fx_muzzle_flash_example.nif -->
<version num="20.3.0.2">Emerge</version>
<version num="20.3.0.3">Emerge</version>
<version num="20.3.0.6">Emerge</version>
<version num="20.3.0.9">Warhammer, Lazeska, Divinity 2, Howling Sword, Bully SE</version>
<version num="20.3.1.1">Fantasy Frontier, Aura Kingdom</version>
<version num="20.3.1.2">Fantasy Frontier, Aura Kingdom</version>
<version num="20.5.0.0">KrazyRain</version>
<version num="20.6.0.0">KrazyRain</version>
<version num="20.6.5.0">Epic Mickey</version>
<version num="30.0.0.2">Emerge</version>
<version num="30.1.0.1">Emerge</version>
<version num="30.1.0.3">Rocksmith, Rocksmith 2014</version>
<version num="30.2.0.3">Ghost In The Shell: First Assault, MapleStory 2</version>
<!--Basic Types-->
<basic name="bool" count="1">
A boolean; 32-bit from 4.0.0.2, and 8-bit from 4.1.0.1 on.
</basic>
<basic name="byte" count="1">
An unsigned 8-bit integer.
</basic>
<basic name="uint" count="1">
An unsigned 32-bit integer.
</basic>
<basic name="ulittle32" count="1">
A litte-endian unsigned 32-bit integer.
</basic>
<basic name="ushort" count="1">
An unsigned 16-bit integer.
</basic>
<basic name="int" count="1">
A signed 32-bit integer.
</basic>
<basic name="short" count="1">
A signed 16-bit integer.
</basic>
<basic name="BlockTypeIndex" count="0">
A 16-bit (signed?) integer, which is used in the header to refer to a particular object type in a object type string array.
The upper bit appears to be a flag used for PhysX block types.
</basic>
<basic name="char" count="0">
An 8-bit character.
</basic>
<basic name="FileVersion" count="0">
A 32-bit integer that stores the version in hexadecimal format with each byte representing a number in the version string.
Some widely-used versions and their hex representation:
4.0.0.2: 0x04000002
4.1.0.12: 0x0401000C
4.2.0.2: 0x04020002
4.2.1.0: 0x04020100
4.2.2.0: 0x04020200
10.0.1.0: 0x0A000100
10.1.0.0: 0x0A010000
10.2.0.0: 0x0A020000
20.0.0.4: 0x14000004
20.0.0.5: 0x14000005
</basic>
<basic name="Flags" count="0">
A 16-bit integer, used for bit flags. Function varies by object type.
</basic>
<basic name="float" count="0">
A standard 32-bit floating point number.
</basic>
<!--
<basic name="hfloat" count="0">
A 16-bit floating point number.
</basic>
-->
<basic name="HeaderString" count="0">
A variable length string that ends with a newline character (0x0A). The string starts as follows depending on the version:
Version &lt;= 10.0.1.0: 'NetImmerse File Format'
Version &gt;= 10.1.0.0: 'Gamebryo File Format'
</basic>
<basic name="LineString" count="0">
A variable length string that ends with a newline character (0x0A).
</basic>
<basic name="Ptr" count="0" istemplate="1">
A signed 32-bit integer, referring to a object before this one in the hierarchy. Examples: Bones, gravity objects.
</basic>
<basic name="Ref" count="0" istemplate="1">
A signed 32-bit integer, used to refer to another object; -1 means no reference. These should always point down the hierarchy. Other types are used for indexes that point to objects higher up.
</basic>
<basic name="StringOffset" count="0">
A 32-bit unsigned integer, used to refer to strings in a NiStringPalette.
</basic>
<basic name="StringIndex" count="0">
A 32-bit unsigned integer, used to refer to strings in the header.
</basic>
<!--Enumerations
These are like C enums and consist of a list of options. They can appear
as parts of compounds or niobjects.-->
<bitflags name="AccumFlags" storage="uint">
Describes the options for the accum root on NiControllerSequence.
<option value="0" name="ACCUM_X_TRANS">X Translation will be accumulated.</option>
<option value="1" name="ACCUM_Y_TRANS">Y Translation will be accumulated.</option>
<option value="2" name="ACCUM_Z_TRANS">Z Translation will be accumulated.</option>
<option value="3" name="ACCUM_X_ROT">X Rotation will be accumulated.</option>
<option value="4" name="ACCUM_Y_ROT">Y Rotation will be accumulated.</option>
<option value="5" name="ACCUM_Z_ROT">Z Rotation will be accumulated.</option>
<option value="6" name="ACCUM_X_FRONT">+X is front facing. (Default)</option>
<option value="7" name="ACCUM_Y_FRONT">+Y is front facing.</option>
<option value="8" name="ACCUM_Z_FRONT">+Z is front facing.</option>
<option value="9" name="ACCUM_NEG_FRONT">-X is front facing.</option>
</bitflags>
<enum name="ApplyMode" storage="uint">
Describes how the vertex colors are blended with the filtered texture color.
<option value="0" name="APPLY_REPLACE">Replaces existing color</option>
<option value="1" name="APPLY_DECAL">For placing images on the object like stickers.</option>
<option value="2" name="APPLY_MODULATE">Modulates existing color. (Default)</option>
<option value="3" name="APPLY_HILIGHT">PS2 Only. Function Unknown.</option>
<option value="4" name="APPLY_HILIGHT2">Parallax Flag in some Oblivion meshes.</option>
</enum>
<enum name="TexType" storage="uint">
The type of texture.
<option value="0" name="BASE_MAP">The basic texture used by most meshes.</option>
<option value="1" name="DARK_MAP">Used to darken the model with false lighting.</option>
<option value="2" name="DETAIL_MAP">Combined with base map for added detail. Usually tiled over the mesh many times for close-up view.</option>
<option value="3" name="GLOSS_MAP">Allows the specularity (glossyness) of an object to differ across its surface.</option>
<option value="4" name="GLOW_MAP">Creates a glowing effect. Basically an incandescence map.</option>
<option value="5" name="BUMP_MAP">Used to make the object appear to have more detail than it really does.</option>
<option value="6" name="NORMAL_MAP">Used to make the object appear to have more detail than it really does.</option>
<option value="7" name="PARALLAX_MAP">Parallax map.</option>
<option value="8" name="DECAL_0_MAP">For placing images on the object like stickers.</option>
<option value="9" name="DECAL_1_MAP">For placing images on the object like stickers.</option>
<option value="10" name="DECAL_2_MAP">For placing images on the object like stickers.</option>
<option value="11" name="DECAL_3_MAP">For placing images on the object like stickers.</option>
</enum>
<enum name="KeyType" storage="uint">
The type of animation interpolation (blending) that will be used on the associated key frames.
<option value="1" name="LINEAR_KEY">Use linear interpolation.</option>
<option value="2" name="QUADRATIC_KEY">Use quadratic interpolation. Forward and back tangents will be stored.</option>
<option value="3" name="TBC_KEY">Use Tension Bias Continuity interpolation. Tension, bias, and continuity will be stored.</option>
<option value="4" name="XYZ_ROTATION_KEY">For use only with rotation data. Separate X, Y, and Z keys will be stored instead of using quaternions.</option>
<option value="5" name="CONST_KEY">Step function. Used for visibility keys in NiBoolData.</option>
</enum>
<enum name="OblivionHavokMaterial" storage="uint">
Bethesda Havok. Material descriptor for a Havok shape in Oblivion.
<option value="0" name="OB_HAV_MAT_STONE">Stone</option>
<option value="1" name="OB_HAV_MAT_CLOTH">Cloth</option>
<option value="2" name="OB_HAV_MAT_DIRT">Dirt</option>
<option value="3" name="OB_HAV_MAT_GLASS">Glass</option>
<option value="4" name="OB_HAV_MAT_GRASS">Grass</option>
<option value="5" name="OB_HAV_MAT_METAL">Metal</option>
<option value="6" name="OB_HAV_MAT_ORGANIC">Organic</option>
<option value="7" name="OB_HAV_MAT_SKIN">Skin</option>
<option value="8" name="OB_HAV_MAT_WATER">Water</option>
<option value="9" name="OB_HAV_MAT_WOOD">Wood</option>
<option value="10" name="OB_HAV_MAT_HEAVY_STONE">Heavy Stone</option>
<option value="11" name="OB_HAV_MAT_HEAVY_METAL">Heavy Metal</option>
<option value="12" name="OB_HAV_MAT_HEAVY_WOOD">Heavy Wood</option>
<option value="13" name="OB_HAV_MAT_CHAIN">Chain</option>
<option value="14" name="OB_HAV_MAT_SNOW">Snow</option>
<option value="15" name="OB_HAV_MAT_STONE_STAIRS">Stone Stairs</option>
<option value="16" name="OB_HAV_MAT_CLOTH_STAIRS">Cloth Stairs</option>
<option value="17" name="OB_HAV_MAT_DIRT_STAIRS">Dirt Stairs</option>
<option value="18" name="OB_HAV_MAT_GLASS_STAIRS">Glass Stairs</option>
<option value="19" name="OB_HAV_MAT_GRASS_STAIRS">Grass Stairs</option>
<option value="20" name="OB_HAV_MAT_METAL_STAIRS">Metal Stairs</option>
<option value="21" name="OB_HAV_MAT_ORGANIC_STAIRS">Organic Stairs</option>
<option value="22" name="OB_HAV_MAT_SKIN_STAIRS">Skin Stairs</option>
<option value="23" name="OB_HAV_MAT_WATER_STAIRS">Water Stairs</option>
<option value="24" name="OB_HAV_MAT_WOOD_STAIRS">Wood Stairs</option>
<option value="25" name="OB_HAV_MAT_HEAVY_STONE_STAIRS">Heavy Stone Stairs</option>
<option value="26" name="OB_HAV_MAT_HEAVY_METAL_STAIRS">Heavy Metal Stairs</option>
<option value="27" name="OB_HAV_MAT_HEAVY_WOOD_STAIRS">Heavy Wood Stairs</option>
<option value="28" name="OB_HAV_MAT_CHAIN_STAIRS">Chain Stairs</option>
<option value="29" name="OB_HAV_MAT_SNOW_STAIRS">Snow Stairs</option>
<option value="30" name="OB_HAV_MAT_ELEVATOR">Elevator</option>
<option value="31" name="OB_HAV_MAT_RUBBER">Rubber</option>
</enum>
<enum name="Fallout3HavokMaterial" storage="uint">
Bethesda Havok. Material descriptor for a Havok shape in Fallout 3 and Fallout NV.
<option value="0" name="FO_HAV_MAT_STONE">Stone</option>
<option value="1" name="FO_HAV_MAT_CLOTH">Cloth</option>
<option value="2" name="FO_HAV_MAT_DIRT">Dirt</option>
<option value="3" name="FO_HAV_MAT_GLASS">Glass</option>
<option value="4" name="FO_HAV_MAT_GRASS">Grass</option>
<option value="5" name="FO_HAV_MAT_METAL">Metal</option>
<option value="6" name="FO_HAV_MAT_ORGANIC">Organic</option>
<option value="7" name="FO_HAV_MAT_SKIN">Skin</option>
<option value="8" name="FO_HAV_MAT_WATER">Water</option>
<option value="9" name="FO_HAV_MAT_WOOD">Wood</option>
<option value="10" name="FO_HAV_MAT_HEAVY_STONE">Heavy Stone</option>
<option value="11" name="FO_HAV_MAT_HEAVY_METAL">Heavy Metal</option>
<option value="12" name="FO_HAV_MAT_HEAVY_WOOD">Heavy Wood</option>
<option value="13" name="FO_HAV_MAT_CHAIN">Chain</option>
<option value="14" name="FO_HAV_MAT_BOTTLECAP">Bottlecap</option>
<option value="15" name="FO_HAV_MAT_ELEVATOR">Elevator</option>
<option value="16" name="FO_HAV_MAT_HOLLOW_METAL">Hollow Metal</option>
<option value="17" name="FO_HAV_MAT_SHEET_METAL">Sheet Metal</option>
<option value="18" name="FO_HAV_MAT_SAND">Sand</option>
<option value="19" name="FO_HAV_MAT_BROKEN_CONCRETE">Broken Concrete</option>
<option value="20" name="FO_HAV_MAT_VEHICLE_BODY">Vehicle Body</option>
<option value="21" name="FO_HAV_MAT_VEHICLE_PART_SOLID">Vehicle Part Solid</option>
<option value="22" name="FO_HAV_MAT_VEHICLE_PART_HOLLOW">Vehicle Part Hollow</option>
<option value="23" name="FO_HAV_MAT_BARREL">Barrel</option>
<option value="24" name="FO_HAV_MAT_BOTTLE">Bottle</option>
<option value="25" name="FO_HAV_MAT_SODA_CAN">Soda Can</option>
<option value="26" name="FO_HAV_MAT_PISTOL">Pistol</option>
<option value="27" name="FO_HAV_MAT_RIFLE">Rifle</option>
<option value="28" name="FO_HAV_MAT_SHOPPING_CART">Shopping Cart</option>
<option value="29" name="FO_HAV_MAT_LUNCHBOX">Lunchbox</option>
<option value="30" name="FO_HAV_MAT_BABY_RATTLE">Baby Rattle</option>
<option value="31" name="FO_HAV_MAT_RUBBER_BALL">Rubber Ball</option>
<option value="32" name="FO_HAV_MAT_STONE_PLATFORM">Stone</option>
<option value="33" name="FO_HAV_MAT_CLOTH_PLATFORM">Cloth</option>
<option value="34" name="FO_HAV_MAT_DIRT_PLATFORM">Dirt</option>
<option value="35" name="FO_HAV_MAT_GLASS_PLATFORM">Glass</option>
<option value="36" name="FO_HAV_MAT_GRASS_PLATFORM">Grass</option>
<option value="37" name="FO_HAV_MAT_METAL_PLATFORM">Metal</option>
<option value="38" name="FO_HAV_MAT_ORGANIC_PLATFORM">Organic</option>
<option value="39" name="FO_HAV_MAT_SKIN_PLATFORM">Skin</option>
<option value="40" name="FO_HAV_MAT_WATER_PLATFORM">Water</option>
<option value="41" name="FO_HAV_MAT_WOOD_PLATFORM">Wood</option>
<option value="42" name="FO_HAV_MAT_HEAVY_STONE_PLATFORM">Heavy Stone</option>
<option value="43" name="FO_HAV_MAT_HEAVY_METAL_PLATFORM">Heavy Metal</option>
<option value="44" name="FO_HAV_MAT_HEAVY_WOOD_PLATFORM">Heavy Wood</option>
<option value="45" name="FO_HAV_MAT_CHAIN_PLATFORM">Chain</option>
<option value="46" name="FO_HAV_MAT_BOTTLECAP_PLATFORM">Bottlecap</option>
<option value="47" name="FO_HAV_MAT_ELEVATOR_PLATFORM">Elevator</option>
<option value="48" name="FO_HAV_MAT_HOLLOW_METAL_PLATFORM">Hollow Metal</option>
<option value="49" name="FO_HAV_MAT_SHEET_METAL_PLATFORM">Sheet Metal</option>
<option value="50" name="FO_HAV_MAT_SAND_PLATFORM">Sand</option>
<option value="51" name="FO_HAV_MAT_BROKEN_CONCRETE_PLATFORM">Broken Concrete</option>
<option value="52" name="FO_HAV_MAT_VEHICLE_BODY_PLATFORM">Vehicle Body</option>
<option value="53" name="FO_HAV_MAT_VEHICLE_PART_SOLID_PLATFORM">Vehicle Part Solid</option>
<option value="54" name="FO_HAV_MAT_VEHICLE_PART_HOLLOW_PLATFORM">Vehicle Part Hollow</option>
<option value="55" name="FO_HAV_MAT_BARREL_PLATFORM">Barrel</option>
<option value="56" name="FO_HAV_MAT_BOTTLE_PLATFORM">Bottle</option>
<option value="57" name="FO_HAV_MAT_SODA_CAN_PLATFORM">Soda Can</option>
<option value="58" name="FO_HAV_MAT_PISTOL_PLATFORM">Pistol</option>
<option value="59" name="FO_HAV_MAT_RIFLE_PLATFORM">Rifle</option>
<option value="60" name="FO_HAV_MAT_SHOPPING_CART_PLATFORM">Shopping Cart</option>
<option value="61" name="FO_HAV_MAT_LUNCHBOX_PLATFORM">Lunchbox</option>
<option value="62" name="FO_HAV_MAT_BABY_RATTLE_PLATFORM">Baby Rattle</option>
<option value="63" name="FO_HAV_MAT_RUBBER_BALL_PLATFORM">Rubber Ball</option>
<option value="64" name="FO_HAV_MAT_STONE_STAIRS">Stone</option>
<option value="65" name="FO_HAV_MAT_CLOTH_STAIRS">Cloth</option>
<option value="66" name="FO_HAV_MAT_DIRT_STAIRS">Dirt</option>
<option value="67" name="FO_HAV_MAT_GLASS_STAIRS">Glass</option>
<option value="68" name="FO_HAV_MAT_GRASS_STAIRS">Grass</option>
<option value="69" name="FO_HAV_MAT_METAL_STAIRS">Metal</option>
<option value="70" name="FO_HAV_MAT_ORGANIC_STAIRS">Organic</option>
<option value="71" name="FO_HAV_MAT_SKIN_STAIRS">Skin</option>
<option value="72" name="FO_HAV_MAT_WATER_STAIRS">Water</option>
<option value="73" name="FO_HAV_MAT_WOOD_STAIRS">Wood</option>
<option value="74" name="FO_HAV_MAT_HEAVY_STONE_STAIRS">Heavy Stone</option>
<option value="75" name="FO_HAV_MAT_HEAVY_METAL_STAIRS">Heavy Metal</option>
<option value="76" name="FO_HAV_MAT_HEAVY_WOOD_STAIRS">Heavy Wood</option>
<option value="77" name="FO_HAV_MAT_CHAIN_STAIRS">Chain</option>
<option value="78" name="FO_HAV_MAT_BOTTLECAP_STAIRS">Bottlecap</option>
<option value="79" name="FO_HAV_MAT_ELEVATOR_STAIRS">Elevator</option>
<option value="80" name="FO_HAV_MAT_HOLLOW_METAL_STAIRS">Hollow Metal</option>
<option value="81" name="FO_HAV_MAT_SHEET_METAL_STAIRS">Sheet Metal</option>
<option value="82" name="FO_HAV_MAT_SAND_STAIRS">Sand</option>
<option value="83" name="FO_HAV_MAT_BROKEN_CONCRETE_STAIRS">Broken Concrete</option>
<option value="84" name="FO_HAV_MAT_VEHICLE_BODY_STAIRS">Vehicle Body</option>
<option value="85" name="FO_HAV_MAT_VEHICLE_PART_SOLID_STAIRS">Vehicle Part Solid</option>
<option value="86" name="FO_HAV_MAT_VEHICLE_PART_HOLLOW_STAIRS">Vehicle Part Hollow</option>
<option value="87" name="FO_HAV_MAT_BARREL_STAIRS">Barrel</option>
<option value="88" name="FO_HAV_MAT_BOTTLE_STAIRS">Bottle</option>
<option value="89" name="FO_HAV_MAT_SODA_CAN_STAIRS">Soda Can</option>
<option value="90" name="FO_HAV_MAT_PISTOL_STAIRS">Pistol</option>
<option value="91" name="FO_HAV_MAT_RIFLE_STAIRS">Rifle</option>
<option value="92" name="FO_HAV_MAT_SHOPPING_CART_STAIRS">Shopping Cart</option>
<option value="93" name="FO_HAV_MAT_LUNCHBOX_STAIRS">Lunchbox</option>
<option value="94" name="FO_HAV_MAT_BABY_RATTLE_STAIRS">Baby Rattle</option>
<option value="95" name="FO_HAV_MAT_RUBBER_BALL_STAIRS">Rubber Ball</option>
<option value="96" name="FO_HAV_MAT_STONE_STAIRS_PLATFORM">Stone</option>
<option value="97" name="FO_HAV_MAT_CLOTH_STAIRS_PLATFORM">Cloth</option>
<option value="98" name="FO_HAV_MAT_DIRT_STAIRS_PLATFORM">Dirt</option>
<option value="99" name="FO_HAV_MAT_GLASS_STAIRS_PLATFORM">Glass</option>
<option value="100" name="FO_HAV_MAT_GRASS_STAIRS_PLATFORM">Grass</option>
<option value="101" name="FO_HAV_MAT_METAL_STAIRS_PLATFORM">Metal</option>
<option value="102" name="FO_HAV_MAT_ORGANIC_STAIRS_PLATFORM">Organic</option>
<option value="103" name="FO_HAV_MAT_SKIN_STAIRS_PLATFORM">Skin</option>
<option value="104" name="FO_HAV_MAT_WATER_STAIRS_PLATFORM">Water</option>
<option value="105" name="FO_HAV_MAT_WOOD_STAIRS_PLATFORM">Wood</option>
<option value="106" name="FO_HAV_MAT_HEAVY_STONE_STAIRS_PLATFORM">Heavy Stone</option>
<option value="107" name="FO_HAV_MAT_HEAVY_METAL_STAIRS_PLATFORM">Heavy Metal</option>
<option value="108" name="FO_HAV_MAT_HEAVY_WOOD_STAIRS_PLATFORM">Heavy Wood</option>
<option value="109" name="FO_HAV_MAT_CHAIN_STAIRS_PLATFORM">Chain</option>
<option value="110" name="FO_HAV_MAT_BOTTLECAP_STAIRS_PLATFORM">Bottlecap</option>
<option value="111" name="FO_HAV_MAT_ELEVATOR_STAIRS_PLATFORM">Elevator</option>
<option value="112" name="FO_HAV_MAT_HOLLOW_METAL_STAIRS_PLATFORM">Hollow Metal</option>
<option value="113" name="FO_HAV_MAT_SHEET_METAL_STAIRS_PLATFORM">Sheet Metal</option>
<option value="114" name="FO_HAV_MAT_SAND_STAIRS_PLATFORM">Sand</option>
<option value="115" name="FO_HAV_MAT_BROKEN_CONCRETE_STAIRS_PLATFORM">Broken Concrete</option>
<option value="116" name="FO_HAV_MAT_VEHICLE_BODY_STAIRS_PLATFORM">Vehicle Body</option>
<option value="117" name="FO_HAV_MAT_VEHICLE_PART_SOLID_STAIRS_PLATFORM">Vehicle Part Solid</option>
<option value="118" name="FO_HAV_MAT_VEHICLE_PART_HOLLOW_STAIRS_PLATFORM">Vehicle Part Hollow</option>
<option value="119" name="FO_HAV_MAT_BARREL_STAIRS_PLATFORM">Barrel</option>
<option value="120" name="FO_HAV_MAT_BOTTLE_STAIRS_PLATFORM">Bottle</option>
<option value="121" name="FO_HAV_MAT_SODA_CAN_STAIRS_PLATFORM">Soda Can</option>
<option value="122" name="FO_HAV_MAT_PISTOL_STAIRS_PLATFORM">Pistol</option>
<option value="123" name="FO_HAV_MAT_RIFLE_STAIRS_PLATFORM">Rifle</option>
<option value="124" name="FO_HAV_MAT_SHOPPING_CART_STAIRS_PLATFORM">Shopping Cart</option>
<option value="125" name="FO_HAV_MAT_LUNCHBOX_STAIRS_PLATFORM">Lunchbox</option>
<option value="126" name="FO_HAV_MAT_BABY_RATTLE_STAIRS_PLATFORM">Baby Rattle</option>
<option value="127" name="FO_HAV_MAT_RUBBER_BALL_STAIRS_PLATFORM">Rubber Ball</option>
</enum>
<enum name="SkyrimHavokMaterial" storage="uint">
Bethesda Havok. Material descriptor for a Havok shape in Skyrim.
<option value="131151687" name="SKY_HAV_MAT_BROKEN_STONE">Broken Stone</option>
<option value="365420259" name="SKY_HAV_MAT_LIGHT_WOOD">Light Wood</option>
<option value="398949039" name="SKY_HAV_MAT_SNOW">Snow</option>
<option value="428587608" name="SKY_HAV_MAT_GRAVEL">Gravel</option>
<option value="438912228" name="SKY_HAV_MAT_MATERIAL_CHAIN_METAL">Material Chain Metal</option>
<option value="493553910" name="SKY_HAV_MAT_BOTTLE">Bottle</option>
<option value="500811281" name="SKY_HAV_MAT_WOOD">Wood</option>
<option value="591247106" name="SKY_HAV_MAT_SKIN">Skin</option>
<option value="617099282" name="SKY_HAV_MAT_UNKNOWN_617099282">Unknown in Creation Kit v1.9.32.0. Found in Dawnguard DLC in meshes\dlc01\clutter\dlc01deerskin.nif.</option>
<option value="732141076" name="SKY_HAV_MAT_BARREL">Barrel</option>
<option value="781661019" name="SKY_HAV_MAT_MATERIAL_CERAMIC_MEDIUM">Material Ceramic Medium</option>
<option value="790784366" name="SKY_HAV_MAT_MATERIAL_BASKET">Material Basket</option>
<option value="873356572" name="SKY_HAV_MAT_ICE">Ice</option>
<option value="899511101" name="SKY_HAV_MAT_STAIRS_STONE">Stairs Stone</option>
<option value="1024582599" name="SKY_HAV_MAT_WATER">Water</option>
<option value="1028101969" name="SKY_HAV_MAT_UNKNOWN_1028101969">Unknown in Creation Kit v1.6.89.0. Found in actors\draugr\character assets\skeletons.nif.</option>
<option value="1060167844" name="SKY_HAV_MAT_MATERIAL_BLADE_1HAND">Material Blade 1 Hand</option>
<option value="1264672850" name="SKY_HAV_MAT_MATERIAL_BOOK">Material Book</option>
<option value="1286705471" name="SKY_HAV_MAT_MATERIAL_CARPET">Material Carpet</option>
<option value="1288358971" name="SKY_HAV_MAT_SOLID_METAL">Solid Metal</option>
<option value="1305674443" name="SKY_HAV_MAT_MATERIAL_AXE_1HAND">Material Axe 1Hand</option>
<option value="1440721808" name="SKY_HAV_MAT_UNKNOWN_1440721808">Unknown in Creation Kit v1.6.89.0. Found in armor\draugr\draugrbootsfemale_go.nif or armor\amuletsandrings\amuletgnd.nif.</option>
<option value="1461712277" name="SKY_HAV_MAT_STAIRS_WOOD">Stairs Wood</option>
<option value="1486385281" name="SKY_HAV_MAT_MUD">Mud</option>
<option value="1550912982" name="SKY_HAV_MAT_MATERIAL_BOULDER_SMALL">Material Boulder Small</option>
<option value="1560365355" name="SKY_HAV_MAT_STAIRS_SNOW">Stairs Snow</option>
<option value="1570821952" name="SKY_HAV_MAT_HEAVY_STONE">Heavy Stone</option>
<option value="1574477864" name="SKY_HAV_MAT_UNKNOWN_1574477864">Unknown in Creation Kit v1.6.89.0. Found in actors\dragon\character assets\skeleton.nif.</option>
<option value="1591009235" name="SKY_HAV_MAT_UNKNOWN_1591009235">Unknown in Creation Kit v1.6.89.0. Found in trap objects or clutter\displaycases\displaycaselgangled01.nif or actors\deer\character assets\skeleton.nif.</option>
<option value="1607128641" name="SKY_HAV_MAT_MATERIAL_BOWS_STAVES">Material Bows Staves</option>
<option value="1803571212" name="SKY_HAV_MAT_MATERIAL_WOOD_AS_STAIRS">Material Wood As Stairs</option>
<option value="1848600814" name="SKY_HAV_MAT_GRASS">Grass</option>
<option value="1885326971" name="SKY_HAV_MAT_MATERIAL_BOULDER_LARGE">Material Boulder Large</option>
<option value="1886078335" name="SKY_HAV_MAT_MATERIAL_STONE_AS_STAIRS">Material Stone As Stairs</option>
<option value="2022742644" name="SKY_HAV_MAT_MATERIAL_BLADE_2HAND">Material Blade 2Hand</option>
<option value="2025794648" name="SKY_HAV_MAT_MATERIAL_BOTTLE_SMALL">Material Bottle Small</option>
<option value="2168343821" name="SKY_HAV_MAT_SAND">Sand</option>
<option value="2229413539" name="SKY_HAV_MAT_HEAVY_METAL">Heavy Metal</option>
<option value="2290050264" name="SKY_HAV_MAT_UNKNOWN_2290050264">Unknown in Creation Kit v1.9.32.0. Found in Dawnguard DLC in meshes\dlc01\clutter\dlc01sabrecatpelt.nif.</option>
<option value="2518321175" name="SKY_HAV_MAT_DRAGON">Dragon</option>
<option value="2617944780" name="SKY_HAV_MAT_MATERIAL_BLADE_1HAND_SMALL">Material Blade 1Hand Small</option>
<option value="2632367422" name="SKY_HAV_MAT_MATERIAL_SKIN_SMALL">Material Skin Small</option>
<option value="2892392795" name="SKY_HAV_MAT_STAIRS_BROKEN_STONE">Stairs Broken Stone</option>
<option value="2965929619" name="SKY_HAV_MAT_MATERIAL_SKIN_LARGE">Material Skin Large</option>
<option value="2974920155" name="SKY_HAV_MAT_ORGANIC">Organic</option>
<option value="3049421844" name="SKY_HAV_MAT_MATERIAL_BONE">Material Bone</option>
<option value="3070783559" name="SKY_HAV_MAT_HEAVY_WOOD">Heavy Wood</option>
<option value="3074114406" name="SKY_HAV_MAT_MATERIAL_CHAIN">Material Chain</option>
<option value="3106094762" name="SKY_HAV_MAT_DIRT">Dirt</option>
<option value="3424720541" name="SKY_HAV_MAT_MATERIAL_ARMOR_LIGHT">Material Armor Light</option>
<option value="3448167928" name="SKY_HAV_MAT_MATERIAL_SHIELD_LIGHT">Material Shield Light</option>
<option value="3589100606" name="SKY_HAV_MAT_MATERIAL_COIN">Material Coin</option>
<option value="3702389584" name="SKY_HAV_MAT_MATERIAL_SHIELD_HEAVY">Material Shield Heavy</option>
<option value="3708432437" name="SKY_HAV_MAT_MATERIAL_ARMOR_HEAVY">Material Armor Heavy</option>
<option value="3725505938" name="SKY_HAV_MAT_MATERIAL_ARROW">Material Arrow</option>
<option value="3739830338" name="SKY_HAV_MAT_GLASS">Glass</option>
<option value="3741512247" name="SKY_HAV_MAT_STONE">Stone</option>
<option value="3839073443" name="SKY_HAV_MAT_CLOTH">Cloth</option>
<option value="3969592277" name="SKY_HAV_MAT_MATERIAL_BLUNT_2HAND">Material Blunt 2Hand</option>
<option value="4239621792" name="SKY_HAV_MAT_UNKNOWN_4239621792">Unknown in Creation Kit v1.9.32.0. Found in Dawnguard DLC in meshes\dlc01\prototype\dlc1protoswingingbridge.nif.</option>
<option value="4283869410" name="SKY_HAV_MAT_MATERIAL_BOULDER_MEDIUM">Material Boulder Medium</option>
</enum>
<enum name="OblivionLayer" storage="byte">
Bethesda Havok. Describes the collision layer a body belongs to in Oblivion.
<option value="0" name="OL_UNIDENTIFIED">Unidentified (white)</option>
<option value="1" name="OL_STATIC">Static (red)</option>
<option value="2" name="OL_ANIM_STATIC">AnimStatic (magenta)</option>
<option value="3" name="OL_TRANSPARENT">Transparent (light pink)</option>
<option value="4" name="OL_CLUTTER">Clutter (light blue)</option>
<option value="5" name="OL_WEAPON">Weapon (orange)</option>
<option value="6" name="OL_PROJECTILE">Projectile (light orange)</option>
<option value="7" name="OL_SPELL">Spell (cyan)</option>
<option value="8" name="OL_BIPED">Biped (green) Seems to apply to all creatures/NPCs</option>
<option value="9" name="OL_TREES">Trees (light brown)</option>
<option value="10" name="OL_PROPS">Props (magenta)</option>
<option value="11" name="OL_WATER">Water (cyan)</option>
<option value="12" name="OL_TRIGGER">Trigger (light grey)</option>
<option value="13" name="OL_TERRAIN">Terrain (light yellow)</option>
<option value="14" name="OL_TRAP">Trap (light grey)</option>
<option value="15" name="OL_NONCOLLIDABLE">NonCollidable (white)</option>
<option value="16" name="OL_CLOUD_TRAP">CloudTrap (greenish grey)</option>
<option value="17" name="OL_GROUND">Ground (none)</option>
<option value="18" name="OL_PORTAL">Portal (green)</option>
<option value="19" name="OL_STAIRS">Stairs (white)</option>
<option value="20" name="OL_CHAR_CONTROLLER">CharController (yellow)</option>
<option value="21" name="OL_AVOID_BOX">AvoidBox (dark yellow)</option>
<option value="22" name="OL_UNKNOWN1">? (white)</option>
<option value="23" name="OL_UNKNOWN2">? (white)</option>
<option value="24" name="OL_CAMERA_PICK">CameraPick (white)</option>
<option value="25" name="OL_ITEM_PICK">ItemPick (white)</option>
<option value="26" name="OL_LINE_OF_SIGHT">LineOfSight (white)</option>
<option value="27" name="OL_PATH_PICK">PathPick (white)</option>
<option value="28" name="OL_CUSTOM_PICK_1">CustomPick1 (white)</option>
<option value="29" name="OL_CUSTOM_PICK_2">CustomPick2 (white)</option>
<option value="30" name="OL_SPELL_EXPLOSION">SpellExplosion (white)</option>
<option value="31" name="OL_DROPPING_PICK">DroppingPick (white)</option>
<option value="32" name="OL_OTHER">Other (white)</option>
<option value="33" name="OL_HEAD">Head</option>
<option value="34" name="OL_BODY">Body</option>
<option value="35" name="OL_SPINE1">Spine1</option>
<option value="36" name="OL_SPINE2">Spine2</option>
<option value="37" name="OL_L_UPPER_ARM">LUpperArm</option>
<option value="38" name="OL_L_FOREARM">LForeArm</option>
<option value="39" name="OL_L_HAND">LHand</option>
<option value="40" name="OL_L_THIGH">LThigh</option>
<option value="41" name="OL_L_CALF">LCalf</option>
<option value="42" name="OL_L_FOOT">LFoot</option>
<option value="43" name="OL_R_UPPER_ARM">RUpperArm</option>
<option value="44" name="OL_R_FOREARM">RForeArm</option>
<option value="45" name="OL_R_HAND">RHand</option>
<option value="46" name="OL_R_THIGH">RThigh</option>
<option value="47" name="OL_R_CALF">RCalf</option>
<option value="48" name="OL_R_FOOT">RFoot</option>
<option value="49" name="OL_TAIL">Tail</option>
<option value="50" name="OL_SIDE_WEAPON">SideWeapon</option>
<option value="51" name="OL_SHIELD">Shield</option>
<option value="52" name="OL_QUIVER">Quiver</option>
<option value="53" name="OL_BACK_WEAPON">BackWeapon</option>
<option value="54" name="OL_BACK_WEAPON2">BackWeapon (?)</option>
<option value="55" name="OL_PONYTAIL">PonyTail</option>
<option value="56" name="OL_WING">Wing</option>
<option value="57" name="OL_NULL">Null</option>
</enum>
<enum name="Fallout3Layer" storage="byte">
Bethesda Havok. Describes the collision layer a body belongs to in Fallout 3 and Fallout NV.
<option value="0" name="FOL_UNIDENTIFIED">Unidentified (white)</option>
<option value="1" name="FOL_STATIC">Static (red)</option>
<option value="2" name="FOL_ANIM_STATIC">AnimStatic (magenta)</option>
<option value="3" name="FOL_TRANSPARENT">Transparent (light pink)</option>
<option value="4" name="FOL_CLUTTER">Clutter (light blue)</option>
<option value="5" name="FOL_WEAPON">Weapon (orange)</option>
<option value="6" name="FOL_PROJECTILE">Projectile (light orange)</option>
<option value="7" name="FOL_SPELL">Spell (cyan)</option>
<option value="8" name="FOL_BIPED">Biped (green) Seems to apply to all creatures/NPCs</option>
<option value="9" name="FOL_TREES">Trees (light brown)</option>
<option value="10" name="FOL_PROPS">Props (magenta)</option>
<option value="11" name="FOL_WATER">Water (cyan)</option>
<option value="12" name="FOL_TRIGGER">Trigger (light grey)</option>
<option value="13" name="FOL_TERRAIN">Terrain (light yellow)</option>
<option value="14" name="FOL_TRAP">Trap (light grey)</option>
<option value="15" name="FOL_NONCOLLIDABLE">NonCollidable (white)</option>
<option value="16" name="FOL_CLOUD_TRAP">CloudTrap (greenish grey)</option>
<option value="17" name="FOL_GROUND">Ground (none)</option>
<option value="18" name="FOL_PORTAL">Portal (green)</option>
<option value="19" name="FOL_DEBRIS_SMALL">DebrisSmall (white)</option>
<option value="20" name="FOL_DEBRIS_LARGE">DebrisLarge (white)</option>
<option value="21" name="FOL_ACOUSTIC_SPACE">AcousticSpace (white)</option>
<option value="22" name="FOL_ACTORZONE">Actorzone (white)</option>
<option value="23" name="FOL_PROJECTILEZONE">Projectilezone (white)</option>
<option value="24" name="FOL_GASTRAP">GasTrap (yellowish green)</option>
<option value="25" name="FOL_SHELLCASING">ShellCasing (white)</option>
<option value="26" name="FOL_TRANSPARENT_SMALL">TransparentSmall (white)</option>
<option value="27" name="FOL_INVISIBLE_WALL">InvisibleWall (white)</option>
<option value="28" name="FOL_TRANSPARENT_SMALL_ANIM">TransparentSmallAnim (white)</option>
<option value="29" name="FOL_DEADBIP">Dead Biped (green)</option>
<option value="30" name="FOL_CHARCONTROLLER">CharController (yellow)</option>
<option value="31" name="FOL_AVOIDBOX">Avoidbox (orange)</option>
<option value="32" name="FOL_COLLISIONBOX">Collisionbox (white)</option>
<option value="33" name="FOL_CAMERASPHERE">Camerasphere (white)</option>
<option value="34" name="FOL_DOORDETECTION">Doordetection (white)</option>
<option value="35" name="FOL_CAMERAPICK">Camerapick (white)</option>
<option value="36" name="FOL_ITEMPICK">Itempick (white)</option>
<option value="37" name="FOL_LINEOFSIGHT">LineOfSight (white)</option>
<option value="38" name="FOL_PATHPICK">Pathpick (white)</option>
<option value="39" name="FOL_CUSTOMPICK1">Custompick1 (white)</option>
<option value="40" name="FOL_CUSTOMPICK2">Custompick2 (white)</option>
<option value="41" name="FOL_SPELLEXPLOSION">SpellExplosion (white)</option>
<option value="42" name="FOL_DROPPINGPICK">Droppingpick (white)</option>
<option value="43" name="FOL_NULL">Null (white)</option>
</enum>
<enum name="SkyrimLayer" storage="byte">
Bethesda Havok. Describes the collision layer a body belongs to in Skyrim.
<option value="0" name="SKYL_UNIDENTIFIED">Unidentified</option>
<option value="1" name="SKYL_STATIC">Static</option>
<option value="2" name="SKYL_ANIMSTATIC">Anim Static</option>
<option value="3" name="SKYL_TRANSPARENT">Transparent</option>
<option value="4" name="SKYL_CLUTTER">Clutter. Object with this layer will float on water surface.</option>
<option value="5" name="SKYL_WEAPON">Weapon</option>
<option value="6" name="SKYL_PROJECTILE">Projectile</option>
<option value="7" name="SKYL_SPELL">Spell</option>
<option value="8" name="SKYL_BIPED">Biped. Seems to apply to all creatures/NPCs</option>
<option value="9" name="SKYL_TREES">Trees</option>
<option value="10" name="SKYL_PROPS">Props</option>
<option value="11" name="SKYL_WATER">Water</option>
<option value="12" name="SKYL_TRIGGER">Trigger</option>
<option value="13" name="SKYL_TERRAIN">Terrain</option>
<option value="14" name="SKYL_TRAP">Trap</option>
<option value="15" name="SKYL_NONCOLLIDABLE">NonCollidable</option>
<option value="16" name="SKYL_CLOUD_TRAP">CloudTrap</option>
<option value="17" name="SKYL_GROUND">Ground. It seems that produces no sound when collide.</option>
<option value="18" name="SKYL_PORTAL">Portal</option>
<option value="19" name="SKYL_DEBRIS_SMALL">Debris Small</option>
<option value="20" name="SKYL_DEBRIS_LARGE">Debris Large</option>
<option value="21" name="SKYL_ACOUSTIC_SPACE">Acoustic Space</option>
<option value="22" name="SKYL_ACTORZONE">Actor Zone</option>
<option value="23" name="SKYL_PROJECTILEZONE">Projectile Zone</option>
<option value="24" name="SKYL_GASTRAP">Gas Trap</option>
<option value="25" name="SKYL_SHELLCASING">Shell Casing</option>
<option value="26" name="SKYL_TRANSPARENT_SMALL">Transparent Small</option>
<option value="27" name="SKYL_INVISIBLE_WALL">Invisible Wall</option>
<option value="28" name="SKYL_TRANSPARENT_SMALL_ANIM">Transparent Small Anim</option>
<option value="29" name="SKYL_WARD">Ward</option>
<option value="30" name="SKYL_CHARCONTROLLER">Char Controller</option>
<option value="31" name="SKYL_STAIRHELPER">Stair Helper</option>
<option value="32" name="SKYL_DEADBIP">Dead Bip</option>
<option value="33" name="SKYL_BIPED_NO_CC">Biped No CC</option>
<option value="34" name="SKYL_AVOIDBOX">Avoid Box</option>
<option value="35" name="SKYL_COLLISIONBOX">Collision Box</option>
<option value="36" name="SKYL_CAMERASHPERE">Camera Sphere</option>
<option value="37" name="SKYL_DOORDETECTION">Door Detection</option>
<option value="38" name="SKYL_CONEPROJECTILE">Cone Projectile</option>
<option value="39" name="SKYL_CAMERAPICK">Camera Pick</option>
<option value="40" name="SKYL_ITEMPICK">Item Pick</option>
<option value="41" name="SKYL_LINEOFSIGHT">Line of Sight</option>
<option value="42" name="SKYL_PATHPICK">Path Pick</option>
<option value="43" name="SKYL_CUSTOMPICK1">Custom Pick 1</option>
<option value="44" name="SKYL_CUSTOMPICK2">Custom Pick 2</option>
<option value="45" name="SKYL_SPELLEXPLOSION">Spell Explosion</option>
<option value="46" name="SKYL_DROPPINGPICK">Dropping Pick</option>
<option value="47" name="SKYL_NULL">Null</option>
</enum>
<enum name="MoppDataBuildType" storage="byte">
Bethesda Havok.
A byte describing if MOPP Data is organized into chunks (PS3) or not (PC)
<option value="0" name="BUILT_WITH_CHUNK_SUBDIVISION">Organized in chunks for PS3.</option>
<option value="1" name="BUILT_WITHOUT_CHUNK_SUBDIVISION">Not organized in chunks for PC. (Default)</option>
<option value="2" name="BUILD_NOT_SET">Build type not set yet.</option>
</enum>
<enum name="PlatformID" storage="uint" prefix="PLATFORM">
Target platform for NiPersistentSrcTextureRendererData (later than 30.1).
<option value="0" name="ANY" />
<option value="1" name="XENON" />
<option value="2" name="PS3" />
<option value="3" name="DX9" />
<option value="4" name="WII" />
<option value="5" name="D3D10" />
</enum>
<enum name="RendererID" storage="uint" prefix="RENDERER">
Target renderer for NiPersistentSrcTextureRendererData (until 30.1).
<option value="0" name="XBOX360" />
<option value="1" name="PS3" />
<option value="2" name="DX9" />
<option value="3" name="D3D10" />
<option value="4" name="WII" />
<option value="5" name="GENERIC" />
<option value="6" name="D3D11" />
</enum>
<enum name="PixelFormat" storage="uint" prefix="PX">
Describes the pixel format used by the NiPixelData object to store a texture.
<option value="0" name="FMT_RGB">24-bit RGB. 8 bits per red, blue, and green component.</option>
<option value="1" name="FMT_RGBA">32-bit RGB with alpha. 8 bits per red, blue, green, and alpha component.</option>
<option value="2" name="FMT_PAL">8-bit palette index.</option>
<option value="3" name="FMT_PALA">8-bit palette index with alpha.</option>
<option value="4" name="FMT_DXT1">DXT1 compressed texture.</option>
<option value="5" name="FMT_DXT3">DXT3 compressed texture.</option>
<option value="6" name="FMT_DXT5">DXT5 compressed texture.</option>
<option value="7" name="FMT_RGB24NONINT">(Deprecated) 24-bit noninterleaved texture, an old PS2 format.</option>
<option value="8" name="FMT_BUMP">Uncompressed dU/dV gradient bump map.</option>
<option value="9" name="FMT_BUMPLUMA">Uncompressed dU/dV gradient bump map with luma channel representing shininess.</option>
<option value="10" name="FMT_RENDERSPEC">Generic descriptor for any renderer-specific format not described by other formats.</option>
<option value="11" name="FMT_1CH">Generic descriptor for formats with 1 component.</option>
<option value="12" name="FMT_2CH">Generic descriptor for formats with 2 components.</option>
<option value="13" name="FMT_3CH">Generic descriptor for formats with 3 components.</option>
<option value="14" name="FMT_4CH">Generic descriptor for formats with 4 components.</option>
<option value="15" name="FMT_DEPTH_STENCIL">Indicates the NiPixelFormat is meant to be used on a depth/stencil surface.</option>
<option value="16" name="FMT_UNKNOWN" />
</enum>
<enum name="PixelTiling" storage="uint" prefix="PX">
Describes whether pixels have been tiled from their standard row-major format to a format optimized for a particular platform.
<option value="0" name="TILE_NONE" />
<option value="1" name="TILE_XENON" />
<option value="2" name="TILE_WII" />
<option value="3" name="TILE_NV_SWIZZLED" />
</enum>
<enum name="PixelComponent" storage="uint" prefix="PX">
Describes the pixel format used by the NiPixelData object to store a texture.
<option value="0" name="COMP_RED" />
<option value="1" name="COMP_GREEN" />
<option value="2" name="COMP_BLUE" />
<option value="3" name="COMP_ALPHA" />
<option value="4" name="COMP_COMPRESSED" />
<option value="5" name="COMP_OFFSET_U" />
<option value="6" name="COMP_OFFSET_V" />
<option value="7" name="COMP_OFFSET_W" />
<option value="8" name="COMP_OFFSET_Q" />
<option value="9" name="COMP_LUMA" />
<option value="10" name="COMP_HEIGHT" />
<option value="11" name="COMP_VECTOR_X" />
<option value="12" name="COMP_VECTOR_Y" />
<option value="13" name="COMP_VECTOR_Z" />
<option value="14" name="COMP_PADDING" />
<option value="15" name="COMP_INTENSITY" />
<option value="16" name="COMP_INDEX" />
<option value="17" name="COMP_DEPTH" />
<option value="18" name="COMP_STENCIL" />
<option value="19" name="COMP_EMPTY" />
</enum>
<enum name="PixelRepresentation" storage="uint" prefix="PX">
Describes how each pixel should be accessed on NiPixelFormat.
<option value="0" name="REP_NORM_INT" />
<option value="1" name="REP_HALF" />
<option value="2" name="REP_FLOAT" />
<option value="3" name="REP_INDEX" />
<option value="4" name="REP_COMPRESSED" />
<option value="5" name="REP_UNKNOWN" />
<option value="6" name="REP_INT" />
</enum>
<enum name="PixelLayout" storage="uint" prefix="PX">
Describes the color depth in an NiTexture.
<option value="0" name="LAY_PALETTIZED_8">Texture is in 8-bit palettized format.</option>
<option value="1" name="LAY_HIGH_COLOR_16">Texture is in 16-bit high color format.</option>
<option value="2" name="LAY_TRUE_COLOR_32">Texture is in 32-bit true color format.</option>
<option value="3" name="LAY_COMPRESSED">Texture is compressed.</option>
<option value="4" name="LAY_BUMPMAP">Texture is a grayscale bump map.</option>
<option value="5" name="LAY_PALETTIZED_4">Texture is in 4-bit palettized format.</option>
<option value="6" name="LAY_DEFAULT">Use default setting.</option>
<option value="7" name="LAY_SINGLE_COLOR_8" />
<option value="8" name="LAY_SINGLE_COLOR_16" />
<option value="9" name="LAY_SINGLE_COLOR_32" />
<option value="10" name="LAY_DOUBLE_COLOR_32" />
<option value="11" name="LAY_DOUBLE_COLOR_64" />
<option value="12" name="LAY_FLOAT_COLOR_32" />
<option value="13" name="LAY_FLOAT_COLOR_64" />
<option value="14" name="LAY_FLOAT_COLOR_128" />
<option value="15" name="LAY_SINGLE_COLOR_4" />
<option value="16" name="LAY_DEPTH_24_X8" />
</enum>
<enum name="MipMapFormat" storage="uint">
Describes how mipmaps are handled in an NiTexture.
<option value="0" name="MIP_FMT_NO">Texture does not use mip maps.</option>
<option value="1" name="MIP_FMT_YES">Texture uses mip maps.</option>
<option value="2" name="MIP_FMT_DEFAULT">Use default setting.</option>
</enum>
<enum name="AlphaFormat" storage="uint">
Describes how transparency is handled in an NiTexture.
<option value="0" name="ALPHA_NONE">No alpha.</option>
<option value="1" name="ALPHA_BINARY">1-bit alpha.</option>
<option value="2" name="ALPHA_SMOOTH">Interpolated 4- or 8-bit alpha.</option>
<option value="3" name="ALPHA_DEFAULT">Use default setting.</option>
</enum>
<enum name="TexClampMode" storage="uint">
Describes the availiable texture clamp modes, i.e. the behavior of UV mapping outside the [0,1] range.
<option value="0" name="CLAMP_S_CLAMP_T">Clamp in both directions.</option>
<option value="1" name="CLAMP_S_WRAP_T">Clamp in the S(U) direction but wrap in the T(V) direction.</option>
<option value="2" name="WRAP_S_CLAMP_T">Wrap in the S(U) direction but clamp in the T(V) direction.</option>
<option value="3" name="WRAP_S_WRAP_T">Wrap in both directions.</option>
</enum>
<enum name="TexFilterMode" storage="uint">
Describes the availiable texture filter modes, i.e. the way the pixels in a texture are displayed on screen.
<option value="0" name="FILTER_NEAREST">Nearest neighbor. Uses nearest texel with no mipmapping.</option>
<option value="1" name="FILTER_BILERP">Bilinear. Linear interpolation with no mipmapping.</option>
<option value="2" name="FILTER_TRILERP">Trilinear. Linear intepolation between 8 texels (4 nearest texels between 2 nearest mip levels).</option>
<option value="3" name="FILTER_NEAREST_MIPNEAREST">Nearest texel on nearest mip level.</option>
<option value="4" name="FILTER_NEAREST_MIPLERP">Linear interpolates nearest texel between two nearest mip levels.</option>
<option value="5" name="FILTER_BILERP_MIPNEAREST">Linear interpolates on nearest mip level.</option>
<option value="6" name="FILTER_ANISOTROPIC">Anisotropic filtering. One or many trilinear samples depending on anisotropy.</option>
</enum>
<enum name="VertMode" storage="uint">
Describes how to apply vertex colors for NiVertexColorProperty.
<option value="0" name="VERT_MODE_SRC_IGNORE">Emissive, ambient, and diffuse colors are all specified by the NiMaterialProperty.</option>
<option value="1" name="VERT_MODE_SRC_EMISSIVE">Emissive colors are specified by the source vertex colors. Ambient+Diffuse are specified by the NiMaterialProperty.</option>
<option value="2" name="VERT_MODE_SRC_AMB_DIF">Ambient+Diffuse colors are specified by the source vertex colors. Emissive is specified by the NiMaterialProperty. (Default)</option>
</enum>
<enum name="LightMode" storage="uint">
Describes which lighting equation components influence the final vertex color for NiVertexColorProperty.
<option value="0" name="LIGHT_MODE_EMISSIVE">Emissive.</option>
<option value="1" name="LIGHT_MODE_EMI_AMB_DIF">Emissive + Ambient + Diffuse. (Default)</option>
</enum>
<enum name="CycleType" storage="uint">
The animation cyle behavior.
<option value="0" name="CYCLE_LOOP">Loop</option>
<option value="1" name="CYCLE_REVERSE">Reverse</option>
<option value="2" name="CYCLE_CLAMP">Clamp</option>
</enum>
<enum name="FieldType" storage="uint">
The force field type.
<option value="0" name="FIELD_WIND">Wind (fixed direction)</option>
<option value="1" name="FIELD_POINT">Point (fixed origin)</option>
</enum>
<enum name="BillboardMode" storage="ushort">
Determines the way the billboard will react to the camera.
Billboard mode is stored in lowest 3 bits although Oblivion vanilla nifs uses values higher than 7.
<option value="0" name="ALWAYS_FACE_CAMERA">Align billboard and camera forward vector. Minimized rotation.</option>
<option value="1" name="ROTATE_ABOUT_UP">Align billboard and camera forward vector while allowing rotation around the up axis.</option>
<option value="2" name="RIGID_FACE_CAMERA">Align billboard and camera forward vector. Non-minimized rotation.</option>
<option value="3" name="ALWAYS_FACE_CENTER">Billboard forward vector always faces camera ceneter. Minimized rotation.</option>
<option value="4" name="RIGID_FACE_CENTER">Billboard forward vector always faces camera ceneter. Non-minimized rotation.</option>
<!-- TODO: Unverified -->
<option value="5" name="BSROTATE_ABOUT_UP">The billboard will only rotate around its local Z axis (it always stays in its local X-Y plane).</option>
<option value="9" name="ROTATE_ABOUT_UP2">The billboard will only rotate around the up axis (same as ROTATE_ABOUT_UP?).</option>
</enum>
<enum name="StencilCompareMode" storage="uint">
Describes stencil buffer test modes for NiStencilProperty.
<option value="0" name="TEST_NEVER">Always false. Ref value is ignored.</option>
<option value="1" name="TEST_LESS">VRef VBuf</option>
<option value="2" name="TEST_EQUAL">VRef = VBuf</option>
<option value="3" name="TEST_LESS_EQUAL">VRef ≤ VBuf</option>
<option value="4" name="TEST_GREATER">VRef VBuf</option>
<option value="5" name="TEST_NOT_EQUAL">VRef ≠ VBuf</option>
<option value="6" name="TEST_GREATER_EQUAL">VRef ≥ VBuf</option>
<option value="7" name="TEST_ALWAYS">Always true. Buffer is ignored.</option>
</enum>
<enum name="StencilAction" storage="uint">
Describes the actions which can occur as a result of tests for NiStencilProperty.
<option value="0" name="ACTION_KEEP">Keep the current value in the stencil buffer.</option>
<option value="1" name="ACTION_ZERO">Write zero to the stencil buffer.</option>
<option value="2" name="ACTION_REPLACE">Write the reference value to the stencil buffer.</option>
<option value="3" name="ACTION_INCREMENT">Increment the value in the stencil buffer.</option>
<option value="4" name="ACTION_DECREMENT">Decrement the value in the stencil buffer.</option>
<option value="5" name="ACTION_INVERT">Bitwise invert the value in the stencil buffer.</option>
</enum>
<enum name="StencilDrawMode" storage="uint">
Describes the face culling options for NiStencilProperty.
<option value="0" name="DRAW_CCW_OR_BOTH">Application default, chooses between DRAW_CCW or DRAW_BOTH.</option>
<option value="1" name="DRAW_CCW">Draw only the triangles whose vertices are ordered CCW with respect to the viewer. (Standard behavior)</option>
<option value="2" name="DRAW_CW">Draw only the triangles whose vertices are ordered CW with respect to the viewer. (Effectively flips faces)</option>
<option value="3" name="DRAW_BOTH">Draw all triangles, regardless of orientation. (Effectively force double-sided)</option>
</enum>
<enum name="ZCompareMode" storage="uint">
Describes Z-buffer test modes for NiZBufferProperty.
"Less than" = closer to camera, "Greater than" = further from camera.
<option value="0" name="ZCOMP_ALWAYS">Always true. Buffer is ignored.</option>
<option value="1" name="ZCOMP_LESS">VRef VBuf</option>
<option value="2" name="ZCOMP_EQUAL">VRef = VBuf</option>
<option value="3" name="ZCOMP_LESS_EQUAL">VRef ≤ VBuf</option>
<option value="4" name="ZCOMP_GREATER">VRef VBuf</option>
<option value="5" name="ZCOMP_NOT_EQUAL">VRef ≠ VBuf</option>
<option value="6" name="ZCOMP_GREATER_EQUAL">VRef ≥ VBuf</option>
<option value="7" name="ZCOMP_NEVER">Always false. Ref value is ignored.</option>
</enum>
<enum name="hkMotionType" storage="byte">
Bethesda Havok, based on hkpMotion::MotionType. Motion type of a rigid body determines what happens when it is simulated.
<option value="0" name="MO_SYS_INVALID">Invalid</option>
<option value="1" name="MO_SYS_DYNAMIC">A fully-simulated, movable rigid body. At construction time the engine checks the input inertia and selects MO_SYS_SPHERE_INERTIA or MO_SYS_BOX_INERTIA as appropriate.</option>
<option value="2" name="MO_SYS_SPHERE_INERTIA">Simulation is performed using a sphere inertia tensor.</option>
<option value="3" name="MO_SYS_SPHERE_STABILIZED">This is the same as MO_SYS_SPHERE_INERTIA, except that simulation of the rigid body is "softened".</option>
<option value="4" name="MO_SYS_BOX_INERTIA">Simulation is performed using a box inertia tensor.</option>
<option value="5" name="MO_SYS_BOX_STABILIZED">This is the same as MO_SYS_BOX_INERTIA, except that simulation of the rigid body is "softened".</option>
<option value="6" name="MO_SYS_KEYFRAMED">Simulation is not performed as a normal rigid body. The keyframed rigid body has an infinite mass when viewed by the rest of the system. (used for creatures)</option>
<option value="7" name="MO_SYS_FIXED">This motion type is used for the static elements of a game scene, e.g. the landscape. Faster than MO_SYS_KEYFRAMED at velocity 0. (used for weapons)</option>
<option value="8" name="MO_SYS_THIN_BOX">A box inertia motion which is optimized for thin boxes and has less stability problems</option>
<option value="9" name="MO_SYS_CHARACTER">A specialized motion used for character controllers</option>
</enum>
<enum name="hkDeactivatorType" storage="byte">
Bethesda Havok, based on hkpRigidBodyDeactivator::DeactivatorType.
Deactivator Type determines which mechanism Havok will use to classify the body as deactivated.
<option value="0" name="DEACTIVATOR_INVALID">Invalid</option>
<option value="1" name="DEACTIVATOR_NEVER">This will force the rigid body to never deactivate.</option>
<option value="2" name="DEACTIVATOR_SPATIAL">Tells Havok to use a spatial deactivation scheme. This makes use of high and low frequencies of positional motion to determine when deactivation should occur.</option>
</enum>
<enum name="hkSolverDeactivation" storage="byte">
Bethesda Havok, based on hkpRigidBodyCinfo::SolverDeactivation.
A list of possible solver deactivation settings. This value defines how aggressively the solver deactivates objects.
Note: Solver deactivation does not save CPU, but reduces creeping of movable objects in a pile quite dramatically.
<option value="0" name="SOLVER_DEACTIVATION_INVALID">Invalid</option>
<option value="1" name="SOLVER_DEACTIVATION_OFF">No solver deactivation.</option>
<option value="2" name="SOLVER_DEACTIVATION_LOW">Very conservative deactivation, typically no visible artifacts.</option>
<option value="3" name="SOLVER_DEACTIVATION_MEDIUM">Normal deactivation, no serious visible artifacts in most cases.</option>
<option value="4" name="SOLVER_DEACTIVATION_HIGH">Fast deactivation, visible artifacts.</option>
<option value="5" name="SOLVER_DEACTIVATION_MAX">Very fast deactivation, visible artifacts.</option>
</enum>
<enum name="hkQualityType" storage="byte">
Bethesda Havok, based on hkpCollidableQualityType. Describes the priority and quality of collisions for a body,
e.g. you may expect critical game play objects to have solid high-priority collisions so that they never sink into ground,
or may allow penetrations for visual debris objects.
Notes:
- Fixed and keyframed objects cannot interact with each other.
- Debris can interpenetrate but still responds to Bullet hits.
- Critical objects are forced to not interpenetrate.
- Moving objects can interpenetrate slightly with other Moving or Debris objects but nothing else.
<option value="0" name="MO_QUAL_INVALID">Automatically assigned to MO_QUAL_FIXED, MO_QUAL_KEYFRAMED or MO_QUAL_DEBRIS</option>
<option value="1" name="MO_QUAL_FIXED">Static body.</option>
<option value="2" name="MO_QUAL_KEYFRAMED">Animated body with infinite mass.</option>
<option value="3" name="MO_QUAL_DEBRIS">Low importance bodies adding visual detail.</option>
<option value="4" name="MO_QUAL_MOVING">Moving bodies which should not penetrate or leave the world, but can.</option>
<option value="5" name="MO_QUAL_CRITICAL">Gameplay critical bodies which cannot penetrate or leave the world under any circumstance.</option>
<option value="6" name="MO_QUAL_BULLET">Fast-moving bodies, such as projectiles.</option>
<option value="7" name="MO_QUAL_USER">For user.</option>
<option value="8" name="MO_QUAL_CHARACTER">For use with rigid body character controllers.</option>
<option value="9" name="MO_QUAL_KEYFRAMED_REPORT">
Moving bodies with infinite mass which should report contact points and TOI collisions against all other bodies.
</option>
</enum>
<enum name="ForceType" storage="uint">
Describes the type of gravitational force.
<option value="0" name="FORCE_PLANAR"></option>
<option value="1" name="FORCE_SPHERICAL"></option>
<option value="2" name="FORCE_UNKNOWN"></option>
</enum>
<enum name="TransformMember" storage="uint">
Describes which aspect of the NiTextureTransform the NiTextureTransformController will modify.
<option value="0" name="TT_TRANSLATE_U">Control the translation of the U coordinates.</option>
<option value="1" name="TT_TRANSLATE_V">Control the translation of the V coordinates.</option>
<option value="2" name="TT_ROTATE">Control the rotation of the coordinates.</option>
<option value="3" name="TT_SCALE_U">Control the scale of the U coordinates.</option>
<option value="4" name="TT_SCALE_V">Control the scale of the V coordinates.</option>
</enum>
<enum name="DecayType" storage="uint">
Describes the decay function of bomb forces.
<option value="0" name="DECAY_NONE">No decay.</option>
<option value="1" name="DECAY_LINEAR">Linear decay.</option>
<option value="2" name="DECAY_EXPONENTIAL">Exponential decay.</option>
</enum>
<enum name="SymmetryType" storage="uint">
Describes the symmetry type of bomb forces.
<option value="0" name="SPHERICAL_SYMMETRY">Spherical Symmetry.</option>
<option value="1" name="CYLINDRICAL_SYMMETRY">Cylindrical Symmetry.</option>
<option value="2" name="PLANAR_SYMMETRY">Planar Symmetry.</option>
</enum>
<enum name="VelocityType" storage="uint">
Controls the way the a particle mesh emitter determines the starting speed and direction of the particles that are emitted.
<option value="0" name="VELOCITY_USE_NORMALS">Uses the normals of the meshes to determine staring velocity.</option>
<option value="1" name="VELOCITY_USE_RANDOM">Starts particles with a random velocity.</option>
<option value="2" name="VELOCITY_USE_DIRECTION">Uses the emission axis to determine initial particle direction?</option>
</enum>
<enum name="EmitFrom" storage="uint">
Controls which parts of the mesh that the particles are emitted from.
<option value="0" name="EMIT_FROM_VERTICES">Emit particles from the vertices of the mesh.</option>
<option value="1" name="EMIT_FROM_FACE_CENTER">Emit particles from the center of the faces of the mesh.</option>
<option value="2" name="EMIT_FROM_EDGE_CENTER">Emit particles from the center of the edges of the mesh.</option>
<option value="3" name="EMIT_FROM_FACE_SURFACE">Perhaps randomly emit particles from anywhere on the faces of the mesh?</option>
<option value="4" name="EMIT_FROM_EDGE_SURFACE">Perhaps randomly emit particles from anywhere on the edges of the mesh?</option>
</enum>
<enum name="TextureType" storage="uint">
The type of information that is stored in a texture used by an NiTextureEffect.
<option value="0" name="TEX_PROJECTED_LIGHT">Apply a projected light texture. Each light effect is summed before multiplying by the base texture.</option>
<option value="1" name="TEX_PROJECTED_SHADOW">Apply a projected shadow texture. Each shadow effect is multiplied by the base texture.</option>
<option value="2" name="TEX_ENVIRONMENT_MAP">Apply an environment map texture. Added to the base texture and light/shadow/decal maps.</option>
<option value="3" name="TEX_FOG_MAP">Apply a fog map texture. Alpha channel is used to blend the color channel with the base texture.</option>
</enum>
<enum name="CoordGenType" storage="uint">
Determines the way that UV texture coordinates are generated.
<option value="0" name="CG_WORLD_PARALLEL">Use planar mapping.</option>
<option value="1" name="CG_WORLD_PERSPECTIVE">Use perspective mapping.</option>
<option value="2" name="CG_SPHERE_MAP">Use spherical mapping.</option>
<option value="3" name="CG_SPECULAR_CUBE_MAP">Use specular cube mapping. For NiSourceCubeMap only.</option>
<option value="4" name="CG_DIFFUSE_CUBE_MAP">Use diffuse cube mapping. For NiSourceCubeMap only.</option>
</enum>
<enum name="EndianType" storage="byte">
<option value="0" name="ENDIAN_BIG">The numbers are stored in big endian format, such as those used by PowerPC Mac processors.</option>
<option value="1" name="ENDIAN_LITTLE">The numbers are stored in little endian format, such as those used by Intel and AMD x86 processors.</option>
</enum>
<enum name="MaterialColor" storage="ushort">
Used by NiMaterialColorControllers to select which type of color in the controlled object that will be animated.
<option value="0" name="TC_AMBIENT">Control the ambient color.</option>
<option value="1" name="TC_DIFFUSE">Control the diffuse color.</option>
<option value="2" name="TC_SPECULAR">Control the specular color.</option>
<option value="3" name="TC_SELF_ILLUM">Control the self illumination color.</option>
</enum>
<enum name="LightColor" storage="ushort">
Used by NiLightColorControllers to select which type of color in the controlled object that will be animated.
<option value="0" name="LC_DIFFUSE">Control the diffuse color.</option>
<option value="1" name="LC_AMBIENT">Control the ambient color.</option>
</enum>
<enum name="ConsistencyType" storage="ushort">
Used by NiGeometryData to control the volatility of the mesh.
Consistency Type is masked to only the upper 4 bits (0xF000). Dirty mask is the lower 12 (0x0FFF) but only used at runtime.
<option value="0x0000" name="CT_MUTABLE">Mutable Mesh</option>
<option value="0x4000" name="CT_STATIC">Static Mesh</option>
<option value="0x8000" name="CT_VOLATILE">Volatile Mesh</option>
</enum>
<enum name="SortingMode" storage="uint">
Describes the way that NiSortAdjustNode modifies the sorting behavior for the subtree below it.
<option value="0" name="SORTING_INHERIT">Inherit. Acts identical to NiNode.</option>
<option value="1" name="SORTING_OFF">Disables sort on all geometry under this node.</option>
</enum>
<enum name="PropagationMode" storage="uint">
The propagation mode controls scene graph traversal during collision detection operations for NiCollisionData.
<option value="0" name="PROPAGATE_ON_SUCCESS">Propagation only occurs as a result of a successful collision.</option>
<option value="1" name="PROPAGATE_ON_FAILURE">(Deprecated) Propagation only occurs as a result of a failed collision.</option>
<option value="2" name="PROPAGATE_ALWAYS">Propagation always occurs regardless of collision result.</option>
<option value="3" name="PROPAGATE_NEVER">Propagation never occurs regardless of collision result.</option>
</enum>
<enum name="CollisionMode" storage="uint">
The collision mode controls the type of collision operation that is to take place for NiCollisionData.
<option value="0" name="CM_USE_OBB">Use Bounding Box</option>
<option value="1" name="CM_USE_TRI">Use Triangles</option>
<option value="2" name="CM_USE_ABV">Use Alternate Bounding Volumes</option>
<option value="3" name="CM_NOTEST">Indicates that no collision test should be made.</option>
<option value="4" name="CM_USE_NIBOUND">Use NiBound</option>
</enum>
<enum name="BoundVolumeType" storage="uint">
<option value="0xffffffff" name="BASE_BV">Default</option>
<option value="0" name="SPHERE_BV">Sphere</option>
<option value="1" name="BOX_BV">Box</option>
<option value="2" name="CAPSULE_BV">Capsule</option>
<option value="4" name="UNION_BV">Union</option>
<option value="5" name="HALFSPACE_BV">Half Space</option>
</enum>
<enum name="hkResponseType" storage="byte">
Bethesda Havok.
<option value="0" name="RESPONSE_INVALID">Invalid Response</option>
<option value="1" name="RESPONSE_SIMPLE_CONTACT">Do normal collision resolution</option>
<option value="2" name="RESPONSE_REPORTING">No collision resolution is performed but listeners are called</option>
<option value="3" name="RESPONSE_NONE">Do nothing, ignore all the results.</option>
</enum>
<enum name="BSDismemberBodyPartType" storage="ushort">
Biped bodypart data used for visibility control of triangles. Options are Fallout 3, except where marked for Skyrim (uses SBP prefix)
Skyrim BP names are listed only for vanilla names, different creatures have different defnitions for naming.
<option value="0" name="BP_TORSO">Torso</option>
<option value="1" name="BP_HEAD">Head</option>
<option value="2" name="BP_HEAD2">Head 2</option>
<option value="3" name="BP_LEFTARM">Left Arm</option>
<option value="4" name="BP_LEFTARM2">Left Arm 2</option>
<option value="5" name="BP_RIGHTARM">Right Arm</option>
<option value="6" name="BP_RIGHTARM2">Right Arm 2</option>
<option value="7" name="BP_LEFTLEG">Left Leg</option>
<option value="8" name="BP_LEFTLEG2">Left Leg 2</option>
<option value="9" name="BP_LEFTLEG3">Left Leg 3</option>
<option value="10" name="BP_RIGHTLEG">Right Leg</option>
<option value="11" name="BP_RIGHTLEG2">Right Leg 2</option>
<option value="12" name="BP_RIGHTLEG3">Right Leg 3</option>
<option value="13" name="BP_BRAIN">Brain</option>
<option value="30" name="SBP_30_HEAD">Skyrim, Head(Human), Body(Atronachs,Beasts), Mask(Dragonpriest)</option>
<option value="31" name="SBP_31_HAIR">Skyrim, Hair(human), Far(Dragon), Mask2(Dragonpriest),SkinnedFX(Spriggan)</option>
<option value="32" name="SBP_32_BODY">Skyrim, Main body, extras(Spriggan)</option>
<option value="33" name="SBP_33_HANDS">Skyrim, Hands L/R, BodyToo(Dragonpriest), Legs(Draugr), Arms(Giant)</option>
<option value="34" name="SBP_34_FOREARMS">Skyrim, Forearms L/R, Beard(Draugr)</option>
<option value="35" name="SBP_35_AMULET">Skyrim, Amulet</option>
<option value="36" name="SBP_36_RING">Skyrim, Ring</option>
<option value="37" name="SBP_37_FEET">Skyrim, Feet L/R</option>
<option value="38" name="SBP_38_CALVES">Skyrim, Calves L/R</option>
<option value="39" name="SBP_39_SHIELD">Skyrim, Shield</option>
<option value="40" name="SBP_40_TAIL">Skyrim, Tail(Argonian/Khajiit), Skeleton01(Dragon), FX01(AtronachStorm),FXMist (Dragonpriest), Spit(Chaurus,Spider),SmokeFins(IceWraith)</option>
<option value="41" name="SBP_41_LONGHAIR">Skyrim, Long Hair(Human), Skeleton02(Dragon),FXParticles(Dragonpriest)</option>
<option value="42" name="SBP_42_CIRCLET">Skyrim, Circlet(Human, MouthFireEffect(Dragon)</option>
<option value="43" name="SBP_43_EARS">Skyrim, Ears</option>
<option value="44" name="SBP_44_DRAGON_BLOODHEAD_OR_MOD_MOUTH">Skyrim, Bloodied dragon head, or NPC face/mouth</option>
<option value="45" name="SBP_45_DRAGON_BLOODWINGL_OR_MOD_NECK">Skyrim, Left Bloodied dragon wing, Saddle(Horse), or NPC cape, scarf, shawl, neck-tie, etc.</option>
<option value="46" name="SBP_46_DRAGON_BLOODWINGR_OR_MOD_CHEST_PRIMARY">Skyrim, Right Bloodied dragon wing, or NPC chest primary or outergarment</option>
<option value="47" name="SBP_47_DRAGON_BLOODTAIL_OR_MOD_BACK">Skyrim, Bloodied dragon tail, or NPC backpack/wings/...</option>
<option value="48" name="SBP_48_MOD_MISC1">Anything that does not fit in the list</option>
<option value="49" name="SBP_49_MOD_PELVIS_PRIMARY">Pelvis primary or outergarment</option>
<option value="50" name="SBP_50_DECAPITATEDHEAD">Skyrim, Decapitated Head</option>
<option value="51" name="SBP_51_DECAPITATE">Skyrim, Decapitate, neck gore</option>
<option value="52" name="SBP_52_MOD_PELVIS_SECONDARY">Pelvis secondary or undergarment</option>
<option value="53" name="SBP_53_MOD_LEG_RIGHT">Leg primary or outergarment or right leg</option>
<option value="54" name="SBP_54_MOD_LEG_LEFT">Leg secondary or undergarment or left leg</option>
<option value="55" name="SBP_55_MOD_FACE_JEWELRY">Face alternate or jewelry</option>
<option value="56" name="SBP_56_MOD_CHEST_SECONDARY">Chest secondary or undergarment</option>
<option value="57" name="SBP_57_MOD_SHOULDER">Shoulder</option>
<option value="58" name="SBP_58_MOD_ARM_LEFT">Arm secondary or undergarment or left arm</option>
<option value="59" name="SBP_59_MOD_ARM_RIGHT">Arm primary or outergarment or right arm</option>
<option value="60" name="SBP_60_MOD_MISC2">Anything that does not fit in the list</option>
<option value="61" name="SBP_61_FX01">Skyrim, FX01(Humanoid)</option>
<option value="101" name="BP_SECTIONCAP_HEAD">Section Cap | Head</option>
<option value="102" name="BP_SECTIONCAP_HEAD2">Section Cap | Head 2</option>
<option value="103" name="BP_SECTIONCAP_LEFTARM">Section Cap | Left Arm</option>
<option value="104" name="BP_SECTIONCAP_LEFTARM2">Section Cap | Left Arm 2</option>
<option value="105" name="BP_SECTIONCAP_RIGHTARM">Section Cap | Right Arm</option>
<option value="106" name="BP_SECTIONCAP_RIGHTARM2">Section Cap | Right Arm 2</option>
<option value="107" name="BP_SECTIONCAP_LEFTLEG">Section Cap | Left Leg</option>
<option value="108" name="BP_SECTIONCAP_LEFTLEG2">Section Cap | Left Leg 2</option>
<option value="109" name="BP_SECTIONCAP_LEFTLEG3">Section Cap | Left Leg 3</option>
<option value="110" name="BP_SECTIONCAP_RIGHTLEG">Section Cap | Right Leg</option>
<option value="111" name="BP_SECTIONCAP_RIGHTLEG2">Section Cap | Right Leg 2</option>
<option value="112" name="BP_SECTIONCAP_RIGHTLEG3">Section Cap | Right Leg 3</option>
<option value="113" name="BP_SECTIONCAP_BRAIN">Section Cap | Brain</option>
<option value="130" name="SBP_130_HEAD">Skyrim, Head slot, use on full-face helmets</option>
<option value="131" name="SBP_131_HAIR">Skyrim, Hair slot 1, use on hoods</option>
<option value="141" name="SBP_141_LONGHAIR">Skyrim, Hair slot 2, use for longer hair</option>
<option value="142" name="SBP_142_CIRCLET">Skyrim, Circlet slot 1, use for circlets</option>
<option value="143" name="SBP_143_EARS">Skyrim, Ear slot</option>
<option value="150" name="SBP_150_DECAPITATEDHEAD">Skyrim, neck gore on head side</option>
<option value="201" name="BP_TORSOCAP_HEAD">Torso Cap | Head</option>
<option value="202" name="BP_TORSOCAP_HEAD2">Torso Cap | Head 2</option>
<option value="203" name="BP_TORSOCAP_LEFTARM">Torso Cap | Left Arm</option>
<option value="204" name="BP_TORSOCAP_LEFTARM2">Torso Cap | Left Arm 2</option>
<option value="205" name="BP_TORSOCAP_RIGHTARM">Torso Cap | Right Arm</option>
<option value="206" name="BP_TORSOCAP_RIGHTARM2">Torso Cap | Right Arm 2</option>
<option value="207" name="BP_TORSOCAP_LEFTLEG">Torso Cap | Left Leg</option>
<option value="208" name="BP_TORSOCAP_LEFTLEG2">Torso Cap | Left Leg 2</option>
<option value="209" name="BP_TORSOCAP_LEFTLEG3">Torso Cap | Left Leg 3</option>
<option value="210" name="BP_TORSOCAP_RIGHTLEG">Torso Cap | Right Leg</option>
<option value="211" name="BP_TORSOCAP_RIGHTLEG2">Torso Cap | Right Leg 2</option>
<option value="212" name="BP_TORSOCAP_RIGHTLEG3">Torso Cap | Right Leg 3</option>
<option value="213" name="BP_TORSOCAP_BRAIN">Torso Cap | Brain</option>
<option value="230" name="SBP_230_HEAD">Skyrim, Head slot, use for neck on character head</option>
<option value="1000" name="BP_TORSOSECTION_HEAD">Torso Section | Head</option>
<option value="2000" name="BP_TORSOSECTION_HEAD2">Torso Section | Head 2</option>
<option value="3000" name="BP_TORSOSECTION_LEFTARM">Torso Section | Left Arm</option>
<option value="4000" name="BP_TORSOSECTION_LEFTARM2">Torso Section | Left Arm 2</option>
<option value="5000" name="BP_TORSOSECTION_RIGHTARM">Torso Section | Right Arm</option>
<option value="6000" name="BP_TORSOSECTION_RIGHTARM2">Torso Section | Right Arm 2</option>
<option value="7000" name="BP_TORSOSECTION_LEFTLEG">Torso Section | Left Leg</option>
<option value="8000" name="BP_TORSOSECTION_LEFTLEG2">Torso Section | Left Leg 2</option>
<option value="9000" name="BP_TORSOSECTION_LEFTLEG3">Torso Section | Left Leg 3</option>
<option value="10000" name="BP_TORSOSECTION_RIGHTLEG">Torso Section | Right Leg</option>
<option value="11000" name="BP_TORSOSECTION_RIGHTLEG2">Torso Section | Right Leg 2</option>
<option value="12000" name="BP_TORSOSECTION_RIGHTLEG3">Torso Section | Right Leg 3</option>
<option value="13000" name="BP_TORSOSECTION_BRAIN">Torso Section | Brain</option>
</enum>
<enum name="BSLightingShaderPropertyShaderType" storage="uint" prefix="ST">
Values for configuring the shader type in a BSLightingShaderProperty
<option value="0" name="Default" />
<option value="1" name="Environment Map">Enables EnvMap Mask(TS6), EnvMap Scale</option>
<option value="2" name="Glow Shader">Enables Glow(TS3)</option>
<option value="3" name="Parallax">Enables Height(TS4)</option>
<option value="4" name="Face Tint">Enables Detail(TS4), Tint(TS7)</option>
<option value="5" name="Skin Tint">Enables Skin Tint Color</option>
<option value="6" name="Hair Tint">Enables Hair Tint Color</option>
<option value="7" name="Parallax Occ">Enables Height(TS4), Max Passes, Scale. Unimplemented.</option>
<option value="8" name="Multitexture Landscape" />
<option value="9" name="LOD Landscape" />
<option value="10" name="Snow" />
<option value="11" name="MultiLayer Parallax">Enables EnvMap Mask(TS6), Layer(TS7), Parallax Layer Thickness, Parallax Refraction Scale, Parallax Inner Layer U Scale, Parallax Inner Layer V Scale, EnvMap Scale</option>
<option value="12" name="Tree Anim" />
<option value="13" name="LOD Objects" />
<option value="14" name="Sparkle Snow">Enables SparkleParams</option>
<option value="15" name="LOD Objects HD" />
<option value="16" name="Eye Envmap">Enables EnvMap Mask(TS6), Eye EnvMap Scale</option>
<option value="17" name="Cloud" />
<option value="18" name="LOD Landscape Noise" />
<option value="19" name="Multitexture Landscape LOD Blend" />
<option value="20" name="FO4 Dismemberment" />
</enum>
<enum name="EffectShaderControlledVariable" storage="uint" prefix="ESCV">
An unsigned 32-bit integer, describing which float variable in BSEffectShaderProperty to animate.
<option value="0" name="EmissiveMultiple">EmissiveMultiple.</option>
<option value="1" name="Falloff Start Angle">Falloff Start Angle (degrees).</option>
<option value="2" name="Falloff Stop Angle">Falloff Stop Angle (degrees).</option>
<option value="3" name="Falloff Start Opacity">Falloff Start Opacity.</option>
<option value="4" name="Falloff Stop Opacity">Falloff Stop Opacity.</option>
<option value="5" name="Alpha Transparency">Alpha Transparency (Emissive alpha?).</option>
<option value="6" name="U Offset">U Offset.</option>
<option value="7" name="U Scale">U Scale.</option>
<option value="8" name="V Offset">V Offset.</option>
<option value="9" name="V Scale">V Scale.</option>
</enum>
<enum name="EffectShaderControlledColor" storage="uint" prefix="ECSC">
An unsigned 32-bit integer, describing which color in BSEffectShaderProperty to animate.
<option value="0" name="Emissive Color">Emissive Color.</option>
</enum>
<enum name="LightingShaderControlledVariable" storage="uint" prefix="LSCV">
An unsigned 32-bit integer, describing which float variable in BSLightingShaderProperty to animate.
<option value="0" name="Refraction Strength">The amount of distortion.</option>
<option value="8" name="Environment Map Scale">Environment Map Scale.</option>
<option value="9" name="Glossiness">Glossiness.</option>
<option value="10" name="Specular Strength">Specular Strength.</option>
<option value="11" name="Emissive Multiple">Emissive Multiple.</option>
<option value="12" name="Alpha">Alpha.</option>
<option value="20" name="U Offset">U Offset.</option>
<option value="21" name="U Scale">U Scale.</option>
<option value="22" name="V Offset">V Offset.</option>
<option value="23" name="V Scale">V Scale.</option>
</enum>
<enum name="LightingShaderControlledColor" storage="uint" prefix="LSCC">
An unsigned 32-bit integer, describing which color in BSLightingShaderProperty to animate.
<option value="0" name="Specular Color">Specular Color.</option>
<option value="1" name="Emissive Color">Emissive Color.</option>
</enum>
<enum name="hkConstraintType" storage="uint">
Bethesda Havok. Describes the type of bhkConstraint.
<option value="0" name="BallAndSocket">A ball and socket constraint.</option>
<option value="1" name="Hinge">A hinge constraint.</option>
<option value="2" name="Limited Hinge">A limited hinge constraint.</option>
<option value="6" name="Prismatic">A prismatic constraint.</option>
<option value="7" name="Ragdoll">A ragdoll constraint.</option>
<option value="8" name="StiffSpring">A stiff spring constraint.</option>
<!--<option value="10" name="Generic">A generic constraint.</option>-->
<option value="13" name="Malleable">A malleable constraint.</option>
</enum>
<!--Compounds
These are like C structures and are used as sub-parts of more complex
classes when there are multiple pieces of data repeated in an array.-->
<compound name="SizedString">
A string of given length.
<add name="Length" type="uint">The string length.</add>
<add name="Value" type="char" arr1="Length">The string itself.</add>
</compound>
<compound name="string">
A string type.
<add name="String" type="SizedString" ver2="20.0.0.5">The normal string.</add>
<add name="Index" type="StringIndex" ver1="20.1.0.3">The string index.</add>
</compound>
<compound name="ByteArray">
An array of bytes.
<add name="Data Size" type="uint">The number of bytes in this array</add>
<add name="Data" type="byte" arr1="Data Size">The bytes which make up the array</add>
</compound>
<compound name="ByteMatrix">
An array of bytes.
<add name="Data Size 1" type="uint">The number of bytes in this array</add>
<add name="Data Size 2" type="uint">The number of bytes in this array</add>
<add name="Data" type="byte" arr1="Data Size 2" arr2="Data Size 1">The bytes which make up the array</add>
</compound>
<compound name="Color3">
A color without alpha (red, green, blue).
<add name="r" type="float">Red color component.</add>
<add name="g" type="float">Green color component.</add>
<add name="b" type="float">Blue color component.</add>
</compound>
<compound name="ByteColor3">
A color without alpha (red, green, blue).
<add name="r" type="byte">Red color component.</add>
<add name="g" type="byte">Green color component.</add>
<add name="b" type="byte">Blue color component.</add>
</compound>
<compound name="Color4">
A color with alpha (red, green, blue, alpha).
<add name="r" type="float">Red component.</add>
<add name="g" type="float">Green component.</add>
<add name="b" type="float">Blue component.</add>
<add name="a" type="float">Alpha.</add>
</compound>
<compound name="ByteColor4">
A color with alpha (red, green, blue, alpha).
<add name="r" type="byte">Red color component.</add>
<add name="g" type="byte">Green color component.</add>
<add name="b" type="byte">Blue color component.</add>
<add name="a" type="byte">Alpha color component.</add>
</compound>
<compound name="FilePath">
A string that contains the path to a file.
<add name="String" type="SizedString" ver2="20.0.0.5">The normal string.</add>
<add name="Index" type="StringIndex" ver1="20.1.0.3">The string index.</add>
</compound>
<compound name="Footer">
The NIF file footer.
<add name="Num Roots" type="uint" ver1="3.3.0.13">The number of root references.</add>
<add name="Roots" type="Ref" template="NiObject" arr1="Num Roots" ver1="3.3.0.13">List of root NIF objects. If there is a camera, for 1st person view, then this NIF object is referred to as well in this list, even if it is not a root object (usually we want the camera to be attached to the Bip Head node).</add>
</compound>
<compound name="LODRange">
The distance range where a specific level of detail applies.
<add name="Near Extent" type="float">Begining of range.</add>
<add name="Far Extent" type="float">End of Range.</add>
<add name="Unknown Ints" type="uint" arr1="3" ver2="3.1">Unknown (0,0,0).</add>
</compound>
<compound name="MatchGroup">
Group of vertex indices of vertices that match.
<add name="Num Vertices" type="ushort">Number of vertices in this group.</add>
<add name="Vertex Indices" type="ushort" arr1="Num Vertices">The vertex indices.</add>
</compound>
<compound name="ByteVector3">
A vector in 3D space (x,y,z).
<add name="x" type="byte">First coordinate.</add>
<add name="y" type="byte">Second coordinate.</add>
<add name="z" type="byte">Third coordinate.</add>
</compound>
<compound name="HalfVector3">
A vector in 3D space (x,y,z).
<add name="x" type="hfloat">First coordinate.</add>
<add name="y" type="hfloat">Second coordinate.</add>
<add name="z" type="hfloat">Third coordinate.</add>
</compound>
<compound name="Vector3">
A vector in 3D space (x,y,z).
<add name="x" type="float">First coordinate.</add>
<add name="y" type="float">Second coordinate.</add>
<add name="z" type="float">Third coordinate.</add>
</compound>
<compound name="Vector4">
A 4-dimensional vector.
<add name="x" type="float">First coordinate.</add>
<add name="y" type="float">Second coordinate.</add>
<add name="z" type="float">Third coordinate.</add>
<add name="w" type="float">Fourth coordinate.</add>
</compound>
<compound name="Quaternion">
A quaternion.
<add name="w" type="float" default="1.0">The w-coordinate.</add>
<add name="x" type="float" default="0.0">The x-coordinate.</add>
<add name="y" type="float" default="0.0">The y-coordinate.</add>
<add name="z" type="float" default="0.0">The z-coordinate.</add>
</compound>
<compound name="hkQuaternion">
A quaternion as it appears in the havok objects.
<add name="x" type="float" default="0.0">The x-coordinate.</add>
<add name="y" type="float" default="0.0">The y-coordinate.</add>
<add name="z" type="float" default="0.0">The z-coordinate.</add>
<add name="w" type="float" default="1.0">The w-coordinate.</add>
</compound>
<compound name="Matrix22">
A 2x2 matrix of float values. Stored in OpenGL column-major format.
<add name="m11" type="float" default="1.0">Member 1,1 (top left)</add>
<add name="m21" type="float" default="0.0">Member 2,1 (bottom left)</add>
<add name="m12" type="float" default="0.0">Member 1,2 (top right)</add>
<add name="m22" type="float" default="1.0">Member 2,2 (bottom right)</add>
</compound>
<compound name="Matrix33">
A 3x3 rotation matrix; M^T M=identity, det(M)=1. Stored in OpenGL column-major format.
<add name="m11" type="float" default="1.0">Member 1,1 (top left)</add>
<add name="m21" type="float" default="0.0">Member 2,1</add>
<add name="m31" type="float" default="0.0">Member 3,1 (bottom left)</add>
<add name="m12" type="float" default="0.0">Member 1,2</add>
<add name="m22" type="float" default="1.0">Member 2,2</add>
<add name="m32" type="float" default="0.0">Member 3,2</add>
<add name="m13" type="float" default="0.0">Member 1,3 (top right)</add>
<add name="m23" type="float" default="0.0">Member 2,3</add>
<add name="m33" type="float" default="1.0">Member 3,3 (bottom left)</add>
</compound>
<compound name="Matrix34">
A 3x4 transformation matrix.
<add name="m11" type="float" default="1.0">The (1,1) element.</add>
<add name="m21" type="float" default="0.0">The (2,1) element.</add>
<add name="m31" type="float" default="0.0">The (3,1) element.</add>
<add name="m12" type="float" default="0.0">The (1,2) element.</add>
<add name="m22" type="float" default="1.0">The (2,2) element.</add>
<add name="m32" type="float" default="0.0">The (3,2) element.</add>
<add name="m13" type="float" default="0.0">The (1,3) element.</add>
<add name="m23" type="float" default="0.0">The (2,3) element.</add>
<add name="m33" type="float" default="1.0">The (3,3) element.</add>
<add name="m14" type="float" default="0.0">The (1,4) element.</add>
<add name="m24" type="float" default="0.0">The (2,4) element.</add>
<add name="m34" type="float" default="0.0">The (3,4) element.</add>
</compound>
<compound name="Matrix44">
A 4x4 transformation matrix.
<add name="m11" type="float" default="1.0">The (1,1) element.</add>
<add name="m21" type="float" default="0.0">The (2,1) element.</add>
<add name="m31" type="float" default="0.0">The (3,1) element.</add>
<add name="m41" type="float" default="0.0">The (4,1) element.</add>
<add name="m12" type="float" default="0.0">The (1,2) element.</add>
<add name="m22" type="float" default="1.0">The (2,2) element.</add>
<add name="m32" type="float" default="0.0">The (3,2) element.</add>
<add name="m42" type="float" default="0.0">The (4,2) element.</add>
<add name="m13" type="float" default="0.0">The (1,3) element.</add>
<add name="m23" type="float" default="0.0">The (2,3) element.</add>
<add name="m33" type="float" default="1.0">The (3,3) element.</add>
<add name="m43" type="float" default="0.0">The (4,3) element.</add>
<add name="m14" type="float" default="0.0">The (1,4) element.</add>
<add name="m24" type="float" default="0.0">The (2,4) element.</add>
<add name="m34" type="float" default="0.0">The (3,4) element.</add>
<add name="m44" type="float" default="1.0">The (4,4) element.</add>
</compound>
<compound name="hkMatrix3">
A 3x3 Havok matrix stored in 4x3 due to memory alignment.
<add name="m11" type="float" />
<add name="m12" type="float" />
<add name="m13" type="float" />
<add name="m14" type="float">Unused</add>
<add name="m21" type="float" />
<add name="m22" type="float" />
<add name="m23" type="float" />
<add name="m24" type="float">Unused</add>
<add name="m31" type="float" />
<add name="m32" type="float" />
<add name="m33" type="float" />
<add name="m34" type="float">Unused</add>
</compound>
<compound name="MipMap">
Description of a mipmap within an NiPixelData object.
<add name="Width" type="uint">Width of the mipmap image.</add>
<add name="Height" type="uint">Height of the mipmap image.</add>
<add name="Offset" type="uint">Offset into the pixel data array where this mipmap starts.</add>
</compound>
<compound name="NodeSet">
A set of NiNode references.
<add name="Num Nodes" type="uint">Number of node references that follow.</add>
<add name="Nodes" type="Ptr" template="NiNode" arr1="Num Nodes">The list of NiNode references.</add>
</compound>
<compound name="ShortString" ver1="10.1.0.0">
Another string format, for short strings. Specific to Bethesda-specific header tags.
<add name="Length" type="byte">The string length.</add>
<add name="Value" type="char" arr1="Length">The string itself, null terminated (the null terminator is taken into account in the length byte).</add>
</compound>
<compound name="SkinInfo">
NiBoneLODController::SkinInfo. Reference to shape and skin instance.
<add name="Shape" type="Ptr" template="NiTriBasedGeom" />
<add name="Skin Instance" type="Ref" template="NiSkinInstance" />
</compound>
<compound name="SkinInfoSet" ver1="10.0.1.0">
A set of NiBoneLODController::SkinInfo.
<add name="Num Skin Info" type="uint" />
<add name="Skin Info" type="SkinInfo" arr1="Num Skin Info" />
</compound>
<compound name="BoneVertData">
NiSkinData::BoneVertData. A vertex and its weight.
<add name="Index" type="ushort">The vertex index, in the mesh.</add>
<add name="Weight" type="float">The vertex weight - between 0.0 and 1.0</add>
</compound>
<compound name="BoneVertDataHalf">
NiSkinData::BoneVertData. A vertex and its weight.
<add name="Index" type="ushort">The vertex index, in the mesh.</add>
<add name="Weight" type="hfloat">The vertex weight - between 0.0 and 1.0</add>
</compound>
<compound name="AVObject">
Used in NiDefaultAVObjectPalette.
<add name="Name" type="SizedString">Object name.</add>
<add name="AV Object" type="Ptr" template="NiAVObject">Object reference.</add>
</compound>
<compound name="ControlledBlock">
In a .kf file, this links to a controllable object, via its name (or for version 10.2.0.0 and up, a link and offset to a NiStringPalette that contains the name), and a sequence of interpolators that apply to this controllable object, via links.
For Controller ID, NiInterpController::GetCtlrID() virtual function returns a string formatted specifically for the derived type.
For Interpolator ID, NiInterpController::GetInterpolatorID() virtual function returns a string formatted specifically for the derived type.
The string formats are documented on the relevant niobject blocks.
<add name="Target Name" type="string" ver2="10.1.0.103">Name of a controllable object in another NIF file.</add>
<!-- NiControllerSequence::InterpArrayItem -->
<add name="Interpolator" type="Ref" template="NiInterpolator" ver1="10.1.0.106" />
<add name="Controller" type="Ref" template="NiTimeController" ver2="20.5.0.0" />
<add name="Blend Interpolator" type="Ref" template="NiBlendInterpolator" ver1="10.1.0.104" ver2="10.1.0.110" />
<add name="Blend Index" type="ushort" ver1="10.1.0.104" ver2="10.1.0.110" />
<!-- Bethesda-only -->
<add name="Priority" type="byte" ver1="10.1.0.106" vercond="(User Version 2 &gt; 0)">Idle animations tend to have low values for this, and high values tend to correspond with the important parts of the animations.</add>
<!-- NiControllerSequence::IDTag, post-10.1.0.104 only -->
<!-- Until 10.2 -->
<add name="Node Name" type="string" ver1="10.1.0.104" ver2="10.1.0.113">The name of the animated NiAVObject.</add>
<add name="Property Type" type="string" ver1="10.1.0.104" ver2="10.1.0.113">The RTTI type of the NiProperty the controller is attached to, if applicable.</add>
<add name="Controller Type" type="string" ver1="10.1.0.104" ver2="10.1.0.113">The RTTI type of the NiTimeController.</add>
<add name="Controller ID" type="string" ver1="10.1.0.104" ver2="10.1.0.113">An ID that can uniquely identify the controller among others of the same type on the same NiObjectNET.</add>
<add name="Interpolator ID" type="string" ver1="10.1.0.104" ver2="10.1.0.113">An ID that can uniquely identify the interpolator among others of the same type on the same NiObjectNET.</add>
<!-- From 10.2 to 20.1 -->
<add name="String Palette" type="Ref" template="NiStringPalette" ver1="10.2.0.0" ver2="20.1.0.0">Refers to the NiStringPalette which contains the name of the controlled NIF object.</add>
<add name="Node Name Offset" type="StringOffset" ver1="10.2.0.0" ver2="20.1.0.0">Offset in NiStringPalette to the name of the animated NiAVObject.</add>
<add name="Property Type Offset" type="StringOffset" ver1="10.2.0.0" ver2="20.1.0.0">Offset in NiStringPalette to the RTTI type of the NiProperty the controller is attached to, if applicable.</add>
<add name="Controller Type Offset" type="StringOffset" ver1="10.2.0.0" ver2="20.1.0.0">Offset in NiStringPalette to the RTTI type of the NiTimeController.</add>
<add name="Controller ID Offset" type="StringOffset" ver1="10.2.0.0" ver2="20.1.0.0">Offset in NiStringPalette to an ID that can uniquely identify the controller among others of the same type on the same NiObjectNET.</add>
<add name="Interpolator ID Offset" type="StringOffset" ver1="10.2.0.0" ver2="20.1.0.0">Offset in NiStringPalette to an ID that can uniquely identify the interpolator among others of the same type on the same NiObjectNET.</add>
<!-- After 20.1 -->
<add name="Node Name" type="string" ver1="20.1.0.1">The name of the animated NiAVObject.</add>
<add name="Property Type" type="string" ver1="20.1.0.1">The RTTI type of the NiProperty the controller is attached to, if applicable.</add>
<add name="Controller Type" type="string" ver1="20.1.0.1">The RTTI type of the NiTimeController.</add>
<add name="Controller ID" type="string" ver1="20.1.0.1">An ID that can uniquely identify the controller among others of the same type on the same NiObjectNET.</add>
<add name="Interpolator ID" type="string" ver1="20.1.0.1">An ID that can uniquely identify the interpolator among others of the same type on the same NiObjectNET.</add>
</compound>
<compound name="ExportInfo">
Information about how the file was exported
<add name="Author" type="ShortString" />
<add name="Process Script" type="ShortString" />
<add name="Export Script" type="ShortString" />
</compound>
<!-- Don't use vercond in Header, it breaks niflib -->
<compound name="Header">
The NIF file header.
<add name="Header String" type="HeaderString">'NetImmerse File Format x.x.x.x' (versions &lt;= 10.0.1.2) or 'Gamebryo File Format x.x.x.x' (versions &gt;= 10.1.0.0), with x.x.x.x the version written out. Ends with a newline character (0x0A).</add>
<add name="Copyright" type="LineString" arr1="3" ver2="3.1.0.0" />
<add name="Version" type="FileVersion" default="0x04000002" ver1="3.1.0.1">The NIF version, in hexadecimal notation: 0x04000002, 0x0401000C, 0x04020002, 0x04020100, 0x04020200, 0x0A000100, 0x0A010000, 0x0A020000, 0x14000004, ...</add>
<add name="Endian Type" type="EndianType" default="ENDIAN_LITTLE" ver1="20.0.0.3">Determines the endianness of the data in the file.</add>
<add name="User Version" type="ulittle32" ver1="10.0.1.8">An extra version number, for companies that decide to modify the file format.</add>
<add name="Num Blocks" type="ulittle32" ver1="3.1.0.1">Number of file objects.</add>
<!-- BSStreamHeader -->
<add name="User Version 2" type="ulittle32" default="0" cond="((Version == 20.2.0.7) || (Version == 20.0.0.5) || ((Version &gt;= 10.0.1.2) &amp;&amp; (Version &lt;= 20.0.0.4) &amp;&amp; (User Version &lt;= 11))) &amp;&amp; (User Version &gt;= 3)" />
<add name="Export Info" type="ExportInfo" cond="((Version == 20.2.0.7) || (Version == 20.0.0.5) || ((Version &gt;= 10.0.1.2) &amp;&amp; (Version &lt;= 20.0.0.4) &amp;&amp; (User Version &lt;= 11))) &amp;&amp; (User Version &gt;= 3)" />
<add name="Max Filepath" type="ShortString" cond="(User Version 2 == 130)" />
<!-- / BSStreamHeader -->
<add name="Metadata" type="ByteArray" ver1="30.0.0.0" />
<add name="Num Block Types" type="ushort" ver1="5.0.0.1">Number of object types in this NIF file.</add>
<add name="Block Types" type="SizedString" arr1="Num Block Types" ver1="5.0.0.1" cond="Version != 20.3.1.2">List of all object types used in this NIF file.</add>
<add name="Block Type Hashes" type="uint" arr1="Num Block Types" ver1="20.3.1.2" ver2="20.3.1.2">List of all object types used in this NIF file.</add>
<add name="Block Type Index" type="BlockTypeIndex" arr1="Num Blocks" ver1="5.0.0.1">Maps file objects on their corresponding type: first file object is of type object_types[object_type_index[0]], the second of object_types[object_type_index[1]], etc.</add>
<add name="Block Size" type="uint" arr1="Num Blocks" ver1="20.2.0.5">Array of block sizes?</add>
<add name="Num Strings" type="uint" ver1="20.1.0.1">Number of strings.</add>
<add name="Max String Length" type="uint" ver1="20.1.0.1">Maximum string length.</add>
<add name="Strings" type="SizedString" arr1="Num Strings" ver1="20.1.0.1">Strings.</add>
<add name="Num Groups" type="uint" default="0" ver1="5.0.0.6" />
<add name="Groups" type="uint" arr1="Num Groups" ver1="5.0.0.6" />
</compound>
<compound name="StringPalette">
A list of \\0 terminated strings.
<add name="Palette" type="SizedString">A bunch of 0x00 seperated strings.</add>
<add name="Length" type="uint">Length of the palette string is repeated here.</add>
</compound>
<compound name="TBC">
Tension, bias, continuity.
<add name="t" type="float">Tension.</add>
<add name="b" type="float">Bias.</add>
<add name="c" type="float">Continuity.</add>
</compound>
<compound name="Key" istemplate="1">
A generic key with support for interpolation. Type 1 is normal linear interpolation, type 2 has forward and backward tangents, and type 3 has tension, bias and continuity arguments. Note that color4 and byte always seem to be of type 1.
<add name="Time" type="float">Time of the key.</add>
<add name="Value" type="TEMPLATE">The key value.</add>
<add name="Forward" type="TEMPLATE" cond="ARG == 2">Key forward tangent.</add>
<add name="Backward" type="TEMPLATE" cond="ARG == 2">The key backward tangent.</add>
<add name="TBC" type="TBC" cond="ARG == 3">The TBC of the key.</add>
</compound>
<compound name="KeyGroup" istemplate="1">
Array of vector keys (anything that can be interpolated, except rotations).
<add name="Num Keys" type="uint">Number of keys in the array.</add>
<add name="Interpolation" type="KeyType" cond="Num Keys != 0">The key type.</add>
<add name="Keys" type="Key" arg="Interpolation" template="TEMPLATE" arr1="Num Keys">The keys.</add>
</compound>
<compound name="QuatKey" istemplate="1"><!-- TEMPLATE should always be Quaternion -->
A special version of the key type used for quaternions. Never has tangents.
<add name="Time" type="float" ver2="10.1.0.0">Time the key applies.</add>
<add name="Time" type="float" cond="ARG != 4" ver1="10.1.0.106">Time the key applies.</add>
<add name="Value" type="TEMPLATE" cond="ARG != 4">Value of the key.</add>
<add name="TBC" type="TBC" cond="ARG == 3">The TBC of the key.</add>
</compound>
<compound name="TexCoord">
Texture coordinates (u,v). As in OpenGL; image origin is in the lower left corner.
<add name="u" type="float">First coordinate.</add>
<add name="v" type="float">Second coordinate.</add>
</compound>
<compound name="HalfTexCoord">
Texture coordinates (u,v).
<add name="u" type="hfloat">First coordinate.</add>
<add name="v" type="hfloat">Second coordinate.</add>
</compound>
<enum name="TransformMethod" storage="uint" prefix="TM">
Describes the order of scaling and rotation matrices. Translate, Scale, Rotation, Center are from TexDesc.
Back = inverse of Center. FromMaya = inverse of the V axis with a positive translation along V of 1 unit.
<option value="0" name="Maya Deprecated">Center * Rotation * Back * Translate * Scale</option>
<option value="1" name="Max">Center * Scale * Rotation * Translate * Back</option>
<option value="2" name="Maya">Center * Rotation * Back * FromMaya * Translate * Scale</option>
</enum>
<compound name="TexDesc">
NiTexturingProperty::Map. Texture description.
<add name="Image" type="Ref" template="NiImage" ver2="3.1">Link to the texture image.</add>
<add name="Source" type="Ref" template="NiSourceTexture" ver1="3.3.0.13">NiSourceTexture object index.</add>
<add name="Clamp Mode" type="TexClampMode" default="WRAP_S_WRAP_T" ver2="20.0.0.5">0=clamp S clamp T, 1=clamp S wrap T, 2=wrap S clamp T, 3=wrap S wrap T</add>
<add name="Filter Mode" type="TexFilterMode" default="FILTER_TRILERP" ver2="20.0.0.5">0=nearest, 1=bilinear, 2=trilinear, 3=..., 4=..., 5=...</add>
<add name="Flags" type="Flags" ver1="20.1.0.3">Texture mode flags; clamp and filter mode stored in upper byte with 0xYZ00 = clamp mode Y, filter mode Z.</add>
<add name="Max Anisotropy" type="ushort" ver1="20.5.0.4" />
<add name="UV Set" type="uint" default="0" ver2="20.0.0.5">The texture coordinate set in NiGeometryData that this texture slot will use.</add>
<add name="PS2 L" type="short" default="0" ver2="10.4.0.1">L can range from 0 to 3 and are used to specify how fast a texture gets blurry.</add>
<add name="PS2 K" type="short" default="-75" ver2="10.4.0.1">K is used as an offset into the mipmap levels and can range from -2047 to 2047. Positive values push the mipmap towards being blurry and negative values make the mipmap sharper.</add>
<add name="Unknown1" type="ushort" ver2="4.1.0.12">Unknown, 0 or 0x0101?</add>
<!-- NiTextureTransform -->
<add name="Has Texture Transform" type="bool" default="false" ver1="10.1.0.0">Whether or not the texture coordinates are transformed.</add>
<add name="Translation" type="TexCoord" cond="Has Texture Transform" ver1="10.1.0.0">The UV translation.</add>
<add name="Scale" type="TexCoord" cond="Has Texture Transform" ver1="10.1.0.0" default="1.0, 1.0">The UV scale.</add>
<add name="Rotation" type="float" default="0.0" cond="Has Texture Transform" ver1="10.1.0.0">The W axis rotation in texture space.</add>
<add name="Transform Method" type="TransformMethod" default="0" cond="Has Texture Transform" ver1="10.1.0.0">Depending on the source, scaling can occur before or after rotation.</add>
<add name="Center" type="TexCoord" cond="Has Texture Transform" ver1="10.1.0.0">The origin around which the texture rotates.</add>
</compound>
<compound name="ShaderTexDesc">
NiTexturingProperty::ShaderMap. Shader texture description.
<add name="Has Map" type="bool" />
<add name="Map" type="TexDesc" cond="Has Map" />
<add name="Map ID" type="uint" cond="Has Map">Unique identifier for the Gamebryo shader system.</add>
</compound>
<compound name="Triangle">
List of three vertex indices.
<add name="v1" type="ushort">First vertex index.</add>
<add name="v2" type="ushort">Second vertex index.</add>
<add name="v3" type="ushort">Third vertex index.</add>
</compound>
<bitflags name="VertexFlags" storage="ushort" prefix="VF">
<!-- First 4 bits are unused -->
<option value="4" name="Vertex" /> <!-- & 16 -->
<option value="5" name="UVs" /> <!-- & 32 -->
<option value="6" name="UVs_2" /> <!-- & 64 -->
<option value="7" name="Normals" /> <!-- & 128 -->
<option value="8" name="Tangents" /> <!-- & 256 -->
<option value="9" name="Vertex_Colors" /> <!-- & 512 -->
<option value="10" name="Skinned" /> <!-- & 1024 -->
<option value="11" name="Land_Data" /> <!-- & 2048 -->
<option value="12" name="Eye_Data" /> <!-- & 4096 -->
<option value="13" name="Instance" /> <!-- & 8192 -->
<option value="14" name="Full_Precision" /> <!-- & 16384 -->
<!-- Last bit unused -->
</bitflags>
<compound name="BSVertexData" externalcond="1">
<add name="Vertex" type="HalfVector3" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 16384) == 0)" />
<add name="Bitangent X" type="hfloat" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 256) != 0) &amp;&amp; ((ARG &amp; 16384) == 0)" />
<add name="Unknown Short" type="ushort" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 256) == 0) &amp;&amp; ((ARG &amp; 16384) == 0)" />
<add name="Vertex" type="Vector3" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 16384) != 0)" />
<add name="Bitangent X" type="float" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 256) != 0) &amp;&amp; ((ARG &amp; 16384) != 0)" />
<add name="Unknown Int" type="uint" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 256) == 0) &amp;&amp; ((ARG &amp; 16384) != 0)" />
<add name="UV" type="HalfTexCoord" cond="((ARG &amp; 32) != 0)" />
<add name="Normal" type="ByteVector3" cond="(ARG &amp; 128) != 0" />
<add name="Bitangent Y" type="byte" cond="(ARG &amp; 128) != 0" />
<add name="Tangent" type="ByteVector3" cond="((ARG &amp; 128) != 0) &amp;&amp; ((ARG &amp; 256) != 0)" />
<add name="Bitangent Z" type="byte" cond="((ARG &amp; 128) != 0) &amp;&amp; ((ARG &amp; 256) != 0)" />
<add name="Vertex Colors" type="ByteColor4" cond="(ARG &amp; 512) != 0" />
<add name="Bone Weights" type="hfloat" arr1="4" cond="(ARG &amp; 1024) != 0" />
<add name="Bone Indices" type="byte" arr1="4" cond="(ARG &amp; 1024) != 0" />
<add name="Eye Data" type="float" cond="(ARG &amp; 4096) != 0" />
</compound>
<compound name="BSVertexDataSSE" externalcond="1">
<add name="Vertex" type="Vector3" cond="((ARG &amp; 16) != 0)" />
<add name="Bitangent X" type="float" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 256) != 0)" />
<add name="Unknown Int" type="int" cond="((ARG &amp; 16) != 0) &amp;&amp; (ARG &amp; 256) == 0" />
<add name="UV" type="HalfTexCoord" cond="((ARG &amp; 32) != 0)" />
<add name="Normal" type="ByteVector3" cond="(ARG &amp; 128) != 0" />
<add name="Bitangent Y" type="byte" cond="(ARG &amp; 128) != 0" />
<add name="Tangent" type="ByteVector3" cond="((ARG &amp; 128) != 0) &amp;&amp; ((ARG &amp; 256) != 0)" />
<add name="Bitangent Z" type="byte" cond="((ARG &amp; 128) != 0) &amp;&amp; ((ARG &amp; 256) != 0)" />
<add name="Vertex Colors" type="ByteColor4" cond="(ARG &amp; 512) != 0" />
<add name="Bone Weights" type="hfloat" arr1="4" cond="(ARG &amp; 1024) != 0" />
<add name="Bone Indices" type="byte" arr1="4" cond="(ARG &amp; 1024) != 0" />
<add name="Eye Data" type="float" cond="(ARG &amp; 4096) != 0" />
</compound>
<compound name="BSVertexDesc">
<add name="VF1" type="byte" />
<add name="VF2" type="byte" />
<add name="VF3" type="byte" />
<add name="VF4" type="byte" />
<add name="VF5" type="byte" />
<add name="Vertex Attributes" type="VertexFlags" />
<add name="VF8" type="byte" />
</compound>
<compound name="SkinPartition" ver1="4.2.1.0">
Skinning data for a submesh, optimized for hardware skinning. Part of NiSkinPartition.
<add name="Num Vertices" type="ushort">Number of vertices in this submesh.</add>
<add name="Num Triangles" type="ushort" calculated="1">Number of triangles in this submesh.</add>
<add name="Num Bones" type="ushort">Number of bones influencing this submesh.</add>
<add name="Num Strips" type="ushort">Number of strips in this submesh (zero if not stripped).</add>
<add name="Num Weights Per Vertex" type="ushort">Number of weight coefficients per vertex. The Gamebryo engine seems to work well only if this number is equal to 4, even if there are less than 4 influences per vertex.</add>
<add name="Bones" type="ushort" arr1="Num Bones">List of bones.</add>
<add name="Has Vertex Map" type="bool" ver1="10.1.0.0">Do we have a vertex map?</add>
<add name="Vertex Map" type="ushort" arr1="Num Vertices" ver2="10.0.1.2">Maps the weight/influence lists in this submesh to the vertices in the shape being skinned.</add>
<add name="Vertex Map" type="ushort" arr1="Num Vertices" cond="Has Vertex Map" ver1="10.1.0.0">Maps the weight/influence lists in this submesh to the vertices in the shape being skinned.</add>
<add name="Has Vertex Weights" type="bool" ver1="10.1.0.0">Do we have vertex weights?</add>
<add name="Vertex Weights" type="float" arr1="Num Vertices" arr2="Num Weights Per Vertex" ver2="10.0.1.2">The vertex weights.</add>
<add name="Vertex Weights" type="float" arr1="Num Vertices" arr2="Num Weights Per Vertex" cond="Has Vertex Weights == 1" ver1="10.1.0.0">The vertex weights.</add>
<add name="Vertex Weights" type="hfloat" arr1="Num Vertices" arr2="Num Weights Per Vertex" cond="Has Vertex Weights == 15" ver1="20.3.1.1">The vertex weights.</add>
<add name="Strip Lengths" type="ushort" arr1="Num Strips">The strip lengths.</add>
<add name="Has Faces" type="bool" ver1="10.1.0.0">Do we have triangle or strip data?</add>
<add name="Strips" type="ushort" arr1="Num Strips" arr2="Strip Lengths" cond="Num Strips != 0" ver2="10.0.1.2">The strips.</add>
<add name="Strips" type="ushort" arr1="Num Strips" arr2="Strip Lengths" cond="(Has Faces) &amp;&amp; (Num Strips != 0)" ver1="10.1.0.0">The strips.</add>
<add name="Triangles" type="Triangle" arr1="Num Triangles" cond="Num Strips == 0" ver2="10.0.1.2">The triangles.</add>
<add name="Triangles" type="Triangle" arr1="Num Triangles" cond="(Has Faces) &amp;&amp; (Num Strips == 0)" ver1="10.1.0.0">The triangles.</add>
<add name="Has Bone Indices" type="bool">Do we have bone indices?</add>
<add name="Bone Indices" type="byte" arr1="Num Vertices" arr2="Num Weights Per Vertex" cond="Has Bone Indices">Bone indices, they index into 'Bones'.</add>
<add name="Unknown Short" type="ushort" vercond="User Version 2 &gt; 34">Unknown</add>
<add name="Vertex Desc" type="BSVertexDesc" ver="20.2.0.7" userver2="100" />
<add name="Triangles Copy" type="Triangle" arr1="Num Triangles" ver="20.2.0.7" userver2="100" />
<!-- related to the file posted in tracker item #3117836:
http://sourceforge.net/tracker/?func=detail&aid=3117836&group_id=149157&atid=776343 -->
<!--<add name="Unknown 83 C3" type="ushort" ver1="10.2.0.0" ver2="10.2.0.0" vercond="User Version == 1" ></add>
<add name="Unknown 00 00 1" type="ushort" ver1="10.2.0.0" ver2="10.2.0.0" vercond="User Version == 1"></add>
<add name="Num Vertices 2" type="ushort" ver1="10.2.0.0" ver2="10.2.0.0" vercond="User Version == 1"></add>
<add name="Unknown 00 00 2" type="ushort" ver1="10.2.0.0" ver2="10.2.0.0" vercond="User Version == 1"></add>
<add name="Unknown 00 00 3" type="ushort" ver1="10.2.0.0" ver2="10.2.0.0" vercond="User Version == 1"></add>
<add name="Unknown 00 00 4" type="ushort" ver1="10.2.0.0" ver2="10.2.0.0" vercond="User Version == 1"></add>
<add name="Unknown Arr 1" type="SkinPartitionUnknownItem1" arr1="Num Vertices 2" ver1="10.2.0.0" ver2="10.2.0.0" vercond="User Version == 1"></add>-->
</compound>
<!-- related to the file posted in tracker item #3117836:
http://sourceforge.net/tracker/?func=detail&aid=3117836&group_id=149157&atid=776343 -->
<!--<compound name="SkinPartitionUnknownItem1">
<add name="Unknown Flags" type="uint"></add>
<add name="f1" type="float"></add>
<add name="f2" type="float"></add>
<add name="f3" type="float"></add>
<add name="f4" type="float"></add>
<add name="f5" type="float"></add>
</compound>-->
<compound name="NiPlane">
A plane.
<add name="Normal" type="Vector3">The plane normal.</add>
<add name="Constant" type="float">The plane constant.</add>
</compound>
<compound name="NiBound">
A sphere.
<add name="Center" type="Vector3">The sphere's center.</add>
<add name="Radius" type="float">The sphere's radius.</add>
</compound>
<compound name="NiQuatTransform">
<add name="Translation" type="Vector3" />
<add name="Rotation" type="Quaternion" />
<add name="Scale" type="float" default="1.0" />
<add name="TRS Valid" type="bool" arr1="3" ver2="10.1.0.109">Whether each transform component is valid.</add>
</compound>
<compound name="NiTransform">
<add name="Rotation" type="Matrix33">The rotation part of the transformation matrix.</add>
<add name="Translation" type="Vector3">The translation vector.</add>
<add name="Scale" type="float" default="1.0">Scaling part (only uniform scaling is supported).</add>
</compound>
<bitflags name="FurnitureEntryPoints" storage="ushort">
Bethesda Animation. Furniture entry points. It specifies the direction(s) from where the actor is able to enter (and leave) the position.
<option value="0" name="Front">front entry point</option>
<option value="1" name="Behind">behind entry point</option>
<option value="2" name="Right">right entry point</option>
<option value="3" name="Left">left entry point</option>
<option value="4" name="Up">up entry point - unknown function. Used on some beds in Skyrim, probably for blocking of sleeping position.</option>
</bitflags>
<enum name="AnimationType" storage="ushort">
Bethesda Animation. Animation type used on this position. This specifies the function of this position.
<option value="1" name="Sit">Actor use sit animation.</option>
<option value="2" name="Sleep">Actor use sleep animation.</option>
<option value="4" name="Lean">Used for lean animations?</option>
</enum>
<compound name="FurniturePosition">
Bethesda Animation. Describes a furniture position?
<add name="Offset" type="Vector3">Offset of furniture marker.</add>
<add name="Orientation" type="ushort" vercond="User Version 2 &lt;= 34">Furniture marker orientation.</add>
<add name="Position Ref 1" type="byte" vercond="User Version 2 &lt;= 34">Refers to a furnituremarkerxx.nif file. Always seems to be the same as Position Ref 2.</add>
<add name="Position Ref 2" type="byte" vercond="User Version 2 &lt;= 34">Refers to a furnituremarkerxx.nif file. Always seems to be the same as Position Ref 1.</add>
<add name="Heading" type="float" vercond="User Version 2 &gt; 34">Similar to Orientation, in float form.</add>
<add name="Animation Type" type="AnimationType" vercond="User Version 2 &gt; 34">Unknown</add>
<add name="Entry Properties" type="FurnitureEntryPoints" vercond="User Version 2 &gt; 34">Unknown/unused in nif?</add>
</compound>
<compound name="TriangleData">
Bethesda Havok. A triangle with extra data used for physics.
<add name="Triangle" type="Triangle">The triangle.</add>
<add name="Welding Info" type="ushort">Additional havok information on how triangles are welded.</add>
<add name="Normal" type="Vector3" ver2="20.0.0.5">This is the triangle's normal.</add>
</compound>
<compound name="Morph">
Geometry morphing data component.
<add name="Frame Name" type="string" ver1="10.1.0.106">Name of the frame.</add>
<add name="Num Keys" type="uint" ver2="10.1.0.0">The number of morph keys that follow.</add>
<add name="Interpolation" type="KeyType" ver2="10.1.0.0">Unlike most objects, the presense of this value is not conditional on there being keys.</add>
<add name="Keys" type="Key" arg="Interpolation" template="float" arr1="Num Keys" ver2="10.1.0.0">The morph key frames.</add>
<add name="Legacy Weight" type="float" ver1="10.1.0.104" ver2="20.1.0.2" vercond="User Version 2 &lt; 10" /> <!-- Exclude Bethesda -->
<add name="Vectors" type="Vector3" arr1="ARG">Morph vectors.</add>
</compound>
<compound name="Particle">
particle array entry
<add name="Velocity" type="Vector3">Particle velocity</add>
<add name="Unknown Vector" type="Vector3">Unknown</add>
<add name="Lifetime" type="float">The particle age.</add>
<add name="Lifespan" type="float">Maximum age of the particle.</add>
<add name="Timestamp" type="float">Timestamp of the last update.</add>
<add name="Unknown Short" type="ushort" default="0">Unknown short</add>
<add name="Vertex ID" type="ushort">Particle/vertex index matches array index</add>
</compound>
<compound name="BoneData">
NiSkinData::BoneData. Skinning data component.
<add name="Skin Transform" type="NiTransform">Offset of the skin from this bone in bind position.</add>
<add name="Bounding Sphere Offset" type="Vector3">Translation offset of a bounding sphere holding all vertices. (Note that its a Sphere Containing Axis Aligned Box not a minimum volume Sphere)</add>
<add name="Bounding Sphere Radius" type="float">Radius for bounding sphere holding all vertices.</add>
<add name="Unknown 13 Shorts" type="short" arr1="13" ver1="20.3.0.9" ver2="20.3.0.9" vercond="(User Version == 0x20000) || (User Version == 0x30000)">Unknown, always 0?</add>
<add name="Num Vertices" type="ushort">Number of weighted vertices.</add>
<add name="Vertex Weights" type="BoneVertData" arr1="Num Vertices" ver2="4.2.1.0">The vertex weights.</add>
<add name="Vertex Weights" type="BoneVertData" arr1="Num Vertices" ver1="4.2.2.0" cond="ARG == 1">The vertex weights.</add>
<add name="Vertex Weights" suffix="Half" type="BoneVertDataHalf" arr1="Num Vertices" ver1="20.3.1.1" cond="ARG == 15">The vertex weights.</add>
</compound>
<compound name="HavokFilter">
Bethesda Havok. Collision filter info representing Layer, Flags, Part Number, and Group all combined into one uint.
<add name="Layer" suffix="OB" type="OblivionLayer" default="OL_STATIC" ver2="20.0.0.5" vercond="(User Version 2 &lt; 16)">The layer the collision belongs to.</add>
<add name="Layer" suffix="FO" type="Fallout3Layer" default="FOL_STATIC" vercond="(Version == 20.2.0.7) &amp;&amp; (User Version 2 &lt;= 34)">The layer the collision belongs to.</add>
<add name="Layer" suffix="SK" type="SkyrimLayer" default="SKYL_STATIC" vercond="(Version == 20.2.0.7) &amp;&amp; (User Version 2 &gt; 34)">The layer the collision belongs to.</add>
<add name="Flags and Part Number" type="byte" default="0">FLAGS are stored in highest 3 bits:
Bit 7: sets the LINK property and controls whether this body is physically linked to others.
Bit 6: turns collision off (not used for Layer BIPED).
Bit 5: sets the SCALED property.
PART NUMBER is stored in bits 0-4. Used only when Layer is set to BIPED.
Part Numbers for Oblivion, Fallout 3, Skyrim:
0 - OTHER
1 - HEAD
2 - BODY
3 - SPINE1
4 - SPINE2
5 - LUPPERARM
6 - LFOREARM
7 - LHAND
8 - LTHIGH
9 - LCALF
10 - LFOOT
11 - RUPPERARM
12 - RFOREARM
13 - RHAND
14 - RTHIGH
15 - RCALF
16 - RFOOT
17 - TAIL
18 - SHIELD
19 - QUIVER
20 - WEAPON
21 - PONYTAIL
22 - WING
23 - PACK
24 - CHAIN
25 - ADDONHEAD
26 - ADDONCHEST
27 - ADDONARM
28 - ADDONLEG
29-31 - NULL
</add>
<add name="Group" type="ushort" />
</compound>
<compound name="HavokMaterial">
Bethesda Havok. Material wrapper for varying material enums by game.
<add name="Unknown Int" type="uint" ver2="10.0.1.2" />
<add name="Material" suffix="OB" type="OblivionHavokMaterial" ver2="20.0.0.5" vercond="(User Version 2 &lt; 16)">The material of the shape.</add>
<add name="Material" suffix="FO" type="Fallout3HavokMaterial" vercond="(Version == 20.2.0.7) &amp;&amp; (User Version 2 &lt;= 34)">The material of the shape.</add>
<add name="Material" suffix="SK" type="SkyrimHavokMaterial" vercond="(Version == 20.2.0.7) &amp;&amp; (User Version 2 &gt; 34)">The material of the shape.</add>
</compound>
<compound name="OblivionSubShape">
Bethesda Havok. Havok Information for packed TriStrip shapes.
<add name="Havok Filter" type="HavokFilter" />
<add name="Num Vertices" type="uint">The number of vertices that form this sub shape.</add>
<add name="Material" type="HavokMaterial">The material of the subshape.</add>
</compound>
<compound name="bhkPositionConstraintMotor">
<add name="Min Force" type="float" default="-1000000.0">Minimum motor force</add>
<add name="Max Force" type="float" default="1000000.0">Maximum motor force</add>
<add name="Tau" type="float" default="0.8">Relative stiffness</add>
<add name="Damping" type="float" default="1.0">Motor damping value</add>
<add name="Proportional Recovery Velocity" type="float" default="2.0">A factor of the current error to calculate the recovery velocity</add>
<add name="Constant Recovery Velocity" type="float" default="1.0">A constant velocity which is used to recover from errors</add>
<add name="Motor Enabled" type="bool" default="0">Is Motor enabled</add>
</compound>
<compound name="bhkVelocityConstraintMotor">
<add name="Min Force" type="float" default="-1000000.0">Minimum motor force</add>
<add name="Max Force" type="float" default="1000000.0">Maximum motor force</add>
<add name="Tau" type="float" default="0">Relative stiffness</add>
<add name="Target Velocity" type="float" default="0" />
<add name="Use Velocity Target" type="bool" default="0" />
<add name="Motor Enabled" type="bool" default="0">Is Motor enabled</add>
</compound>
<compound name="bhkSpringDamperConstraintMotor">
<add name="Min Force" type="float" default="-1000000.0">Minimum motor force</add>
<add name="Max Force" type="float" default="1000000.0">Maximum motor force</add>
<add name="Spring Constant" type="float" default="0">The spring constant in N/m</add>
<add name="Spring Damping" type="float" default="0">The spring damping in Nsec/m</add>
<add name="Motor Enabled" type="bool" default="0">Is Motor enabled</add>
</compound>
<enum name="MotorType" storage="byte">
<option value="0" name="MOTOR_NONE" />
<option value="1" name="MOTOR_POSITION" />
<option value="2" name="MOTOR_VELOCITY" />
<option value="3" name="MOTOR_SPRING" />
</enum>
<compound name="MotorDescriptor">
<add name="Type" type="MotorType" default="MOTOR_NONE" />
<add name="Position Motor" type="bhkPositionConstraintMotor" cond="Type == 1" />
<add name="Velocity Motor" type="bhkVelocityConstraintMotor" cond="Type == 2" />
<add name="Spring Damper Motor" type="bhkSpringDamperConstraintMotor" cond="Type == 3" />
</compound>
<compound name="RagdollDescriptor">
This constraint defines a cone in which an object can rotate. The shape of the cone can be controlled in two (orthogonal) directions.
<!-- Oblivion and Fallout 3, Havok 550 -->
<add name="Pivot A" type="Vector4" vercond="User Version 2 &lt;= 16">The point where the constraint is attached to its parent rigidbody.</add>
<add name="Plane A" type="Vector4" vercond="User Version 2 &lt;= 16">Defines the orthogonal plane in which the body can move, the orthogonal directions in which the shape can be controlled (the direction orthogonal on this one and Twist A).</add>
<add name="Twist A" type="Vector4" vercond="User Version 2 &lt;= 16">Central directed axis of the cone in which the object can rotate. Orthogonal on Plane A.</add>
<add name="Pivot B" type="Vector4" vercond="User Version 2 &lt;= 16">The point where the constraint is attached to the other rigidbody.</add>
<add name="Plane B" type="Vector4" vercond="User Version 2 &lt;= 16">Defines the orthogonal plane in which the shape can be controlled (the direction orthogonal on this one and Twist B).</add>
<add name="Twist B" type="Vector4" vercond="User Version 2 &lt;= 16">Central directed axis of the cone in which the object can rotate. Orthogonal on Plane B.</add>
<!-- Fallout 3 and later, Havok 660 and 2010 -->
<add name="Twist A" type="Vector4" vercond="User Version 2 &gt; 16">Central directed axis of the cone in which the object can rotate. Orthogonal on Plane A.</add>
<add name="Plane A" type="Vector4" vercond="User Version 2 &gt; 16">Defines the orthogonal plane in which the body can move, the orthogonal directions in which the shape can be controlled (the direction orthogonal on this one and Twist A).</add>
<add name="Motor A" type="Vector4" vercond="User Version 2 &gt; 16">Defines the orthogonal directions in which the shape can be controlled (namely in this direction, and in the direction orthogonal on this one and Twist A).</add>
<add name="Pivot A" type="Vector4" vercond="User Version 2 &gt; 16">Point around which the object will rotate. Defines the orthogonal directions in which the shape can be controlled (namely in this direction, and in the direction orthogonal on this one and Twist A).</add>
<add name="Twist B" type="Vector4" vercond="User Version 2 &gt; 16">Central directed axis of the cone in which the object can rotate. Orthogonal on Plane B.</add>
<add name="Plane B" type="Vector4" vercond="User Version 2 &gt; 16">Defines the orthogonal plane in which the body can move, the orthogonal directions in which the shape can be controlled (the direction orthogonal on this one and Twist A).</add>
<add name="Motor B" type="Vector4" vercond="User Version 2 &gt; 16">Defines the orthogonal directions in which the shape can be controlled (namely in this direction, and in the direction orthogonal on this one and Twist A).</add>
<add name="Pivot B" type="Vector4" vercond="User Version 2 &gt; 16">Defines the orthogonal directions in which the shape can be controlled (namely in this direction, and in the direction orthogonal on this one and Twist A).</add>
<add name="Cone Max Angle" type="float">Maximum angle the object can rotate around the vector orthogonal on Plane A and Twist A relative to the Twist A vector. Note that Cone Min Angle is not stored, but is simply minus this angle.</add>
<add name="Plane Min Angle" type="float">Minimum angle the object can rotate around Plane A, relative to Twist A.</add>
<add name="Plane Max Angle" type="float">Maximum angle the object can rotate around Plane A, relative to Twist A.</add>
<add name="Twist Min Angle" type="float">Minimum angle the object can rotate around Twist A, relative to Plane A.</add>
<add name="Twist Max Angle" type="float">Maximum angle the object can rotate around Twist A, relative to Plane A.</add>
<add name="Max Friction" type="float">Maximum friction, typically 0 or 10. In Fallout 3, typically 100.</add>
<add name="Motor" type="MotorDescriptor" ver1="20.2.0.7" vercond="User Version 2 &gt; 16" />
</compound>
<compound name="LimitedHingeDescriptor">
This constraint allows rotation about a specified axis, limited by specified boundaries.
<!-- Oblivion and Fallout 3, Havok 550 -->
<add name="Pivot A" type="Vector4" vercond="User Version 2 &lt;= 16">Pivot point around which the object will rotate.</add>
<add name="Axle A" type="Vector4" vercond="User Version 2 &lt;= 16">Axis of rotation.</add>
<add name="Perp2 Axle In A1" type="Vector4" vercond="User Version 2 &lt;= 16">Vector in the rotation plane which defines the zero angle.</add>
<add name="Perp2 Axle In A2" type="Vector4" vercond="User Version 2 &lt;= 16">Vector in the rotation plane, orthogonal on the previous one, which defines the positive direction of rotation. This is always the vector product of Axle A and Perp2 Axle In A1.</add>
<add name="Pivot B" type="Vector4" vercond="User Version 2 &lt;= 16">Pivot A in second entity coordinate system.</add>
<add name="Axle B" type="Vector4" vercond="User Version 2 &lt;= 16">Axle A in second entity coordinate system.</add>
<add name="Perp2 Axle In B2" type="Vector4" vercond="User Version 2 &lt;= 16">Perp2 Axle In A2 in second entity coordinate system.</add>
<!-- Fallout 3 and later, Havok 660 and 2010 -->
<add name="Axle A" type="Vector4" vercond="User Version 2 &gt; 16">Axis of rotation.</add>
<add name="Perp2 Axle In A1" type="Vector4" vercond="User Version 2 &gt; 16">Vector in the rotation plane which defines the zero angle.</add>
<add name="Perp2 Axle In A2" type="Vector4" vercond="User Version 2 &gt; 16">Vector in the rotation plane, orthogonal on the previous one, which defines the positive direction of rotation. This is always the vector product of Axle A and Perp2 Axle In A1.</add>
<add name="Pivot A" type="Vector4" vercond="User Version 2 &gt; 16">Pivot point around which the object will rotate.</add>
<add name="Axle B" type="Vector4" vercond="User Version 2 &gt; 16">Axle A in second entity coordinate system.</add>
<add name="Perp2 Axle In B1" type="Vector4" vercond="User Version 2 &gt; 16">Perp2 Axle In A1 in second entity coordinate system.</add>
<add name="Perp2 Axle In B2" type="Vector4" vercond="User Version 2 &gt; 16">Perp2 Axle In A2 in second entity coordinate system.</add>
<add name="Pivot B" type="Vector4" vercond="User Version 2 &gt; 16">Pivot A in second entity coordinate system.</add>
<add name="Min Angle" type="float">Minimum rotation angle.</add>
<add name="Max Angle" type="float">Maximum rotation angle.</add>
<add name="Max Friction" type="float">Maximum friction, typically either 0 or 10. In Fallout 3, typically 100.</add>
<add name="Motor" type="MotorDescriptor" ver1="20.2.0.7" vercond="User Version 2 &gt; 16" />
</compound>
<compound name="HingeDescriptor">
This constraint allows rotation about a specified axis.
<!-- Oblivion -->
<add name="Pivot A" type="Vector4" ver2="20.0.0.5">Pivot point around which the object will rotate.</add>
<add name="Perp2 Axle In A1" type="Vector4" ver2="20.0.0.5">Vector in the rotation plane which defines the zero angle.</add>
<add name="Perp2 Axle In A2" type="Vector4" ver2="20.0.0.5">Vector in the rotation plane, orthogonal on the previous one, which defines the positive direction of rotation.</add>
<add name="Pivot B" type="Vector4" ver2="20.0.0.5">Pivot A in second entity coordinate system.</add>
<add name="Axle B" type="Vector4" ver2="20.0.0.5">Axle A (vector orthogonal on Perp2 Axles) in second entity coordinate system.</add>
<!-- Fallout 3 -->
<add name="Axle A" type="Vector4" ver1="20.2.0.7">Axis of rotation.</add>
<add name="Perp2 Axle In A1" type="Vector4" ver1="20.2.0.7">Vector in the rotation plane which defines the zero angle.</add>
<add name="Perp2 Axle In A2" type="Vector4" ver1="20.2.0.7">Vector in the rotation plane, orthogonal on the previous one, which defines the positive direction of rotation. This is always the vector product of Axle A and Perp2 Axle In A1.</add>
<add name="Pivot A" type="Vector4" ver1="20.2.0.7">Pivot point around which the object will rotate.</add>
<add name="Axle B" type="Vector4" ver1="20.2.0.7">Axle A in second entity coordinate system.</add>
<add name="Perp2 Axle In B1" type="Vector4" ver1="20.2.0.7">Perp2 Axle In A1 in second entity coordinate system.</add>
<add name="Perp2 Axle In B2" type="Vector4" ver1="20.2.0.7">Perp2 Axle In A2 in second entity coordinate system.</add>
<add name="Pivot B" type="Vector4" ver1="20.2.0.7">Pivot A in second entity coordinate system.</add>
<!-- no friction -->
</compound>
<compound name="BallAndSocketDescriptor">
<add name="Pivot A" type="Vector4">Pivot point in the local space of entity A.</add>
<add name="Pivot B" type="Vector4">Pivot point in the local space of entity B.</add>
</compound>
<compound name="PrismaticDescriptor">
<!-- In reality Havok loads these as Transform A and Transform B using hkTransform -->
<!-- Oblivion (Order is a guess) -->
<add name="Pivot A" type="Vector4" ver2="20.0.0.5">Pivot.</add>
<add name="Rotation A" type="Vector4" ver2="20.0.0.5">Rotation axis.</add>
<add name="Plane A" type="Vector4" ver2="20.0.0.5">Plane normal. Describes the plane the object is able to move on.</add>
<add name="Sliding A" type="Vector4" ver2="20.0.0.5">Describes the axis the object is able to travel along. Unit vector.</add>
<add name="Pivot B" type="Vector4" ver2="20.0.0.5">Pivot in B coordinates.</add>
<add name="Rotation B" type="Vector4" ver2="20.0.0.5">Rotation axis.</add>
<add name="Plane B" type="Vector4" ver2="20.0.0.5">Plane normal. Describes the plane the object is able to move on in B coordinates.</add>
<add name="Sliding B" type="Vector4" ver2="20.0.0.5">Describes the axis the object is able to travel along in B coordinates. Unit vector.</add>
<!-- Fallout 3 -->
<add name="Sliding A" type="Vector4" ver1="20.2.0.7">Describes the axis the object is able to travel along. Unit vector.</add>
<add name="Rotation A" type="Vector4" ver1="20.2.0.7">Rotation axis.</add>
<add name="Plane A" type="Vector4" ver1="20.2.0.7">Plane normal. Describes the plane the object is able to move on.</add>
<add name="Pivot A" type="Vector4" ver1="20.2.0.7">Pivot.</add>
<add name="Sliding B" type="Vector4" ver1="20.2.0.7">Describes the axis the object is able to travel along in B coordinates. Unit vector.</add>
<add name="Rotation B" type="Vector4" ver1="20.2.0.7">Rotation axis.</add>
<add name="Plane B" type="Vector4" ver1="20.2.0.7">Plane normal. Describes the plane the object is able to move on in B coordinates.</add>
<add name="Pivot B" type="Vector4" ver1="20.2.0.7">Pivot in B coordinates.</add>
<add name="Min Distance" type="float">Describe the min distance the object is able to travel.</add>
<add name="Max Distance" type="float">Describe the max distance the object is able to travel.</add>
<add name="Friction" type="float" >Friction.</add>
<add name="Motor" type="MotorDescriptor" ver1="20.2.0.7" vercond="User Version 2 &gt; 16" />
</compound>
<compound name="StiffSpringDescriptor">
<add name="Pivot A" type="Vector4" />
<add name="Pivot B" type="Vector4" />
<add name="Length" type="float" />
</compound>
<compound name="OldSkinData">
Used to store skin weights in NiTriShapeSkinController.
<add name="Vertex Weight" type="float">The amount that this bone affects the vertex.</add>
<add name="Vertex Index" type="ushort">The index of the vertex that this weight applies to.</add>
<add name="Unknown Vector" type="Vector3">Unknown. Perhaps some sort of offset?</add>
</compound>
<enum name="ImageType" storage="uint">
Determines how the raw image data is stored in NiRawImageData.
<option value="1" name="RGB">Colors store red, blue, and green components.</option>
<option value="2" name="RGBA">Colors store red, blue, green, and alpha components.</option>
</enum>
<compound name="BoxBV">
Box Bounding Volume
<add name="Center" type="Vector3" />
<add name="Axis" type="Vector3" arr1="3" />
<add name="Extent" type="Vector3" />
</compound>
<compound name="CapsuleBV">
Capsule Bounding Volume
<add name="Center" type="Vector3" />
<add name="Origin" type="Vector3" />
<add name="Extent" type="float" />
<add name="Radius" type="float" />
</compound>
<compound name="HalfSpaceBV">
<add name="Plane" type="NiPlane" />
<add name="Center" type="Vector3" />
</compound>
<compound name="BoundingVolume">
<add name="Collision Type" type="BoundVolumeType">Type of collision data.</add>
<add name="Sphere" type="NiBound" cond="Collision Type == 0" />
<add name="Box" type="BoxBV" cond="Collision Type == 1" />
<add name="Capsule" type="CapsuleBV" cond="Collision Type == 2" />
<add name="Union" type="UnionBV" cond="Collision Type == 4" />
<add name="Half Space" type="HalfSpaceBV" cond="Collision Type == 5" />
</compound>
<compound name="UnionBV">
<add name="Num BV" type="uint" />
<add name="Bounding Volumes" type="BoundingVolume" arr1="Num BV" />
</compound>
<compound name="MorphWeight">
<add name="Interpolator" type="Ref" template="NiInterpolator" />
<add name="Weight" type="float" />
</compound>
<compound name="BoneTransform">
Transformation data for the bone at this index in bhkPoseArray.
<add name="Translation" type="Vector3" />
<add name="Rotation" type="hkQuaternion" />
<add name="Scale" type="Vector3" />
</compound>
<compound name="BonePose">
A list of transforms for each bone in bhkPoseArray.
<add name="Num Transforms" type="uint" />
<add name="Transforms" type="BoneTransform" arr1="Num Transforms" />
</compound>
<compound name="DecalVectorArray">
Array of Vectors for Decal placement in BSDecalPlacementVectorExtraData.
<add name="Num Vectors" type="short" />
<add name="Points" type="Vector3" arr1="Num Vectors">Vector XYZ coords</add>
<add name="Normals" type="Vector3" arr1="Num Vectors">Vector Normals</add>
</compound>
<bitflags name="BSPartFlag" storage="ushort">
Editor flags for the Body Partitions.
<option value="0" name="PF_EDITOR_VISIBLE">Visible in Editor</option>
<option value="8" name="PF_START_NET_BONESET">Start a new shared boneset. It is expected this BoneSet and the following sets in the Skin Partition will have the same bones.</option>
</bitflags>
<compound name="BodyPartList">
Body part list for DismemberSkinInstance
<add name="Part Flag" type="BSPartFlag" default="257">Flags related to the Body Partition</add>
<add name="Body Part" type="BSDismemberBodyPartType">Body Part Index</add>
</compound>
<compound name="BoneLOD">
Stores Bone Level of Detail info in a BSBoneLODExtraData
<add name="Distance" type="uint" />
<add name="Bone Name" type="string" />
</compound>
<compound name="bhkCMSDMaterial">
Per-chunk material, used in bhkCompressedMeshShapeData
<add name="Material" type="SkyrimHavokMaterial" />
<add name="Filter" type="HavokFilter" />
</compound>
<compound name="bhkCMSDBigTris">
Triangle indices used in pair with "Big Verts" in a bhkCompressedMeshShapeData.
<add name="Triangle 1" type="ushort" />
<add name="Triangle 2" type="ushort" />
<add name="Triangle 3" type="ushort" />
<add name="Material" type="uint">Always 0?</add>
<add name="Welding Info" type="ushort" />
</compound>
<compound name="bhkCMSDTransform">
A set of transformation data: translation and rotation
<add name="Translation" type="Vector4">A vector that moves the chunk by the specified amount. W is not used.</add>
<add name="Rotation" type="hkQuaternion">Rotation. Reference point for rotation is bhkRigidBody translation.</add>
</compound>
<compound name="bhkCMSDChunk">
Defines subshape chunks in bhkCompressedMeshShapeData
<add name="Translation" type="Vector4" />
<add name="Material Index" type="uint">Index of material in bhkCompressedMeshShapeData::Chunk Materials</add>
<add name="Reference" type="ushort">Always 65535?</add>
<add name="Transform Index" type="ushort">Index of transformation in bhkCompressedMeshShapeData::Chunk Transforms</add>
<add name="Num Vertices" type="uint" />
<add name="Vertices" type="ushort" arr1="Num Vertices" />
<add name="Num Indices" type="uint" />
<add name="Indices" type="ushort" arr1="Num Indices" />
<add name="Num Strips" type="uint" />
<add name="Strips" type="ushort" arr1="Num Strips" />
<add name="Num Welding Info" type="uint" />
<add name="Welding Info" type="ushort" arr1="Num Welding Info" />
</compound>
<compound name="MalleableDescriptor">
<add name="Type" type="hkConstraintType">Type of constraint.</add>
<add name="Num Entities" type="uint" default="2">Always 2 (Hardcoded). Number of bodies affected by this constraint.</add>
<add name="Entity A" type="Ptr" template="bhkEntity">Usually NONE. The entity affected by this constraint.</add>
<add name="Entity B" type="Ptr" template="bhkEntity">Usually NONE. The entity affected by this constraint.</add>
<add name="Priority" type="uint" default="1">Usually 1. Higher values indicate higher priority of this constraint?</add>
<add name="Ball and Socket" type="BallAndSocketDescriptor" cond="Type == 0" />
<add name="Hinge" type="HingeDescriptor" cond="Type == 1" />
<add name="Limited Hinge" type="LimitedHingeDescriptor" cond="Type == 2" />
<add name="Prismatic" type="PrismaticDescriptor" cond="Type == 6" />
<add name="Ragdoll" type="RagdollDescriptor" cond="Type == 7" />
<add name="Stiff Spring" type="StiffSpringDescriptor" cond="Type == 8" />
<add name="Tau" type="float" ver2="20.0.0.5" /><!-- not in Fallout 3 or Skyrim -->
<add name="Damping" type="float" ver2="20.0.0.5" /><!-- In TES CS described as Damping -->
<add name="Strength" type="float" ver1="20.2.0.7" /><!-- In GECK and Creation Kit described as Strength -->
</compound>
<compound name="ConstraintData">
<add name="Type" type="hkConstraintType">Type of constraint.</add>
<add name="Num Entities 2" type="uint" default="2">Always 2 (Hardcoded). Number of bodies affected by this constraint.</add>
<add name="Entity A" type="Ptr" template="bhkEntity">Usually NONE. The entity affected by this constraint.</add>
<add name="Entity B" type="Ptr" template="bhkEntity">Usually NONE. The entity affected by this constraint.</add>
<add name="Priority" type="uint" default="1">Usually 1. Higher values indicate higher priority of this constraint?</add>
<add name="Ball and Socket" type="BallAndSocketDescriptor" cond="Type == 0" />
<add name="Hinge" type="HingeDescriptor" cond="Type == 1" />
<add name="Limited Hinge" type="LimitedHingeDescriptor" cond="Type == 2" />
<add name="Prismatic" type="PrismaticDescriptor" cond="Type == 6" />
<add name="Ragdoll" type="RagdollDescriptor" cond="Type == 7" />
<add name="Stiff Spring" type="StiffSpringDescriptor" cond="Type == 8" />
<add name="Malleable" type="MalleableDescriptor" cond="Type == 13" />
</compound>
<!-- NIF Objects
These are the main units of data that NIF files are arranged in.
They are like C classes and can contain many pieces of data.
The only differences between these and compounds is that these
are treated as object types by the NIF format and can inherit
from other classes.-->
<niobject name="NiObject" abstract="1">
Abstract object type.
</niobject>
<niobject name="Ni3dsAlphaAnimator" abstract="0" inherit="NiObject">
Unknown.
<add name="Unknown 1" type="byte" arr1="40">Unknown.</add>
<add name="Parent" type="Ref" template="NiObject">The parent?</add>
<add name="Num 1" type="uint">Unknown.</add>
<add name="Num 2" type="uint">Unknown.</add>
<add name="Unknown 2" type="uint" arr1="Num 1" arr2="Num 2" arr3="2">Unknown.</add>
</niobject>
<niobject name="Ni3dsAnimationNode" abstract="0" inherit="NiObject">
Unknown. Only found in 2.3 nifs.
<add name="Name" type="string">Name of this object.</add>
<add name="Has Data" type="bool">Unknown.</add>
<add name="Unknown Floats 1" type="float" arr1="21" cond="Has Data">Unknown. Matrix?</add>
<add name="Unknown Short" type="ushort" cond="Has Data">Unknown.</add>
<add name="Child" type="Ref" template="NiObject" cond="Has Data">Child?</add>
<add name="Unknown Floats 2" type="float" arr1="12" cond="Has Data">Unknown.</add>
<add name="Count" type="uint" cond="Has Data">A count.</add>
<add name="Unknown Array" type="byte" arr1="Count" arr2="5" cond="Has Data">Unknown.</add>
</niobject>
<niobject name="Ni3dsColorAnimator" abstract="0" inherit="NiObject">
Unknown!
<add name="Unknown 1" type="byte" arr1="184">Unknown.</add>
</niobject>
<niobject name="Ni3dsMorphShape" abstract="0" inherit="NiObject">
Unknown!
<add name="Unknown 1" type="byte" arr1="14">Unknown.</add>
</niobject>
<niobject name="Ni3dsParticleSystem" abstract="0" inherit="NiObject">
Unknown!
<add name="Unknown 1" type="byte" arr1="14">Unknown.</add>
</niobject>
<niobject name="Ni3dsPathController" abstract="0" inherit="NiObject">
Unknown!
<add name="Unknown 1" type="byte" arr1="20">Unknown.</add>
</niobject>
<niobject name="NiParticleModifier" abstract="1" inherit="NiObject">
LEGACY (pre-10.1). Abstract base class for particle system modifiers.
<add name="Next Modifier" type="Ref" template="NiParticleModifier">Next particle modifier.</add>
<add name="Controller" type="Ptr" template="NiParticleSystemController" ver1="4.0.0.2">Points to the particle system controller parent.</add>
</niobject>
<niobject name="NiPSysCollider" abstract="1" inherit="NiObject">
Particle system collider.
<add name="Bounce" type="float" default="1.0">Amount of bounce for the collider.</add>
<add name="Spawn on Collide" type="bool">Spawn particles on impact?</add>
<add name="Die on Collide" type="bool">Kill particles on impact?</add>
<add name="Spawn Modifier" type="Ref" template="NiPSysSpawnModifier">Spawner to use for the collider.</add>
<add name="Parent" type="Ptr" template="NiPSysColliderManager">Link to parent.</add>
<add name="Next Collider" type="Ref" template="NiPSysCollider">The next collider.</add>
<add name="Collider Object" type="Ptr" template="NiAVObject">The object whose position and orientation are the basis of the collider.</add>
</niobject>
<enum name="BroadPhaseType" storage="byte">
<option value="0" name="BROAD_PHASE_INVALID" />
<option value="1" name="BROAD_PHASE_ENTITY" />
<option value="2" name="BROAD_PHASE_PHANTOM" />
<option value="3" name="BROAD_PHASE_BORDER" />
</enum>
<compound name="hkWorldObjCinfoProperty">
<add name="Data" type="uint" default="0" />
<add name="Size" type="uint" default="0" />
<add name="Capacity and Flags" type="uint" default="0x80000000" />
</compound>
<niobject name="bhkRefObject" abstract="1" inherit="NiObject">
The base type of most Bethesda-specific Havok-related NIF objects.
</niobject>
<niobject name="bhkSerializable" abstract="1" inherit="bhkRefObject">
Havok objects that can be saved and loaded from disk?
</niobject>
<niobject name="bhkWorldObject" abstract="1" inherit="bhkSerializable">
Havok objects that have a position in the world?
<add name="Shape" type="Ref" template="bhkShape"> Link to the body for this collision object.</add>
<add name="Unknown Int" type="uint" ver2="10.0.1.0" />
<add name="Havok Filter" type="HavokFilter" />
<add name="Unused" type="byte" arr1="4">Garbage data from memory.</add>
<add name="Broad Phase Type" type="BroadPhaseType" default="1" />
<add name="Unused Bytes" type="byte" arr1="3" />
<add name="Cinfo Property" type="hkWorldObjCinfoProperty" />
</niobject>
<niobject name="bhkPhantom" abstract="1" inherit="bhkWorldObject">
Havok object that do not react with other objects when they collide (causing deflection, etc.) but still trigger collision notifications to the game. Possible uses are traps, portals, AI fields, etc.
</niobject>
<niobject name="bhkShapePhantom" abstract="1" inherit="bhkPhantom">
A Havok phantom that uses a Havok shape object for its collision volume instead of just a bounding box.
</niobject>
<niobject name="bhkSimpleShapePhantom" abstract="0" inherit="bhkShapePhantom">
Unknown shape.
<add name="Unused 2" type="byte" arr1="8">Garbage data from memory.</add>
<add name="Transform" type="Matrix44" />
</niobject>
<niobject name="bhkEntity" abstract="1" inherit="bhkWorldObject">
A havok node, describes physical properties.
</niobject>
<niobject name="bhkRigidBody" abstract="0" inherit="bhkEntity">
This is the default body type for all "normal" usable and static world objects. The "T" suffix
marks this body as active for translation and rotation, a normal bhkRigidBody ignores those
properties. Because the properties are equal, a bhkRigidBody may be renamed into a bhkRigidBodyT and vice-versa.
<add name="Collision Response" type="hkResponseType" default="RESPONSE_SIMPLE_CONTACT">How the body reacts to collisions. See hkResponseType for hkpWorld default implementations.</add>
<add name="Unused Byte 1" type="byte">Skipped over when writing Collision Response and Callback Delay.</add>
<add name="Process Contact Callback Delay" type="ushort" default="0xffff">Lowers the frequency for processContactCallbacks. A value of 5 means that a callback is raised every 5th frame. The default is once every 65535 frames.</add>
<add name="Unknown Int 1" type="uint" ver1="10.1.0.0">Unknown.</add>
<add name="Havok Filter Copy" type="HavokFilter" ver1="10.1.0.0">Copy of Havok Filter</add>
<add name="Unused 2" type="byte" arr1="4" ver1="10.1.0.0">Garbage data from memory. Matches previous Unused value.</add>
<add name="Unknown Int 2" type="uint" ver1="10.1.0.0" vercond="User Version 2 &gt; 34" />
<add name="Collision Response 2" type="hkResponseType" default="RESPONSE_SIMPLE_CONTACT" ver1="10.1.0.0" />
<add name="Unused Byte 2" type="byte" ver1="10.1.0.0">Skipped over when writing Collision Response and Callback Delay.</add>
<add name="Process Contact Callback Delay 2" type="ushort" default="0xffff" ver1="10.1.0.0" />
<add name="Unknown Int 2" type="uint" vercond="User Version 2 &lt;= 34" />
<add name="Translation" type="Vector4"> A vector that moves the body by the specified amount. Only enabled in bhkRigidBodyT objects.</add>
<add name="Rotation" type="hkQuaternion">The rotation Yaw/Pitch/Roll to apply to the body. Only enabled in bhkRigidBodyT objects.</add>
<add name="Linear Velocity" type="Vector4">Linear velocity.</add>
<add name="Angular Velocity" type="Vector4">Angular velocity.</add>
<add name="Inertia Tensor" type="hkMatrix3">Defines how the mass is distributed among the body, i.e. how difficult it is to rotate around any given axis.</add>
<add name="Center" type="Vector4">The body's center of mass.</add>
<add name="Mass" type="float" default="1.0">The body's mass in kg. A mass of zero represents an immovable object.</add>
<add name="Linear Damping" type="float" default="0.1">Reduces the movement of the body over time. A value of 0.1 will remove 10% of the linear velocity every second.</add>
<add name="Angular Damping" type="float" default="0.05">Reduces the movement of the body over time. A value of 0.05 will remove 5% of the angular velocity every second.</add>
<add name="Time Factor" type="float" default="1.0" vercond="(User Version 2 &gt; 34)" />
<add name="Gravity Factor" type="float" default="1.0" vercond="(User Version 2 &gt; 34) &amp;&amp; (User Version 2 != 130)" />
<add name="Friction" type="float" default="0.5">How smooth its surfaces is and how easily it will slide along other bodies.</add>
<add name="Rolling Friction Multiplier" type="float" vercond="(User Version 2 &gt; 34)" />
<add name="Restitution" type="float" default="0.4">
How "bouncy" the body is, i.e. how much energy it has after colliding. Less than 1.0 loses energy, greater than 1.0 gains energy.
If the restitution is not 0.0 the object will need extra CPU for all new collisions.
</add>
<add name="Max Linear Velocity" type="float" default="104.4" ver1="10.1.0.0">Maximal linear velocity.</add>
<add name="Max Angular Velocity" type="float" default="31.57" ver1="10.1.0.0">Maximal angular velocity.</add>
<add name="Penetration Depth" type="float" default="0.15" vercond="(User Version 2 != 130)" ver1="10.1.0.0">
The maximum allowed penetration for this object.
This is a hint to the engine to see how much CPU the engine should invest to keep this object from penetrating.
A good choice is 5% - 20% of the smallest diameter of the object.
</add>
<add name="Motion System" type="hkMotionType" default="MO_SYS_DYNAMIC">Motion system? Overrides Quality when on Keyframed?</add>
<add name="Deactivator Type" type="hkDeactivatorType" default="DEACTIVATOR_NEVER" vercond="(User Version 2 &lt;= 34)">The initial deactivator type of the body.</add>
<add name="Enable Deactivation" type="bool" default="1" vercond="(User Version 2 &gt; 34)" />
<add name="Solver Deactivation" type="hkSolverDeactivation" default="SOLVER_DEACTIVATION_OFF">How aggressively the engine will try to zero the velocity for slow objects. This does not save CPU.</add>
<add name="Quality Type" type="hkQualityType" default="MO_QUAL_FIXED">The type of interaction with other objects.</add>
<add name="Penetration Depth" type="float" default="0.15" vercond="(User Version 2 == 130)">
The maximum allowed penetration for this object.
This is a hint to the engine to see how much CPU the engine should invest to keep this object from penetrating.
A good choice is 5% - 20% of the smallest diameter of the object.
</add>
<add name="Unknown Float 1" type="float" vercond="(User Version 2 == 130)" />
<add name="Unknown Bytes 1" type="byte" arr1="12">Unknown.</add>
<add name="Unknown Bytes 2" type="byte" arr1="4" vercond="(User Version 2 &gt; 34)">Unknown. Skyrim only.</add>
<add name="Num Constraints" type="uint" />
<add name="Constraints" type="Ref" template="bhkSerializable" arr1="Num Constraints" />
<add name="Body Flags" type="uint" vercond="(User Version 2 &lt; 76)">1 = respond to wind</add>
<add name="Body Flags" type="ushort" vercond="(User Version 2 &gt;= 76)">1 = respond to wind</add>
</niobject>
<niobject name="bhkRigidBodyT" abstract="0" inherit="bhkRigidBody">
The "T" suffix marks this body as active for translation and rotation.
</niobject>
<niobject name="bhkConstraint" abstract="1" inherit="bhkSerializable">
Describes a physical constraint.
<add name="Num Entities" type="uint">Number of bodies affected by this constraint.</add>
<add name="Entities" type="Ptr" template="bhkEntity" arr1="Num Entities">The entities affected by this constraint.</add>
<add name="Priority" type="uint" default="1">Usually 1. Higher values indicate higher priority of this constraint?</add>
</niobject>
<niobject name="bhkLimitedHingeConstraint" abstract="0" inherit="bhkConstraint">
Hinge constraint.
<add name="Limited Hinge" type="LimitedHingeDescriptor">Describes a limited hinge constraint</add>
</niobject>
<niobject name="bhkMalleableConstraint" abstract="0" inherit="bhkConstraint">
A malleable constraint.
<add name="Malleable" type="MalleableDescriptor">Constraint within constraint.</add>
</niobject>
<niobject name="bhkStiffSpringConstraint" abstract="0" inherit="bhkConstraint">
A spring constraint.
<add name="Stiff Spring" type="StiffSpringDescriptor">Stiff Spring constraint.</add>
</niobject>
<niobject name="bhkRagdollConstraint" abstract="0" inherit="bhkConstraint">
Ragdoll constraint.
<add name="Ragdoll" type="RagdollDescriptor">Ragdoll constraint.</add>
</niobject>
<niobject name="bhkPrismaticConstraint" abstract="0" inherit="bhkConstraint">
A prismatic constraint.
<add name="Prismatic" type="PrismaticDescriptor">Describes a prismatic constraint</add>
</niobject>
<niobject name="bhkHingeConstraint" abstract="0" inherit="bhkConstraint">
A hinge constraint.
<add name="Hinge" type="HingeDescriptor">Hinge constraing.</add>
</niobject>
<niobject name="bhkBallAndSocketConstraint" abstract="0" inherit="bhkConstraint">
A Ball and Socket Constraint.
<add name="Ball and Socket" type="BallAndSocketDescriptor">Describes a ball and socket constraint</add>
</niobject>
<compound name="ConstraintInfo">
Two Vector4 for pivot in A and B.
<add name="Pivot In A" type="Vector4" />
<add name="Pivot In B" type="Vector4" />
</compound>
<niobject name="bhkBallSocketConstraintChain" abstract="0" inherit="bhkSerializable">
A Ball and Socket Constraint chain.
<add name="Num Pivots" type="uint">Number of pivot points. Divide by 2 to get the number of constraints.</add>
<add name="Pivots" type="ConstraintInfo" arr1="Num Pivots / 2">Two pivot points A and B for each constraint.</add>
<add name="Tau" type="float" default="1.0">High values are harder and more reactive, lower values are smoother.</add>
<add name="Damping" type="float" default="0.6">Defines damping strength for the current velocity.</add>
<add name="Constraint Force Mixing" type="float" default="1.1920929e-08">Restitution (amount of elasticity) of constraints. Added to the diagonal of the constraint matrix. A value of 0.0 can result in a division by zero with some chain configurations.</add>
<add name="Max Error Distance" type="float" default="0.1">Maximum distance error in constraints allowed before stabilization algorithm kicks in. A smaller distance causes more resistance.</add>
<add name="Num Entities A" type="uint">Number of links in the chain</add>
<add name="Entities A" type="Ptr" template="bhkRigidBody" arr1="Num Entities A" />
<add name="Num Entities" type="uint" default="2">Hardcoded to 2. Don't change.</add>
<add name="Entity A" type="Ptr" template="bhkRigidBody" />
<add name="Entity B" type="Ptr" template="bhkRigidBody" />
<add name="Priority" type="uint" />
</niobject>
<niobject name="bhkShape" abstract="1" inherit="bhkSerializable">
A Havok Shape?
</niobject>
<niobject name="bhkTransformShape" abstract="0" inherit="bhkShape">
Transforms a shape.
<add name="Shape" type="Ref" template="bhkShape">The shape that this object transforms.</add>
<add name="Material" type="HavokMaterial">The material of the shape.</add>
<add name="Radius" type="float" />
<add name="Unused" type="byte" arr1="8">Garbage data from memory.</add>
<add name="Transform" type="Matrix44">A transform matrix.</add>
</niobject>
<niobject name="bhkSphereRepShape" abstract="1" inherit="bhkShape">
A havok shape, perhaps with a bounding sphere for quick rejection in addition to more detailed shape data?
<add name="Material" type="HavokMaterial">The material of the shape.</add>
<add name="Radius" type="float">The radius of the sphere that encloses the shape.</add>
</niobject>
<niobject name="bhkConvexShape" abstract="1" inherit="bhkSphereRepShape">
A havok shape.
</niobject>
<niobject name="bhkSphereShape" abstract="0" inherit="bhkConvexShape">
A sphere.
</niobject>
<niobject name="bhkCapsuleShape" abstract="0" inherit="bhkConvexShape">
A capsule.
<add name="Unused" type="byte" arr1="8">Not used. The following wants to be aligned at 16 bytes.</add>
<add name="First Point" type="Vector3">First point on the capsule's axis.</add>
<add name="Radius 1" type="float">Matches first capsule radius.</add>
<add name="Second Point" type="Vector3">Second point on the capsule's axis.</add>
<add name="Radius 2" type="float">Matches second capsule radius.</add>
</niobject>
<niobject name="bhkBoxShape" abstract="0" inherit="bhkConvexShape">
A box.
<add name="Unused" type="byte" arr1="8">Not used. The following wants to be aligned at 16 bytes.</add>
<add name="Dimensions" type="Vector3">A cube stored in Half Extents. A unit cube (1.0, 1.0, 1.0) would be stored as 0.5, 0.5, 0.5.</add>
<add name="Unused Float" type="float">Unused as Havok stores the Half Extents as hkVector4 with the W component unused.</add>
</niobject>
<niobject name="bhkConvexVerticesShape" abstract="0" inherit="bhkConvexShape">
A convex shape built from vertices. Note that if the shape is used in
a non-static object (such as clutter), then they will simply fall
through ground when they are under a bhkListShape.
<add name="Vertices Property" type="hkWorldObjCinfoProperty" />
<add name="Normals Property" type="hkWorldObjCinfoProperty" />
<add name="Num Vertices" type="uint">Number of vertices.</add>
<add name="Vertices" type="Vector4" arr1="Num Vertices">Vertices. Fourth component is 0. Lexicographically sorted.</add>
<add name="Num Normals" type="uint">The number of half spaces.</add>
<add name="Normals" type="Vector4" arr1="Num Normals">Half spaces as determined by the set of vertices above. First three components define the normal pointing to the exterior, fourth component is the signed distance of the separating plane to the origin: it is minus the dot product of v and n, where v is any vertex on the separating plane, and n is the normal. Lexicographically sorted.</add>
</niobject>
<!--Should inherit from bhkConvexShape according to hierarchy, but seems to be exactly the same as bhkTransformShape.-->
<niobject name="bhkConvexTransformShape" abstract="0" inherit="bhkTransformShape">
A convex transformed shape?
</niobject>
<niobject name="bhkConvexSweepShape" inherit="bhkShape">
<add name="Shape" type="Ref" template="bhkShape" />
<add name="Material" type="HavokMaterial" />
<add name="Radius" type="float" />
<add name="Unknown" type="Vector3" />
</niobject>
<niobject name="bhkMultiSphereShape" abstract="0" inherit="bhkSphereRepShape">
Unknown.
<add name="Unknown Float 1" type="float">Unknown.</add>
<add name="Unknown Float 2" type="float">Unknown.</add>
<add name="Num Spheres" type="uint">The number of spheres in this multi sphere shape.</add>
<add name="Spheres" type="NiBound" arr1="Num Spheres">This array holds the spheres which make up the multi sphere shape.</add>
</niobject>
<niobject name="bhkBvTreeShape" abstract="1" inherit="bhkShape">
A tree-like Havok data structure stored in an assembly-like binary code?
</niobject>
<niobject name="bhkMoppBvTreeShape" abstract="0" inherit="bhkBvTreeShape">
Memory optimized partial polytope bounding volume tree shape (not an entity).
<add name="Shape" type="Ref" template="bhkShape">The shape.</add>
<add name="Unused" type="uint" arr1="3">Garbage data from memory. Referred to as User Data, Shape Collection, and Code.</add>
<add name="Shape Scale" type="float" default="1.0">Scale.</add>
<add name="MOPP Data Size" type="uint" calculated="1">Number of bytes for MOPP data.</add>
<add name="Origin" type="Vector3" ver1="10.0.1.2">Origin of the object in mopp coordinates. This is the minimum of all vertices in the packed shape along each axis, minus 0.1.</add>
<add name="Scale" type="float" ver1="10.0.1.2">The scaling factor to quantize the MOPP: the quantization factor is equal to 256*256 divided by this number. In Oblivion files, scale is taken equal to 256*256*254 / (size + 0.2) where size is the largest dimension of the bounding box of the packed shape.</add>
<add name="Build Type" type="MoppDataBuildType" vercond="User Version 2 &gt; 34">Tells if MOPP Data was organized into smaller chunks (PS3) or not (PC)</add>
<add name="MOPP Data" type="byte" binary="1" arr1="MOPP Data Size">The tree of bounding volume data.</add>
</niobject>
<niobject name="bhkShapeCollection" abstract="1" inherit="bhkShape">
Havok collision object that uses multiple shapes?
</niobject>
<niobject name="bhkListShape" abstract="0" inherit="bhkShapeCollection">
A list of shapes.
Do not put a bhkPackedNiTriStripsShape in the Sub Shapes. Use a
separate collision nodes without a list shape for those.
Also, shapes collected in a bhkListShape may not have the correct
walking noise, so only use it for non-walkable objects.
<add name="Num Sub Shapes" type="uint">The number of sub shapes referenced.</add>
<add name="Sub Shapes" type="Ref" template="bhkShape" arr1="Num Sub Shapes">List of shapes.</add>
<add name="Material" type="HavokMaterial">The material of the shape.</add>
<add name="Child Shape Property" type="hkWorldObjCinfoProperty" />
<add name="Child Filter Property" type="hkWorldObjCinfoProperty" />
<add name="Num Unknown Ints" type="uint">Count.</add>
<add name="Unknown Ints" type="uint" arr1="Num Unknown Ints">Unknown.</add>
</niobject>
<!--
bhkMeshShape appears in some old Oblivion nifs, for instance
meshes/architecture/basementsections/ungrdltraphingedoor.nif
but only in some distributions of Oblivion
XXX not completely decoded, also the 4 dummy separator bytes seem
to be missing from nifs that have this block
-->
<niobject name="bhkMeshShape" abstract="0" inherit="bhkShape">
<add name="Unknowns" type="uint" arr1="2" />
<add name="Radius" type="float" />
<add name="Unused 2" type="byte" arr1="8" />
<add name="Scale" type="Vector4" />
<add name="Num Shape Properties" type="uint" />
<add name="Shape Properties" type="hkWorldObjCinfoProperty" arr1="Num Shape Properties" />
<add name="Unknown 2" type="int" arr1="3" />
<add name="Num Strips Data" type="uint" ver2="10.0.1.0">The number of strips data objects referenced.</add>
<add name="Strips Data" type="Ref" template="NiTriStripsData" arr1="Num Strips Data" ver2="10.0.1.0">Refers to a bunch of NiTriStripsData objects that make up this shape.</add>
</niobject>
<niobject name="bhkPackedNiTriStripsShape" abstract="0" inherit="bhkShapeCollection">
A shape constructed from strips data.
<add name="Num Sub Shapes" type="ushort" ver2="20.0.0.5" />
<add name="Sub Shapes" type="OblivionSubShape" arr1="Num Sub Shapes" ver2="20.0.0.5" />
<add name="User Data" type="uint" default="0" />
<add name="Unused 1" type="uint">Looks like a memory pointer and may be garbage.</add>
<add name="Radius" type="float" default="0.1" />
<add name="Unused 2" type="uint">Looks like a memory pointer and may be garbage.</add>
<add name="Scale" type="Vector4" default="1.0, 1.0, 1.0, 0.0" />
<add name="Radius Copy" type="float" default="0.1">Same as radius</add>
<add name="Scale Copy" type="Vector4" default="1.0, 1.0, 1.0, 0.0">Same as scale.</add>
<add name="Data" type="Ref" template="hkPackedNiTriStripsData" />
</niobject>
<niobject name="bhkNiTriStripsShape" abstract="0" inherit="bhkShapeCollection">
A shape constructed from a bunch of strips.
<add name="Material" type="HavokMaterial">The material of the shape.</add>
<add name="Radius" type="float" default="0.1" />
<add name="Unused" type="uint" arr1="5">Garbage data from memory though the last 3 are referred to as maxSize, size, and eSize.</add>
<add name="Grow By" type="uint" default="1" />
<add name="Scale" type="Vector4" default="1.0, 1.0, 1.0, 0.0" ver1="10.1.0.0">Scale. Usually (1.0, 1.0, 1.0, 0.0).</add>
<add name="Num Strips Data" type="uint">The number of strips data objects referenced.</add>
<add name="Strips Data" type="Ref" template="NiTriStripsData" arr1="Num Strips Data">Refers to a bunch of NiTriStripsData objects that make up this shape.</add>
<add name="Num Data Layers" type="uint">Number of Havok Layers, equal to Number of strips data objects.</add>
<add name="Data Layers" type="HavokFilter" arr1="Num Data Layers">Havok Layers for each strip data.</add>
</niobject>
<niobject name="NiExtraData" abstract="0" inherit="NiObject">
A generic extra data object.
<add name="Name" type="string" ver1="10.0.1.0" cond="!BSExtraData">Name of this object.</add>
<add name="Next Extra Data" type="Ref" template="NiExtraData" ver2="4.2.2.0">Block number of the next extra data object.</add>
</niobject>
<niobject name="NiInterpolator" abstract="1" inherit="NiObject">
Abstract base class for all interpolators of bool, float, NiQuaternion, NiPoint3, NiColorA, and NiQuatTransform data.
</niobject>
<niobject name="NiKeyBasedInterpolator" abstract="1" inherit="NiInterpolator">
Abstract base class for interpolators that use NiAnimationKeys (Key, KeyGrp) for interpolation.
</niobject>
<niobject name="NiFloatInterpolator" abstract="0" inherit="NiKeyBasedInterpolator">
Uses NiFloatKeys to animate a float value over time.
<add name="Value" type="float" default="-3.402823466e+38">Pose value if lacking NiFloatData.</add>
<add name="Data" type="Ref" template="NiFloatData" />
</niobject>
<niobject name="NiTransformInterpolator" abstract="0" inherit="NiKeyBasedInterpolator">
An interpolator for transform keyframes.
<add name="Transform" type="NiQuatTransform" />
<add name="Data" type="Ref" template="NiTransformData" />
</niobject>
<niobject name="NiPoint3Interpolator" abstract="0" inherit="NiKeyBasedInterpolator">
Uses NiPosKeys to animate an NiPoint3 value over time.
<add name="Value" type="Vector3" default="-3.402823466e+38, -3.402823466e+38, -3.402823466e+38">Pose value if lacking NiPosData.</add>
<add name="Data" type="Ref" template="NiPosData" />
</niobject>
<bitflags name="PathFlags" storage="ushort" prefix="NIPI">
<option value="0" name="CVDataNeedsUpdate" />
<option value="1" name="CurveTypeOpen" />
<option value="2" name="AllowFlip" />
<option value="3" name="Bank" />
<option value="4" name="ConstantVelocity" />
<option value="5" name="Follow" />
<option value="6" name="Flip" />
</bitflags>
<niobject name="NiPathInterpolator" abstract="0" inherit="NiKeyBasedInterpolator">
Used to make an object follow a predefined spline path.
<add name="Flags" type="PathFlags" default="3" />
<add name="Bank Dir" type="int" default="1">-1 = Negative, 1 = Positive</add>
<add name="Max Bank Angle" type="float">Max angle in radians.</add>
<add name="Smoothing" type="float" />
<add name="Follow Axis" type="short">0, 1, or 2 representing X, Y, or Z.</add>
<add name="Path Data" type="Ref" template="NiPosData" />
<add name="Percent Data" type="Ref" template="NiFloatData" />
</niobject>
<niobject name="NiBoolInterpolator" abstract="0" inherit="NiKeyBasedInterpolator">
Uses NiBoolKeys to animate a bool value over time.
<add name="Value" type="bool" default="2">Pose value if lacking NiBoolData.</add>
<add name="Data" type="Ref" template="NiBoolData" />
</niobject>
<niobject name="NiBoolTimelineInterpolator" abstract="0" inherit="NiBoolInterpolator">
Uses NiBoolKeys to animate a bool value over time.
Unlike NiBoolInterpolator, it ensures that keys have not been missed between two updates.
</niobject>
<enum name="InterpBlendFlags" storage="byte">
<option value="1" name="MANAGER_CONTROLLED">MANAGER_CONTROLLED</option>
</enum>
<compound name="InterpBlendItem">
Interpolator item for array in NiBlendInterpolator.
<add name="Interpolator" type="Ref" template="NiInterpolator">Reference to an interpolator.</add>
<add name="Weight" type="float" />
<add name="Normalized Weight" type="float" />
<add name="Priority" type="int" ver2="10.1.0.109" />
<add name="Priority" type="byte" ver1="10.1.0.110" />
<add name="Ease Spinner" type="float" />
</compound>
<niobject name="NiBlendInterpolator" abstract="1" inherit="NiInterpolator">
Abstract base class for all NiInterpolators that blend the results of sub-interpolators together to compute a final weighted value.
<add name="Flags" type="InterpBlendFlags" ver1="10.1.0.112" />
<add name="Array Size" type="ushort" ver2="10.1.0.109" />
<add name="Array Grow By" type="ushort" ver2="10.1.0.109" />
<add name="Array Size" type="byte" ver1="10.1.0.110" />
<add name="Weight Threshold" type="float" ver1="10.1.0.112" />
<!-- Flags conds -->
<add name="Interp Count" type="byte" cond="(Flags &amp; 1) == 0" ver1="10.1.0.112" />
<add name="Single Index" type="byte" default="255" cond="(Flags &amp; 1) == 0" ver1="10.1.0.112" />
<add name="High Priority" type="char" default="-128" cond="(Flags &amp; 1) == 0" ver1="10.1.0.112" />
<add name="Next High Priority" type="char" default="-128" cond="(Flags &amp; 1) == 0" ver1="10.1.0.112" />
<add name="Single Time" type="float" default="-3.402823466e+38" cond="(Flags &amp; 1) == 0" ver1="10.1.0.112" />
<add name="High Weights Sum" type="float" default="-3.402823466e+38" cond="(Flags &amp; 1) == 0" ver1="10.1.0.112" />
<add name="Next High Weights Sum" type="float" default="-3.402823466e+38" cond="(Flags &amp; 1) == 0" ver1="10.1.0.112" />
<add name="High Ease Spinner" type="float" default="-3.402823466e+38" cond="(Flags &amp; 1) == 0" ver1="10.1.0.112" />
<add name="Interp Array Items" type="InterpBlendItem" arr1="Array Size" cond="(Flags &amp; 1) == 0" ver1="10.1.0.112" />
<!-- end Flags 1 conds -->
<add name="Interp Array Items" type="InterpBlendItem" arr1="Array Size" ver2="10.1.0.111" />
<add name="Managed Controlled" type="bool" ver2="10.1.0.111" />
<add name="Weight Threshold" type="float" ver2="10.1.0.111" />
<add name="Only Use Highest Weight" type="bool" ver2="10.1.0.111" />
<add name="Interp Count" type="ushort" ver2="10.1.0.109" />
<add name="Single Index" type="ushort" ver2="10.1.0.109" />
<add name="Interp Count" type="byte" ver1="10.1.0.110" ver2="10.1.0.111" />
<add name="Single Index" type="byte" ver1="10.1.0.110" ver2="10.1.0.111" />
<add name="Single Interpolator" type="Ref" template="NiInterpolator" ver1="10.1.0.108" ver2="10.1.0.111" />
<add name="Single Time" type="float" ver1="10.1.0.108" ver2="10.1.0.111" />
<add name="High Priority" type="int" ver2="10.1.0.109" />
<add name="Next High Priority" type="int" ver2="10.1.0.109" />
<add name="High Priority" type="byte" ver1="10.1.0.110" ver2="10.1.0.111" />
<add name="Next High Priority" type="byte" ver1="10.1.0.110" ver2="10.1.0.111" />
</niobject>
<niobject name="NiBSplineInterpolator" abstract="1" inherit="NiInterpolator">
Abstract base class for interpolators storing data via a B-spline.
<add name="Start Time" type="float" default="3.402823466e+38">Animation start time.</add>
<add name="Stop Time" type="float" default="-3.402823466e+38">Animation stop time.</add>
<add name="Spline Data" type="Ref" template="NiBSplineData" />
<add name="Basis Data" type="Ref" template="NiBSplineBasisData" />
</niobject>
<niobject name="NiObjectNET" abstract="1" inherit="NiObject">
Abstract base class for NiObjects that support names, extra data, and time controllers.
<add name="Skyrim Shader Type" type="BSLightingShaderPropertyShaderType" vercond="User Version 2 &gt;= 83" cond="BSLightingShaderProperty">Configures the main shader path</add>
<add name="Name" type="string">Name of this controllable object, used to refer to the object in .kf files.</add>
<add name="Has Old Extra Data" type="bool" ver2="2.3">Extra data for pre-3.0 versions.</add>
<add name="Old Extra Prop Name" cond="Has Old Extra Data" ver2="2.3" type="string">(=NiStringExtraData)</add>
<add name="Old Extra Internal Id" cond="Has Old Extra Data" ver2="2.3" type="uint">ref</add>
<add name="Old Extra String" cond="Has Old Extra Data" ver2="2.3" type="string">Extra string data.</add>
<add name="Unknown Byte" type="byte" ver2="2.3">Always 0.</add>
<add name="Extra Data" type="Ref" template="NiExtraData" ver1="3.0" ver2="4.2.2.0">Extra data object index. (The first in a chain)</add>
<add name="Num Extra Data List" type="uint" ver1="10.0.1.0">The number of Extra Data objects referenced through the list.</add>
<add name="Extra Data List" type="Ref" template="NiExtraData" arr1="Num Extra Data List" ver1="10.0.1.0">List of extra data indices.</add>
<add name="Controller" type="Ref" template="NiTimeController" ver1="3.0">Controller object index. (The first in a chain)</add>
</niobject>
<niobject name="NiCollisionObject" abstract="0" inherit="NiObject">
This is the most common collision object found in NIF files. It acts as a real object that
is visible and possibly (if the body allows for it) interactive. The node itself
is simple, it only has three properties.
For this type of collision object, bhkRigidBody or bhkRigidBodyT is generally used.
<add name="Target" type="Ptr" template="NiAVObject">Index of the AV object referring to this collision object.</add>
</niobject>
<niobject name="NiCollisionData" abstract="0" inherit="NiCollisionObject">
Collision box.
<add name="Propagation Mode" type="PropagationMode" />
<add name="Collision Mode" type="CollisionMode" ver1="10.1.0.0" />
<add name="Use ABV" type="byte">Use Alternate Bounding Volume.</add>
<add name="Bounding Volume" type="BoundingVolume" cond="Use ABV == 1" />
</niobject>
<bitflags name="bhkCOFlags" storage="ushort" prefix="BHKCO">
bhkNiCollisionObject flags. The flags 0x2, 0x100, and 0x200 are not seen in any NIF nor get/set by the engine.
<option value="0" name="ACTIVE" />
<!--<option value="1" name="UNK1" />-->
<option value="2" name="NOTIFY" />
<option value="3" name="SET_LOCAL" />
<option value="4" name="DBG_DISPLAY" />
<option value="5" name="USE_VEL" />
<option value="6" name="RESET" />
<option value="7" name="SYNC_ON_UPDATE" />
<!--<option value="8" name="UNK2" />-->
<!--<option value="9" name="UNK3" />-->
<option value="10" name="ANIM_TARGETED" />
<option value="11" name="DISMEMBERED_LIMB" />
</bitflags>
<niobject name="bhkNiCollisionObject" abstract="1" inherit="NiCollisionObject">
Havok related collision object?
<add name="Flags" type="bhkCOFlags" default="1">
Set to 1 for most objects, and to 41 for animated objects (ANIM_STATIC). Bits: 0=Active 2=Notify 3=Set Local 6=Reset.
</add>
<add name="Body" type="Ref" template="bhkWorldObject" />
</niobject>
<niobject name="bhkCollisionObject" abstract="0" inherit="bhkNiCollisionObject">
Havok related collision object?
</niobject>
<niobject name="bhkBlendCollisionObject" abstract="0" inherit="bhkCollisionObject">
Unknown.
<add name="Heir Gain" type="float" />
<add name="Vel Gain" type="float" />
<add name="Unk Float 1" type="float" vercond="User Version 2 &lt; 9" />
<add name="Unk Float 2" type="float" vercond="User Version 2 &lt; 9" />
</niobject>
<niobject name="bhkPCollisionObject" abstract="0" inherit="bhkNiCollisionObject">
Unknown.
</niobject>
<niobject name="bhkSPCollisionObject" abstract="0" inherit="bhkPCollisionObject">
Unknown.
</niobject>
<niobject name="NiAVObject" abstract="1" inherit="NiObjectNET">
Abstract audio-visual base class from which all of Gamebryo's scene graph objects inherit.
<add name="Flags" type="uint" default="14" vercond="(User Version 2 &gt; 26)">Basic flags for AV objects. For Bethesda streams above 26 only.</add>
<add name="Flags" type="Flags" ver1="3.0" vercond="(User Version 2 &lt;= 26)">Basic flags for AV objects; commonly 0x000C or 0x000A.</add>
<add name="Translation" type="Vector3">The translation vector.</add>
<add name="Rotation" type="Matrix33">The rotation part of the transformation matrix.</add>
<add name="Scale" type="float" default="1.0">Scaling part (only uniform scaling is supported).</add>
<add name="Velocity" type="Vector3" ver2="4.2.2.0">Unknown function. Always seems to be (0, 0, 0)</add>
<add name="Num Properties" type="uint" vercond="(User Version 2 &lt;= 34)" />
<add name="Properties" type="Ref" template="NiProperty" arr1="Num Properties" vercond="(User Version 2 &lt;= 34)">All rendering properties attached to this object.</add>
<add name="Unknown 1" type="uint" arr1="4" ver2="2.3">Always 2,0,2,0.</add>
<add name="Unknown 2" type="byte" ver2="2.3">0 or 1.</add>
<add name="Has Bounding Volume" type="bool" ver1="3.0" ver2="4.2.2.0" />
<add name="Bounding Volume" type="BoundingVolume" cond="Has Bounding Volume" ver1="3.0" ver2="4.2.2.0" />
<add name="Collision Object" type="Ref" template="NiCollisionObject" ver1="10.0.1.0" />
</niobject>
<niobject name="NiDynamicEffect" abstract="1" inherit="NiAVObject">
Abstract base class for dynamic effects such as NiLights or projected texture effects.
<add name="Switch State" type="bool" default="1" ver1="10.1.0.106" vercond="User Version 2 &lt; 130">If true, then the dynamic effect is applied to affected nodes during rendering.</add>
<add name="Num Affected Nodes" type="uint" ver2="4.0.0.2" />
<add name="Affected Nodes" type="Ptr" template="NiNode" arr1="Num Affected Nodes" ver2="3.3.0.13">If a node appears in this list, then its entire subtree will be affected by the effect.</add>
<add name="Affected Node Pointers" type="uint" arr1="Num Affected Nodes" ver1="4.0.0.0" ver2="4.0.0.2">As of 4.0 the pointer hash is no longer stored alongside each NiObject on disk, yet this node list still refers to the pointer hashes. Cannot leave the type as Ptr because the link will be invalid.</add>
<add name="Num Affected Nodes" type="uint" ver1="10.1.0.0" vercond="User Version 2 &lt; 130" />
<add name="Affected Nodes" type="Ptr" template="NiNode" arr1="Num Affected Nodes" ver1="10.1.0.0" vercond="User Version 2 &lt; 130">If a node appears in this list, then its entire subtree will be affected by the effect.</add>
</niobject>
<niobject name="NiLight" abstract="1" inherit="NiDynamicEffect">
Abstract base class that represents light sources in a scene graph.
For Bethesda Stream 130 (FO4), NiLight now directly inherits from NiAVObject.
<add name="Dimmer" type="float" default="1.0">Scales the overall brightness of all light components.</add>
<add name="Ambient Color" type="Color3" default="0.0, 0.0, 0.0" />
<add name="Diffuse Color" type="Color3" default="0.0, 0.0, 0.0" />
<add name="Specular Color" type="Color3" default="0.0, 0.0, 0.0" />
</niobject>
<niobject name="NiProperty" abstract="1" inherit="NiObjectNET">
Abstract base class representing all rendering properties. Subclasses are attached to NiAVObjects to control their rendering.
</niobject>
<niobject name="NiTransparentProperty" abstract="0" inherit="NiProperty">
Unknown
<add name="Unknown" type="byte" arr1="6">Unknown.</add>
</niobject>
<niobject name="NiPSysModifier" abstract="1" inherit="NiObject">
Abstract base class for all particle system modifiers.
<add name="Name" type="string">Used to locate the modifier.</add>
<add name="Order" type="uint">Modifier ID in the particle modifier chain (always a multiple of 1000)?</add>
<add name="Target" type="Ptr" template="NiParticleSystem">NiParticleSystem parent of this modifier.</add>
<add name="Active" type="bool" default="1">Whether or not the modifier is active.</add>
</niobject>
<niobject name="NiPSysEmitter" abstract="1" inherit="NiPSysModifier">
Abstract base class for all particle system emitters.
<add name="Speed" type="float">Speed / Inertia of particle movement.</add>
<add name="Speed Variation" type="float">Adds an amount of randomness to Speed.</add>
<add name="Declination" type="float">Declination / First axis.</add>
<add name="Declination Variation" type="float">Declination randomness / First axis.</add>
<add name="Planar Angle" type="float">Planar Angle / Second axis.</add>
<add name="Planar Angle Variation" type="float">Planar Angle randomness / Second axis .</add>
<add name="Initial Color" type="Color4">Defines color of a birthed particle.</add>
<add name="Initial Radius" type="float" default="1.0">Size of a birthed particle.</add>
<add name="Radius Variation" type="float" ver1="10.4.0.1">Particle Radius randomness.</add>
<add name="Life Span" type="float">Duration until a particle dies.</add>
<add name="Life Span Variation" type="float">Adds randomness to Life Span.</add>
</niobject>
<niobject name="NiPSysVolumeEmitter" abstract="1" inherit="NiPSysEmitter">
Abstract base class for particle emitters that emit particles from a volume.
<add name="Emitter Object" type="Ptr" template="NiNode" ver1="10.1.0.0">Node parent of this modifier?</add>
</niobject>
<niobject name="NiTimeController" abstract="1" inherit="NiObject">
Abstract base class that provides the base timing and update functionality for all the Gamebryo animation controllers.
<add name="Next Controller" type="Ref" template="NiTimeController">Index of the next controller.</add>
<add name="Flags" type="Flags">
Controller flags.
Bit 0 : Anim type, 0=APP_TIME 1=APP_INIT
Bit 1-2 : Cycle type, 00=Loop 01=Reverse 10=Clamp
Bit 3 : Active
Bit 4 : Play backwards
Bit 5 : Is manager controlled
Bit 6 : Always seems to be set in Skyrim and Fallout NIFs, unknown function
</add>
<add name="Frequency" type="float" default="1.0">Frequency (is usually 1.0).</add>
<add name="Phase" type="float">Phase (usually 0.0).</add>
<add name="Start Time" type="float" default="3.402823466e+38">Controller start time.</add>
<add name="Stop Time" type="float" default="-3.402823466e+38">Controller stop time.</add>
<add name="Target" type="Ptr" template="NiObjectNET" ver1="3.3.0.13">Controller target (object index of the first controllable ancestor of this object).</add>
<add name="Unknown Integer" type="uint" ver2="3.1">Unknown integer.</add>
</niobject>
<niobject name="NiInterpController" abstract="1" inherit="NiTimeController">
Abstract base class for all NiTimeController objects using NiInterpolator objects to animate their target objects.
<add name="Manager Controlled" type="bool" ver1="10.1.0.104" ver2="10.1.0.108" />
</niobject>
<niobject name="NiMultiTargetTransformController" abstract="0" inherit="NiInterpController">
DEPRECATED (20.6)
<add name="Num Extra Targets" type="ushort">The number of target pointers that follow.</add>
<add name="Extra Targets" type="Ptr" template="NiAVObject" arr1="Num Extra Targets">NiNode Targets to be controlled.</add>
</niobject>
<niobject name="NiGeomMorpherController" abstract="0" inherit="NiInterpController">
DEPRECATED (20.5), replaced by NiMorphMeshModifier.
Time controller for geometry morphing.
<add name="Extra Flags" type="Flags" ver1="10.0.1.2">1 = UPDATE NORMALS</add>
<add name="Data" type="Ref" template="NiMorphData">Geometry morphing data index.</add>
<add name="Always Update" type="byte" ver1="4.0.0.1" />
<add name="Num Interpolators" type="uint" ver1="10.1.0.106" />
<add name="Interpolators" type="Ref" template="NiInterpolator" arr1="Num Interpolators" ver1="10.1.0.106" ver2="20.0.0.5" />
<add name="Interpolator Weights" type="MorphWeight" arr1="Num Interpolators" ver1="20.1.0.3" />
<add name="Num Unknown Ints" type="uint" ver1="10.2.0.0" ver2="20.0.0.5" vercond="(User Version 2 &gt; 9)" />
<add name="Unknown Ints" type="uint" arr1="Num Unknown Ints" ver1="10.2.0.0" ver2="20.0.0.5" vercond="(User Version 2 &gt; 9)">Unknown.</add>
</niobject>
<niobject name="NiMorphController" abstract="0" inherit="NiInterpController">
Unknown! Used by Daoc->'healing.nif'.
</niobject>
<niobject name="NiMorpherController" abstract="0" inherit="NiInterpController">
Unknown! Used by Daoc.
<add name="Data" type="Ref" template="NiMorphData">This controller's data.</add>
</niobject>
<niobject name="NiSingleInterpController" abstract="1" inherit="NiInterpController">
Uses a single NiInterpolator to animate its target value.
<add name="Interpolator" type="Ref" template="NiInterpolator" ver1="10.1.0.104" />
</niobject>
<niobject name="NiKeyframeController" abstract="0" inherit="NiSingleInterpController">
DEPRECATED (10.2), RENAMED (10.2) to NiTransformController
A time controller object for animation key frames.
<add name="Data" type="Ref" template="NiKeyframeData" ver2="10.1.0.103" />
</niobject>
<niobject name="NiTransformController" abstract="0" inherit="NiKeyframeController">
NiTransformController replaces NiKeyframeController.
</niobject>
<niobject name="NiPSysModifierCtlr" abstract="1" inherit="NiSingleInterpController">
A particle system modifier controller.
NiInterpController::GetCtlrID() string format:
'%s'
Where %s = Value of "Modifier Name"
<add name="Modifier Name" type="string">Used to find the modifier pointer.</add>
</niobject>
<niobject name="NiPSysEmitterCtlr" abstract="0" inherit="NiPSysModifierCtlr">
Particle system emitter controller.
NiInterpController::GetInterpolatorID() string format:
['BirthRate', 'EmitterActive'] (for "Interpolator" and "Visibility Interpolator" respectively)
<add name="Visibility Interpolator" type="Ref" template="NiInterpolator" ver1="10.1.0.0" /><!-- Minimum may be none? -->
<add name="Data" type="Ref" template="NiPSysEmitterCtlrData" ver2="10.1.0.103" />
</niobject>
<niobject name="NiPSysModifierBoolCtlr" abstract="1" inherit="NiPSysModifierCtlr">
A particle system modifier controller that animates a boolean value for particles.
</niobject>
<niobject name="NiPSysModifierActiveCtlr" abstract="0" inherit="NiPSysModifierBoolCtlr">
A particle system modifier controller that animates active/inactive state for particles.
<add name="Data" type="Ref" template="NiVisData" ver2="10.1.0.103" />
</niobject>
<niobject name="NiPSysModifierFloatCtlr" abstract="1" inherit="NiPSysModifierCtlr">
A particle system modifier controller that animates a floating point value for particles.
<add name="Data" type="Ref" template="NiFloatData" ver2="10.1.0.103" />
</niobject>
<niobject name="NiPSysEmitterDeclinationCtlr" abstract="0" inherit="NiPSysModifierFloatCtlr">
Animates the declination value on an NiPSysEmitter object.
</niobject>
<niobject name="NiPSysEmitterDeclinationVarCtlr" abstract="0" inherit="NiPSysModifierFloatCtlr">
Animates the declination variation value on an NiPSysEmitter object.
</niobject>
<niobject name="NiPSysEmitterInitialRadiusCtlr" abstract="0" inherit="NiPSysModifierFloatCtlr">
Animates the size value on an NiPSysEmitter object.
</niobject>
<niobject name="NiPSysEmitterLifeSpanCtlr" abstract="0" inherit="NiPSysModifierFloatCtlr">
Animates the lifespan value on an NiPSysEmitter object.
</niobject>
<niobject name="NiPSysEmitterSpeedCtlr" abstract="0" inherit="NiPSysModifierFloatCtlr">
Animates the speed value on an NiPSysEmitter object.
</niobject>
<niobject name="NiPSysGravityStrengthCtlr" abstract="0" inherit="NiPSysModifierFloatCtlr">
Animates the strength value of an NiPSysGravityModifier.
</niobject>
<niobject name="NiFloatInterpController" abstract="1" inherit="NiSingleInterpController">
Abstract base class for all NiInterpControllers that use an NiInterpolator to animate their target float value.
</niobject>
<niobject name="NiFlipController" abstract="0" inherit="NiFloatInterpController">
Changes the image a Map (TexDesc) will use. Uses a float interpolator to animate the texture index.
Often used for performing flipbook animation.
<add name="Texture Slot" type="TexType">Target texture slot (0=base, 4=glow).</add>
<add name="Start Time" type="float" ver1="3.3.0.13" ver2="10.1.0.103" />
<add name="Delta" type="float" ver2="10.1.0.103">
Time between two flips.
delta = (start_time - stop_time) / sources.num_indices
</add>
<add name="Num Sources" type="uint" />
<add name="Sources" type="Ref" template="NiSourceTexture" arr1="Num Sources" ver1="4.0.0.0">The texture sources.</add>
<add name="Images" type="Ref" template="NiImage" arr1="Num Sources" ver2="3.1">The image sources</add>
</niobject>
<niobject name="NiAlphaController" abstract="0" inherit="NiFloatInterpController">
Animates the alpha value of a property using an interpolator.
<add name="Data" type="Ref" template="NiFloatData" ver2="10.1.0.103" />
</niobject>
<niobject name="NiTextureTransformController" abstract="0" inherit="NiFloatInterpController">
Used to animate a single member of an NiTextureTransform.
NiInterpController::GetCtlrID() string formats:
['%1-%2-TT_TRANSLATE_U', '%1-%2-TT_TRANSLATE_V', '%1-%2-TT_ROTATE', '%1-%2-TT_SCALE_U', '%1-%2-TT_SCALE_V']
(Depending on "Operation" enumeration, %1 = Value of "Shader Map", %2 = Value of "Texture Slot")
<add name="Shader Map" type="bool">Is the target map a shader map?</add>
<add name="Texture Slot" type="TexType">The target texture slot.</add>
<add name="Operation" type="TransformMember">Controls which aspect of the texture transform to modify.</add>
<add name="Data" type="Ref" template="NiFloatData" ver2="10.1.0.103" />
</niobject>
<niobject name="NiLightDimmerController" abstract="0" inherit="NiFloatInterpController">
Unknown controller.
</niobject>
<niobject name="NiBoolInterpController" abstract="1" inherit="NiSingleInterpController">
Abstract base class for all NiInterpControllers that use a NiInterpolator to animate their target boolean value.
</niobject>
<niobject name="NiVisController" abstract="0" inherit="NiBoolInterpController">
Animates the visibility of an NiAVObject.
<add name="Data" type="Ref" template="NiVisData" ver2="10.1.0.103" />
</niobject>
<niobject name="NiPoint3InterpController" abstract="1" inherit="NiSingleInterpController">
Abstract base class for all NiInterpControllers that use an NiInterpolator to animate their target NiPoint3 value.
</niobject>
<niobject name="NiMaterialColorController" abstract="0" inherit="NiPoint3InterpController">
Time controller for material color. Flags are used for color selection in versions below 10.1.0.0.
Bits 4-5: Target Color (00 = Ambient, 01 = Diffuse, 10 = Specular, 11 = Emissive)
NiInterpController::GetCtlrID() string formats:
['AMB', 'DIFF', 'SPEC', 'SELF_ILLUM'] (Depending on "Target Color")
<add name="Target Color" type="MaterialColor" ver1="10.1.0.0">Selects which color to control.</add>
<add name="Data" type="Ref" template="NiPosData" ver2="10.1.0.103" />
</niobject>
<niobject name="NiLightColorController" abstract="0" inherit="NiPoint3InterpController">
Animates the ambient, diffuse and specular colors of an NiLight.
NiInterpController::GetCtlrID() string formats:
['Diffuse', 'Ambient'] (Depending on "Target Color")
<add name="Target Color" type="LightColor" ver1="10.1.0.0" />
<add name="Data" type="Ref" template="NiPosData" ver2="10.1.0.103" />
</niobject>
<niobject name="NiExtraDataController" abstract="1" inherit="NiSingleInterpController">
Abstract base class for all extra data controllers.
NiInterpController::GetCtlrID() string format:
'%s'
Where %s = Value of "Extra Data Name"
<add name="Extra Data Name" type="string" ver1="10.2.0.0" />
</niobject>
<niobject name="NiFloatExtraDataController" abstract="0" inherit="NiExtraDataController">
Animates an NiFloatExtraData object attached to an NiAVObject.
NiInterpController::GetCtlrID() string format is same as parent.
<add name="Num Extra Bytes" type="byte" ver2="10.1.0.0">Number of extra bytes.</add>
<add name="Unknown Bytes" type="byte" arr1="7" ver2="10.1.0.0">Unknown.</add>
<add name="Unknown Extra Bytes" type="byte" arr1="Num Extra Bytes" ver2="10.1.0.0">Unknown.</add>
<add name="Data" type="Ref" template="NiFloatData" ver2="10.1.0.103" />
</niobject>
<niobject name="NiFloatsExtraDataController" abstract="0" inherit="NiExtraDataController">
Animates an NiFloatsExtraData object attached to an NiAVObject.
NiInterpController::GetCtlrID() string format:
'%s[%d]'
Where %s = Value of "Extra Data Name", %d = Value of "Floats Extra Data Index"
<add name="Floats Extra Data Index" type="int" />
<add name="Data" type="Ref" template="NiFloatData" ver2="10.1.0.103" />
</niobject>
<niobject name="NiFloatsExtraDataPoint3Controller" abstract="0" inherit="NiExtraDataController">
Animates an NiFloatsExtraData object attached to an NiAVObject.
NiInterpController::GetCtlrID() string format:
'%s[%d]'
Where %s = Value of "Extra Data Name", %d = Value of "Floats Extra Data Index"
<add name="Floats Extra Data Index" type="int" />
</niobject>
<niobject name="NiBoneLODController" abstract="0" inherit="NiTimeController">
DEPRECATED (20.5), Replaced by NiSkinningLODController.
Level of detail controller for bones. Priority is arranged from low to high.
<add name="LOD" type="uint">Unknown.</add>
<add name="Num LODs" type="uint">Number of LODs.</add>
<add name="Num Node Groups" type="uint">Number of node arrays.</add>
<add name="Node Groups" type="NodeSet" arr1="Num LODs">A list of node sets (each set a sequence of bones).</add>
<add name="Num Shape Groups" type="uint" ver1="4.2.2.0" userver="0">Number of shape groups.</add>
<add name="Num Shape Groups" type="uint" ver1="10.2.0.0" ver2="10.2.0.0" userver="1">Number of shape groups.</add>
<add name="Shape Groups 1" type="SkinInfoSet" arr1="Num Shape Groups" ver1="4.2.2.0" userver="0">List of shape groups.</add>
<add name="Shape Groups 1" type="SkinInfoSet" arr1="Num Shape Groups" ver1="10.2.0.0" ver2="10.2.0.0" userver="1">List of shape groups.</add>
<add name="Num Shape Groups 2" type="uint" ver1="4.2.2.0" userver="0">The size of the second list of shape groups.</add>
<add name="Num Shape Groups 2" type="uint" ver1="10.2.0.0" ver2="10.2.0.0" userver="1">The size of the second list of shape groups.</add>
<add name="Shape Groups 2" type="Ref" template="NiTriBasedGeom" arr1="Num Shape Groups 2" ver1="4.2.2.0" userver="0">Group of NiTriShape indices.</add>
<add name="Shape Groups 2" type="Ref" template="NiTriBasedGeom" arr1="Num Shape Groups 2" ver1="10.2.0.0" ver2="10.2.0.0" userver="1">Group of NiTriShape indices.</add>
<add name="Unknown Int 2" type="int" ver1="20.3.0.9" ver2="20.3.0.9" vercond="(User Version == 0x20000) || (User Version == 0x30000)">Unknown.</add>
<add name="Unknown Int 3" type="int" ver1="20.3.0.9" ver2="20.3.0.9" vercond="(User Version == 0x20000) || (User Version == 0x30000)">Unknown.</add>
</niobject>
<niobject name="NiBSBoneLODController" abstract="0" inherit="NiBoneLODController">
A simple LOD controller for bones.
</niobject>
<compound name="MaterialData">
<add name="Has Shader" type="bool" ver1="10.0.1.0" ver2="20.1.0.3">Shader.</add>
<add name="Shader Name" type="string" cond="Has Shader" ver1="10.0.1.0" ver2="20.1.0.3">The shader name.</add>
<add name="Shader Extra Data" type="int" cond="Has Shader" ver1="10.0.1.0" ver2="20.1.0.3">Extra data associated with the shader. A value of -1 means the shader is the default implementation.</add>
<add name="Num Materials" type="uint" ver1="20.2.0.5" />
<add name="Material Name" type="string" arr1="Num Materials" ver1="20.2.0.5">The name of the material.</add>
<add name="Material Extra Data" type="int" arr1="Num Materials" ver1="20.2.0.5">Extra data associated with the material. A value of -1 means the material is the default implementation.</add>
<add name="Active Material" type="int" default="-1" ver1="20.2.0.5">The index of the currently active material.</add>
<!-- Custom Versions -->
<add name="Unknown Byte" type="byte" default="255" ver1="10.2.0.0" ver2="10.2.0.0" userver="1">Cyanide extension (only in version 10.2.0.0?).</add>
<add name="Unknown Integer 2" type="int" ver1="10.4.0.1" ver2="10.4.0.1">Unknown.</add>
<!-- / Custom -->
<add name="Material Needs Update" type="bool" ver1="20.2.0.7">Whether the materials for this object always needs to be updated before rendering with them.</add>
</compound>
<niobject name="NiGeometry" abstract="1" inherit="NiAVObject">
Describes a visible scene element with vertices like a mesh, a particle system, lines, etc.
<!-- Bethesda 20.2.0.7 NIFs: NiGeometry was changed to BSGeometry.
Most new blocks (e.g. BSTriShape) do not refer to NiGeometry except NiParticleSystem was changed to use BSGeometry.
This causes massive inheritance problems so the rows below are doubled up to exclude NiParticleSystem for Bethesda Stream 100+.
-->
<!-- BSGeometry: Used by Bethesda Stream 100+ NiParticleSystem -->
<add name="Bound" type="NiBound" vercond="(User Version 2 &gt;= 100)" cond="NiParticleSystem" />
<add name="Skin" type="Ref" template="NiObject" vercond="(User Version 2 &gt;= 100)" cond="NiParticleSystem" />
<!-- NiGeometry: Each row is doubled in order to exclude NiParticleSystem for Bethesda Stream 100+ -->
<add name="Data" type="Ref" template="NiGeometryData" vercond="(User Version 2 &lt; 100)">Data index (NiTriShapeData/NiTriStripData).</add>
<add name="Data" type="Ref" template="NiGeometryData" vercond="(User Version 2 &gt;= 100)" cond="!NiParticleSystem">Data index (NiTriShapeData/NiTriStripData).</add>
<add name="Skin Instance" type="Ref" template="NiSkinInstance" ver1="3.3.0.13" vercond="(User Version 2 &lt; 100)" />
<add name="Skin Instance" type="Ref" template="NiSkinInstance" vercond="(User Version 2 &gt;= 100)" cond="!NiParticleSystem" />
<add name="Material Data" type="MaterialData" ver1="10.0.1.0" vercond="(User Version 2 &lt; 100)" />
<add name="Material Data" type="MaterialData" ver1="10.0.1.0" vercond="(User Version 2 &gt;= 100)" cond="!NiParticleSystem" />
<!-- Bethesda -->
<add name="Shader Property" type="Ref" template="BSShaderProperty" ver1="20.2.0.7" userver="12" />
<add name="Alpha Property" type="Ref" template="NiAlphaProperty" ver1="20.2.0.7" userver="12" />
</niobject>
<niobject name="NiTriBasedGeom" abstract="1" inherit="NiGeometry">
Describes a mesh, built from triangles.
</niobject>
<bitflags name="VectorFlags" storage="ushort" prefix="VF">
<option value="0" name="UV_1" />
<option value="1" name="UV_2" />
<option value="2" name="UV_4" />
<option value="3" name="UV_8" />
<option value="4" name="UV_16" />
<option value="5" name="UV_32" />
<option value="6" name="Unk64" />
<option value="7" name="Unk128" />
<option value="8" name="Unk256" />
<option value="9" name="Unk512" />
<option value="10" name="Unk1024" />
<option value="11" name="Unk2048" />
<option value="12" name="Has_Tangents" />
<option value="13" name="Unk8192" />
<option value="14" name="Unk16384" />
<option value="15" name="Unk32768" />
</bitflags>
<bitflags name="BSVectorFlags" storage="ushort" prefix="BSVF">
<option value="0" name="Has_UV" />
<option value="1" name="Unk2" />
<option value="2" name="Unk4" />
<option value="3" name="Unk8" />
<option value="4" name="Unk16" />
<option value="5" name="Unk32" />
<option value="6" name="Unk64" />
<option value="7" name="Unk128" />
<option value="8" name="Unk256" />
<option value="9" name="Unk512" />
<option value="10" name="Unk1024" />
<option value="11" name="Unk2048" />
<option value="12" name="Has_Tangents" />
<option value="13" name="Unk8192" />
<option value="14" name="Unk16384" />
<option value="15" name="Unk32768" />
</bitflags>
<niobject name="NiGeometryData" abstract="1" inherit="NiObject">
Mesh data: vertices, vertex normals, etc.
<!-- Bethesda 20.2.0.7 NIFs: NiParticlesData no longer inherits from NiGeometryData and inherits NiObject directly.
"Num Vertices" is renamed to "BS Max Vertices" for Bethesda 20.2 because Vertices, Normals, Tangents, Colors, and UV arrays
do not have length for NiPSysData regardless of "Num" or booleans.
-->
<add name="Group ID" type="int" ver1="10.1.0.114">Always zero.</add>
<add name="Num Vertices" type="ushort" cond="!NiPSysData">Number of vertices.</add>
<add name="Num Vertices" type="ushort" cond="NiPSysData" vercond="(User Version 2 &lt; 34)">Number of vertices.</add>
<add name="BS Max Vertices" type="ushort" cond="NiPSysData" vercond="(User Version 2 &gt;= 34)">Bethesda uses this for max number of particles in NiPSysData.</add>
<add name="Keep Flags" type="byte" ver1="10.1.0.0">Used with NiCollision objects when OBB or TRI is set.</add>
<add name="Compress Flags" type="byte" ver1="10.1.0.0">Unknown.</add>
<add name="Has Vertices" type="bool" default="1">Is the vertex array present? (Always non-zero.)</add>
<add name="Vertices" type="Vector3" arr1="Num Vertices" cond="(Has Vertices &gt; 0) &amp;&amp; (Has Vertices != 15)">The mesh vertices.</add>
<add name="Vertices" type="HalfVector3" arr1="Num Vertices" ver1="20.3.1.1" cond="Has Vertices == 15">The mesh vertices.</add>
<add name="Vector Flags" type="VectorFlags" ver1="10.0.1.0" vercond="!((Version == 20.2.0.7) &amp;&amp; (User Version 2 &gt; 0))" />
<add name="BS Vector Flags" type="BSVectorFlags" vercond="((Version == 20.2.0.7) &amp;&amp; (User Version 2 &gt; 0))" />
<add name="Material CRC" type="uint" ver1="20.2.0.7" ver2="20.2.0.7" userver="12" />
<add name="Has Normals" type="bool">Do we have lighting normals? These are essential for proper lighting: if not present, the model will only be influenced by ambient light.</add>
<add name="Normals" type="Vector3" arr1="Num Vertices" cond="(Has Normals &gt; 0) &amp;&amp; (Has Normals != 6)">The lighting normals.</add>
<add name="Normals" type="ByteVector3" arr1="Num Vertices" ver1="20.3.1.1" cond="Has Normals == 6">The lighting normals.</add>
<add name="Tangents" type="Vector3" arr1="Num Vertices" cond="(Has Normals) &amp;&amp; ((Vector Flags | BS Vector Flags) &amp; 4096)" ver1="10.1.0.0">Tangent vectors.</add>
<add name="Bitangents" type="Vector3" arr1="Num Vertices" cond="(Has Normals) &amp;&amp; ((Vector Flags | BS Vector Flags) &amp; 4096)" ver1="10.1.0.0">Bitangent vectors.</add>
<add name="Has Unk Floats" type="bool" ver1="20.3.0.9" ver2="20.3.0.9" vercond="(User Version == 0x20000) || (User Version == 0x30000)" />
<add name="Unk Floats" type="float" arr1="Num Vertices" ver1="20.3.0.9" ver2="20.3.0.9" vercond="(User Version == 0x20000) || (User Version == 0x30000)" cond="Has Unk Floats" />
<!-- TODO: NiBound -->
<add name="Center" type="Vector3">Center of the bounding box (smallest box that contains all vertices) of the mesh.</add>
<add name="Radius" type="float">Radius of the mesh: maximal Euclidean distance between the center and all vertices.</add>
<add name="Unknown 13 shorts" type="short" arr1="13" ver1="20.3.0.9" ver2="20.3.0.9" vercond="(User Version == 0x20000) || (User Version == 0x30000)">Unknown, always 0?</add>
<!-- / NiBound -->
<add name="Has Vertex Colors" type="bool">
Do we have vertex colors? These are usually used to fine-tune the lighting of the model.
Note: how vertex colors influence the model can be controlled by having a NiVertexColorProperty object as a property child of the root node. If this property object is not present, the vertex colors fine-tune lighting.
Note 2: set to either 0 or 0xFFFFFFFF for NifTexture compatibility.
</add>
<add name="Vertex Colors" type="Color4" arr1="Num Vertices" cond="(Has Vertex Colors &gt; 0) &amp;&amp; (Has Vertex Colors != 7)">The vertex colors.</add>
<add name="Vertex Colors" type="ByteColor4" arr1="Num Vertices" ver1="20.3.1.1" cond="Has Vertex Colors == 7">The vertex colors.</add>
<add name="Num UV Sets" type="ushort" ver2="4.2.2.0">The lower 6 (or less?) bits of this field represent the number of UV texture sets. The other bits are probably flag bits. For versions 10.1.0.0 and up, if bit 12 is set then extra vectors are present after the normals.</add>
<add name="Has UV" type="bool" ver2="4.0.0.2">
Do we have UV coordinates?
Note: for compatibility with NifTexture, set this value to either 0x00000000 or 0xFFFFFFFF.
</add>
<add name="UV Sets" type="TexCoord" cond="(Has Vertices &gt; 0) &amp;&amp; (Has Vertices != 15)" arr1="((Num UV Sets &amp; 63) | (Vector Flags &amp; 63) | (BS Vector Flags &amp; 1))" arr2="Num Vertices">The UV texture coordinates. They follow the OpenGL standard: some programs may require you to flip the second coordinate.</add>
<add name="UV Sets" type="HalfTexCoord" cond="Has Vertices == 15" arr1="((Num UV Sets &amp; 63) | (Vector Flags &amp; 63) | (BS Vector Flags &amp; 1))" arr2="Num Vertices" ver1="20.3.1.1">The UV texture coordinates. They follow the OpenGL standard: some programs may require you to flip the second coordinate.</add>
<add name="Consistency Flags" type="ConsistencyType" ver1="10.0.1.0" default="CT_MUTABLE">Consistency Flags</add>
<add name="Additional Data" type="Ref" template="AbstractAdditionalGeometryData" ver1="20.0.0.4">Unknown.</add>
</niobject>
<niobject name="AbstractAdditionalGeometryData" abstract="1" inherit="NiObject">
</niobject>
<niobject name="NiTriBasedGeomData" abstract="1" inherit="NiGeometryData">
Describes a mesh, built from triangles.
<add name="Num Triangles" type="ushort">Number of triangles.</add>
</niobject>
<niobject name="bhkBlendController" abstract="0" inherit="NiTimeController">
Unknown. Is apparently only used in skeleton.nif files.
<add name="Keys" type="uint">Seems to be always zero.</add>
</niobject>
<niobject name="BSBound" abstract="0" inherit="NiExtraData">
Bethesda-specific collision bounding box for skeletons.
<add name="Center" type="Vector3">Center of the bounding box.</add>
<add name="Dimensions" type="Vector3">Dimensions of the bounding box from center.</add>
</niobject>
<niobject name="BSFurnitureMarker" abstract="0" inherit="NiExtraData">
Unknown. Marks furniture sitting positions?
<add name="Num Positions" type="uint" />
<add name="Positions" type="FurniturePosition" arr1="Num Positions" />
</niobject>
<niobject name="BSParentVelocityModifier" abstract="0" inherit="NiPSysModifier">
Particle modifier that adds a blend of object space translation and rotation to particles born in world space.
<add name="Damping" type="float">Amount of blending?</add>
</niobject>
<niobject name="BSPSysArrayEmitter" abstract="0" inherit="NiPSysVolumeEmitter">
Particle emitter that uses a node, its children and subchildren to emit from. Emission will be evenly spread along points from nodes leading to their direct parents/children only.
</niobject>
<niobject name="BSWindModifier" abstract="0" inherit="NiPSysModifier">
Particle Modifier that uses the wind value from the gamedata to alter the path of particles.
<add name="Strength" type="float">The amount of force wind will have on particles.</add>
</niobject>
<niobject name="hkPackedNiTriStripsData" abstract="0" inherit="bhkShapeCollection">
NiTriStripsData for havok data?
<add name="Num Triangles" type="uint" />
<add name="Triangles" type="TriangleData" arr1="Num Triangles" />
<add name="Num Vertices" type="uint" />
<add name="Unknown Byte 1" type="byte" ver1="20.2.0.7">Unknown.</add>
<add name="Vertices" type="Vector3" arr1="Num Vertices" />
<add name="Num Sub Shapes" type="ushort" ver1="20.2.0.7">Number of subparts.</add>
<add name="Sub Shapes" type="OblivionSubShape" arr1="Num Sub Shapes" ver1="20.2.0.7">The subparts.</add>
</niobject>
<niobject name="NiAlphaProperty" abstract="0" inherit="NiProperty">
Transparency. Flags 0x00ED.
<add name="Flags" type="Flags" default="4844">
Bit 0 : alpha blending enable
Bits 1-4 : source blend mode
Bits 5-8 : destination blend mode
Bit 9 : alpha test enable
Bit 10-12 : alpha test mode
Bit 13 : no sorter flag ( disables triangle sorting )
blend modes (glBlendFunc):
0000 GL_ONE
0001 GL_ZERO
0010 GL_SRC_COLOR
0011 GL_ONE_MINUS_SRC_COLOR
0100 GL_DST_COLOR
0101 GL_ONE_MINUS_DST_COLOR
0110 GL_SRC_ALPHA
0111 GL_ONE_MINUS_SRC_ALPHA
1000 GL_DST_ALPHA
1001 GL_ONE_MINUS_DST_ALPHA
1010 GL_SRC_ALPHA_SATURATE
test modes (glAlphaFunc):
000 GL_ALWAYS
001 GL_LESS
010 GL_EQUAL
011 GL_LEQUAL
100 GL_GREATER
101 GL_NOTEQUAL
110 GL_GEQUAL
111 GL_NEVER
</add>
<add name="Threshold" type="byte" default="128">Threshold for alpha testing (see: glAlphaFunc)</add>
<add name="Unknown Short 1" type="ushort" ver2="2.3">Unknown</add>
<add name="Unknown Short 1" type="ushort" ver1="20.3.1.1" ver2="20.3.1.2">Unknown</add>
<add name="Unknown Int 2" type="uint" ver2="2.3">Unknown</add>
</niobject>
<niobject name="NiAmbientLight" abstract="0" inherit="NiLight">
Ambient light source.
</niobject>
<niobject name="NiParticlesData" abstract="0" inherit="NiGeometryData">
Generic rotating particles data object.
<!-- Bethesda 20.2.0.7 NIFs: NiParticlesData no longer inherits from NiGeometryData and inherits NiObject directly.
`!((Version == 20.2.0.7) &amp;&amp; (User Version 2 &gt; 0))` means "Not Bethesda 20.2"
-->
<add name="Num Particles" type="ushort" ver2="4.0.0.2">The maximum number of particles (matches the number of vertices).</add>
<add name="Particle Radius" type="float" ver2="10.0.1.0">The particles' size.</add>
<add name="Has Radii" type="bool" ver1="10.1.0.0">Is the particle size array present?</add>
<add name="Radii" type="float" arr1="Num Vertices" cond="Has Radii" ver1="10.1.0.0" vercond="!((Version == 20.2.0.7) &amp;&amp; (User Version 2 &gt; 0))">The individual particle sizes.</add>
<add name="Num Active" type="ushort">The number of active particles at the time the system was saved. This is also the number of valid entries in the following arrays.</add>
<add name="Has Sizes" type="bool">Is the particle size array present?</add>
<add name="Sizes" type="float" arr1="Num Vertices" cond="Has Sizes" vercond="!((Version == 20.2.0.7) &amp;&amp; (User Version 2 &gt; 0))">The individual particle sizes.</add>
<add name="Has Rotations" type="bool" ver1="10.0.1.0">Is the particle rotation array present?</add>
<add name="Rotations" type="Quaternion" arr1="Num Vertices" cond="Has Rotations" ver1="10.0.1.0" vercond="!((Version == 20.2.0.7) &amp;&amp; (User Version 2 &gt; 0))">The individual particle rotations.</add>
<add name="Has Rotation Angles" type="bool" ver1="20.0.0.4">Are the angles of rotation present?</add>
<add name="Rotation Angles" type="float" arr1="Num Vertices" cond="Has Rotation Angles" vercond="!((Version == 20.2.0.7) &amp;&amp; (User Version 2 &gt; 0))">Angles of rotation</add>
<add name="Has Rotation Axes" type="bool" ver1="20.0.0.4">Are axes of rotation present?</add>
<add name="Rotation Axes" type="Vector3" arr1="Num Vertices" cond="Has Rotation Axes" ver1="20.0.0.4" vercond="!((Version == 20.2.0.7) &amp;&amp; (User Version 2 &gt; 0))">Axes of rotation.</add>
<!-- Bethesda -->
<add name="Has Texture Indices" type="bool" vercond="((Version == 20.2.0.7) &amp;&amp; (User Version 2 &gt; 0))" />
<add name="Num Subtexture Offsets" type="uint" vercond="(User Version 2 &gt; 34)">How many quads to use in BSPSysSubTexModifier for texture atlasing</add>
<add name="Num Subtexture Offsets" type="byte" vercond="(Version == 20.2.0.7) &amp;&amp; (User Version 2 &lt;= 34) &amp;&amp; (User Version 2 &gt; 0)">2,4,8,16,32,64 are potential values. If "Has" was no then this should be 256, which represents a 16x16 framed image, which is invalid</add>
<add name="Subtexture Offsets" type="Vector4" arr1="Num Subtexture Offsets" vercond="((Version == 20.2.0.7) &amp;&amp; (User Version 2 &gt; 0))">Defines UV offsets</add>
<add name="Aspect Ratio" type="float" vercond="(User Version 2 &gt; 34)">Sets aspect ratio for Subtexture Offset UV quads</add>
<add name="Aspect Flags" type="ushort" vercond="(User Version 2 &gt; 34)" />
<add name="Speed to Aspect Aspect 2" type="float" vercond="(User Version 2 &gt; 34)" />
<add name="Speed to Aspect Speed 1" type="float" vercond="(User Version 2 &gt; 34)" />
<add name="Speed to Aspect Speed 2" type="float" vercond="(User Version 2 &gt; 34)" />
</niobject>
<niobject name="NiRotatingParticlesData" abstract="0" inherit="NiParticlesData">
Rotating particles data object.
<add name="Has Rotations 2" type="bool" ver2="4.2.2.0">Is the particle rotation array present?</add>
<add name="Rotations 2" type="Quaternion" arr1="Num Vertices" cond="Has Rotations 2" ver2="4.2.2.0">The individual particle rotations.</add>
</niobject>
<niobject name="NiAutoNormalParticlesData" abstract="0" inherit="NiParticlesData">
Particle system data object (with automatic normals?).
</niobject>
<compound name="ParticleDesc">
Particle Description.
<add name="Translation" type="Vector3">Unknown.</add>
<add name="Unknown Floats 1" type="float" arr1="3" ver2="10.4.0.1">Unknown.</add>
<add name="Unknown Float 1" type="float" default="0.9">Unknown.</add>
<add name="Unknown Float 2" type="float" default="0.9">Unknown.</add>
<add name="Unknown Float 3" type="float" default="3.0">Unknown.</add>
<add name="Unknown Int 1" type="int">Unknown.</add>
</compound>
<niobject name="NiPSysData" abstract="0" inherit="NiParticlesData">
Particle system data.
<!-- `!((Version == 20.2.0.7) &amp;&amp; (User Version 2 &gt; 0))` means "Not Bethesda 20.2" -->
<add name="Particle Descriptions" type="ParticleDesc" arr1="Num Vertices" vercond="!((Version == 20.2.0.7) &amp;&amp; (User Version 2 &gt; 0))" />
<add name="Has Rotation Speeds" type="bool" ver1="20.0.0.2" />
<add name="Rotation Speeds" type="float" arr1="Num Vertices" cond="Has Rotation Speeds" ver1="20.0.0.2" vercond="!((Version == 20.2.0.7) &amp;&amp; (User Version 2 &gt; 0))" />
<add name="Num Added Particles" type="ushort" vercond="!((Version == 20.2.0.7) &amp;&amp; (User Version 2 &gt; 0))" />
<add name="Added Particles Base" type="ushort" vercond="!((Version == 20.2.0.7) &amp;&amp; (User Version 2 &gt; 0))" />
</niobject>
<niobject name="NiMeshPSysData" abstract="0" inherit="NiPSysData">
Particle meshes data.
<add name="Default Pool Size" type="uint" ver1="10.2.0.0" />
<add name="Fill Pools On Load" type="bool" ver1="10.2.0.0" />
<add name="Num Generations" type="uint" ver1="10.2.0.0" />
<add name="Generations" type="uint" ver1="10.2.0.0" arr1="Num Generations" />
<add name="Particle Meshes" type="Ref" template="NiNode" />
</niobject>
<niobject name="NiBinaryExtraData" abstract="0" inherit="NiExtraData">
Binary extra data object. Used to store tangents and bitangents in Oblivion.
<add name="Binary Data" type="ByteArray">The binary data.</add>
</niobject>
<niobject name="NiBinaryVoxelExtraData" abstract="0" inherit="NiExtraData">
Voxel extra data object.
<add name="Unknown Int" type="uint" default="0">Unknown. 0?</add>
<add name="Data" type="Ref" template="NiBinaryVoxelData">Link to binary voxel data.</add>
</niobject>
<niobject name="NiBinaryVoxelData" abstract="0" inherit="NiObject">
Voxel data object.
<add name="Unknown Short 1" type="ushort">Unknown.</add>
<add name="Unknown Short 2" type="ushort">Unknown.</add>
<add name="Unknown Short 3" type="ushort">Unknown. Is this^3 the Unknown Bytes 1 size?</add>
<add name="Unknown 7 Floats" type="float" arr1="7">Unknown.</add>
<add name="Unknown Bytes 1" type="byte" arr1="7" arr2="12">Unknown. Always a multiple of 7.</add>
<add name="Num Unknown Vectors" type="uint">Unknown.</add>
<add name="Unknown Vectors" type="Vector4" arr1="Num Unknown Vectors">Vectors on the unit sphere.</add>
<add name="Num Unknown Bytes 2" type="uint">Unknown.</add>
<add name="Unknown Bytes 2" type="byte" arr1="Num Unknown Bytes 2">Unknown.</add>
<add name="Unknown 5 Ints" type="uint" arr1="5">Unknown.</add>
</niobject>
<niobject name="NiBlendBoolInterpolator" abstract="0" inherit="NiBlendInterpolator">
Blends bool values together.
<add name="Value" type="byte" default="2">The pose value. Invalid if using data.</add>
</niobject>
<niobject name="NiBlendFloatInterpolator" abstract="0" inherit="NiBlendInterpolator">
Blends float values together.
<add name="Value" type="float" default="-3.402823466e+38">The pose value. Invalid if using data.</add>
</niobject>
<niobject name="NiBlendPoint3Interpolator" abstract="0" inherit="NiBlendInterpolator">
Blends NiPoint3 values together.
<add name="Value" type="Vector3" default="-3.402823466e+38, -3.402823466e+38, -3.402823466e+38">The pose value. Invalid if using data.</add>
</niobject>
<niobject name="NiBlendTransformInterpolator" abstract="0" inherit="NiBlendInterpolator">
Blends NiQuatTransform values together.
<add name="Value" type="NiQuatTransform" ver2="10.1.0.109" />
</niobject>
<niobject name="NiBoolData" abstract="0" inherit="NiObject">
Wrapper for boolean animation keys.
<add name="Data" type="KeyGroup" template="byte">The boolean keys.</add>
</niobject>
<niobject name="NiBooleanExtraData" abstract="0" inherit="NiExtraData">
Boolean extra data.
<add name="Boolean Data" type="byte">The boolean extra data value.</add>
</niobject>
<niobject name="NiBSplineBasisData" abstract="0" inherit="NiObject">
Contains an NiBSplineBasis for use in interpolation of open, uniform B-Splines.
<add name="Num Control Points" type="uint">The number of control points of the B-spline (number of frames of animation plus degree of B-spline minus one).</add>
</niobject>
<niobject name="NiBSplineFloatInterpolator" abstract="1" inherit="NiBSplineInterpolator">
Uses B-Splines to animate a float value over time.
<add name="Value" type="float" default="-3.402823466e+38">Base value when curve not defined.</add>
<add name="Handle" type="uint" default="0xFFFF">Handle into the data. (USHRT_MAX for invalid handle.)</add>
</niobject>
<niobject name="NiBSplineCompFloatInterpolator" abstract="0" inherit="NiBSplineFloatInterpolator">
NiBSplineFloatInterpolator plus the information required for using compact control points.
<add name="Float Offset" type="float" default="3.402823466e+38" />
<add name="Float Half Range" type="float" default="3.402823466e+38" />
</niobject>
<niobject name="NiBSplinePoint3Interpolator" abstract="1" inherit="NiBSplineInterpolator">
Uses B-Splines to animate an NiPoint3 value over time.
<add name="Value" type="Vector3" default="-3.402823466e+38, -3.402823466e+38, -3.402823466e+38">Base value when curve not defined.</add>
<add name="Handle" type="uint" default="0xFFFF">Handle into the data. (USHRT_MAX for invalid handle.)</add>
</niobject>
<niobject name="NiBSplineCompPoint3Interpolator" abstract="0" inherit="NiBSplinePoint3Interpolator">
NiBSplinePoint3Interpolator plus the information required for using compact control points.
<add name="Position Offset" type="float" default="3.402823466e+38" />
<add name="Position Half Range" type="float" default="3.402823466e+38" />
</niobject>
<niobject name="NiBSplineTransformInterpolator" abstract="0" inherit="NiBSplineInterpolator">
Supports the animation of position, rotation, and scale using an NiQuatTransform.
The NiQuatTransform can be an unchanging pose or interpolated from B-Spline control point channels.
<add name="Transform" type="NiQuatTransform" />
<add name="Translation Handle" type="uint" default="0xFFFF">Handle into the translation data. (USHRT_MAX for invalid handle.)</add>
<add name="Rotation Handle" type="uint" default="0xFFFF">Handle into the rotation data. (USHRT_MAX for invalid handle.)</add>
<add name="Scale Handle" type="uint" default="0xFFFF">Handle into the scale data. (USHRT_MAX for invalid handle.)</add>
</niobject>
<niobject name="NiBSplineCompTransformInterpolator" abstract="0" inherit="NiBSplineTransformInterpolator">
NiBSplineTransformInterpolator plus the information required for using compact control points.
<add name="Translation Offset" type="float" default="3.402823466e+38" />
<add name="Translation Half Range" type="float" default="3.402823466e+38" />
<add name="Rotation Offset" type="float" default="3.402823466e+38" />
<add name="Rotation Half Range" type="float" default="3.402823466e+38" />
<add name="Scale Offset" type="float" default="3.402823466e+38" />
<add name="Scale Half Range" type="float" default="3.402823466e+38" />
</niobject>
<niobject name="BSRotAccumTransfInterpolator" inherit="NiTransformInterpolator">
</niobject>
<niobject name="NiBSplineData" abstract="0" inherit="NiObject">
Contains one or more sets of control points for use in interpolation of open, uniform B-Splines, stored as either float or compact.
<add name="Num Float Control Points" type="uint" />
<add name="Float Control Points" type="float" arr1="Num Float Control Points">Float values representing the control data.</add>
<add name="Num Compact Control Points" type="uint" />
<add name="Compact Control Points" type="short" arr1="Num Compact Control Points">Signed shorts representing the data from 0 to 1 (scaled by SHRT_MAX).</add>
</niobject>
<niobject name="NiCamera" abstract="0" inherit="NiAVObject">
Camera object.
<add name="Camera Flags" type="ushort" ver1="10.1.0.0">Obsolete flags.</add>
<add name="Frustum Left" type="float">Frustrum left.</add>
<add name="Frustum Right" type="float">Frustrum right.</add>
<add name="Frustum Top" type="float">Frustrum top.</add>
<add name="Frustum Bottom" type="float">Frustrum bottom.</add>
<add name="Frustum Near" type="float">Frustrum near.</add>
<add name="Frustum Far" type="float">Frustrum far.</add>
<add name="Use Orthographic Projection" type="bool" ver1="10.1.0.0">Determines whether perspective is used. Orthographic means no perspective.</add>
<add name="Viewport Left" type="float">Viewport left.</add>
<add name="Viewport Right" type="float">Viewport right.</add>
<add name="Viewport Top" type="float">Viewport top.</add>
<add name="Viewport Bottom" type="float">Viewport bottom.</add>
<add name="LOD Adjust" type="float">Level of detail adjust.</add>
<add name="Scene" type="Ref" template="NiAVObject" />
<add name="Num Screen Polygons" type="uint" default="0">Deprecated. Array is always zero length on disk write.</add>
<add name="Num Screen Textures" type="uint" default="0" ver1="4.2.1.0">Deprecated. Array is always zero length on disk write.</add>
<add name="Unknown Int 3" type="uint" ver2="3.1">Unknown.</add>
</niobject>
<niobject name="NiColorData" abstract="0" inherit="NiObject">
Wrapper for color animation keys.
<add name="Data" type="KeyGroup" template="Color4">The color keys.</add>
</niobject>
<niobject name="NiColorExtraData" abstract="0" inherit="NiExtraData">
Extra data in the form of NiColorA (red, green, blue, alpha).
<add name="Data" type="Color4">RGBA Color?</add>
</niobject>
<niobject name="NiControllerManager" abstract="0" inherit="NiTimeController">
Controls animation sequences on a specific branch of the scene graph.
<add name="Cumulative" type="bool">Whether transformation accumulation is enabled. If accumulation is not enabled, the manager will treat all sequence data on the accumulation root as absolute data instead of relative delta values.</add>
<add name="Num Controller Sequences" type="uint" />
<add name="Controller Sequences" type="Ref" template="NiControllerSequence" arr1="Num Controller Sequences" />
<add name="Object Palette" type="Ref" template="NiDefaultAVObjectPalette" />
</niobject>
<niobject name="NiSequence" abstract="0" inherit="NiObject">
Root node in NetImmerse .kf files (until version 10.0).
<add name="Name" type="string">The sequence name by which the animation system finds and manages this sequence.</add>
<add name="Accum Root Name" type="string" ver2="10.1.0.103">The name of the NiAVObject serving as the accumulation root. This is where all accumulated translations, scales, and rotations are applied.</add>
<add name="Text Keys" type="Ref" template="NiTextKeyExtraData" ver2="10.1.0.103" />
<add name="Unknown Int 4" type="int" ver1="20.3.0.9" ver2="20.3.0.9" vercond="(User Version == 0x20000) || (User Version == 0x30000)">Divinity 2</add>
<add name="Unknown Int 5" type="int" ver1="20.3.0.9" ver2="20.3.0.9" vercond="(User Version == 0x20000) || (User Version == 0x30000)">Divinity 2</add>
<add name="Num Controlled Blocks" type="uint" />
<add name="Array Grow By" type="uint" ver1="10.1.0.106" />
<add name="Controlled Blocks" type="ControlledBlock" arr1="Num Controlled Blocks" />
</niobject>
<niobject name="NiControllerSequence" abstract="0" inherit="NiSequence">
Root node in Gamebryo .kf files (version 10.0.1.0 and up).
<add name="Weight" type="float" default="1.0" ver1="10.1.0.106">The weight of a sequence describes how it blends with other sequences at the same priority.</add>
<add name="Text Keys" type="Ref" template="NiTextKeyExtraData" ver1="10.1.0.106" />
<add name="Cycle Type" type="CycleType" ver1="10.1.0.106" />
<add name="Frequency" type="float" default="1.0" ver1="10.1.0.106" />
<add name="Phase" type="float" ver1="10.1.0.106" ver2="10.4.0.1" /> <!-- Actually ver2="10.3.0.1" but WorldShift 10.4.0.1 custom version acts like 10.3.0.1 -->
<add name="Start Time" type="float" default="3.402823466e+38" ver1="10.1.0.106" />
<add name="Stop Time" type="float" default="-3.402823466e+38" ver1="10.1.0.106" />
<add name="Play Backwards" type="bool" ver1="10.1.0.106" ver2="10.1.0.106" />
<add name="Manager" type="Ptr" template="NiControllerManager" ver1="10.1.0.106">The owner of this sequence.</add>
<add name="Accum Root Name" type="string" ver1="10.1.0.106">The name of the NiAVObject serving as the accumulation root. This is where all accumulated translations, scales, and rotations are applied.</add>
<add name="Accum Flags" type="AccumFlags" ver1="20.3.0.8" default="ACCUM_X_FRONT" />
<add name="String Palette" type="Ref" template="NiStringPalette" ver1="10.1.0.113" ver2="20.1.0.0" />
<!-- Bethesda -->
<add name="Anim Notes" type="Ref" template="BSAnimNotes" ver1="20.2.0.7" vercond="(User Version 2 &gt;= 24) &amp;&amp; (User Version 2 &lt;= 28)" />
<add name="Num Anim Note Arrays" type="ushort" ver1="20.2.0.7" vercond="(User Version 2 &gt; 28)" />
<add name="Anim Note Arrays" type="Ref" template="BSAnimNotes" arr1="Num Anim Note Arrays" ver1="20.2.0.7" vercond="(User Version 2 &gt; 28)" />
</niobject>
<niobject name="NiAVObjectPalette" abstract="1" inherit="NiObject">
Abstract base class for indexing NiAVObject by name.
</niobject>
<niobject name="NiDefaultAVObjectPalette" abstract="0" inherit="NiAVObjectPalette">
NiAVObjectPalette implementation. Used to quickly look up objects by name.
<add name="Scene" type="Ptr" template="NiAVObject">Scene root of the object palette.</add>
<add name="Num Objs" type="uint">Number of objects.</add>
<add name="Objs" type="AVObject" arr1="Num Objs">The objects.</add>
</niobject>
<niobject name="NiDirectionalLight" abstract="0" inherit="NiLight">
Directional light source.
</niobject>
<niobject name="NiDitherProperty" abstract="0" inherit="NiProperty">
NiDitherProperty allows the application to turn the dithering of interpolated colors and fog values on and off.
<add name="Flags" type="Flags">1 = Enable dithering</add>
</niobject>
<niobject name="NiRollController" abstract="0" inherit="NiSingleInterpController">
DEPRECATED (10.2), REMOVED (20.5). Replaced by NiTransformController and NiLookAtInterpolator.
<add name="Data" type="Ref" template="NiFloatData">The data for the controller.</add>
</niobject>
<niobject name="NiFloatData" abstract="0" inherit="NiObject">
Wrapper for 1D (one-dimensional) floating point animation keys.
<add name="Data" type="KeyGroup" template="float">The keys.</add>
</niobject>
<niobject name="NiFloatExtraData" abstract="0" inherit="NiExtraData">
Extra float data.
<add name="Float Data" type="float">The float data.</add>
</niobject>
<niobject name="NiFloatsExtraData" abstract="0" inherit="NiExtraData">
Extra float array data.
<add name="Num Floats" type="uint">Number of floats in the next field.</add>
<add name="Data" type="float" arr1="Num Floats">Float data.</add>
</niobject>
<niobject name="NiFogProperty" abstract="0" inherit="NiProperty">
NiFogProperty allows the application to enable, disable and control the appearance of fog.
<add name="Flags" type="Flags">
Bit 0: Enables Fog
Bit 1: Sets Fog Function to FOG_RANGE_SQ
Bit 2: Sets Fog Function to FOG_VERTEX_ALPHA
If Bit 1 and Bit 2 are not set, but fog is enabled, Fog function is FOG_Z_LINEAR.
</add>
<add name="Fog Depth" type="float" default="1.0">Depth of the fog in normalized units. 1.0 = begins at near plane. 0.5 = begins halfway between the near and far planes.</add>
<add name="Fog Color" type="Color3">The color of the fog.</add>
</niobject>
<niobject name="NiGravity" abstract="0" inherit="NiParticleModifier">
LEGACY (pre-10.1) particle modifier. Applies a gravitational field on the particles.
<add name="Unknown Float 1" type="float" ver1="3.3.0.13">Unknown.</add>
<add name="Force" type="float">The strength/force of this gravity.</add>
<add name="Type" type="FieldType">The force field type.</add>
<add name="Position" type="Vector3">The position of the mass point relative to the particle system.</add>
<add name="Direction" type="Vector3">The direction of the applied acceleration.</add>
</niobject>
<niobject name="NiIntegerExtraData" abstract="0" inherit="NiExtraData">
Extra integer data.
<add name="Integer Data" type="uint">The value of the extra data.</add>
</niobject>
<niobject name="BSXFlags" abstract="0" inherit="NiIntegerExtraData">
Controls animation and collision. Integer holds flags:
Bit 0 : enable havok, bAnimated(Skyrim)
Bit 1 : enable collision, bHavok(Skyrim)
Bit 2 : is skeleton nif?, bRagdoll(Skyrim)
Bit 3 : enable animation, bComplex(Skyrim)
Bit 4 : FlameNodes present, bAddon(Skyrim)
Bit 5 : EditorMarkers present, bEditorMarker(Skyrim)
Bit 6 : bDynamic(Skyrim)
Bit 7 : bArticulated(Skyrim)
Bit 8 : bIKTarget(Skyrim)/needsTransformUpdates
Bit 9 : bExternalEmit(Skyrim)
Bit 10: bMagicShaderParticles(Skyrim)
Bit 11: bLights(Skyrim)
Bit 12: bBreakable(Skyrim)
Bit 13: bSearchedBreakable(Skyrim) .. Runtime only?
</niobject>
<niobject name="NiIntegersExtraData" abstract="0" inherit="NiExtraData">
Extra integer array data.
<add name="Num Integers" type="uint">Number of integers.</add>
<add name="Data" type="uint" arr1="Num Integers">Integers.</add>
</niobject>
<niobject name="BSKeyframeController" abstract="0" inherit="NiKeyframeController">
An extended keyframe controller.
<add name="Data 2" type="Ref" template="NiKeyframeData">A link to more keyframe data.</add>
</niobject>
<niobject name="NiKeyframeData" abstract="0" inherit="NiObject">
DEPRECATED (10.2), RENAMED (10.2) to NiTransformData.
Wrapper for transformation animation keys.
<add name="Num Rotation Keys" type="uint">The number of quaternion rotation keys. If the rotation type is XYZ (type 4) then this *must* be set to 1, and in this case the actual number of keys is stored in the XYZ Rotations field.</add>
<add name="Rotation Type" type="KeyType" cond="Num Rotation Keys != 0">The type of interpolation to use for rotation. Can also be 4 to indicate that separate X, Y, and Z values are used for the rotation instead of Quaternions.</add>
<add name="Quaternion Keys" type="QuatKey" arg="Rotation Type" template="Quaternion" arr1="Num Rotation Keys" cond="Rotation Type != 4">The rotation keys if Quaternion rotation is used.</add>
<add name="Order" type="float" cond="Rotation Type == 4" ver2="10.1.0.0" />
<add name="XYZ Rotations" type="KeyGroup" template="float" arr1="3" cond="Rotation Type == 4">Individual arrays of keys for rotating X, Y, and Z individually.</add>
<add name="Translations" type="KeyGroup" template="Vector3">Translation keys.</add>
<add name="Scales" type="KeyGroup" template="float">Scale keys.</add>
</niobject>
<bitflags name="LookAtFlags" storage="ushort">
<option value="0" name="LOOK_FLIP">Flip</option>
<option value="1" name="LOOK_Y_AXIS">Y-Axis</option>
<option value="2" name="LOOK_Z_AXIS">Z-Axis</option>
</bitflags>
<niobject name="NiLookAtController" abstract="0" inherit="NiTimeController">
DEPRECATED (10.2), REMOVED (20.5)
Replaced by NiTransformController and NiLookAtInterpolator.
<add name="Flags" type="LookAtFlags" ver1="10.1.0.0" />
<add name="Look At" type="Ptr" template="NiNode" />
</niobject>
<niobject name="NiLookAtInterpolator" abstract="0" inherit="NiInterpolator">
NiLookAtInterpolator rotates an object so that it always faces a target object.
<add name="Flags" type="LookAtFlags" />
<add name="Look At" type="Ptr" template="NiNode" />
<add name="Look At Name" type="string" />
<add name="Transform" type="NiQuatTransform" ver2="20.4.0.12" />
<add name="Interpolator: Translation" type="Ref" template="NiPoint3Interpolator" />
<add name="Interpolator: Roll" type="Ref" template="NiFloatInterpolator" />
<add name="Interpolator: Scale" type="Ref" template="NiFloatInterpolator" />
</niobject>
<niobject name="NiMaterialProperty" abstract="0" inherit="NiProperty">
Describes the surface properties of an object e.g. translucency, ambient color, diffuse color, emissive color, and specular color.
<add name="Flags" type="Flags" ver1="3.0" ver2="10.0.1.2">Property flags.</add>
<add name="Ambient Color" type="Color3" default="1.0, 1.0, 1.0" vercond="(User Version 2 &lt; 26)">How much the material reflects ambient light.</add>
<add name="Diffuse Color" type="Color3" default="1.0, 1.0, 1.0" vercond="(User Version 2 &lt; 26)">How much the material reflects diffuse light.</add>
<add name="Specular Color" type="Color3" default="1.0, 1.0, 1.0">How much light the material reflects in a specular manner.</add>
<add name="Emissive Color" type="Color3" default="0.0, 0.0, 0.0">How much light the material emits.</add>
<add name="Glossiness" type="float" default="10.0">The material glossiness.</add>
<add name="Alpha" type="float" default="1.0">The material transparency (1=non-transparant). Refer to a NiAlphaProperty object in this material's parent NiTriShape object, when alpha is not 1.</add>
<add name="Emissive Mult" type="float" default="1.0" vercond="(User Version 2 &gt; 21)" />
</niobject>
<niobject name="NiMorphData" abstract="0" inherit="NiObject">
DEPRECATED (20.5), replaced by NiMorphMeshModifier.
Geometry morphing data.
<add name="Num Morphs" type="uint">Number of morphing object.</add>
<add name="Num Vertices" type="uint">Number of vertices.</add>
<add name="Relative Targets" type="byte" default="1">This byte is always 1 in all official files.</add>
<add name="Morphs" type="Morph" arg="Num Vertices" arr1="Num Morphs">The geometry morphing objects.</add>
</niobject>
<niobject name="NiNode" abstract="0" inherit="NiAVObject">
Generic node object for grouping.
<add name="Num Children" type="uint">The number of child objects.</add>
<add name="Children" type="Ref" template="NiAVObject" arr1="Num Children">List of child node object indices.</add>
<add name="Num Effects" type="uint" vercond="User Version 2 &lt; 130">The number of references to effect objects that follow.</add>
<add name="Effects" type="Ref" template="NiDynamicEffect" arr1="Num Effects" vercond="User Version 2 &lt; 130">List of node effects. ADynamicEffect?</add>
</niobject>
<niobject name="NiBone" abstract="0" inherit="NiNode">
A NiNode used as a skeleton bone?
</niobject>
<niobject name="AvoidNode" abstract="0" inherit="NiNode">
Morrowind specific.
</niobject>
<niobject name="FxWidget" abstract="0" inherit="NiNode">
Firaxis-specific UI widgets?
<add name="Unknown 3" type="byte">Unknown.</add>
<add name="Unknown 292 Bytes" type="byte" arr1="292">Looks like 9 links and some string data.</add>
</niobject>
<niobject name="FxButton" abstract="0" inherit="FxWidget">
Unknown.
</niobject>
<niobject name="FxRadioButton" abstract="0" inherit="FxWidget">
Unknown.
<add name="Unknown Int 1" type="uint">Unknown.</add>
<add name="Unknown Int 2" type="uint">Unknown.</add>
<add name="Unknown Int 3" type="uint">Unknown.</add>
<add name="Num Buttons" type="uint">Number of unknown links.</add>
<add name="Buttons" type="Ptr" template="FxRadioButton" arr1="Num Buttons">Unknown pointers to other buttons. Maybe other buttons in a group so they can be switch off if this one is switched on?</add>
</niobject>
<niobject name="NiBillboardNode" abstract="0" inherit="NiNode">
These nodes will always be rotated to face the camera creating a billboard effect for any attached objects.
In pre-10.1.0.0 the Flags field is used for BillboardMode.
Bit 0: hidden
Bits 1-2: collision mode
Bit 3: unknown (set in most official meshes)
Bits 5-6: billboard mode
Collision modes:
00 NONE
01 USE_TRIANGLES
10 USE_OBBS
11 CONTINUE
Billboard modes:
00 ALWAYS_FACE_CAMERA
01 ROTATE_ABOUT_UP
10 RIGID_FACE_CAMERA
11 ALWAYS_FACE_CENTER
<add name="Billboard Mode" type="BillboardMode" ver1="10.1.0.0">The way the billboard will react to the camera.</add>
</niobject>
<niobject name="NiBSAnimationNode" abstract="0" inherit="NiNode">
Bethesda-specific extension of Node with animation properties stored in the flags, often 42?
</niobject>
<niobject name="NiBSParticleNode" abstract="0" inherit="NiNode">
Unknown.
</niobject>
<bitflags name="NiSwitchFlags" storage="ushort">
Flags for NiSwitchNode.
<option value="0" name="UpdateOnlyActiveChild">Update Only Active Child</option>
<option value="1" name="UpdateControllers">Update Controllers</option>
</bitflags>
<niobject name="NiSwitchNode" abstract="0" inherit="NiNode">
Represents groups of multiple scenegraph subtrees, only one of which (the "active child") is drawn at any given time.
<add name="Switch Node Flags" type="NiSwitchFlags" ver1="10.1.0.0" />
<add name="Index" type="uint" />
</niobject>
<niobject name="NiLODNode" abstract="0" inherit="NiSwitchNode">
Level of detail selector. Links to different levels of detail of the same model, used to switch a geometry at a specified distance.
<add name="LOD Center" type="Vector3" ver1="4.0.0.2" ver2="10.0.1.0" />
<add name="Num LOD Levels" type="uint" ver2="10.0.1.0" />
<add name="LOD Levels" type="LODRange" arr1="Num LOD Levels" ver2="10.0.1.0" />
<add name="LOD Level Data" type="Ref" template="NiLODData" ver1="10.1.0.0" />
</niobject>
<niobject name="NiPalette" abstract="0" inherit="NiObject">
NiPalette objects represent mappings from 8-bit indices to 24-bit RGB or 32-bit RGBA colors.
<add name="Has Alpha" type="byte" /> <!-- Not bool as always 8-bit -->
<add name="Num Entries" type="uint" default="256">The number of palette entries. Always 256 but can also be 16.</add>
<add name="Palette" type="ByteColor4" arr1="16" cond="Num Entries == 16">The color palette.</add>
<add name="Palette" type="ByteColor4" arr1="256" cond="Num Entries != 16">The color palette.</add>
</niobject>
<niobject name="NiParticleBomb" abstract="0" inherit="NiParticleModifier">
LEGACY (pre-10.1) particle modifier.
<add name="Decay" type="float" />
<add name="Duration" type="float" />
<add name="DeltaV" type="float" />
<add name="Start" type="float" />
<add name="Decay Type" type="DecayType" />
<add name="Symmetry Type" type="SymmetryType" ver1="4.1.0.12" />
<add name="Position" type="Vector3">The position of the mass point relative to the particle system?</add>
<add name="Direction" type="Vector3">The direction of the applied acceleration?</add>
</niobject>
<niobject name="NiParticleColorModifier" abstract="0" inherit="NiParticleModifier">
LEGACY (pre-10.1) particle modifier.
<add name="Color Data" type="Ref" template="NiColorData" />
</niobject>
<niobject name="NiParticleGrowFade" abstract="0" inherit="NiParticleModifier">
LEGACY (pre-10.1) particle modifier.
<add name="Grow" type="float">The time from the beginning of the particle lifetime during which the particle grows.</add>
<add name="Fade" type="float">The time from the end of the particle lifetime during which the particle fades.</add>
</niobject>
<niobject name="NiParticleMeshModifier" abstract="0" inherit="NiParticleModifier">
LEGACY (pre-10.1) particle modifier.
<add name="Num Particle Meshes" type="uint" />
<add name="Particle Meshes" arr1="Num Particle Meshes" type="Ref" template="NiAVObject" />
</niobject>
<niobject name="NiParticleRotation" abstract="0" inherit="NiParticleModifier">
LEGACY (pre-10.1) particle modifier.
<add name="Random Initial Axis" type="byte" />
<add name="Initial Axis" type="Vector3" />
<add name="Rotation Speed" type="float" />
</niobject>
<niobject name="NiParticles" abstract="0" inherit="NiGeometry">
Generic particle system node.
<add name="Vertex Desc" type="BSVertexDesc" vercond="(User Version 2 &gt;= 100)" />
</niobject>
<niobject name="NiAutoNormalParticles" abstract="0" inherit="NiParticles">
LEGACY (pre-10.1). NiParticles which do not house normals and generate them at runtime.
</niobject>
<niobject name="NiParticleMeshes" abstract="0" inherit="NiParticles">
LEGACY (pre-10.1). Particle meshes.
</niobject>
<niobject name="NiParticleMeshesData" abstract="0" inherit="NiRotatingParticlesData">
LEGACY (pre-10.1). Particle meshes data.
<add name="Unknown Link 2" type="Ref" template="NiAVObject">Refers to the mesh that makes up a particle?</add>
</niobject>
<niobject name="NiParticleSystem" abstract="0" inherit="NiParticles">
A particle system.
<!-- Bethesda -->
<add name="Far Begin" type="ushort" vercond="(User Version 2 &gt;= 83)" />
<add name="Far End" type="ushort" vercond="(User Version 2 &gt;= 83)" />
<add name="Near Begin" type="ushort" vercond="(User Version 2 &gt;= 83)" />
<add name="Near End" type="ushort" vercond="(User Version 2 &gt;= 83)" />
<add name="Data" type="Ref" template="NiPSysData" vercond="(User Version 2 &gt;= 100)" />
<!-- / Bethesda -->
<add name="World Space" type="bool" default="1" ver1="10.1.0.0">If true, Particles are birthed into world space. If false, Particles are birthed into object space.</add>
<add name="Num Modifiers" type="uint" ver1="10.1.0.0">The number of modifier references.</add>
<add name="Modifiers" type="Ref" template="NiPSysModifier" arr1="Num Modifiers" ver1="10.1.0.0">The list of particle modifiers.</add>
</niobject>
<niobject name="NiMeshParticleSystem" abstract="0" inherit="NiParticleSystem">
Particle system.
</niobject>
<niobject name="NiParticleSystemController" abstract="0" inherit="NiTimeController">
A generic particle system time controller object.
<add name="Old Speed" type="uint" ver2="3.1">Particle speed in old files</add>
<add name="Speed" type="float" ver1="3.3.0.13">Particle speed</add>
<add name="Speed Random" type="float">Particle random speed modifier</add>
<add name="Vertical Direction" type="float">
vertical emit direction [radians]
0.0 : up
1.6 : horizontal
3.1416 : down
</add>
<add name="Vertical Angle" type="float">emitter's vertical opening angle [radians]</add>
<add name="Horizontal Direction" type="float">horizontal emit direction</add>
<add name="Horizontal Angle" type="float">emitter's horizontal opening angle</add>
<add name="Unknown Normal?" type="Vector3">Unknown.</add>
<add name="Unknown Color?" type="Color4">Unknown.</add>
<add name="Size" type="float">Particle size</add>
<add name="Emit Start Time" type="float">Particle emit start time</add>
<add name="Emit Stop Time" type="float">Particle emit stop time</add>
<add name="Unknown Byte" type="byte" ver1="4.0.0.2">Unknown byte, (=0)</add>
<add name="Old Emit Rate" type="uint" ver2="3.1">Particle emission rate in old files</add>
<add name="Emit Rate" type="float" ver1="3.3.0.13">Particle emission rate (particles per second)</add>
<add name="Lifetime" type="float">Particle lifetime</add>
<add name="Lifetime Random" type="float">Particle lifetime random modifier</add>
<add name="Emit Flags" type="ushort" ver1="4.0.0.2">Bit 0: Emit Rate toggle bit (0 = auto adjust, 1 = use Emit Rate value)</add>
<add name="Start Random" type="Vector3">Particle random start translation vector</add>
<add name="Emitter" type="Ptr" template="NiObject">This index targets the particle emitter object (TODO: find out what type of object this refers to).</add>
<add name="Unknown Short 2?" type="ushort" ver1="4.0.0.2">? short=0 ?</add>
<add name="Unknown Float 13?" type="float" ver1="4.0.0.2">? float=1.0 ?</add>
<add name="Unknown Int 1?" type="uint" ver1="4.0.0.2">? int=1 ?</add>
<add name="Unknown Int 2?" type="uint" ver1="4.0.0.2">? int=0 ?</add>
<add name="Unknown Short 3?" type="ushort" ver1="4.0.0.2">? short=0 ?</add>
<!-- <add name="Particle" type="Particle" ver2="3.1">The particle (older NIF versions only have a single particle per controller?)</add> -->
<add name="Particle Velocity" type="Vector3" ver2="3.1">Particle velocity</add>
<add name="Particle Unknown Vector" type="Vector3" ver2="3.1">Unknown</add>
<add name="Particle Lifetime" type="float" ver2="3.1">The particle's age.</add>
<add name="Particle Link" type="Ref" template="NiObject" ver2="3.1" />
<add name="Particle Timestamp" type="uint" ver2="3.1">Timestamp of the last update.</add>
<add name="Particle Unknown Short" type="ushort" ver2="3.1">Unknown short</add>
<add name="Particle Vertex Id" type="ushort" ver2="3.1">Particle/vertex index matches array index</add>
<add name="Num Particles" type="ushort" ver1="4.0.0.2">Size of the following array. (Maximum number of simultaneous active particles)</add>
<add name="Num Valid" type="ushort" ver1="4.0.0.2">Number of valid entries in the following array. (Number of active particles at the time the system was saved)</add>
<add name="Particles" type="Particle" arr1="Num Particles" ver1="4.0.0.2">Individual particle modifiers?</add>
<add name="Unknown Link" type="Ref" template="NiObject" ver1="4.0.0.2">unknown int (=0xffffffff)</add>
<add name="Particle Extra" type="Ref" template="NiParticleModifier">Link to some optional particle modifiers (NiGravity, NiParticleGrowFade, NiParticleBomb, ...)</add>
<add name="Unknown Link 2" type="Ref" template="NiObject">Unknown int (=0xffffffff)</add>
<add name="Trailer" type="byte" ver1="4.0.0.2">Trailing null byte</add>
<add name="Color Data" type="Ref" template="NiColorData" ver2="3.1" />
<add name="Unknown Float 1" type="float" ver2="3.1" />
<add name="Unknown Floats 2" arr1="Particle Unknown Short" type="float" ver2="3.1" />
</niobject>
<niobject name="NiBSPArrayController" abstract="0" inherit="NiParticleSystemController">
A particle system controller, used by BS in conjunction with NiBSParticleNode.
</niobject>
<niobject name="NiPathController" abstract="0" inherit="NiTimeController">
DEPRECATED (10.2), REMOVED (20.5). Replaced by NiTransformController and NiPathInterpolator.
Time controller for a path.
<add name="Path Flags" type="PathFlags" ver1="10.1.0.0" />
<add name="Bank Dir" type="int" default="1">-1 = Negative, 1 = Positive</add>
<add name="Max Bank Angle" type="float">Max angle in radians.</add>
<add name="Smoothing" type="float" />
<add name="Follow Axis" type="short">0, 1, or 2 representing X, Y, or Z.</add>
<add name="Path Data" type="Ref" template="NiPosData" />
<add name="Percent Data" type="Ref" template="NiFloatData" />
</niobject>
<compound name="PixelFormatComponent">
<add name="Type" type="PixelComponent">Component Type</add>
<add name="Convention" type="PixelRepresentation">Data Storage Convention</add>
<add name="Bits Per Channel" type="byte">Bits per component</add>
<add name="Is Signed" type="bool" />
</compound>
<!--
NiPixelFormat is not the parent to NiPixelData/NiPersistentSrcTextureRendererData,
but actually a member class loaded at the top of each. The two classes are not related.
However, faking this inheritance is useful for several things.
-->
<niobject name="NiPixelFormat" abstract="1" inherit="NiObject">
<add name="Pixel Format" type="PixelFormat">The format of the pixels in this internally stored image.</add>
<add name="Red Mask" type="uint" ver2="10.3.0.2">0x000000ff (for 24bpp and 32bpp) or 0x00000000 (for 8bpp)</add>
<add name="Green Mask" type="uint" ver2="10.3.0.2">0x0000ff00 (for 24bpp and 32bpp) or 0x00000000 (for 8bpp)</add>
<add name="Blue Mask" type="uint" ver2="10.3.0.2">0x00ff0000 (for 24bpp and 32bpp) or 0x00000000 (for 8bpp)</add>
<add name="Alpha Mask" type="uint" ver2="10.3.0.2">0xff000000 (for 32bpp) or 0x00000000 (for 24bpp and 8bpp)</add>
<add name="Bits Per Pixel" type="uint" ver2="10.3.0.2">Bits per pixel, 0 (Compressed), 8, 24 or 32.</add>
<add name="Old Fast Compare" type="byte" arr1="8" ver2="10.3.0.2">
[96,8,130,0,0,65,0,0] if 24 bits per pixel
[129,8,130,32,0,65,12,0] if 32 bits per pixel
[34,0,0,0,0,0,0,0] if 8 bits per pixel
[X,0,0,0,0,0,0,0] if 0 (Compressed) bits per pixel where X = PixelFormat
</add>
<add name="Tiling" type="PixelTiling" ver1="10.1.0.0" ver2="10.3.0.2">Seems to always be zero.</add>
<add name="Bits Per Pixel" type="byte" ver1="10.3.0.3">Bits per pixel, 0 (Compressed), 8, 24 or 32.</add>
<add name="Renderer Hint" type="uint" ver1="10.3.0.3" />
<add name="Extra Data" type="uint" ver1="10.3.0.3" />
<add name="Flags" type="byte" ver1="10.3.0.3" />
<add name="Tiling" type="PixelTiling" ver1="10.3.0.3" />
<add name="sRGB Space" type="bool" ver1="20.3.0.4" />
<add name="Channels" type="PixelFormatComponent" arr1="4" ver1="10.3.0.3">Channel Data</add>
</niobject>
<niobject name="NiPersistentSrcTextureRendererData" inherit="NiPixelFormat">
<add name="Palette" type="Ref" template="NiPalette" />
<add name="Num Mipmaps" type="uint" />
<add name="Bytes Per Pixel" type="uint" />
<add name="Mipmaps" type="MipMap" arr1="Num Mipmaps" />
<add name="Num Pixels" type="uint" />
<add name="Pad Num Pixels" type="uint" ver1="20.2.0.6" />
<add name="Num Faces" type="uint" />
<add name="Platform" type="PlatformID" ver2="30.1.0.0" />
<add name="Renderer" type="RendererID" ver1="30.1.0.1" />
<add name="Pixel Data" type="byte" binary="1" arr1="Num Pixels * Num Faces" />
</niobject>
<niobject name="NiPixelData" abstract="0" inherit="NiPixelFormat">
A texture.
<add name="Palette" type="Ref" template="NiPalette" />
<add name="Num Mipmaps" type="uint" />
<add name="Bytes Per Pixel" type="uint" />
<add name="Mipmaps" type="MipMap" arr1="Num Mipmaps" />
<add name="Num Pixels" type="uint" />
<add name="Num Faces" type="uint" ver1="10.3.0.6" default="1" />
<add name="Pixel Data" type="byte" binary="1" arr1="Num Pixels" ver2="10.3.0.5" />
<add name="Pixel Data" type="byte" binary="1" arr1="Num Pixels * Num Faces" ver1="10.3.0.6" />
</niobject>
<niobject name="NiPlanarCollider" abstract="0" inherit="NiParticleModifier">
LEGACY (pre-10.1) particle modifier.
<add name="Unknown Short" type="ushort" ver1="10.0.1.0">Usually 0?</add>
<add name="Unknown Float 1" type="float">Unknown.</add>
<add name="Unknown Float 2" type="float">Unknown.</add>
<add name="Unknown Short 2" type="ushort" ver1="4.2.2.0" ver2="4.2.2.0">Unknown.</add>
<add name="Unknown Float 3" type="float">Unknown.</add>
<add name="Unknown Float 4" type="float">Unknown.</add>
<add name="Unknown Float 5" type="float">Unknown.</add>
<add name="Unknown Float 6" type="float">Unknown.</add>
<add name="Unknown Float 7" type="float">Unknown.</add>
<add name="Unknown Float 8" type="float">Unknown.</add>
<add name="Unknown Float 9" type="float">Unknown.</add>
<add name="Unknown Float 10" type="float">Unknown.</add>
<add name="Unknown Float 11" type="float">Unknown.</add>
<add name="Unknown Float 12" type="float">Unknown.</add>
<add name="Unknown Float 13" type="float">Unknown.</add>
<add name="Unknown Float 14" type="float">Unknown.</add>
<add name="Unknown Float 15" type="float">Unknown.</add>
<add name="Unknown Float 16" type="float">Unknown.</add>
</niobject>
<niobject name="NiPointLight" abstract="0" inherit="NiLight">
A point light.
<add name="Constant Attenuation" type="float" />
<add name="Linear Attenuation" type="float" default="1.0" />
<add name="Quadratic Attenuation" type="float" />
</niobject>
<niobject name="NiDeferredDynamicEffect" abstract="1" inherit="NiAVObject">
Abstract base class for dynamic effects such as NiLights or projected texture effects.
<add name="Switch State" type="bool" default="1" ver1="10.1.0.106" vercond="User Version 2 &lt; 130">If true, then the dynamic effect is applied to affected nodes during rendering.</add>
</niobject>
<niobject name="NiDeferredLight" abstract="1" inherit="NiDeferredDynamicEffect">
Abstract base class that represents light sources in a scene graph.
For Bethesda Stream 130 (FO4), NiLight now directly inherits from NiAVObject.
<add name="Dimmer" type="float" default="1.0">Scales the overall brightness of all light components.</add>
<add name="Ambient Color" type="Color3" default="0.0, 0.0, 0.0" />
<add name="Diffuse Color" type="Color3" default="0.0, 0.0, 0.0" />
<add name="Specular Color" type="Color3" default="0.0, 0.0, 0.0" />
</niobject>
<niobject name="NiDeferredPointLight" abstract="0" inherit="NiDeferredLight">
A deferred point light. Custom (Twin Saga).
<add name="Constant Attenuation" type="float" />
<add name="Linear Attenuation" type="float" default="1.0" />
<add name="Quadratic Attenuation" type="float" />
</niobject>
<niobject name="NiPosData" abstract="0" inherit="NiObject">
Wrapper for position animation keys.
<add name="Data" type="KeyGroup" template="Vector3" />
</niobject>
<niobject name="NiRotData" abstract="0" inherit="NiObject">
Wrapper for rotation animation keys.
<add name="Num Rotation Keys" type="uint" />
<add name="Rotation Type" type="KeyType" cond="Num Rotation Keys != 0" />
<add name="Quaternion Keys" type="QuatKey" arg="Rotation Type" template="Quaternion" arr1="Num Rotation Keys" cond="Rotation Type != 4" />
<add name="XYZ Rotations" type="KeyGroup" template="float" arr1="3" cond="Rotation Type == 4" />
</niobject>
<niobject name="NiPSysAgeDeathModifier" abstract="0" inherit="NiPSysModifier">
Particle modifier that controls and updates the age of particles in the system.
<add name="Spawn on Death" type="bool">Should the particles spawn on death?</add>
<add name="Spawn Modifier" type="Ref" template="NiPSysSpawnModifier">The spawner to use on death.</add>
</niobject>
<niobject name="NiPSysBombModifier" abstract="0" inherit="NiPSysModifier">
Particle modifier that applies an explosive force to particles.
<add name="Bomb Object" type="Ptr" template="NiNode">The object whose position and orientation are the basis of the force.</add>
<add name="Bomb Axis" type="Vector3">The local direction of the force.</add>
<add name="Decay" type="float">How the bomb force will decrease with distance.</add>
<add name="Delta V" type="float">The acceleration the bomb will apply to particles.</add>
<add name="Decay Type" type="DecayType" />
<add name="Symmetry Type" type="SymmetryType" />
</niobject>
<niobject name="NiPSysBoundUpdateModifier" abstract="0" inherit="NiPSysModifier">
Particle modifier that creates and updates bound volumes.
<add name="Update Skip" type="ushort">Optimize by only computing the bound of (1 / Update Skip) of the total particles each frame.</add>
</niobject>
<niobject name="NiPSysBoxEmitter" abstract="0" inherit="NiPSysVolumeEmitter">
Particle emitter that uses points within a defined Box shape to emit from.
<add name="Width" type="float" />
<add name="Height" type="float" />
<add name="Depth" type="float" />
</niobject>
<niobject name="NiPSysColliderManager" abstract="0" inherit="NiPSysModifier">
Particle modifier that adds a defined shape to act as a collision object for particles to interact with.
<add name="Collider" type="Ref" template="NiPSysCollider" />
</niobject>
<niobject name="NiPSysColorModifier" abstract="0" inherit="NiPSysModifier">
Particle modifier that adds keyframe data to modify color/alpha values of particles over time.
<add name="Data" type="Ref" template="NiColorData" />
</niobject>
<niobject name="NiPSysCylinderEmitter" abstract="0" inherit="NiPSysVolumeEmitter">
Particle emitter that uses points within a defined Cylinder shape to emit from.
<add name="Radius" type="float" />
<add name="Height" type="float" />
</niobject>
<niobject name="NiPSysDragModifier" abstract="0" inherit="NiPSysModifier">
Particle modifier that applies a linear drag force to particles.
<add name="Drag Object" type="Ptr" template="NiAVObject">The object whose position and orientation are the basis of the force.</add>
<add name="Drag Axis" type="Vector3" default="1.0, 0.0, 0.0">The local direction of the force.</add>
<add name="Percentage" type="float" default="0.05">The amount of drag to apply to particles.</add>
<add name="Range" type="float" default="3.402823466e+38">The distance up to which particles are fully affected.</add>
<add name="Range Falloff" type="float" default="3.402823466e+38">The distance at which particles cease to be affected.</add>
</niobject>
<niobject name="NiPSysEmitterCtlrData" abstract="0" inherit="NiObject">
DEPRECATED (10.2). Particle system emitter controller data.
<add name="Birth Rate Keys" type="KeyGroup" template="float" />
<add name="Num Active Keys" type="uint" />
<add name="Active Keys" type="Key" arg="1" template="byte" arr1="Num Active Keys" />
</niobject>
<niobject name="NiPSysGravityModifier" abstract="0" inherit="NiPSysModifier">
Particle modifier that applies a gravitational force to particles.
<add name="Gravity Object" type="Ptr" template="NiAVObject">The object whose position and orientation are the basis of the force.</add>
<add name="Gravity Axis" type="Vector3" default="1.0, 0.0, 0.0">The local direction of the force.</add>
<add name="Decay" type="float">How the force diminishes by distance.</add>
<add name="Strength" type="float" default="1.0">The acceleration of the force.</add>
<add name="Force Type" type="ForceType">The type of gravitational force.</add>
<add name="Turbulence" type="float">Adds a degree of randomness.</add>
<add name="Turbulence Scale" type="float" default="1.0">Scale for turbulence.</add>
<add name="World Aligned" type="bool" vercond="User Version 2 &gt; 16" />
</niobject>
<niobject name="NiPSysGrowFadeModifier" abstract="0" inherit="NiPSysModifier">
Particle modifier that controls the time it takes to grow and shrink a particle.
<add name="Grow Time" type="float">The time taken to grow from 0 to their specified size.</add>
<add name="Grow Generation" type="ushort">Specifies the particle generation to which the grow effect should be applied. This is usually generation 0, so that newly created particles will grow.</add>
<add name="Fade Time" type="float">The time taken to shrink from their specified size to 0.</add>
<add name="Fade Generation" type="ushort">Specifies the particle generation to which the shrink effect should be applied. This is usually the highest supported generation for the particle system.</add>
<add name="Base Scale" type="float" vercond="User Version 2 &gt;= 34">A multiplier on the base particle scale.</add>
</niobject>
<niobject name="NiPSysMeshEmitter" abstract="0" inherit="NiPSysEmitter">
Particle emitter that uses points on a specified mesh to emit from.
<add name="Num Emitter Meshes" type="uint" />
<add name="Emitter Meshes" type="Ptr" template="NiAVObject" arr1="Num Emitter Meshes">The meshes which are emitted from.</add>
<add name="Initial Velocity Type" type="VelocityType">The method by which the initial particle velocity will be computed.</add>
<add name="Emission Type" type="EmitFrom">The manner in which particles are emitted from the Emitter Meshes.</add>
<add name="Emission Axis" type="Vector3" default="1.0, 0.0, 0.0">The emission axis if VELOCITY_USE_DIRECTION.</add>
</niobject>
<niobject name="NiPSysMeshUpdateModifier" abstract="0" inherit="NiPSysModifier">
Particle modifier that updates mesh particles using the age of each particle.
<add name="Num Meshes" type="uint" />
<add name="Meshes" type="Ref" template="NiAVObject" arr1="Num Meshes" />
</niobject>
<niobject name="BSPSysInheritVelocityModifier" abstract="0" inherit="NiPSysModifier">
<add name="Target" type="Ptr" template="NiNode" />
<add name="Chance To Inherit" type="float" />
<add name="Velocity Multiplier" type="float" />
<add name="Velocity Variation" type="float" />
</niobject>
<niobject name="BSPSysHavokUpdateModifier" abstract="0" inherit="NiPSysModifier">
<add name="Num Nodes" type="uint" />
<add name="Nodes" type="Ref" template="NiNode" arr1="Num Nodes" />
<add name="Modifier" type="Ref" template="NiPSysModifier" />
</niobject>
<niobject name="BSPSysRecycleBoundModifier" abstract="0" inherit="NiPSysModifier">
<add name="Bound Offset" type="Vector3" />
<add name="Bound Extent" type="Vector3" />
<add name="Target" type="Ptr" template="NiNode" />
</niobject>
<niobject name="BSPSysSubTexModifier" abstract="0" inherit="NiPSysModifier">
Similar to a Flip Controller, this handles particle texture animation on a single texture atlas
<add name="Start Frame" type="uint">Starting frame/position on atlas</add>
<add name="Start Frame Fudge" type="float">Random chance to start on a different frame?</add>
<add name="End Frame" type="float">Ending frame/position on atlas</add>
<add name="Loop Start Frame" type="float">Frame to start looping</add>
<add name="Loop Start Frame Fudge" type="float" />
<add name="Frame Count" type="float" />
<add name="Frame Count Fudge" type="float" />
</niobject>
<niobject name="NiPSysPlanarCollider" abstract="0" inherit="NiPSysCollider">
Particle Collider object which particles will interact with.
<add name="Width" type="float">Width of the plane along the X Axis.</add>
<add name="Height" type="float">Height of the plane along the Y Axis.</add>
<add name="X Axis" type="Vector3">Axis defining a plane, relative to Collider Object.</add>
<add name="Y Axis" type="Vector3">Axis defining a plane, relative to Collider Object.</add>
</niobject>
<niobject name="NiPSysSphericalCollider" abstract="0" inherit="NiPSysCollider">
Particle Collider object which particles will interact with.
<add name="Radius" type="float" />
</niobject>
<niobject name="NiPSysPositionModifier" abstract="0" inherit="NiPSysModifier">
Particle modifier that updates the particle positions based on velocity and last update time.
</niobject>
<niobject name="NiPSysResetOnLoopCtlr" abstract="0" inherit="NiTimeController">
Particle modifier that calls reset on a target upon looping.
</niobject>
<niobject name="NiPSysRotationModifier" abstract="0" inherit="NiPSysModifier">
Particle modifier that adds rotations to particles.
<add name="Rotation Speed" type="float">Initial Rotation Speed in radians per second.</add>
<add name="Rotation Speed Variation" type="float" ver1="20.0.0.2">Distributes rotation speed over the range [Speed - Variation, Speed + Variation].</add>
<add name="Rotation Angle" type="float" ver1="20.0.0.2">Initial Rotation Angle in radians.</add>
<add name="Rotation Angle Variation" type="float" ver1="20.0.0.2">Distributes rotation angle over the range [Angle - Variation, Angle + Variation].</add>
<add name="Random Rot Speed Sign" type="bool" ver1="20.0.0.2">Randomly negate the initial rotation speed?</add>
<add name="Random Axis" type="bool" default="1">Assign a random axis to new particles?</add>
<add name="Axis" type="Vector3" default="1.0, 0.0, 0.0">Initial rotation axis.</add>
</niobject>
<niobject name="NiPSysSpawnModifier" abstract="0" inherit="NiPSysModifier">
Particle modifier that spawns additional copies of a particle.
<add name="Num Spawn Generations" type="ushort" default="0">Number of allowed generations for spawning. Particles whose generations are >= will not be spawned.</add>
<add name="Percentage Spawned" type="float" default="1.0">The likelihood of a particular particle being spawned. Must be between 0.0 and 1.0.</add>
<add name="Min Num to Spawn" type="ushort" default="1">The minimum particles to spawn for any given original particle.</add>
<add name="Max Num to Spawn" type="ushort" default="1">The maximum particles to spawn for any given original particle.</add>
<add name="Unknown Int" type="int" ver1="10.4.0.1" ver2="10.4.0.1">WorldShift</add>
<add name="Spawn Speed Variation" type="float">How much the spawned particle speed can vary.</add>
<add name="Spawn Dir Variation" type="float">How much the spawned particle direction can vary.</add>
<add name="Life Span" type="float">Lifespan assigned to spawned particles.</add>
<add name="Life Span Variation" type="float">The amount the lifespan can vary.</add>
</niobject>
<niobject name="NiPSysSphereEmitter" abstract="0" inherit="NiPSysVolumeEmitter">
Particle emitter that uses points within a sphere shape to emit from.
<add name="Radius" type="float" />
</niobject>
<niobject name="NiPSysUpdateCtlr" abstract="0" inherit="NiTimeController">
Particle system controller, tells the system to update its simulation.
</niobject>
<niobject name="NiPSysFieldModifier" abstract="1" inherit="NiPSysModifier">
Base for all force field particle modifiers.
<add name="Field Object" type="Ref" template="NiAVObject">The object whose position and orientation are the basis of the field.</add>
<add name="Magnitude" type="float">Magnitude of the force.</add>
<add name="Attenuation" type="float">How the magnitude diminishes with distance from the Field Object.</add>
<add name="Use Max Distance" type="bool">Whether or not to use a distance from the Field Object after which there is no effect.</add>
<add name="Max Distance" type="float">Maximum distance after which there is no effect.</add>
</niobject>
<niobject name="NiPSysVortexFieldModifier" inherit="NiPSysFieldModifier">
Particle system modifier, implements a vortex field force for particles.
<add name="Direction" type="Vector3">Direction of the vortex field in Field Object's space.</add>
</niobject>
<niobject name="NiPSysGravityFieldModifier" inherit="NiPSysFieldModifier">
Particle system modifier, implements a gravity field force for particles.
<add name="Direction" type="Vector3" default="0.0, -1.0, 0.0">Direction of the gravity field in Field Object's space.</add>
</niobject>
<niobject name="NiPSysDragFieldModifier" inherit="NiPSysFieldModifier">
Particle system modifier, implements a drag field force for particles.
<add name="Use Direction" type="bool">Whether or not the drag force applies only in the direction specified.</add>
<add name="Direction" type="Vector3">Direction in which the force applies if Use Direction is true.</add>
</niobject>
<niobject name="NiPSysTurbulenceFieldModifier" inherit="NiPSysFieldModifier">
Particle system modifier, implements a turbulence field force for particles.
<add name="Frequency" type="float">How many turbulence updates per second.</add>
</niobject>
<niobject name="BSPSysLODModifier" inherit="NiPSysModifier">
<add name="LOD Begin Distance" type="float" default="0.1" />
<add name="LOD End Distance" type="float" default="0.7" />
<add name="End Emit Scale" type="float" default="0.2" />
<add name="End Size" type="float" default="1.0" />
</niobject>
<niobject name="BSPSysScaleModifier" inherit="NiPSysModifier">
<add name="Num Scales" type="uint" />
<add name="Scales" type="float" arr1="Num Scales" />
</niobject>
<niobject name="NiPSysFieldMagnitudeCtlr" inherit="NiPSysModifierFloatCtlr">
Particle system controller for force field magnitude.
</niobject>
<niobject name="NiPSysFieldAttenuationCtlr" inherit="NiPSysModifierFloatCtlr">
Particle system controller for force field attenuation.
</niobject>
<niobject name="NiPSysFieldMaxDistanceCtlr" inherit="NiPSysModifierFloatCtlr">
Particle system controller for force field maximum distance.
</niobject>
<niobject name="NiPSysAirFieldAirFrictionCtlr" inherit="NiPSysModifierFloatCtlr">
Particle system controller for air field air friction.
</niobject>
<niobject name="NiPSysAirFieldInheritVelocityCtlr" inherit="NiPSysModifierFloatCtlr">
Particle system controller for air field inherit velocity.
</niobject>
<niobject name="NiPSysAirFieldSpreadCtlr" inherit="NiPSysModifierFloatCtlr">
Particle system controller for air field spread.
</niobject>
<niobject name="NiPSysInitialRotSpeedCtlr" inherit="NiPSysModifierFloatCtlr">
Particle system controller for emitter initial rotation speed.
</niobject>
<niobject name="NiPSysInitialRotSpeedVarCtlr" inherit="NiPSysModifierFloatCtlr">
Particle system controller for emitter initial rotation speed variation.
</niobject>
<niobject name="NiPSysInitialRotAngleCtlr" inherit="NiPSysModifierFloatCtlr">
Particle system controller for emitter initial rotation angle.
</niobject>
<niobject name="NiPSysInitialRotAngleVarCtlr" inherit="NiPSysModifierFloatCtlr">
Particle system controller for emitter initial rotation angle variation.
</niobject>
<niobject name="NiPSysEmitterPlanarAngleCtlr" inherit="NiPSysModifierFloatCtlr">
Particle system controller for emitter planar angle.
</niobject>
<niobject name="NiPSysEmitterPlanarAngleVarCtlr" inherit="NiPSysModifierFloatCtlr">
Particle system controller for emitter planar angle variation.
</niobject>
<niobject name="NiPSysAirFieldModifier" inherit="NiPSysFieldModifier">
Particle system modifier, updates the particle velocity to simulate the effects of air movements like wind, fans, or wake.
<add name="Direction" type="Vector3" default="-1.0, 0.0, 0.0">Direction of the particle velocity</add>
<add name="Air Friction" type="float">How quickly particles will accelerate to the magnitude of the air field.</add>
<add name="Inherit Velocity" type="float">How much of the air field velocity will be added to the particle velocity.</add>
<add name="Inherit Rotation" type="bool" />
<add name="Component Only" type="bool" />
<add name="Enable Spread" type="bool" />
<add name="Spread" type="float">The angle of the air field cone if Enable Spread is true.</add>
</niobject>
<niobject name="NiPSysTrailEmitter" abstract="0" inherit="NiPSysEmitter">
Guild 2-Specific node
<add name="Unknown Int 1" type="int">Unknown</add>
<add name="Unknown Float 1" type="float">Unknown</add>
<add name="Unknown Float 2" type="float">Unknown</add>
<add name="Unknown Float 3" type="float">Unknown</add>
<add name="Unknown Int 2" type="int">Unknown</add>
<add name="Unknown Float 4" type="float">Unknown</add>
<add name="Unknown Int 3" type="int">Unknown</add>
<add name="Unknown Float 5" type="float">Unknown</add>
<add name="Unknown Int 4" type="int">Unknown</add>
<add name="Unknown Float 6" type="float">Unknown</add>
<add name="Unknown Float 7" type="float">Unknown</add>
</niobject>
<niobject name="NiLightIntensityController" inherit="NiFloatInterpController">
Unknown controller
</niobject>
<niobject name="NiPSysRadialFieldModifier" inherit="NiPSysFieldModifier">
Particle system modifier, updates the particle velocity to simulate the effects of point gravity.
<add name="Radial Type" type="float">If zero, no attenuation.</add>
</niobject>
<niobject name="NiLODData" abstract="1" inherit="NiObject">
Abstract class used for different types of LOD selections.
</niobject>
<niobject name="NiRangeLODData" abstract="0" inherit="NiLODData">
NiRangeLODData controls switching LOD levels based on Z depth from the camera to the NiLODNode.
<add name="LOD Center" type="Vector3" />
<add name="Num LOD Levels" type="uint" />
<add name="LOD Levels" type="LODRange" arr1="Num LOD Levels" />
</niobject>
<niobject name="NiScreenLODData" abstract="0" inherit="NiLODData">
NiScreenLODData controls switching LOD levels based on proportion of the screen that a bound would include.
<add name="Bound" type="NiBound" />
<add name="World Bound" type="NiBound" />
<add name="Num Proportions" type="uint" />
<add name="Proportion Levels" type="float" arr1="Num Proportions" />
</niobject>
<niobject name="NiRotatingParticles" abstract="0" inherit="NiParticles">
Unknown.
</niobject>
<niobject name="NiSequenceStreamHelper" abstract="0" inherit="NiObjectNET">
DEPRECATED (pre-10.1), REMOVED (20.3).
Keyframe animation root node, in .kf files.
</niobject>
<niobject name="NiShadeProperty" abstract="0" inherit="NiProperty">
Determines whether flat shading or smooth shading is used on a shape.
<add name="Flags" type="Flags" default="1" vercond="(User Version 2 &lt;= 34)">
Bit 0: Enable smooth phong shading on this shape. Otherwise, hard-edged flat shading will be used on this shape.
</add>
</niobject>
<niobject name="NiSkinData" abstract="0" inherit="NiObject">
Skinning data.
<add name="Skin Transform" type="NiTransform">Offset of the skin from this bone in bind position.</add>
<add name="Num Bones" type="uint">Number of bones.</add>
<add name="Skin Partition" type="Ref" template="NiSkinPartition" ver1="4.0.0.2" ver2="10.1.0.0">This optionally links a NiSkinPartition for hardware-acceleration information.</add>
<add name="Has Vertex Weights" type="byte" ver1="4.2.1.0" default="1">Enables Vertex Weights for this NiSkinData.</add>
<add name="Bone List" type="BoneData" arr1="Num Bones" arg="Has Vertex Weights">Contains offset data for each node that this skin is influenced by.</add>
</niobject>
<niobject name="NiSkinInstance" abstract="0" inherit="NiObject">
Skinning instance.
<add name="Data" type="Ref" template="NiSkinData">Skinning data reference.</add>
<add name="Skin Partition" type="Ref" template="NiSkinPartition" ver1="10.1.0.101">Refers to a NiSkinPartition objects, which partitions the mesh such that every vertex is only influenced by a limited number of bones.</add>
<add name="Skeleton Root" type="Ptr" template="NiNode">Armature root node.</add>
<add name="Num Bones" type="uint">The number of node bones referenced as influences.</add>
<add name="Bones" type="Ptr" template="NiNode" arr1="Num Bones">List of all armature bones.</add>
</niobject>
<niobject name="NiTriShapeSkinController" abstract="0" inherit="NiTimeController">
Old version of skinning instance.
<add name="Num Bones" type="uint">The number of node bones referenced as influences.</add>
<add name="Vertex Counts" type="uint" arr1="Num Bones">The number of vertex weights stored for each bone.</add>
<add name="Bones" type="Ptr" template="NiBone" arr1="Num Bones">List of all armature bones.</add>
<add name="Bone Data" type="OldSkinData" arr1="Num Bones" arr2="Vertex Counts">Contains skin weight data for each node that this skin is influenced by.</add>
</niobject>
<niobject name="NiClodSkinInstance" abstract="0" inherit="NiSkinInstance">
A copy of NISkinInstance for use with NiClod meshes.
</niobject>
<niobject name="NiSkinPartition" abstract="0" inherit="NiObject">
Skinning data, optimized for hardware skinning. The mesh is partitioned in submeshes such that each vertex of a submesh is influenced only by a limited and fixed number of bones.
<add name="Num Skin Partition Blocks" type="uint" />
<add name="Skin Partition Blocks" type="SkinPartition" arr1="Num Skin Partition Blocks" vercond="!((Version == 20.2.0.7) &amp;&amp; (User Version 2 == 100))">Skin partition objects.</add>
<add name="Data Size" type="uint" ver="20.2.0.7" userver2="100" />
<add name="Vertex Size" type="uint" ver="20.2.0.7" userver2="100" />
<add name="Vertex Desc" type="BSVertexDesc" ver="20.2.0.7" userver2="100" />
<add name="Vertex Data" type="BSVertexDataSSE" arg="Vertex Desc\Vertex Attributes" arr1="Data Size / Vertex Size" cond="Data Size &gt; 0" ver="20.2.0.7" userver2="100" />
<add name="Partition" type="SkinPartition" arr1="Num Skin Partition Blocks" ver="20.2.0.7" userver2="100" />
</niobject>
<niobject name="NiTexture" abstract="1" inherit="NiObjectNET">
A texture.
</niobject>
<compound name="FormatPrefs">
NiTexture::FormatPrefs. These preferences are a request to the renderer to use a format the most closely matches the settings and may be ignored.
<add name="Pixel Layout" type="PixelLayout">Requests the way the image will be stored.</add>
<add name="Use Mipmaps" type="MipMapFormat" default="MIP_FMT_DEFAULT">Requests if mipmaps are used or not.</add>
<add name="Alpha Format" type="AlphaFormat" default="ALPHA_DEFAULT">Requests no alpha, 1-bit alpha, or </add>
</compound>
<niobject name="NiSourceTexture" abstract="0" inherit="NiTexture">
Describes texture source and properties.
<add name="Use External" type="byte" default="1">Is the texture external?</add>
<add name="File Name" type="FilePath" cond="Use External == 1">The external texture file name.</add>
<add name="Unknown Link" type="Ref" template="NiObject" cond="Use External == 1" ver1="10.1.0.0">Unknown.</add>
<add name="Unknown Byte" type="byte" default="1" cond="Use External == 0" ver2="10.0.1.0">Unknown. Seems to be set if Pixel Data is present?</add>
<add name="File Name" type="FilePath" cond="Use External == 0" ver1="10.1.0.0">The original source filename of the image embedded by the referred NiPixelData object.</add>
<add name="Pixel Data" type="Ref" template="NiPixelFormat" cond="Use External == 0">NiPixelData or NiPersistentSrcTextureRendererData</add>
<add name="Format Prefs" type="FormatPrefs">A set of preferences for the texture format. They are a request only and the renderer may ignore them.</add>
<add name="Is Static" type="byte" default="1">If set, then the application cannot assume that any dynamic changes to the pixel data will show in the rendered image.</add>
<add name="Direct Render" type="bool" default="1" ver1="10.1.0.103">A hint to the renderer that the texture can be loaded directly from a texture file into a renderer-specific resource, bypassing the NiPixelData object.</add>
<add name="Persist Render Data" type="bool" default="0" ver1="20.2.0.4">Pixel Data is NiPersistentSrcTextureRendererData instead of NiPixelData.</add>
</niobject>
<niobject name="NiSpecularProperty" abstract="0" inherit="NiProperty">
Gives specularity to a shape. Flags 0x0001.
<add name="Flags" type="Flags">Bit 0 = Enable specular lighting on this shape.</add>
</niobject>
<niobject name="NiSphericalCollider" abstract="0" inherit="NiParticleModifier">
LEGACY (pre-10.1) particle modifier.
<add name="Unknown Float 1" type="float">Unknown.</add>
<add name="Unknown Short 1" type="ushort">Unknown.</add>
<add name="Unknown Float 2" type="float">Unknown.</add>
<add name="Unknown Short 2" type="ushort" ver2="4.2.0.2">Unknown.</add>
<add name="Unknown Float 3" type="float" ver1="4.2.1.0">Unknown.</add>
<add name="Unknown Float 4" type="float">Unknown.</add>
<add name="Unknown Float 5" type="float">Unknown.</add>
</niobject>
<niobject name="NiSpotLight" abstract="0" inherit="NiPointLight">
A spot.
<add name="Outer Spot Angle" type="float" />
<add name="Inner Spot Angle" type="float" ver1="20.2.0.5" />
<add name="Exponent" type="float" default="1.0">Describes the distribution of light. (see: glLight)</add>
</niobject>
<niobject name="NiStencilProperty" abstract="0" inherit="NiProperty">
Allows control of stencil testing.
<add name="Flags" type="Flags" ver2="10.0.1.2">Property flags.</add>
<add name="Stencil Enabled" type="byte" ver2="20.0.0.5">Enables or disables the stencil test.</add>
<add name="Stencil Function" type="StencilCompareMode" ver2="20.0.0.5">Selects the compare mode function (see: glStencilFunc).</add>
<add name="Stencil Ref" type="uint" ver2="20.0.0.5" />
<add name="Stencil Mask" type="uint" default="4294967295" ver2="20.0.0.5">A bit mask. The default is 0xffffffff.</add>
<add name="Fail Action" type="StencilAction" ver2="20.0.0.5" />
<add name="Z Fail Action" type="StencilAction" ver2="20.0.0.5" />
<add name="Pass Action" type="StencilAction" ver2="20.0.0.5" />
<add name="Draw Mode" default="DRAW_BOTH" type="StencilDrawMode" ver2="20.0.0.5">Used to enabled double sided faces. Default is 3 (DRAW_BOTH).</add>
<add name="Flags" type="Flags" default="19840" ver1="20.1.0.3">
Property flags:
Bit 0: Stencil Enable
Bits 1-3: Fail Action
Bits 4-6: Z Fail Action
Bits 7-9: Pass Action
Bits 10-11: Draw Mode
Bits 12-14: Stencil Function
</add>
<add name="Stencil Ref" type="uint" ver1="20.1.0.3" />
<add name="Stencil Mask" type="uint" default="4294967295" ver1="20.1.0.3">A bit mask. The default is 0xffffffff.</add>
</niobject>
<niobject name="NiStringExtraData" abstract="0" inherit="NiExtraData">
Apparently commands for an optimizer instructing it to keep things it would normally discard.
Also refers to NiNode objects (through their name) in animation .kf files.
<add name="Bytes Remaining" type="uint" ver2="4.2.2.0">The number of bytes left in the record. Equals the length of the following string + 4.</add>
<add name="String Data" type="string">The string.</add>
</niobject>
<niobject name="NiStringPalette" abstract="0" inherit="NiObject">
List of 0x00-seperated strings, which are names of controlled objects and controller types. Used in .kf files in conjunction with NiControllerSequence.
<add name="Palette" type="StringPalette">A bunch of 0x00 seperated strings.</add>
</niobject>
<niobject name="NiStringsExtraData" abstract="0" inherit="NiExtraData">
List of strings; for example, a list of all bone names.
<add name="Num Strings" type="uint">Number of strings.</add>
<add name="Data" type="SizedString" arr1="Num Strings">The strings.</add>
</niobject>
<niobject name="NiTextKeyExtraData" abstract="0" inherit="NiExtraData">
Extra data, used to name different animation sequences.
<add name="Unknown Int 1" type="uint" ver2="4.2.2.0">Unknown. Always equals zero in all official files.</add>
<add name="Num Text Keys" type="uint">The number of text keys that follow.</add>
<add name="Text Keys" type="Key" arg="1" template="string" arr1="Num Text Keys">List of textual notes and at which time they take effect. Used for designating the start and stop of animations and the triggering of sounds.</add>
</niobject>
<niobject name="NiTextureEffect" abstract="0" inherit="NiDynamicEffect">
Represents an effect that uses projected textures such as projected lights (gobos), environment maps, and fog maps.
<add name="Model Projection Matrix" type="Matrix33">Model projection matrix. Always identity?</add>
<add name="Model Projection Transform" type="Vector3">Model projection transform. Always (0,0,0)?</add>
<add name="Texture Filtering" type="TexFilterMode" default="FILTER_TRILERP">Texture Filtering mode.</add>
<add name="Max Anisotropy" type="ushort" ver1="20.5.0.4" />
<add name="Texture Clamping" type="TexClampMode" default="WRAP_S_WRAP_T">Texture Clamp mode.</add>
<add name="Texture Type" default="TEX_ENVIRONMENT_MAP" type="TextureType">The type of effect that the texture is used for.</add>
<add name="Coordinate Generation Type" default="CG_SPHERE_MAP" type="CoordGenType">The method that will be used to generate UV coordinates for the texture effect.</add>
<add name="Image" type="Ref" template="NiImage" ver2="3.1">Image index.</add>
<add name="Source Texture" type="Ref" template="NiSourceTexture" ver1="4.0.0.0">Source texture index.</add>
<add name="Enable Plane" default="0" type="byte">Determines whether a clipping plane is used.</add> <!-- Not bool as always 8-bit -->
<add name="Plane" type="NiPlane" />
<add name="PS2 L" type="short" default="0" ver2="10.2.0.0" />
<add name="PS2 K" type="short" default="-75" ver2="10.2.0.0" />
<add name="Unknown Short" type="ushort" ver2="4.1.0.12">Unknown: 0.</add>
</niobject>
<niobject name="NiTextureModeProperty" abstract="0" inherit="NiProperty">
LEGACY (pre-10.1)
<add name="Unknown Ints" type="uint" arr1="3" ver2="2.3" />
<add name="Unknown Short" type="short" ver1="3.0">Unknown. Either 210 or 194.</add>
<add name="PS2 L" type="short" default="0" ver1="3.1" ver2="10.2.0.0">0?</add>
<add name="PS2 K" type="short" default="-75" ver1="3.1" ver2="10.2.0.0">-75?</add>
</niobject>
<niobject name="NiImage" abstract="0" inherit="NiObject">
LEGACY (pre-10.1)
<add name="Use External" type="byte">0 if the texture is internal to the NIF file.</add>
<add name="File Name" type="FilePath" cond="Use External != 0">The filepath to the texture.</add>
<add name="Image Data" type="Ref" template="NiRawImageData" cond="Use External == 0">Link to the internally stored image data.</add>
<add name="Unknown Int" type="uint" default="7">Unknown. Often seems to be 7. Perhaps m_uiMipLevels?</add>
<add name="Unknown Float" type="float" ver1="3.1" default="128.5">Unknown. Perhaps fImageScale?</add>
</niobject>
<niobject name="NiTextureProperty" abstract="0" inherit="NiProperty">
LEGACY (pre-10.1)
<add name="Unknown Ints 1" type="uint" arr1="2" ver2="2.3">Property flags.</add>
<add name="Flags" type="Flags" ver1="3.0">Property flags.</add>
<add name="Image" type="Ref" template="NiImage">Link to the texture image.</add>
<add name="Unknown Ints 2" type="uint" arr1="2" ver1="3.0" ver2="3.03">Unknown. 0?</add>
</niobject>
<niobject name="NiTexturingProperty" abstract="0" inherit="NiProperty">
Describes how a fragment shader should be configured for a given piece of geometry.
<add name="Flags" type="Flags" ver2="10.0.1.2">Property flags.</add>
<add name="Flags" type="Flags" ver1="20.1.0.2">Property flags.</add>
<add name="Apply Mode" type="ApplyMode" default="APPLY_MODULATE" ver1="3.3.0.13" ver2="20.1.0.1">Determines how the texture will be applied. Seems to have special functions in Oblivion.</add>
<add name="Texture Count" type="uint" default="7">Number of textures.</add>
<add name="Has Base Texture" type="bool">Do we have a base texture?</add>
<add name="Base Texture" type="TexDesc" cond="Has Base Texture">The base texture.</add>
<add name="Has Dark Texture" type="bool">Do we have a dark texture?</add>
<add name="Dark Texture" type="TexDesc" cond="Has Dark Texture">The dark texture.</add>
<add name="Has Detail Texture" type="bool">Do we have a detail texture?</add>
<add name="Detail Texture" type="TexDesc" cond="Has Detail Texture">The detail texture.</add>
<add name="Has Gloss Texture" type="bool">Do we have a gloss texture?</add>
<add name="Gloss Texture" type="TexDesc" cond="Has Gloss Texture">The gloss texture.</add>
<add name="Has Glow Texture" type="bool">Do we have a glow texture?</add>
<add name="Glow Texture" type="TexDesc" cond="Has Glow Texture">The glowing texture.</add>
<add name="Has Bump Map Texture" type="bool" ver1="3.3.0.13" cond="Texture Count &gt; 5">Do we have a bump map texture?</add>
<add name="Bump Map Texture" type="TexDesc" cond="Has Bump Map Texture">The bump map texture.</add>
<add name="Bump Map Luma Scale" type="float" cond="Has Bump Map Texture" />
<add name="Bump Map Luma Offset" type="float" cond="Has Bump Map Texture" />
<add name="Bump Map Matrix" type="Matrix22" cond="Has Bump Map Texture" />
<add name="Has Normal Texture" type="bool" cond="Texture Count &gt; 6" ver1="20.2.0.5">Do we have a normal texture?</add>
<add name="Normal Texture" type="TexDesc" cond="Has Normal Texture">Normal texture.</add>
<add name="Has Parallax Texture" type="bool" cond="Texture Count &gt; 7" ver1="20.2.0.5" />
<add name="Parallax Texture" type="TexDesc" cond="Has Parallax Texture" />
<add name="Parallax Offset" type="float" cond="Has Parallax Texture" />
<add name="Has Decal 0 Texture" type="bool" cond="Texture Count &gt; 6" ver2="20.2.0.4" />
<add name="Has Decal 0 Texture" type="bool" cond="Texture Count &gt; 8" ver1="20.2.0.5" />
<add name="Decal 0 Texture" type="TexDesc" cond="Has Decal 0 Texture">The decal texture.</add>
<add name="Has Decal 1 Texture" type="bool" cond="Texture Count &gt; 7" ver2="20.2.0.4" />
<add name="Has Decal 1 Texture" type="bool" cond="Texture Count &gt; 9" ver1="20.2.0.5" />
<add name="Decal 1 Texture" type="TexDesc" cond="Has Decal 1 Texture">Another decal texture.</add>
<add name="Has Decal 2 Texture" type="bool" cond="Texture Count &gt; 8" ver2="20.2.0.4" />
<add name="Has Decal 2 Texture" type="bool" cond="Texture Count &gt; 10" ver1="20.2.0.5" />
<add name="Decal 2 Texture" type="TexDesc" cond="Has Decal 2 Texture">Another decal texture.</add>
<add name="Has Decal 3 Texture" type="bool" cond="Texture Count &gt; 9" ver2="20.2.0.4" />
<add name="Has Decal 3 Texture" type="bool" cond="Texture Count &gt; 11" ver1="20.2.0.5" />
<add name="Decal 3 Texture" type="TexDesc" cond="Has Decal 3 Texture">Another decal texture.</add>
<add name="Num Shader Textures" type="uint" ver1="10.0.1.0">Number of Shader textures that follow.</add>
<add name="Shader Textures" type="ShaderTexDesc" arr1="Num Shader Textures" ver1="10.0.1.0">Shader textures.</add>
</niobject>
<niobject name="NiMultiTextureProperty" abstract="0" inherit="NiTexturingProperty" />
<niobject name="NiTransformData" abstract="0" inherit="NiKeyframeData">
Wrapper for transformation animation keys.
</niobject>
<niobject name="NiTriShape" abstract="0" inherit="NiTriBasedGeom">
A shape node that refers to singular triangle data.
</niobject>
<niobject name="NiTriShapeData" abstract="0" inherit="NiTriBasedGeomData">
Holds mesh data using a list of singular triangles.
<add name="Num Triangle Points" type="uint">Num Triangles times 3.</add>
<add name="Has Triangles" type="bool" ver1="10.1.0.0" calculated="1">Do we have triangle data?</add>
<add name="Triangles" type="Triangle" arr1="Num Triangles" ver2="10.0.1.2">Triangle data.</add>
<add name="Triangles" type="Triangle" arr1="Num Triangles" cond="Has Triangles" ver1="10.0.1.3">Triangle face data.</add>
<add name="Num Match Groups" type="ushort" ver1="3.1">Number of shared normals groups.</add>
<add name="Match Groups" type="MatchGroup" arr1="Num Match Groups" ver1="3.1">The shared normals.</add>
</niobject>
<niobject name="NiTriStrips" abstract="0" inherit="NiTriBasedGeom">
A shape node that refers to data organized into strips of triangles
</niobject>
<niobject name="NiTriStripsData" abstract="0" inherit="NiTriBasedGeomData">
Holds mesh data using strips of triangles.
<add name="Num Strips" type="ushort">Number of OpenGL triangle strips that are present.</add>
<add name="Strip Lengths" type="ushort" arr1="Num Strips">The number of points in each triangle strip.</add>
<add name="Has Points" type="bool" ver1="10.0.1.3">Do we have strip point data?</add>
<add name="Points" type="ushort" arr1="Num Strips" arr2="Strip Lengths" ver2="10.0.1.2">The points in the Triangle strips. Size is the sum of all entries in Strip Lengths.</add>
<add name="Points" type="ushort" arr1="Num Strips" arr2="Strip Lengths" cond="Has Points" ver1="10.0.1.3">The points in the Triangle strips. Size is the sum of all entries in Strip Lengths.</add>
</niobject>
<niobject name="NiEnvMappedTriShape" abstract="0" inherit="NiObjectNET">
Unknown
<add name="Unknown 1" type="ushort">unknown (=4 - 5)</add>
<add name="Unknown Matrix" type="Matrix44">unknown</add>
<add name="Num Children" type="uint">The number of child objects.</add>
<add name="Children" type="Ref" template="NiAVObject" arr1="Num Children">List of child node object indices.</add>
<add name="Child 2" type="Ref" template="NiObject">unknown</add>
<add name="Child 3" type="Ref" template="NiObject">unknown</add>
</niobject>
<niobject name="NiEnvMappedTriShapeData" abstract="0" inherit="NiTriShapeData">
Holds mesh data using a list of singular triangles.
</niobject>
<niobject name="NiBezierTriangle4" abstract="0" inherit="NiObject">
LEGACY (pre-10.1)
Sub data of NiBezierMesh
<add name="Unknown 1" type="uint" arr1="6">unknown</add>
<add name="Unknown 2" type="ushort">unknown</add>
<add name="Matrix" type="Matrix33">unknown</add>
<add name="Vector 1" type="Vector3">unknown</add>
<add name="Vector 2" type="Vector3">unknown</add>
<add name="Unknown 3" type="short" arr1="4">unknown</add>
<add name="Unknown 4" type="byte">unknown</add>
<add name="Unknown 5" type="uint">unknown</add>
<add name="Unknown 6" type="short" arr1="24">unknown</add>
</niobject>
<niobject name="NiBezierMesh" abstract="0" inherit="NiAVObject">
LEGACY (pre-10.1)
Unknown
<add name="Num Bezier Triangles" type="uint">references.</add>
<add name="Bezier Triangle" type="Ref" template="NiBezierTriangle4" arr1="Num Bezier Triangles">unknown</add>
<add name="Unknown 3" type="uint">Unknown.</add>
<add name="Count 1" type="ushort">Data count.</add>
<add name="Unknown 4" type="ushort">Unknown.</add>
<add name="Points 1" type="Vector3" arr1="Count 1">data.</add>
<add name="Unknown 5" type="uint">Unknown (illegal link?).</add>
<add name="Points 2" type="float" arr1="Count 1" arr2="2">data.</add>
<add name="Unknown 6" type="uint">unknown</add>
<add name="Count 2" type="ushort">data count 2.</add>
<add name="Data 2" type="ushort" arr1="Count 2" arr2="4">data count.</add>
</niobject>
<niobject name="NiClod" abstract="0" inherit="NiTriBasedGeom">
A shape node that holds continuous level of detail information.
Seems to be specific to Freedom Force.
</niobject>
<niobject name="NiClodData" abstract="0" inherit="NiTriBasedGeomData">
Holds mesh data for continuous level of detail shapes.
Pesumably a progressive mesh with triangles specified by edge splits.
Seems to be specific to Freedom Force.
The structure of this is uncertain and highly experimental at this point.
<add name="Unknown Shorts" type="ushort"></add>
<add name="Unknown Count 1" type ="ushort"></add>
<add name="Unknown Count 2" type ="ushort"></add>
<add name="Unknown Count 3" type ="ushort"></add>
<add name="Unknown Float" type="float"></add>
<add name="Unknown Short" type="ushort"></add>
<add name="Unknown Clod Shorts 1" type="ushort" arr1="Unknown Count 1" arr2="6"></add>
<add name="Unknown Clod Shorts 2" type ="ushort" arr1="Unknown Count 2"></add>
<add name="Unknown Clod Shorts 3" type ="ushort" arr1="Unknown Count 3" arr2="6"></add>
</niobject>
<niobject name="NiUVController" abstract="0" inherit="NiTimeController">
DEPRECATED (pre-10.1), REMOVED (20.3).
Time controller for texture coordinates.
<add name="Unknown Short" type="ushort">Always 0?</add>
<add name="Data" type="Ref" template="NiUVData">Texture coordinate controller data index.</add>
</niobject>
<niobject name="NiUVData" abstract="0" inherit="NiObject">
DEPRECATED (pre-10.1), REMOVED (20.3)
Texture coordinate data.
<add name="UV Groups" type="KeyGroup" template="float" arr1="4">
Four UV data groups. Appear to be U translation, V translation, U scaling/tiling, V scaling/tiling.
</add>
</niobject>
<niobject name="NiVectorExtraData" abstract="0" inherit="NiExtraData">
DEPRECATED (20.5).
Extra data in the form of a vector (as x, y, z, w components).
<add name="Vector Data" type="Vector4">The vector data.</add>
</niobject>
<niobject name="NiVertexColorProperty" abstract="0" inherit="NiProperty">
Property of vertex colors. This object is referred to by the root object of the NIF file whenever some NiTriShapeData object has vertex colors with non-default settings; if not present, vertex colors have vertex_mode=2 and lighting_mode=1.
<add name="Flags" type="Flags">
Bits 0-2: Unknown
Bit 3: Lighting Mode
Bits 4-5: Vertex Mode
</add>
<add name="Vertex Mode" type="VertMode" ver2="20.0.0.5">In Flags from 20.1.0.3 on.</add>
<add name="Lighting Mode" type="LightMode" ver2="20.0.0.5">In Flags from 20.1.0.3 on.</add>
</niobject>
<niobject name="NiVertWeightsExtraData" abstract="0" inherit="NiExtraData">
DEPRECATED (10.x), REMOVED (?)
Not used in skinning.
Unsure of use - perhaps for morphing animation or gravity.
<add name="Num Bytes" type="uint">Number of bytes in this data object.</add>
<add name="Num Vertices" type="ushort">Number of vertices.</add>
<add name="Weight" type="float" arr1="Num Vertices">The vertex weights.</add>
</niobject>
<niobject name="NiVisData" abstract="0" inherit="NiObject">
DEPRECATED (10.2), REMOVED (?), Replaced by NiBoolData.
Visibility data for a controller.
<add name="Num Keys" type="uint" />
<add name="Keys" type="Key" arg="1" template="byte" arr1="Num Keys" />
</niobject>
<niobject name="NiWireframeProperty" abstract="0" inherit="NiProperty">
Allows applications to switch between drawing solid geometry or wireframe outlines.
<add name="Flags" type="Flags">
Property flags.
0 - Wireframe Mode Disabled
1 - Wireframe Mode Enabled
</add>
</niobject>
<niobject name="NiZBufferProperty" abstract="0" inherit="NiProperty">
Allows applications to set the test and write modes of the renderer's Z-buffer and to set the comparison function used for the Z-buffer test.
<add name="Flags" type="Flags" default="3">
Bit 0 enables the z test
Bit 1 controls wether the Z buffer is read only (0) or read/write (1)
</add>
<add name="Function" type="ZCompareMode" default="ZCOMP_LESS_EQUAL" ver1="4.1.0.12" ver2="20.0.0.5">
Z-Test function (see: glDepthFunc). In Flags from 20.1.0.3 on.
</add>
</niobject>
<niobject name="RootCollisionNode" abstract="0" inherit="NiNode">
Morrowind-specific node for collision mesh.
</niobject>
<niobject name="NiRawImageData" abstract="0" inherit="NiObject">
LEGACY (pre-10.1)
Raw image data.
<add name="Width" type="uint">Image width</add>
<add name="Height" type="uint">Image height</add>
<add name="Image Type" type="ImageType">The format of the raw image data.</add>
<add name="RGB Image Data" type="ByteColor3" arr1="Width" arr2="Height" cond="Image Type == 1" >Image pixel data.</add>
<add name="RGBA Image Data" type="ByteColor4" arr1="Width" arr2="Height" cond="Image Type == 2" >Image pixel data.</add>
</niobject>
<niobject name="NiAccumulator" abstract="1" inherit="NiObject" />
<niobject name="NiSortAdjustNode" abstract="0" inherit="NiNode">
Used to turn sorting off for individual subtrees in a scene. Useful if objects must be drawn in a fixed order.
<add name="Sorting Mode" type="SortingMode" default="SORTING_INHERIT">Sorting</add>
<add name="Accumulator" type="Ref" template="NiAccumulator" ver2="20.0.0.3" />
</niobject>
<niobject name="NiSourceCubeMap" abstract="0" inherit="NiSourceTexture">
Represents cube maps that are created from either a set of six image files, six blocks of pixel data, or a single pixel data with six faces.
</niobject>
<niobject name="NiPhysXProp" abstract="0" inherit="NiObjectNET">
A PhysX prop which holds information about PhysX actors in a Gamebryo scene
<add name="PhysX to World Scale" type="float" />
<add name="Num Sources" type="uint" />
<add name="Sources" type="Ref" template="NiObject" arr1="Num Sources" />
<add name="Num Dests" type="int" />
<add name="Dests" type="Ref" template="NiPhysXDest" arr1="Num Dests" />
<add name="Num Modified Meshes" type="uint" ver1="20.4.0.0" />
<add name="Modified Meshes" type="Ref" template="NiMesh" arr1="Num Modified Meshes" ver1="20.4.0.0" />
<add name="Temp Name" type="string" ver1="30.1.0.2" ver2="30.2.0.2" />
<add name="Keep Meshes" type="bool" />
<add name="Prop Description" type="Ref" template="NiPhysXPropDesc" />
</niobject>
<compound name="PhysXMaterialRef">
<add name="Key" type="ushort" />
<add name="Material Desc" type="Ref" template="NiPhysXMaterialDesc" />
</compound>
<compound name="PhysXStateName">
<add name="Name" type="string" />
<add name="Index" type="uint" />
</compound>
<niobject name="NiPhysXPropDesc" abstract="0" inherit="NiObject">
For serialization of PhysX objects and to attach them to the scene.
<add name="Num Actors" type="int" />
<add name="Actors" type="Ref" template="NiPhysXActorDesc" arr1="Num Actors" />
<add name="Num Joints" type="uint" />
<add name="Joints" type="Ref" template="NiPhysXJointDesc" arr1="Num Joints" />
<add name="Num Clothes" type="uint" ver1="20.3.0.5" />
<add name="Clothes" type="Ref" template="NiObject" arr1="Num Clothes" ver1="20.3.0.5" /> <!-- NiPhysXClothDesc -->
<add name="Num Materials" type="uint" />
<add name="Materials" type="PhysXMaterialRef" arr1="Num Materials" />
<add name="Num States" type="uint" />
<add name="Num State Names" type="uint" ver1="20.4.0.0" />
<add name="State Names" type="PhysXStateName" arr1="Num State Names" ver1="20.4.0.0" />
<add name="Flags" type="byte" ver1="20.4.0.0" />
</niobject>
<niobject name="NiPhysXActorDesc" abstract="0" inherit="NiObject">
For serializing NxActor objects.
<add name="Actor Name" type="string" />
<add name="Num Poses" type="uint" />
<add name="Poses" type="Matrix34" arr1="Num Poses" />
<add name="Body Desc" type="Ref" template="NiPhysXBodyDesc" />
<add name="Density" type="float" />
<add name="Actor Flags" type="uint" />
<add name="Actor Group" type="ushort" />
<add name="Dominance Group" type="ushort" ver1="20.4.0.0" />
<add name="Contact Report Flags" type="uint" ver1="20.4.0.0" />
<add name="Force Field Material" type="ushort" ver1="20.4.0.0" />
<add name="Dummy" type="uint" ver1="20.3.0.1" ver2="20.3.0.5" />
<add name="Num Shape Descs" type="uint" />
<add name="Shape Descriptions" type="Ref" template="NiPhysXShapeDesc" arr1="Num Shape Descs" />
<add name="Actor Parent" type="Ref" template="NiPhysXActorDesc" />
<add name="Source" type="Ref" template="NiPhysXRigidBodySrc" />
<add name="Dest" type="Ref" template="NiPhysXRigidBodyDest" />
</niobject>
<compound name="PhysXBodyStoredVels">
<add name="Linear Velocity" type="Vector3" />
<add name="Angular Velocity" type="Vector3" />
<add name="Sleep" type="bool" ver1="30.2.0.3" />
</compound>
<niobject name="NiPhysXBodyDesc" inherit="NiObject">
For serializing NxBodyDesc objects.
<add name="Local Pose" type="Matrix34" />
<add name="Space Inertia" type="Vector3" />
<add name="Mass" type="float" />
<add name="Num Vels" type="uint" />
<add name="Vels" type="PhysXBodyStoredVels" arr1="Num Vels" />
<add name="Wake Up Counter" type="float" />
<add name="Linear Damping" type="float" />
<add name="Angular Damping" type="float" />
<add name="Max Angular Velocity" type="float" />
<add name="CCD Motion Threshold" type="float" />
<add name="Flags" type="uint" />
<add name="Sleep Linear Velocity" type="float" />
<add name="Sleep Angular Velocity" type="float" />
<add name="Solver Iteration Count" type="uint" />
<add name="Sleep Energy Threshold" type="float" ver1="20.3.0.0" />
<add name="Sleep Damping" type="float" ver1="20.3.0.0" />
<add name="Contact Report Threshold" type="float" ver1="20.4.0.0" />
</niobject>
<enum name="NxJointType" storage="uint">
<option name="NX_JOINT_PRISMATIC" value="0" />
<option name="NX_JOINT_REVOLUTE" value="1" />
<option name="NX_JOINT_CYLINDRICAL" value="2" />
<option name="NX_JOINT_SPHERICAL" value="3" />
<option name="NX_JOINT_POINT_ON_LINE" value="4" />
<option name="NX_JOINT_POINT_IN_PLANE" value="5" />
<option name="NX_JOINT_DISTANCE" value="6" />
<option name="NX_JOINT_PULLEY" value="7" />
<option name="NX_JOINT_FIXED" value="8" />
<option name="NX_JOINT_D6" value="9" />
</enum>
<enum name="NxD6JointMotion" storage="uint">
<option name="NX_D6JOINT_MOTION_LOCKED" value="0" />
<option name="NX_D6JOINT_MOTION_LIMITED" value="1" />
<option name="NX_D6JOINT_MOTION_FREE" value="2" />
</enum>
<enum name="NxD6JointDriveType" storage="uint">
<option name="NX_D6JOINT_DRIVE_POSITION" value="1" />
<option name="NX_D6JOINT_DRIVE_VELOCITY" value="2" />
</enum>
<enum name="NxJointProjectionMode" storage="uint">
<option name="NX_JPM_NONE" value="0" />
<option name="NX_JPM_POINT_MINDIST" value="1" />
<option name="NX_JPM_LINEAR_MINDIST" value="2" />
</enum>
<compound name="NiPhysXJointActor">
<add name="Actor" type="Ref" template="NiPhysXActorDesc" />
<add name="Local Normal" type="Vector3" />
<add name="Local Axis" type="Vector3" />
<add name="Local Anchor" type="Vector3" />
</compound>
<compound name="NxJointLimitSoftDesc">
<add name="Value" type="float" />
<add name="Restitution" type="float" />
<add name="Spring" type="float" />
<add name="Damping" type="float" />
</compound>
<compound name="NxJointDriveDesc">
<add name="Drive Type" type="NxD6JointDriveType" />
<add name="Restitution" type="float" />
<add name="Spring" type="float" />
<add name="Damping" type="float" />
</compound>
<compound name="NiPhysXJointLimit">
<add name="Limit Plane Normal" type="Vector3" />
<add name="Limit Plane D" type="float" />
<add name="Limit Plane R" type="float" ver1="20.4.0.0" />
</compound>
<niobject name="NiPhysXJointDesc" inherit="NiObject" abstract="1">
A PhysX Joint abstract base class.
<add name="Joint Type" type="NxJointType" />
<add name="Joint Name" type="string" />
<add name="Actors" type="NiPhysXJointActor" arr1="2" />
<add name="Max Force" type="float" />
<add name="Max Torque" type="float" />
<add name="Solver Extrapolation Factor" type="float" ver1="20.5.0.3" />
<add name="Use Acceleration Spring" type="uint" ver1="20.5.0.3" />
<add name="Joint Flags" type="uint" />
<add name="Limit Point" type="Vector3" />
<add name="Num Limits" type="uint" />
<add name="Limits" type="NiPhysXJointLimit" arr1="Num Limits" />
</niobject>
<niobject name="NiPhysXD6JointDesc" inherit="NiPhysXJointDesc">
A 6DOF (6 degrees of freedom) joint.
<add name="X Motion" type="NxD6JointMotion" />
<add name="Y Motion" type="NxD6JointMotion" />
<add name="Z Motion" type="NxD6JointMotion" />
<add name="Swing 1 Motion" type="NxD6JointMotion" />
<add name="Swing 2 Motion" type="NxD6JointMotion" />
<add name="Twist Motion" type="NxD6JointMotion" />
<add name="Linear Limit" type="NxJointLimitSoftDesc" />
<add name="Swing 1 Limit" type="NxJointLimitSoftDesc" />
<add name="Swing 2 Limit" type="NxJointLimitSoftDesc" />
<add name="Twist Low Limit" type="NxJointLimitSoftDesc" />
<add name="Twist High Limit" type="NxJointLimitSoftDesc" />
<add name="X Drive" type="NxJointDriveDesc" />
<add name="Y Drive" type="NxJointDriveDesc" />
<add name="Z Drive" type="NxJointDriveDesc" />
<add name="Swing Drive" type="NxJointDriveDesc" />
<add name="Twist Drive" type="NxJointDriveDesc" />
<add name="Slerp Drive" type="NxJointDriveDesc" />
<add name="Drive Position" type="Vector3" />
<add name="Drive Orientation" type="Quaternion" />
<add name="Drive Linear Velocity" type="Vector3" />
<add name="Drive Angular Velocity" type="Vector3" />
<add name="Projection Mode" type="NxJointProjectionMode" />
<add name="Projection Distance" type="float" />
<add name="Projection Angle" type="float" />
<add name="Gear Ratio" type="float" />
<add name="Flags" type="uint" />
</niobject>
<enum name="NxShapeType" storage="uint">
<option name="NX_SHAPE_PLANE" value="0" />
<option name="NX_SHAPE_SPHERE" value="1" />
<option name="NX_SHAPE_BOX" value="2" />
<option name="NX_SHAPE_CAPSULE" value="3" />
<option name="NX_SHAPE_WHEEL" value="4" />
<option name="NX_SHAPE_CONVEX" value="5" />
<option name="NX_SHAPE_MESH" value="6" />
<option name="NX_SHAPE_HEIGHTFIELD" value="7" />
<option name="NX_SHAPE_RAW_MESH" value="8" />
<option name="NX_SHAPE_COMPOUND" value="9" />
</enum>
<compound name="NxPlane">
<add name="Val 1" type="float" />
<add name="Point 1" type="Vector3" />
</compound>
<compound name="NxCapsule">
<add name="Val 1" type="float" />
<add name="Val 2" type="float" />
<add name="Capsule Flags" type="uint" />
</compound>
<niobject name="NiPhysXShapeDesc" abstract="0" inherit="NiObject">
For serializing NxShapeDesc objects
<add name="Shape Type" type="NxShapeType" />
<add name="Local Pose" type="Matrix34" />
<add name="Shape Flags" type="uint" />
<add name="Collision Group" type="ushort" />
<add name="Material Index" type="ushort" />
<add name="Density" type="float" />
<add name="Mass" type="float" />
<add name="Skin Width" type="float" />
<add name="Shape Name" type="string" />
<add name="Non-Interacting Compartment Types" type="uint" ver1="20.4.0.0" />
<add name="Collision Bits" type="uint" arr1="4" />
<add name="Plane" type="NxPlane" cond="Shape Type == 0" />
<add name="Sphere Radius" type="float" cond="Shape Type == 1" />
<add name="Box Half Extents" type="Vector3" cond="Shape Type == 2" />
<add name="Capsule" type="NxCapsule" cond="Shape Type == 3" />
<add name="Mesh" type="Ref" template="NiPhysXMeshDesc" cond="(Shape Type == 5) || (Shape Type == 6)" />
</niobject>
<niobject name="NiPhysXMeshDesc" abstract="0" inherit="NiObject">
Holds mesh data for streaming.
<add name="Is Convex" type="bool" ver2="20.3.0.4" />
<add name="Mesh Name" type="string" />
<add name="Mesh Data" type="ByteArray" />
<add name="Mesh Size" type="ushort" ver1="20.3.0.5" ver2="30.2.0.2" />
<add name="Mesh Data" type="ushort" arr1="Mesh Size" ver1="20.3.0.5" ver2="30.2.0.2" />
<add name="Mesh Flags" type="uint" />
<add name="Mesh Paging Mode" type="uint" ver1="20.3.0.1" />
<add name="Is Hardware" type="bool" ver1="20.3.0.2" ver2="20.3.0.4" />
<add name="Flags" type="byte" ver1="20.3.0.5" />
</niobject>
<bitflags name="NxMaterialFlag" storage="uint">
<option name="NX_MF_ANISOTROPIC" value="1" />
<option name="NX_MF_DUMMY1" value="2" />
<option name="NX_MF_DUMMY2" value="3" />
<option name="NX_MF_DUMMY3" value="4" />
<option name="NX_MF_DISABLE_FRICTION" value="5" />
<option name="NX_MF_DISABLE_STRONG_FRICTION" value="6" />
</bitflags>
<compound name="NxSpringDesc">
<add name="Spring" type="float" />
<add name="Damper" type="float" />
<add name="Target Value" type="float" />
</compound>
<enum name="NxCombineMode" storage="uint">
<option name="NX_CM_AVERAGE" value="0" />
<option name="NX_CM_MIN" value="1" />
<option name="NX_CM_MULTIPLY" value="2" />
<option name="NX_CM_MAX" value="3" />
</enum>
<compound name="NxMaterialDesc">
<add name="Dynamic Friction" type="float" />
<add name="Static Friction" type="float" />
<add name="Restitution" type="float" />
<add name="Dynamic Friction V" type="float" />
<add name="Static Friction V" type="float" />
<add name="Direction of Anisotropy" type="Vector3" />
<add name="Flags" type="NxMaterialFlag" />
<add name="Friction Combine Mode" type="NxCombineMode" />
<add name="Restitution Combine Mode" type="NxCombineMode" />
<add name="Has Spring" type="bool" ver2="20.2.3.0" />
<add name="Spring" type="NxSpringDesc" ver2="20.2.3.0" cond="Has Spring" />
</compound>
<niobject name="NiPhysXMaterialDesc" abstract="0" inherit="NiObject">
For serializing NxMaterialDesc objects.
<add name="Index" type="ushort" />
<add name="Num States" type="uint" />
<add name="Material Descs" type="NxMaterialDesc" arr1="Num States" />
</niobject>
<niobject name="NiPhysXDest" inherit="NiObject" abstract="1">
A destination is a link between a PhysX actor and a Gamebryo object being driven by the physics.
<add name="Active" type="bool" />
<add name="Interpolate" type="bool" />
</niobject>
<niobject name="NiPhysXRigidBodyDest" inherit="NiPhysXDest" abstract="1">
Base for destinations that set a rigid body state.
</niobject>
<niobject name="NiPhysXTransformDest" inherit="NiPhysXRigidBodyDest">
Connects PhysX rigid body actors to a scene node.
<add name="Target" type="Ptr" template="NiAVObject" />
</niobject>
<niobject name="NiPhysXSrc" inherit="NiObject" abstract="1">
A source is a link between a Gamebryo object and a PhysX actor.
<add name="Active" type="bool" />
<add name="Interpolate" type="bool" />
</niobject>
<niobject name="NiPhysXRigidBodySrc" inherit="NiPhysXSrc" abstract="1">
Sets state of a rigid body PhysX actor.
<add name="Source" type="Ptr" template="NiAVObject" />
</niobject>
<niobject name="NiPhysXKinematicSrc" inherit="NiPhysXRigidBodySrc">
Sets state of kinematic PhysX actor.
</niobject>
<niobject name="NiPhysXDynamicSrc" inherit="NiPhysXRigidBodySrc">
Sends Gamebryo scene state to a PhysX dynamic actor.
</niobject>
<niobject name="NiLines" inherit="NiTriBasedGeom">
Wireframe geometry.
</niobject>
<niobject name="NiLinesData" inherit="NiGeometryData">
Wireframe geometry data.
<add name="Lines" type="bool" arr1="Num Vertices">Is vertex connected to other (next?) vertex?</add>
</niobject>
<compound name="Polygon">
Two dimensional screen elements.
<add name="Num Vertices" type="ushort" />
<add name="Vertex Offset" type="ushort">Offset in vertex array.</add>
<add name="Num Triangles" type="ushort" />
<add name="Triangle Offset" type="ushort">Offset in indices array.</add>
</compound>
<niobject name="NiScreenElementsData" inherit="NiTriShapeData">
DEPRECATED (20.5), functionality included in NiMeshScreenElements.
Two dimensional screen elements.
<add name="Max Polygons" type="ushort" />
<add name="Polygons" type="Polygon" arr1="Max Polygons" />
<add name="Polygon Indices" type="ushort" arr1="Max Polygons" />
<add name="Polygon Grow By" type="ushort" default="1" />
<add name="Num Polygons" type="ushort" />
<add name="Max Vertices" type="ushort" />
<add name="Vertices Grow By" type="ushort" default="1" />
<add name="Max Indices" type="ushort" />
<add name="Indices Grow By" type="ushort" default="1" />
</niobject>
<niobject name="NiScreenElements" inherit="NiTriShape">
DEPRECATED (20.5), replaced by NiMeshScreenElements.
Two dimensional screen elements.
</niobject>
<niobject name="NiRoomGroup" inherit="NiNode">
NiRoomGroup represents a set of connected rooms i.e. a game level.
<add name="Shell" type="Ptr" template="NiNode">Object that represents the room group as seen from the outside.</add>
<add name="Num Rooms" type="int" />
<add name="Rooms" type="Ptr" template="NiRoom" arr1="Num Rooms" />
</niobject>
<niobject name="NiRoom" inherit="NiNode">
NiRoom objects represent cells in a cell-portal culling system.
<add name="Num Walls" type="int" />
<add name="Wall Planes" type="NiPlane" arr1="Num Walls" />
<add name="Num In Portals" type="uint" />
<add name="In Portals" type="Ptr" template="NiPortal" arr1="Num In Portals">The portals which see into the room.</add>
<add name="Num Out Portals" type="uint" />
<add name="Out Portals" type="Ptr" template="NiPortal" arr1="Num Out Portals">The portals which see out of the room.</add>
<add name="Num Fixtures" type="uint" />
<add name="Fixtures" type="Ptr" template="NiAVObject" arr1="Num Fixtures">All geometry associated with the room.</add>
</niobject>
<niobject name="NiPortal" inherit="NiAVObject">
NiPortal objects are grouping nodes that support aggressive visibility culling.
They represent flat polygonal regions through which a part of a scene graph can be viewed.
<add name="Portal Flags" type="ushort" />
<add name="Plane Count" type="ushort">Unused in 20.x, possibly also 10.x.</add>
<add name="Num Vertices" type="ushort" />
<add name="Vertices" type="Vector3" arr1="Num Vertices" />
<add name="Adjoiner" type="Ptr" template="NiNode">Root of the scenegraph which is to be seen through this portal.</add>
</niobject>
<!-- Red Ocean Custom Objects
<niobject name="Object" inherit="NiNode">
Red Ocean Object class
<add name="Unknown Short 1" type="short">Unknown</add>
<add name="Unknown Link 1" type="Ref" template="NiObject">Unknown</add>
<add name="Unknown Short 2" type="short">Unknown</add>
<add name="Unknown Short 3" type="short">Unknown</add>
<add name="Unknown Float 1" type="float">Unknown</add>
</niobject>
<niobject name="BoundingBoxExtraData" inherit="NiExtraData">
Red Ocean Bounding Box
<add name="Flags" type="Flags">Unknown</add>
<add name="Center?" type="Vector3">Center of box?</add>
<add name="Extent?" type="Vector3">Extents of box?</add>
</niobject>
<niobject name="Door" inherit="Object">
Red Ocean Object class
<add name="Unknown Short 1" type="short">Unknown</add>
<add name="Unknown Float 1" type="float">Unknowns</add>
<add name="Unknown Float 2" type="float">Unknowns</add>
<add name="Unknown Short 2" type="short">Unknown</add>
<add name="Unknown Int 1" type="int">Unknown</add>
<add name="Unknown Short 3" type="short">Unknown</add>
<add name="Unknown Bool 1" type="bool">Unknown</add>
<add name="Unknown Short 4" type="short">Unknown</add>
<add name="Unknown Float 3" type="float">Unknowns</add>
</niobject>
-->
<niobject name="BSFadeNode" abstract="0" inherit="NiNode">
Bethesda-specific fade node.
</niobject>
<enum name="BSShaderType" storage="uint">
The type of animation interpolation (blending) that will be used on the associated key frames.
<option value="0" name="SHADER_TALL_GRASS">Tall Grass Shader</option>
<option value="1" name="SHADER_DEFAULT">Standard Lighting Shader</option>
<option value="10" name="SHADER_SKY">Sky Shader</option>
<option value="14" name="SHADER_SKIN">Skin Shader</option>
<option value="17" name="SHADER_WATER">Water Shader</option>
<option value="29" name="SHADER_LIGHTING30">Lighting 3.0 Shader</option>
<option value="32" name="SHADER_TILE">Tiled Shader</option>
<option value="33" name="SHADER_NOLIGHTING">No Lighting Shader</option>
</enum>
<bitflags name="BSShaderFlags" storage="uint" prefix="F3SF1">
Shader Property Flags
<option value="0" name="Specular">Enables Specularity</option>
<option value="1" name="Skinned">Required For Skinned Meshes</option>
<option value="2" name="LowDetail">Lowddetail (seems to use standard diff/norm/spec shader)</option>
<option value="3" name="Vertex_Alpha">Vertex Alpha</option>
<option value="4" name="Unknown_1">Unknown</option>
<option value="5" name="Single_Pass">Single Pass</option>
<option value="6" name="Empty">Unknown</option>
<option value="7" name="Environment_Mapping">Environment mapping (uses Envmap Scale)</option>
<option value="8" name="Alpha_Texture">Alpha Texture Requires NiAlphaProperty to Enable</option>
<option value="9" name="Unknown_2">Unknown</option>
<option value="10" name="FaceGen">FaceGen</option>
<option value="11" name="Parallax_Shader_Index_15">Parallax</option>
<option value="12" name="Unknown_3">Unknown/Crash</option>
<option value="13" name="Non_Projective_Shadows">Non-Projective Shadows</option>
<option value="14" name="Unknown_4">Unknown/Crash</option>
<option value="15" name="Refraction">Refraction (switches on refraction power)</option>
<option value="16" name="Fire_Refraction">Fire Refraction (switches on refraction power/period)</option>
<option value="17" name="Eye_Environment_Mapping">Eye Environment Mapping (does not use envmap light fade or envmap scale)</option>
<option value="18" name="Hair">Hair</option>
<option value="19" name="Dynamic_Alpha">Dynamic Alpha</option>
<option value="20" name="Localmap_Hide_Secret">Localmap Hide Secret</option>
<option value="21" name="Window_Environment_Mapping">Window Environment Mapping</option>
<option value="22" name="Tree_Billboard">Tree Billboard</option>
<option value="23" name="Shadow_Frustum">Shadow Frustum</option>
<option value="24" name="Multiple_Textures">Multiple Textures (base diff/norm become null)</option>
<option value="25" name="Remappable_Textures">usually seen w/texture animation</option>
<option value="26" name="Decal_Single_Pass">Decal</option>
<option value="27" name="Dynamic_Decal_Single_Pass">Dynamic Decal</option>
<option value="28" name="Parallax_Occulsion">Parallax Occlusion</option>
<option value="29" name="External_Emittance">External Emittance</option>
<option value="30" name="Shadow_Map">Shadow Map</option>
<option value="31" name="ZBuffer_Test">ZBuffer Test (1=on)</option>
</bitflags>
<bitflags name="BSShaderFlags2" storage="uint" prefix="F3SF2">
Shader Property Flags 2
<option value="0" name="ZBuffer_Write">ZBuffer Write</option>
<option value="1" name="LOD_Landscape">LOD Landscape</option>
<option value="2" name="LOD_Building">LOD Building</option>
<option value="3" name="No_Fade">No Fade</option>
<option value="4" name="Refraction_Tint">Refraction Tint</option>
<option value="5" name="Vertex_Colors">Has Vertex Colors</option>
<option value="6" name="Unknown1">Unknown</option>
<option value="7" name="1st_Light_is_Point_Light">1st Light is Point Light</option>
<option value="8" name="2nd_Light">2nd Light</option>
<option value="9" name="3rd_Light">3rd Light</option>
<option value="10" name="Vertex_Lighting">Vertex Lighting</option>
<option value="11" name="Uniform_Scale">Uniform Scale</option>
<option value="12" name="Fit_Slope">Fit Slope</option>
<option value="13" name="Billboard_and_Envmap_Light_Fade">Billboard and Envmap Light Fade</option>
<option value="14" name="No_LOD_Land_Blend">No LOD Land Blend</option>
<option value="15" name="Envmap_Light_Fade">Envmap Light Fade</option>
<option value="16" name="Wireframe">Wireframe</option>
<option value="17" name="VATS_Selection">VATS Selection</option>
<option value="18" name="Show_in_Local_Map">Show in Local Map</option>
<option value="19" name="Premult_Alpha">Premult Alpha</option>
<option value="20" name="Skip_Normal_Maps">Skip Normal Maps</option>
<option value="21" name="Alpha_Decal">Alpha Decal</option>
<option value="22" name="No_Transparecny_Multisampling">No Transparency MultiSampling</option>
<option value="23" name="Unknown2">Unknown</option>
<option value="24" name="Unknown3">Unknown</option>
<option value="25" name="Unknown4">Unknown</option>
<option value="26" name="Unknown5">Unknown</option>
<option value="27" name="Unknown6">Unknown</option>
<option value="28" name="Unknown7">Unknown</option>
<option value="29" name="Unknown8">Unknown</option>
<option value="30" name="Unknown9">Unknown</option>
<option value="31" name="Unknown10">Unknown</option>
</bitflags>
<niobject name="BSShaderProperty" abstract="0" inherit="NiShadeProperty">
Bethesda-specific property.
<add name="Shader Type" type="BSShaderType" default="SHADER_DEFAULT" vercond="(User Version 2 &lt;= 34)" />
<add name="Shader Flags" type="BSShaderFlags" default="0x82000000" vercond="(User Version 2 &lt;= 34)" />
<add name="Shader Flags 2" type="BSShaderFlags2" default="1" vercond="(User Version 2 &lt;= 34)" />
<add name="Environment Map Scale" type="float" default="1.0" vercond="(User Version 2 &lt;= 34)">Scales the intensity of the environment/cube map.</add>
</niobject>
<niobject name="BSShaderLightingProperty" abstract="1" inherit="BSShaderProperty">
Bethesda-specific property.
<add name="Texture Clamp Mode" type="TexClampMode" default="3" vercond="(User Version 2 &lt;= 34)">How to handle texture borders.</add>
</niobject>
<niobject name="BSShaderNoLightingProperty" abstract="0" inherit="BSShaderLightingProperty">
Bethesda-specific property.
<add name="File Name" type="SizedString">The texture glow map.</add>
<add name="Falloff Start Angle" type="float" default="1.0" vercond="(User Version 2 &gt; 26)">At this cosine of angle falloff will be equal to Falloff Start Opacity</add>
<add name="Falloff Stop Angle" type="float" default="0.0" vercond="(User Version 2 &gt; 26)">At this cosine of angle falloff will be equal to Falloff Stop Opacity</add>
<add name="Falloff Start Opacity" type="float" default="1.0" vercond="(User Version 2 &gt; 26)">Alpha falloff multiplier at start angle</add>
<add name="Falloff Stop Opacity" type="float" default="0.0" vercond="(User Version 2 &gt; 26)">Alpha falloff multiplier at end angle</add>
</niobject>
<niobject name="BSShaderPPLightingProperty" abstract="0" inherit="BSShaderLightingProperty">
Bethesda-specific property.
<add name="Texture Set" type="Ref" template="BSShaderTextureSet">Texture Set</add>
<add name="Refraction Strength" type="float" default="0.0" vercond="(User Version 2 &gt; 14)">The amount of distortion. **Not based on physically accurate refractive index** (0=none) (0-1)</add>
<add name="Refraction Fire Period" type="int" default="0" vercond="(User Version 2 &gt; 14)">Rate of texture movement for refraction shader.</add>
<add name="Parallax Max Passes" type="float" default="4.0" vercond="(User Version 2 &gt; 24)">The number of passes the parallax shader can apply.</add>
<add name="Parallax Scale" type="float" default="1.0" vercond="(User Version 2 &gt; 24)">The strength of the parallax.</add>
<!-- TODO: Find where this could have even come from as > 34 doesn't exist for this block. -->
<add name="Emissive Color" type="Color4" vercond="(User Version 2 &gt; 34)">Glow color and alpha</add>
</niobject>
<!-- Skyrim specific Node -->
<niobject name="BSEffectShaderPropertyFloatController" abstract="0" inherit="NiFloatInterpController">
This controller is used to animate float variables in BSEffectShaderProperty.
<add name="Type of Controlled Variable" type="EffectShaderControlledVariable">Which float variable in BSEffectShaderProperty to animate:</add>
</niobject>
<niobject name="BSEffectShaderPropertyColorController" inherit="NiPoint3InterpController">
This controller is used to animate colors in BSEffectShaderProperty.
<add name="Type of Controlled Color" type="EffectShaderControlledColor">Which color in BSEffectShaderProperty to animate:</add>
</niobject>
<niobject name="BSLightingShaderPropertyFloatController" abstract="0" inherit="NiFloatInterpController">
This controller is used to animate float variables in BSLightingShaderProperty.
<add name="Type of Controlled Variable" type="LightingShaderControlledVariable">Which float variable in BSLightingShaderProperty to animate:</add>
</niobject>
<niobject name="BSLightingShaderPropertyColorController" abstract="0" inherit="NiPoint3InterpController">
This controller is used to animate colors in BSLightingShaderProperty.
<add name="Type of Controlled Color" type="LightingShaderControlledColor">Which color in BSLightingShaderProperty to animate:</add>
</niobject>
<niobject name="BSNiAlphaPropertyTestRefController" inherit="NiFloatInterpController" />
<niobject name="BSProceduralLightningController" abstract="0" inherit="NiTimeController">
Skyrim, Paired with dummy TriShapes, this controller generates lightning shapes for special effects.
First interpolator controls Generation.
<add name="Interpolator 1: Generation" type="Ref" template="NiInterpolator">References generation interpolator.</add>
<add name="Interpolator 2: Mutation" type="Ref" template="NiInterpolator">References interpolator for Mutation of strips</add>
<add name="Interpolator 3: Subdivision" type="Ref" template="NiInterpolator">References subdivision interpolator.</add>
<add name="Interpolator 4: Num Branches" type="Ref" template="NiInterpolator">References branches interpolator.</add>
<add name="Interpolator 5: Num Branches Var" type="Ref" template="NiInterpolator">References branches variation interpolator.</add>
<add name="Interpolator 6: Length" type="Ref" template="NiInterpolator">References length interpolator.</add>
<add name="Interpolator 7: Length Var" type="Ref" template="NiInterpolator">References length variation interpolator.</add>
<add name="Interpolator 8: Width" type="Ref" template="NiInterpolator">References width interpolator.</add>
<add name="Interpolator 9: Arc Offset" type="Ref" template="NiInterpolator">References interpolator for amplitude control. 0=straight, 50=wide</add>
<add name="Subdivisions" type="ushort" />
<add name="Num Branches" type="ushort" />
<add name="Num Branches Variation" type="ushort" />
<add name="Length" type="float">How far lightning will stretch to.</add>
<add name="Length Variation" type="float">How far lightning variation will stretch to.</add>
<add name="Width" type="float">How wide the bolt will be.</add>
<add name="Child Width Mult" type="float">Influences forking behavior with a multiplier.</add>
<add name="Arc Offset" type="float" />
<add name="Fade Main Bolt" type="bool" />
<add name="Fade Child Bolts" type="bool" />
<add name="Animate Arc Offset" type="bool" />
<add name="Shader Property" type="Ref" template="BSShaderProperty">Reference to a shader property.</add>
</niobject>
<niobject name="BSShaderTextureSet" abstract="0" inherit="NiObject">
Bethesda-specific Texture Set.
<add name="Num Textures" type="int" default="6" />
<add name="Textures" type="SizedString" arr1="Num Textures">Textures.
0: Diffuse
1: Normal/Gloss
2: Glow(SLSF2_Glow_Map)/Skin/Hair/Rim light(SLSF2_Rim_Lighting)
3: Height/Parallax
4: Environment
5: Environment Mask
6: Subsurface for Multilayer Parallax
7: Back Lighting Map (SLSF2_Back_Lighting)
</add>
</niobject>
<niobject name="WaterShaderProperty" abstract="0" inherit="BSShaderProperty">
Bethesda-specific property. Found in Fallout3
</niobject>
<enum name="SkyObjectType" storage="uint">
Sets what sky function this object fulfills in BSSkyShaderProperty or SkyShaderProperty.
<option value="0" name="BSSM_SKY_TEXTURE">BSSM_Sky_Texture</option>
<option value="1" name="BSSM_SKY_SUNGLARE">BSSM_Sky_Sunglare</option>
<option value="2" name="BSSM_SKY">BSSM_Sky</option>
<option value="3" name="BSSM_SKY_CLOUDS">BSSM_Sky_Clouds</option>
<option value="5" name="BSSM_SKY_STARS">BSSM_Sky_Stars</option>
<option value="7" name="BSSM_SKY_MOON_STARS_MASK">BSSM_Sky_Moon_Stars_Mask</option>
</enum>
<niobject name="SkyShaderProperty" abstract="0" inherit="BSShaderLightingProperty">
Bethesda-specific property. Found in Fallout3
<add name="File Name" type="SizedString">The texture.</add>
<add name="Sky Object Type" type="SkyObjectType">Sky Object Type</add>
</niobject>
<niobject name="TileShaderProperty" abstract="0" inherit="BSShaderLightingProperty">
Bethesda-specific property.
<add name="File Name" type="SizedString">Texture file name</add>
</niobject>
<niobject name="DistantLODShaderProperty" abstract="0" inherit="BSShaderProperty">
Bethesda-specific property.
</niobject>
<niobject name="BSDistantTreeShaderProperty" abstract="0" inherit="BSShaderProperty">
Bethesda-specific property.
</niobject>
<niobject name="TallGrassShaderProperty" abstract="0" inherit="BSShaderProperty">
Bethesda-specific property.
<add name="File Name" type="SizedString">Texture file name</add>
</niobject>
<niobject name="VolumetricFogShaderProperty" abstract="0" inherit="BSShaderProperty">
Bethesda-specific property.
</niobject>
<niobject name="HairShaderProperty" abstract="0" inherit="BSShaderProperty">
Bethesda-specific property.
</niobject>
<niobject name="Lighting30ShaderProperty" abstract="0" inherit="BSShaderPPLightingProperty">
Bethesda-specific property.
</niobject>
<bitflags name="SkyrimShaderPropertyFlags1" storage="uint" prefix="SLSF1">
Skyrim Shader Property Flags 1
<option value="0" name="Specular">Enables Specularity</option>
<option value="1" name="Skinned">Required For Skinned Meshes.</option>
<option value="2" name="Temp_Refraction"></option>
<option value="3" name="Vertex_Alpha">Enables using alpha component of vertex colors.</option>
<option value="4" name="Greyscale_To_PaletteColor">in EffectShaderProperty</option>
<option value="5" name="Greyscale_To_PaletteAlpha">in EffectShaderProperty</option>
<option value="6" name="Use_Falloff">Use Falloff value in EffectShaderProperty</option>
<option value="7" name="Environment_Mapping">Environment mapping (uses Envmap Scale).</option>
<option value="8" name="Recieve_Shadows">Object can recieve shadows.</option>
<option value="9" name="Cast_Shadows">Can cast shadows</option>
<option value="10" name="Facegen_Detail_Map">Use a face detail map in the 4th texture slot.</option>
<option value="11" name="Parallax">Unused?</option>
<option value="12" name="Model_Space_Normals">Use Model space normals and an external Specular Map.</option>
<option value="13" name="Non_Projective_Shadows"></option>
<option value="14" name="Landscape"></option>
<option value="15" name="Refraction">Use normal map for refraction effect.</option>
<option value="16" name="Fire_Refraction"></option>
<option value="17" name="Eye_Environment_Mapping">Eye Environment Mapping (Must use the Eye shader and the model must be skinned)</option>
<option value="18" name="Hair_Soft_Lighting">Keeps from going too bright under lights (hair shader only)</option>
<option value="19" name="Screendoor_Alpha_Fade"></option>
<option value="20" name="Localmap_Hide_Secret">Object and anything it is positioned above will not render on local map view.</option>
<option value="21" name="FaceGen_RGB_Tint">Use tintmask for Face.</option>
<option value="22" name="Own_Emit">Provides its own emittance color. (will not absorb light/ambient color?)</option>
<option value="23" name="Projected_UV">Used for decalling?</option>
<option value="24" name="Multiple_Textures"></option>
<option value="25" name="Remappable_Textures"></option>
<option value="26" name="Decal"></option>
<option value="27" name="Dynamic_Decal"></option>
<option value="28" name="Parallax_Occlusion"></option>
<option value="29" name="External_Emittance"></option>
<option value="30" name="Soft_Effect"></option>
<option value="31" name="ZBuffer_Test">ZBuffer Test (1=on)</option>
</bitflags>
<bitflags name="SkyrimShaderPropertyFlags2" storage="uint" prefix="SLSF2">
Skyrim Shader Property Flags 2
<option value="0" name="ZBuffer_Write">Enables writing to the Z-Buffer</option>
<option value="1" name="LOD_Landscape"></option>
<option value="2" name="LOD_Objects"></option>
<option value="3" name="No_Fade"></option>
<option value="4" name="Double_Sided">Double-sided rendering.</option>
<option value="5" name="Vertex_Colors">Has Vertex Colors.</option>
<option value="6" name="Glow_Map">Use Glow Map in the third texture slot.</option>
<option value="7" name="Assume_Shadowmask"></option>
<option value="8" name="Packed_Tangent"></option>
<option value="9" name="Multi_Index_Snow"></option>
<option value="10" name="Vertex_Lighting"></option>
<option value="11" name="Uniform_Scale"></option>
<option value="12" name="Fit_Slope"></option>
<option value="13" name="Billboard"></option>
<option value="14" name="No_LOD_Land_Blend"></option>
<option value="15" name="EnvMap_Light_Fade"></option>
<option value="16" name="Wireframe">Wireframe (Seems to only work on particles)</option>
<option value="17" name="Weapon_Blood">Used for blood decals on weapons.</option>
<option value="18" name="Hide_On_Local_Map">Similar to hide secret, but only for self?</option>
<option value="19" name="Premult_Alpha">Has Premultiplied Alpha</option>
<option value="20" name="Cloud_LOD"></option>
<option value="21" name="Anisotropic_Lighting">Hair only?</option>
<option value="22" name="No_Transparency_Multisampling"></option>
<option value="23" name="Unused01">Unused?</option>
<option value="24" name="Multi_Layer_Parallax">Use Multilayer (inner-layer) Map</option>
<option value="25" name="Soft_Lighting">Use Soft Lighting Map</option>
<option value="26" name="Rim_Lighting">Use Rim Lighting Map</option>
<option value="27" name="Back_Lighting">Use Back Lighting Map</option>
<option value="28" name="Unused02">Unused?</option>
<option value="29" name="Tree_Anim">Enables Vertex Animation, Flutter Animation</option>
<option value="30" name="Effect_Lighting"></option>
<option value="31" name="HD_LOD_Objects"></option>
</bitflags>
<bitflags name="Fallout4ShaderPropertyFlags1" storage="uint" prefix="F4SF1">
Fallout 4 Shader Property Flags 1
<option value="0" name="Specular" />
<option value="1" name="Skinned" />
<option value="2" name="Temp_Refraction" />
<option value="3" name="Vertex_Alpha" />
<option value="4" name="GreyscaleToPalette_Color" />
<option value="5" name="GreyscaleToPalette_Alpha" />
<option value="6" name="Use_Falloff" />
<option value="7" name="Environment_Mapping" />
<option value="8" name="RGB_Falloff" />
<option value="9" name="Cast_Shadows" />
<option value="10" name="Face" />
<option value="11" name="UI_Mask_Rects" />
<option value="12" name="Model_Space_Normals" />
<option value="13" name="Non_Projective_Shadows" />
<option value="14" name="Landscape" />
<option value="15" name="Refraction" />
<option value="16" name="Fire_Refraction" />
<option value="17" name="Eye_Environment_Mapping" />
<option value="18" name="Hair" />
<option value="19" name="Screendoor_Alpha_Fade" />
<option value="20" name="Localmap_Hide_Secret" />
<option value="21" name="Skin_Tint" />
<option value="22" name="Own_Emit" />
<option value="23" name="Projected_UV" />
<option value="24" name="Multiple_Textures" />
<option value="25" name="Tessellate" />
<option value="26" name="Decal" />
<option value="27" name="Dynamic_Decal" />
<option value="28" name="Character_Lighting" />
<option value="29" name="External_Emittance" />
<option value="30" name="Soft_Effect" />
<option value="31" name="ZBuffer_Test" />
</bitflags>
<bitflags name="Fallout4ShaderPropertyFlags2" storage="uint" prefix="F4SF2">
Fallout 4 Shader Property Flags 2
<option value="0" name="ZBuffer_Write" />
<option value="1" name="LOD_Landscape" />
<option value="2" name="LOD_Objects" />
<option value="3" name="No_Fade" />
<option value="4" name="Double_Sided" />
<option value="5" name="Vertex_Colors" />
<option value="6" name="Glow_Map" />
<option value="7" name="Transform_Changed" />
<option value="8" name="Dismemberment_Meatcuff" />
<option value="9" name="Tint" />
<option value="10" name="Grass_Vertex_Lighting" />
<option value="11" name="Grass_Uniform_Scale" />
<option value="12" name="Grass_Fit_Slope" />
<option value="13" name="Grass_Billboard" />
<option value="14" name="No_LOD_Land_Blend" />
<option value="15" name="Dismemberment" />
<option value="16" name="Wireframe" />
<option value="17" name="Weapon_Blood" />
<option value="18" name="Hide_On_Local_Map" />
<option value="19" name="Premult_Alpha" />
<option value="20" name="VATS_Target" />
<option value="21" name="Anisotropic_Lighting" />
<option value="22" name="Skew_Specular_Alpha" />
<option value="23" name="Menu_Screen" />
<option value="24" name="Multi_Layer_Parallax" />
<option value="25" name="Alpha_Test" />
<option value="26" name="Gradient_Remap" />
<option value="27" name="VATS_Target_Draw_All" />
<option value="28" name="Pipboy_Screen" />
<option value="29" name="Tree_Anim" />
<option value="30" name="Effect_Lighting" />
<option value="31" name="Refraction_Writes_Depth" />
</bitflags>
<niobject name="BSLightingShaderProperty" abstract="0" inherit="BSShaderProperty">
Bethesda shader property for Skyrim and later.
<add name="Shader Flags 1" suffix="SK" type="SkyrimShaderPropertyFlags1" vercond="(User Version 2 != 130)" default="2185233153">Skyrim Shader Flags for setting render/shader options.</add>
<add name="Shader Flags 2" suffix="SK" type="SkyrimShaderPropertyFlags2" vercond="(User Version 2 != 130)" default="32801">Skyrim Shader Flags for setting render/shader options.</add>
<add name="Shader Flags 1" suffix="FO4" type="Fallout4ShaderPropertyFlags1" vercond="(User Version 2 == 130)" default="2151678465">Fallout 4 Shader Flags. Mostly overridden if "Name" is a path to a BGSM/BGEM file.</add>
<add name="Shader Flags 2" suffix="FO4" type="Fallout4ShaderPropertyFlags2" vercond="(User Version 2 == 130)" default="1">Fallout 4 Shader Flags. Mostly overridden if "Name" is a path to a BGSM/BGEM file.</add>
<add name="UV Offset" type="TexCoord">Offset UVs</add>
<add name="UV Scale" type="TexCoord" default="1.0, 1.0">Offset UV Scale to repeat tiling textures, see above.</add>
<add name="Texture Set" type="Ref" template="BSShaderTextureSet">Texture Set, can have override in an esm/esp</add>
<add name="Emissive Color" type="Color3" default="0.0, 0.0, 0.0">Glow color and alpha</add>
<add name="Emissive Multiple" type="float">Multiplied emissive colors</add>
<add name="Wet Material" type="string" vercond="(User Version 2 == 130)" />
<add name="Texture Clamp Mode" type="TexClampMode" default="3">How to handle texture borders.</add>
<add name="Alpha" type="float" default="1.0">The material opacity (1=non-transparent).</add>
<add name="Refraction Strength" type="float">The amount of distortion. **Not based on physically accurate refractive index** (0=none) (0-1)</add>
<add name="Glossiness" type="float" default="80" vercond="User Version 2 &lt; 130">The material specular power, or glossiness (0-999).</add>
<add name="Smoothness" type="float" default="1.0" vercond="(User Version 2 == 130)">The base roughness (0.0-1.0), multiplied by the smoothness map.</add>
<add name="Specular Color" type="Color3">Adds a colored highlight.</add>
<add name="Specular Strength" type="float" default="1.0">Brightness of specular highlight. (0=not visible) (0-999)</add>
<add name="Lighting Effect 1" type="float" default="0.3" vercond="User Version 2 &lt; 130">Controls strength for envmap/backlight/rim/softlight lighting effect?</add>
<add name="Lighting Effect 2" type="float" default="2.0" vercond="User Version 2 &lt; 130">Controls strength for envmap/backlight/rim/softlight lighting effect?</add>
<add name="Subsurface Rolloff" type="float" default="0.3" vercond="(User Version 2 == 130)" />
<add name="Rimlight Power" type="float" default="3.402823466e+38" vercond="(User Version 2 == 130)" />
<add name="Backlight Power" type="float" cond="Rimlight Power == 0x7F7FFFFF" vercond="(User Version 2 == 130)" />
<add name="Grayscale to Palette Scale" type="float" vercond="(User Version 2 == 130)" />
<add name="Fresnel Power" type="float" default="5.0" vercond="(User Version 2 == 130)" />
<add name="Wetness Spec Scale" type="float" default="-1.0" vercond="(User Version 2 == 130)" />
<add name="Wetness Spec Power" type="float" default="-1.0" vercond="(User Version 2 == 130)" />
<add name="Wetness Min Var" type="float" default="-1.0" vercond="(User Version 2 == 130)" />
<add name="Wetness Env Map Scale" type="float" default="-1.0" vercond="(User Version 2 == 130)" />
<add name="Wetness Fresnel Power" type="float" default="-1.0" vercond="(User Version 2 == 130)" />
<add name="Wetness Metalness" type="float" default="-1.0" vercond="(User Version 2 == 130)" />
<add name="Environment Map Scale" type="float" default="1.0" cond="Skyrim Shader Type == 1">Scales the intensity of the environment/cube map. (0-1)</add>
<add name="Unknown Env Map Short" type="ushort" cond="Skyrim Shader Type == 1" vercond="(User Version 2 == 130)" />
<add name="Skin Tint Color" type="Color3" cond="Skyrim Shader Type == 5">Tints the base texture. Overridden by game settings.</add>
<add name="Unknown Skin Tint Int" type="uint" cond="Skyrim Shader Type == 5" vercond="(User Version 2 == 130)" />
<add name="Hair Tint Color" type="Color3" cond="Skyrim Shader Type == 6">Tints the base texture. Overridden by game settings.</add>
<add name="Max Passes" type="float" cond="Skyrim Shader Type == 7">Max Passes</add>
<add name="Scale" type="float" cond="Skyrim Shader Type == 7">Scale</add>
<add name="Parallax Inner Layer Thickness" type="float" cond="Skyrim Shader Type == 11">How far from the surface the inner layer appears to be.</add>
<add name="Parallax Refraction Scale" type="float" cond="Skyrim Shader Type == 11">Depth of inner parallax layer effect.</add>
<add name="Parallax Inner Layer Texture Scale" type="TexCoord" cond="Skyrim Shader Type == 11">Scales the inner parallax layer texture.</add>
<add name="Parallax Envmap Strength" type="float" cond="Skyrim Shader Type == 11">How strong the environment/cube map is. (0-??)</add>
<add name="Sparkle Parameters" type="Vector4" cond="Skyrim Shader Type == 14">CK lists "snow material" when used.</add>
<add name="Eye Cubemap Scale" type="float" cond="Skyrim Shader Type == 16">Eye cubemap scale</add>
<add name="Left Eye Reflection Center" type="Vector3" cond="Skyrim Shader Type == 16">Offset to set center for left eye cubemap</add>
<add name="Right Eye Reflection Center" type="Vector3" cond="Skyrim Shader Type == 16">Offset to set center for right eye cubemap</add>
</niobject>
<niobject name="BSEffectShaderProperty" abstract="0" inherit="BSShaderProperty">
Bethesda effect shader property for Skyrim and later.
<add name="Shader Flags 1" suffix="SK" type="SkyrimShaderPropertyFlags1" default="2147483648" vercond="(User Version 2 != 130)" />
<add name="Shader Flags 2" suffix="SK" type="SkyrimShaderPropertyFlags2" default="32" vercond="(User Version 2 != 130)" />
<add name="Shader Flags 1" suffix="FO4" type="Fallout4ShaderPropertyFlags1" default="2147483648" vercond="(User Version 2 == 130)" />
<add name="Shader Flags 2" suffix="FO4" type="Fallout4ShaderPropertyFlags2" default="32" vercond="(User Version 2 == 130)" />
<add name="UV Offset" type="TexCoord">Offset UVs</add>
<add name="UV Scale" type="TexCoord" default="1.0, 1.0">Offset UV Scale to repeat tiling textures</add>
<add name="Source Texture" type="SizedString">points to an external texture.</add>
<add name="Texture Clamp Mode" type="byte">How to handle texture borders.</add>
<add name="Lighting Influence" type="byte" />
<add name="Env Map Min LOD" type="byte" />
<add name="Unknown Byte" type="byte" />
<add name="Falloff Start Angle" type="float" default="1.0">At this cosine of angle falloff will be equal to Falloff Start Opacity</add>
<add name="Falloff Stop Angle" type="float" default="1.0">At this cosine of angle falloff will be equal to Falloff Stop Opacity</add>
<add name="Falloff Start Opacity" type="float">Alpha falloff multiplier at start angle</add>
<add name="Falloff Stop Opacity" type="float">Alpha falloff multiplier at end angle</add>
<add name="Emissive Color" type="Color4">Emissive color</add>
<add name="Emissive Multiple" type="float">Multiplier for Emissive Color (RGB part)</add>
<add name="Soft Falloff Depth" type="float"></add>
<add name="Greyscale Texture" type="SizedString">Points to an external texture, used as palette for SLSF1_Greyscale_To_PaletteColor/SLSF1_Greyscale_To_PaletteAlpha.</add>
<add name="Env Map Texture" type="SizedString" vercond="(User Version 2 == 130)" />
<add name="Normal Texture" type="SizedString" vercond="(User Version 2 == 130)" />
<add name="Env Mask Texture" type="SizedString" vercond="(User Version 2 == 130)" />
<add name="Environment Map Scale" type="float" vercond="(User Version 2 == 130)" />
</niobject>
<bitflags name="SkyrimWaterShaderFlags" storage="byte">
Skyrim water shader property flags
<option value="0" name="SWSF1_UNKNOWN0">Unknown</option>
<option value="1" name="SWSF1_Bypass_Refraction_Map">Bypasses refraction map when set to 1</option>
<option value="2" name="SWSF1_Water_Toggle">Main water Layer on/off</option>
<option value="3" name="SWSF1_UNKNOWN3">Unknown</option>
<option value="4" name="SWSF1_UNKNOWN4">Unknown</option>
<option value="5" name="SWSF1_UNKNOWN5">Unknown</option>
<option value="6" name="SWSF1_Highlight_Layer_Toggle">Reflection layer 2 on/off. (is this scene reflection?)</option>
<option value="7" name="SWSF1_Enabled">Water layer on/off</option>
</bitflags>
<niobject name="BSWaterShaderProperty" inherit="BSShaderProperty">
Skyrim water shader property, different from "WaterShaderProperty" seen in Fallout.
<add name="Shader Flags 1" type="SkyrimShaderPropertyFlags1"></add>
<add name="Shader Flags 2" type="SkyrimShaderPropertyFlags2"></add>
<add name="UV Offset" type="TexCoord">Offset UVs. Seems to be unused, but it fits with the other Skyrim shader properties.</add>
<add name="UV Scale" type="TexCoord" default="1.0, 1.0">Offset UV Scale to repeat tiling textures, see above.</add>
<add name="Water Shader Flags" type="SkyrimWaterShaderFlags">Defines attributes for the water shader (will use SkyrimWaterShaderFlags)</add>
<add name="Water Direction" type="byte" default="3">A bitflag, only the first/second bit controls water flow positive or negative along UVs.</add>
<add name="Unknown Short 3" type="ushort">Unknown, flag?</add>
</niobject>
<niobject name="BSSkyShaderProperty" inherit="BSShaderProperty">
Skyrim Sky shader block.
<add name="Shader Flags 1" type="SkyrimShaderPropertyFlags1"></add>
<add name="Shader Flags 2" type="SkyrimShaderPropertyFlags2"></add>
<add name="UV Offset" type="TexCoord">Offset UVs. Seems to be unused, but it fits with the other Skyrim shader properties.</add>
<add name="UV Scale" type="TexCoord" default="1.0, 1.0">Offset UV Scale to repeat tiling textures, see above.</add>
<add name="Source Texture" type="SizedString">points to an external texture.</add>
<add name="Sky Object Type" type="SkyObjectType" />
</niobject>
<niobject name="BSDismemberSkinInstance" abstract="0" inherit="NiSkinInstance">
Bethesda-specific skin instance.
<add name="Num Partitions" type="int" />
<add name="Partitions" type="BodyPartList" arr1="Num Partitions" />
</niobject>
<niobject name="BSDecalPlacementVectorExtraData" inherit="NiFloatExtraData">
Bethesda-specific extra data. Lists locations and normals on a mesh that are appropriate for decal placement.
<add name="Num Vector Blocks" type="short" />
<add name="Vector Blocks" type="DecalVectorArray" arr1="Num Vector Blocks" />
</niobject>
<niobject name="BSPSysSimpleColorModifier" inherit="NiPSysModifier">
Bethesda-specific particle modifier.
<add name="Fade In Percent" type="float" />
<add name="Fade out Percent" type="float" />
<add name="Color 1 End Percent" type="float" />
<add name="Color 1 Start Percent" type="float" />
<add name="Color 2 End Percent" type="float" />
<add name="Color 2 Start Percent" type="float" />
<add name="Colors" type="Color4" arr1="3" />
</niobject>
<bitflags name="BSValueNodeFlags" storage="byte">
Flags for BSValueNode.
<option value="0" name="BillboardWorldZ" />
<option value="1" name="UsePlayerAdjust" />
</bitflags>
<niobject name="BSValueNode" inherit="NiNode">
Bethesda-specific node. Found on fxFire effects
<add name="Value" type="uint" />
<add name="Value Node Flags" type="BSValueNodeFlags" />
</niobject>
<niobject name="BSStripParticleSystem" inherit="NiParticleSystem">
Bethesda-Specific (mesh?) Particle System.
</niobject>
<niobject name="BSStripPSysData" inherit="NiPSysData">
Bethesda-Specific (mesh?) Particle System Data.
<add name="Max Point Count" type="ushort" />
<add name="Start Cap Size" type="float" />
<add name="End Cap Size" type="float" />
<add name="Do Z Prepass" type="bool" />
</niobject>
<niobject name="BSPSysStripUpdateModifier" inherit="NiPSysModifier">
Bethesda-Specific (mesh?) Particle System Modifier.
<add name="Update Delta Time" type="float" />
</niobject>
<niobject name="BSMaterialEmittanceMultController" inherit="NiFloatInterpController">
Bethesda-Specific time controller.
</niobject>
<niobject name="BSMasterParticleSystem" inherit="NiNode">
Bethesda-Specific particle system.
<add name="Max Emitter Objects" type="ushort" />
<add name="Num Particle Systems" type="int" />
<add name="Particle Systems" type="Ref" template="NiAVObject" arr1="Num Particle Systems" />
</niobject>
<niobject name="BSPSysMultiTargetEmitterCtlr" inherit="NiPSysEmitterCtlr">
Particle system (multi?) emitter controller.
<add name="Max Emitters" type="ushort" />
<add name="Master Particle System" type="Ptr" template="BSMasterParticleSystem" />
</niobject>
<niobject name="BSRefractionStrengthController" inherit="NiFloatInterpController">
Bethesda-Specific time controller.
</niobject>
<niobject name="BSOrderedNode" inherit="NiNode">
Bethesda-Specific node.
<add name="Alpha Sort Bound" type="Vector4" />
<add name="Static Bound" type="bool" />
</niobject>
<niobject name="BSRangeNode" inherit="NiNode">
Bethesda-Specific node.
<add name="Min" type="byte" />
<add name="Max" type="byte" />
<add name="Current" type="byte" />
</niobject>
<niobject name="BSBlastNode" inherit="BSRangeNode">
Bethesda-Specific node.
</niobject>
<niobject name="BSDamageStage" inherit="BSBlastNode">
Bethesda-Specific node.
</niobject>
<niobject name="BSRefractionFirePeriodController" abstract="0" inherit="NiTimeController">
Bethesda-specific time controller.
<add name="Interpolator" type="Ref" template="NiInterpolator" ver1="20.2.0.7" />
</niobject>
<niobject name="bhkConvexListShape" abstract="0" inherit="bhkShape">
A havok shape.
A list of convex shapes.
Do not put a bhkPackedNiTriStripsShape in the Sub Shapes. Use a
separate collision nodes without a list shape for those.
Also, shapes collected in a bhkListShape may not have the correct
walking noise, so only use it for non-walkable objects.
<add name="Num Sub Shapes" type="uint" />
<add name="Sub Shapes" type="Ref" template="bhkConvexShape" arr1="Num Sub Shapes">List of shapes.</add>
<add name="Material" type="HavokMaterial">The material of the shape.</add>
<add name="Radius" type="float" />
<add name="Unknown Int 1" type="uint" />
<add name="Unknown Float 1" type="float" />
<add name="Child Shape Property" type="hkWorldObjCinfoProperty" />
<add name="Unknown Byte 1" type="byte" />
<add name="Unknown Float 2" type="float" />
</niobject>
<compound name="BSTreadTransform">
Bethesda-specific compound.
<add name="Name" type="string" />
<add name="Transform 1" type="NiQuatTransform" />
<add name="Transform 2" type="NiQuatTransform" />
</compound>
<niobject name="BSTreadTransfInterpolator" abstract="0" inherit="NiInterpolator">
Bethesda-specific interpolator.
<add name="Num Tread Transforms" type="int" />
<add name="Tread Transforms" type="BSTreadTransform" arr1="Num Tread Transforms" />
<add name="Data" type="Ref" template="NiFloatData" />
</niobject>
<enum name="AnimNoteType" storage="uint">
Anim note types.
<option value="0" name="ANT_INVALID">ANT_INVALID</option>
<option value="1" name="ANT_GRABIK">ANT_GRABIK</option>
<option value="2" name="ANT_LOOKIK">ANT_LOOKIK</option>
</enum>
<niobject name="BSAnimNote" abstract="0" inherit="NiObject">
Bethesda-specific object.
<add name="Type" type="AnimNoteType">Type of this note.</add>
<add name="Time" type="float">Location in time.</add>
<add name="Arm" type="uint" cond="Type == 1">Unknown.</add>
<add name="Gain" type="float" cond="Type == 2">Unknown.</add>
<add name="State" type="uint" cond="Type == 2">Unknown.</add>
</niobject>
<niobject name="BSAnimNotes" abstract="0" inherit="NiObject">
Bethesda-specific object.
<add name="Num Anim Notes" type="ushort">Number of BSAnimNote objects.</add>
<add name="Anim Notes" type="Ref" template="BSAnimNote" arr1="Num Anim Notes">BSAnimNote objects.</add>
</niobject>
<niobject name="bhkLiquidAction" inherit="bhkSerializable">
Bethesda-specific Havok serializable.
<add name="User Data" type="uint" />
<add name="Unknown Int 2" type="int">Unknown</add>
<add name="Unknown Int 3" type="int">Unknown</add>
<add name="Initial Stick Force" type="float" />
<add name="Stick Strength" type="float" />
<add name="Neighbor Distance" type="float" />
<add name="Neighbor Strength" type="float" />
</niobject>
<enum name="BSCPCullingType" storage="uint">
Culling modes for multi bound nodes.
<option value="0" name="BSCP_CULL_NORMAL">Normal</option>
<option value="1" name="BSCP_CULL_ALLPASS">All Pass</option>
<option value="2" name="BSCP_CULL_ALLFAIL">All Fail</option>
<option value="3" name="BSCP_CULL_IGNOREMULTIBOUNDS">Ignore Multi Bounds</option>
<option value="4" name="BSCP_CULL_FORCEMULTIBOUNDSNOUPDATE">Force Multi Bounds No Update</option>
</enum>
<niobject name="BSMultiBoundNode" inherit="NiNode">
Bethesda-specific node.
<add name="Multi Bound" type="Ref" template="BSMultiBound" />
<add name="Culling Mode" type="BSCPCullingType" vercond="(User Version 2 &gt;= 83)" />
</niobject>
<niobject name="BSMultiBound" inherit="NiObject">
Bethesda-specific object.
<add name="Data" type="Ref" template="BSMultiBoundData" />
</niobject>
<niobject name="BSMultiBoundData" inherit="NiObject">
Abstract base type for bounding data.
</niobject>
<niobject name="BSMultiBoundOBB" inherit="BSMultiBoundData">
Oriented bounding box.
<add name="Center" type="Vector3">Center of the box.</add>
<add name="Size" type="Vector3">Size of the box along each axis.</add>
<add name="Rotation" type="Matrix33">Rotation of the bounding box.</add>
</niobject>
<niobject name="BSMultiBoundSphere" inherit="BSMultiBoundData">
Bethesda-specific object.
<add name="Center" type="Vector3" />
<add name="Radius" type="float" />
</niobject>
<compound name="BSGeometrySubSegment">
This is only defined because of recursion issues.
<add name="Start Index" type="uint" />
<add name="Num Primitives" type="uint" />
<add name="Parent Array Index" type="uint" />
<add name="Unused" type="uint" />
</compound>
<compound name="BSGeometrySegmentData">
Bethesda-specific. Describes groups of triangles either segmented in a grid (for LOD) or by body part for skinned FO4 meshes.
<add name="Flags" type="byte" vercond="(User Version 2 &lt; 130)" />
<add name="Index" type="uint" vercond="(User Version 2 &lt; 130)">Index = previous Index + previous Num Tris in Segment * 3</add>
<add name="Num Tris in Segment" type="uint" vercond="(User Version 2 &lt; 130)">The number of triangles belonging to this segment</add>
<add name="Start Index" type="uint" userver2="130" />
<add name="Num Primitives" type="uint" userver2="130" />
<add name="Parent Array Index" type="uint" userver2="130" />
<add name="Num Sub Segments" type="uint" userver2="130" />
<add name="Sub Segment" type="BSGeometrySubSegment" arr1="Num Sub Segments" userver2="130" />
</compound>
<niobject name="BSSegmentedTriShape" inherit="NiTriShape">
Bethesda-specific AV object.
<add name="Num Segments" type="int" >Number of segments in the square grid</add>
<add name="Segment" type="BSGeometrySegmentData" arr1="Num Segments">Configuration of each segment</add>
</niobject>
<niobject name="BSMultiBoundAABB" inherit="BSMultiBoundData">
Bethesda-specific object.
<add name="Position" type="Vector3">Position of the AABB's center</add>
<add name="Extent" type="Vector3">Extent of the AABB in all directions</add>
</niobject>
<compound name="AdditionalDataInfo">
<add name="Data Type" type="int" >Type of data in this channel</add>
<add name="Num Channel Bytes Per Element" type="int" >Number of bytes per element of this channel</add>
<add name="Num Channel Bytes" type="int" >Total number of bytes of this channel (num vertices times num bytes per element)</add>
<add name="Num Total Bytes Per Element" type="int" >Number of bytes per element in all channels together. Sum of num channel bytes per element over all block infos.</add>
<add name="Block Index" type="int" >Unsure. The block in which this channel is stored? Usually there is only one block, and so this is zero.</add>
<add name="Channel Offset" type="int" >Offset (in bytes) of this channel. Sum of all num channel bytes per element of all preceeding block infos.</add>
<add name="Unknown Byte 1" type="byte" default="2">Unknown, usually equal to 2.</add>
</compound>
<compound name="AdditionalDataBlock">
<!-- todo: check if this is essentially the same as BSPackedAdditionalData, i.e. if this is identical to BSPackedAdditionalData minus its last two fields -->
<add name="Has Data" type="bool">Has data</add>
<add name="Block Size" type="int" cond="Has Data">Size of Block</add>
<add name="Num Blocks" type="int" cond="Has Data" />
<add name="Block Offsets" type="int" arr1="Num Blocks" cond="Has Data" />
<add name="Num Data" type="int" cond="Has Data" />
<add name="Data Sizes" type="int" arr1="Num Data" cond="Has Data" />
<add name="Data" type="byte" arr1="Num Data" arr2="Block Size" cond="Has Data" />
</compound>
<compound name="BSPackedAdditionalDataBlock">
<!-- see Fallout NV (nvdlc01vaultposter01.nif) -->
<add name="Has Data" type="bool">Has data</add>
<add name="Num Total Bytes" type="int" cond="Has Data">Total number of bytes (over all channels and all elements, equals num total bytes per element times num vertices).</add>
<add name="Num Blocks" type="int" cond="Has Data">Number of blocks? Usually equal to one.</add>
<add name="Block Offsets" type="int" arr1="Num Blocks" cond="Has Data">Block offsets in the data? Usually equal to zero.</add>
<add name="Num Atoms" type="int" cond="Has Data">Number of atoms?</add>
<add name="Atom Sizes" type="int" arr1="Num Atoms" cond="Has Data">The sum of all of these equal num total bytes per element, so this probably describes how each data element breaks down into smaller chunks (i.e. atoms).</add>
<add name="Data" type="byte" arr1="Num Total Bytes" cond="Has Data" />
<add name="Unknown Int 1" type="int" />
<add name="Num Total Bytes Per Element" type="int">Unsure, but this seems to correspond again to the number of total bytes per element.</add>
</compound>
<niobject name="NiAdditionalGeometryData" inherit="AbstractAdditionalGeometryData">
<add name="Num Vertices" type="ushort">Number of vertices</add>
<add name="Num Block Infos" type="uint">Information about additional data blocks</add>
<add name="Block Infos" type="AdditionalDataInfo" arr1="Num Block Infos">Number of additional data blocks</add>
<add name="Num Blocks" type="int">Number of additional data blocks</add>
<add name="Blocks" type="AdditionalDataBlock" arr1="Num Blocks">Number of additional data blocks</add>
</niobject>
<!-- Fallout NV (nvdlc01vaultposter01.nif) -->
<niobject name="BSPackedAdditionalGeometryData" inherit="AbstractAdditionalGeometryData">
<add name="Num Vertices" type="ushort" />
<add name="Num Block Infos" type="uint">Information about additional data blocks</add>
<add name="Block Infos" type="AdditionalDataInfo" arr1="Num Block Infos">Number of additional data blocks</add>
<add name="Num Blocks" type="int">Number of additional data blocks. Usually there is exactly one block.</add>
<add name="Blocks" type="BSPackedAdditionalDataBlock" arr1="Num Blocks">Number of additional data blocks</add>
</niobject>
<niobject name="BSWArray" inherit="NiExtraData">
Bethesda-specific extra data.
<add name="Num Items" type="int" />
<add name="Items" type="int" arr1="Num Items" />
</niobject>
<niobject name="bhkAabbPhantom" inherit="bhkShapePhantom">
Bethesda-specific Havok serializable.
<add name="Unused" type="byte" arr1="8" />
<add name="AABB Min" type="Vector4" />
<add name="AABB Max" type="Vector4" />
</niobject>
<niobject name="BSFrustumFOVController" inherit="NiFloatInterpController">
Bethesda-specific time controller.
</niobject>
<niobject name="BSDebrisNode" inherit="BSRangeNode">
Bethesda-Specific node.
</niobject>
<niobject name="bhkBreakableConstraint" abstract="0" inherit="bhkConstraint">
A breakable constraint.
<add name="Constraint Data" type="ConstraintData">Constraint within constraint.</add>
<add name="Threshold" type="float">Amount of force to break the rigid bodies apart?</add>
<add name="Remove When Broken" type="bool" default="0">No: Constraint stays active. Yes: Constraint gets removed when breaking threshold is exceeded.</add>
</niobject>
<niobject name="bhkOrientHingedBodyAction" abstract="0" inherit="bhkSerializable">
Bethesda-Specific Havok serializable.
<add name="Body" type="Ptr" template="bhkRigidBody" />
<add name="Unknown Int 1" type="uint" />
<add name="Unknown Int 2" type="uint" />
<add name="Unused 1" type="byte" arr1="8" />
<add name="Hinge Axis LS" type="Vector4" />
<add name="Forward LS" type="Vector4" />
<add name="Strength" type="float" />
<add name="Damping" type="float" />
<add name="Unused 2" type="byte" arr1="8" />
</niobject>
<niobject name="bhkPoseArray" inherit="NiObject">
Found in Fallout 3 .psa files, extra ragdoll info for NPCs/creatures. (usually idleanims\deathposes.psa)
Defines different kill poses. The game selects the pose randomly and applies it to a skeleton immediately upon ragdolling.
Poses can be previewed in GECK Object Window-Actor Data-Ragdoll and selecting Pose Matching tab.
<add name="Num Bones" type="int" />
<add name="Bones" type="string" arr1="Num Bones" />
<add name="Num Poses" type="int" />
<add name="Poses" type="BonePose" arr1="Num Poses" />
</niobject>
<niobject name="bhkRagdollTemplate" inherit="NiExtraData">
Found in Fallout 3, more ragdoll info? (meshes\ragdollconstraint\*.rdt)
<add name="Num Bones" type="int" />
<add name="Bones" type="Ref" template="NiObject" arr1="Num Bones" />
</niobject>
<niobject name="bhkRagdollTemplateData" inherit="NiObject">
Data for bhkRagdollTemplate
<add name="Name" type="string" />
<add name="Mass" type="float" default="9.0" />
<add name="Restitution" type="float" default="0.8" />
<add name="Friction" type="float" default="0.3" />
<add name="Radius" type="float" default="1.0" />
<add name="Material" type="HavokMaterial" />
<add name="Num Constraints" type="uint" />
<add name="Constraint" type="ConstraintData" arr1="Num Constraints" />
</niobject>
<compound name="Region">
A range of indices, which make up a region (such as a submesh).
<add name="Start Index" type="uint" />
<add name="Num Indices" type="uint" />
</compound>
<enum name="CloningBehavior" storage="uint">
Sets how objects are to be cloned.
<option value="0" name="CLONING_SHARE">Share this object pointer with the newly cloned scene.</option>
<option value="1" name="CLONING_COPY">Create an exact duplicate of this object for use with the newly cloned scene.</option>
<option value="2" name="CLONING_BLANK_COPY">Create a copy of this object for use with the newly cloned stream, leaving some of the data to be written later.</option>
</enum>
<enum name="ComponentFormat" storage="uint">
The data format of components.
<option value="0x00000000" name="F_UNKNOWN">Unknown, or don't care, format.</option>
<option value="0x00010101" name="F_INT8_1"></option>
<option value="0x00020102" name="F_INT8_2"></option>
<option value="0x00030103" name="F_INT8_3"></option>
<option value="0x00040104" name="F_INT8_4"></option>
<option value="0x00010105" name="F_UINT8_1"></option>
<option value="0x00020106" name="F_UINT8_2"></option>
<option value="0x00030107" name="F_UINT8_3"></option>
<option value="0x00040108" name="F_UINT8_4"></option>
<option value="0x00010109" name="F_NORMINT8_1"></option>
<option value="0x0002010A" name="F_NORMINT8_2"></option>
<option value="0x0003010B" name="F_NORMINT8_3"></option>
<option value="0x0004010C" name="F_NORMINT8_4"></option>
<option value="0x0001010D" name="F_NORMUINT8_1"></option>
<option value="0x0002010E" name="F_NORMUINT8_2"></option>
<option value="0x0003010F" name="F_NORMUINT8_3"></option>
<option value="0x00040110" name="F_NORMUINT8_4"></option>
<option value="0x00010211" name="F_INT16_1"></option>
<option value="0x00020212" name="F_INT16_2"></option>
<option value="0x00030213" name="F_INT16_3"></option>
<option value="0x00040214" name="F_INT16_4"></option>
<option value="0x00010215" name="F_UINT16_1"></option>
<option value="0x00020216" name="F_UINT16_2"></option>
<option value="0x00030217" name="F_UINT16_3"></option>
<option value="0x00040218" name="F_UINT16_4"></option>
<option value="0x00010219" name="F_NORMINT16_1"></option>
<option value="0x0002021A" name="F_NORMINT16_2"></option>
<option value="0x0003021B" name="F_NORMINT16_3"></option>
<option value="0x0004021C" name="F_NORMINT16_4"></option>
<option value="0x0001021D" name="F_NORMUINT16_1"></option>
<option value="0x0002021E" name="F_NORMUINT16_2"></option>
<option value="0x0003021F" name="F_NORMUINT16_3"></option>
<option value="0x00040220" name="F_NORMUINT16_4"></option>
<option value="0x00010421" name="F_INT32_1"></option>
<option value="0x00020422" name="F_INT32_2"></option>
<option value="0x00030423" name="F_INT32_3"></option>
<option value="0x00040424" name="F_INT32_4"></option>
<option value="0x00010425" name="F_UINT32_1"></option>
<option value="0x00020426" name="F_UINT32_2"></option>
<option value="0x00030427" name="F_UINT32_3"></option>
<option value="0x00040428" name="F_UINT32_4"></option>
<option value="0x00010429" name="F_NORMINT32_1"></option>
<option value="0x0002042A" name="F_NORMINT32_2"></option>
<option value="0x0003042B" name="F_NORMINT32_3"></option>
<option value="0x0004042C" name="F_NORMINT32_4"></option>
<option value="0x0001042D" name="F_NORMUINT32_1"></option>
<option value="0x0002042E" name="F_NORMUINT32_2"></option>
<option value="0x0003042F" name="F_NORMUINT32_3"></option>
<option value="0x00040430" name="F_NORMUINT32_4"></option>
<option value="0x00010231" name="F_FLOAT16_1"></option>
<option value="0x00020232" name="F_FLOAT16_2"></option>
<option value="0x00030233" name="F_FLOAT16_3"></option>
<option value="0x00040234" name="F_FLOAT16_4"></option>
<option value="0x00010435" name="F_FLOAT32_1"></option>
<option value="0x00020436" name="F_FLOAT32_2"></option>
<option value="0x00030437" name="F_FLOAT32_3"></option>
<option value="0x00040438" name="F_FLOAT32_4"></option>
<option value="0x00010439" name="F_UINT_10_10_10_L1"></option>
<option value="0x0001043A" name="F_NORMINT_10_10_10_L1"></option>
<option value="0x0001043B" name="F_NORMINT_11_11_10"></option>
<option value="0x0004013C" name="F_NORMUINT8_4_BGRA"></option>
<option value="0x0001043D" name="F_NORMINT_10_10_10_2"></option>
<option value="0x0001043E" name="F_UINT_10_10_10_2"></option>
</enum>
<enum name="DataStreamUsage" storage="uint">
Determines how a data stream is used?
<option value="0" name="USAGE_VERTEX_INDEX"></option>
<option value="1" name="USAGE_VERTEX"></option>
<option value="2" name="USAGE_SHADER_CONSTANT"></option>
<option value="3" name="USAGE_USER"></option>
</enum>
<bitflags name="DataStreamAccess" storage="uint">
Determines how the data stream is accessed?
<option value="0" name="CPU Read"></option>
<option value="1" name="CPU Write Static"></option>
<option value="2" name="CPU Write Mutable"></option>
<option value="3" name="CPU Write Volatile"></option>
<option value="4" name="GPU Read"></option>
<option value="5" name="GPU Write"></option>
<option value="6" name="CPU Write Static Inititialized"></option>
</bitflags>
<niobject name="NiDataStream" inherit="NiObject" abstract="0">
<add name="Usage" type="DataStreamUsage" abstract="1"></add>
<add name="Access" type="DataStreamAccess" abstract="1"></add>
<add name="Num Bytes" type="uint">The size in bytes of this data stream.</add>
<add name="Cloning Behavior" type="CloningBehavior" default="CLONING_SHARE" />
<add name="Num Regions" type="uint">Number of regions (such as submeshes).</add>
<add name="Regions" type="Region" arr1="Num Regions">The regions in the mesh. Regions can be used to mark off submeshes which are independent draw calls.</add>
<add name="Num Components" type="uint">Number of components of the data (matches corresponding field in MeshData).</add>
<add name="Component Formats" type="ComponentFormat" arr1="Num Components">The format of each component in this data stream.</add>
<add name="Data" type="byte" binary="1" arr1="Num Bytes" />
<add name="Streamable" type="bool" default="1" />
</niobject>
<compound name="SemanticData">
<add name="Name" type="string">
Type of data (POSITION, POSITION_BP, INDEX, NORMAL, NORMAL_BP,
TEXCOORD, BLENDINDICES, BLENDWEIGHT, BONE_PALETTE, COLOR, DISPLAYLIST,
MORPH_POSITION, BINORMAL_BP, TANGENT_BP).
</add>
<add name="Index" type="uint" default="0">
An extra index of the data. For example, if there are 3 uv maps,
then the corresponding TEXCOORD data components would have indices
0, 1, and 2, respectively.
</add>
</compound>
<compound name="DataStreamRef">
<add name="Stream" type="Ref" template="NiDataStream">
Reference to a data stream object which holds the data used by
this reference.
</add>
<add name="Is Per Instance" type="bool" default="0">
Sets whether this stream data is per-instance data for use in
hardware instancing.
</add>
<add name="Num Submeshes" type="ushort" default="1">
The number of submesh-to-region mappings that this data stream
has.
</add>
<add name="Submesh To Region Map" type="ushort" arr1="Num Submeshes">
<!-- see Zorsis Zombie_Boy.nif -->
A lookup table that maps submeshes to regions.
</add>
<add name="Num Components" type="uint" default="1" />
<add name="Component Semantics" type="SemanticData" arr1="Num Components">Describes the semantic of each component.</add>
</compound>
<niobject name="NiRenderObject" abstract="1" inherit="NiAVObject">
An object that can be rendered.
<add name="Material Data" type="MaterialData">Per-material data.</add>
</niobject>
<enum name="MeshPrimitiveType" storage="uint">
Describes the type of primitives stored in a mesh object.
<option value="0" name="MESH_PRIMITIVE_TRIANGLES">Triangle primitive type.</option>
<option value="1" name="MESH_PRIMITIVE_TRISTRIPS">Triangle strip primitive type.</option>
<option value="2" name="MESH_PRIMITIVE_LINES">Lines primitive type.</option>
<option value="3" name="MESH_PRIMITIVE_LINESTRIPS">Line strip primitive type.</option>
<option value="4" name="MESH_PRIMITIVE_QUADS">Quadrilateral primitive type.</option>
<option value="5" name="MESH_PRIMITIVE_POINTS">Point primitive type.</option>
</enum>
<enum name="SyncPoint" storage="ushort">
A sync point corresponds to a particular stage in per-frame processing.
<option value="0x8000" name="SYNC_ANY">Synchronize for any sync points that the modifier supports.</option>
<option value="0x8010" name="SYNC_UPDATE">Synchronize when an object is updated.</option>
<option value="0x8020" name="SYNC_POST_UPDATE">Synchronize when an entire scene graph has been updated.</option>
<option value="0x8030" name="SYNC_VISIBLE">Synchronize when an object is determined to be potentially visible.</option>
<option value="0x8040" name="SYNC_RENDER">Synchronize when an object is rendered.</option>
<option value="0x8050" name="SYNC_PHYSICS_SIMULATE">Synchronize when a physics simulation step is about to begin.</option>
<option value="0x8060" name="SYNC_PHYSICS_COMPLETED">Synchronize when a physics simulation step has produced results.</option>
<option value="0x8070" name="SYNC_REFLECTIONS">Synchronize after all data necessary to calculate reflections is ready.</option>
</enum>
<niobject name="NiMeshModifier" abstract="1" inherit="NiObject">
Base class for mesh modifiers.
<add name="Num Submit Points" type="uint" />
<add name="Submit Points" type="SyncPoint" arr1="Num Submit Points">The sync points supported by this mesh modifier for SubmitTasks.</add>
<add name="Num Complete Points" type="uint" />
<add name="Complete Points" type="SyncPoint" arr1="Num Complete Points">The sync points supported by this mesh modifier for CompleteTasks.</add>
</niobject>
<compound name="ExtraMeshDataEpicMickey">
<add name="Unknown Int 1" type="int" />
<add name="Unknown Int 2" type="int" />
<add name="Unknown Int 3" type="int" />
<add name="Unknown Int 4" type="float" />
<add name="Unknown Int 5" type="float" />
<add name="Unknown Int 6" type="float" />
</compound>
<compound name="ExtraMeshDataEpicMickey2">
<add name="Start" type="int" />
<add name="End" type="int" />
<add name="Unknown Shorts" type="short" arr1="10" />
</compound>
<niobject name="NiMesh" inherit="NiRenderObject">
<add name="Primitive Type" type="MeshPrimitiveType">The primitive type of the mesh, such as triangles or lines.</add>
<!-- start: epic mickey (user version 15) unknowns -->
<add name="Unknown 51" type="int" userver="15" /><!-- could also be some other type -->
<add name="Unknown 52" type="int" userver="15" /><!-- could also be some other type -->
<add name="Unknown 53" type="int" userver="15" /><!-- could also be some other type -->
<add name="Unknown 54" type="int" userver="15" /><!-- could also be some other type -->
<add name="Unknown 55" type="float" userver="15" /><!-- could also be some other type -->
<add name="Unknown 56" type="int" userver="15" /><!-- could also be some other type -->
<!-- end: epic mickey (user version 15) unknowns -->
<add name="Num Submeshes" type="ushort">The number of submeshes contained in this mesh.</add>
<add name="Instancing Enabled" type="bool">Sets whether hardware instancing is being used.</add>
<add name="Bound" type="NiBound">The combined bounding volume of all submeshes.</add>
<add name="Num Datastreams" type="uint" />
<add name="Datastreams" type="DataStreamRef" arr1="Num Datastreams" />
<add name="Num Modifiers" type="uint" />
<add name="Modifiers" type="Ref" template="NiMeshModifier" arr1="Num Modifiers" />
<!-- start: epic mickey (user version 15) unknowns -->
<add name="Unknown 100" type="byte" userver="15">Unknown.</add>
<add name="Unknown 101" type="int" userver="15">Unknown.</add>
<add name="Unknown 102" type="uint" userver="15">Size of additional data.</add>
<add name="Unknown 103" type="float" arr1="Unknown 102" userver="15" />
<add name="Unknown 200" type="int" userver="15" />
<add name="Unknown 201" type="ExtraMeshDataEpicMickey" arr1="Unknown 200" userver="15" />
<add name="Unknown 250" type="int" userver="15" />
<add name="Unknown 251" type="int" arr1="Unknown 250" userver="15" />
<add name="Unknown 300" type="int" userver="15" />
<add name="Unknown 301" type="short" userver="15" />
<add name="Unknown 302" type="int" userver="15" />
<add name="Unknown 303" type="byte" arr1="Unknown 302" userver="15" />
<add name="Unknown 350" type="int" userver="15" />
<add name="Unknown 351" type="ExtraMeshDataEpicMickey2" arr1="Unknown 350" userver="15" />
<add name="Unknown 400" type="int" userver="15" />
<!-- end: epic mickey (user version 15) unknowns -->
</niobject>
<niobject name="NiMorphWeightsController" inherit="NiInterpController">
Manipulates a mesh with the semantic MORPHWEIGHTS using an NiMorphMeshModifier.
<add name="Count" type="uint" />
<add name="Num Interpolators" type="uint" />
<add name="Interpolators" type="Ref" template="NiInterpolator" arr1="Num Interpolators" />
<add name="Num Targets" type="uint" />
<add name="Target Names" type="string" arr1="Num Targets" />
</niobject>
<compound name="ElementReference" ver1="20.5.0.0">
<add name="Semantic" type="SemanticData">The element semantic.</add>
<add name="Normalize Flag" type="uint">Whether or not to normalize the data.</add>
</compound>
<niobject name="NiMorphMeshModifier" inherit="NiMeshModifier">
Performs linear-weighted blending between a set of target data streams.
<add name="Flags" type="byte">
FLAG_RELATIVETARGETS = 0x01
FLAG_UPDATENORMALS = 0x02
FLAG_NEEDSUPDATE = 0x04
FLAG_ALWAYSUPDATE = 0x08
FLAG_NEEDSCOMPLETION = 0x10
FLAG_SKINNED = 0x20
FLAG_SWSKINNED = 0x40
</add>
<add name="Num Targets" type="ushort">The number of morph targets.</add>
<add name="Num Elements" type="uint">The number of morphing data stream elements.</add>
<add name="Elements" type="ElementReference" arr1="Num Elements">Semantics and normalization of the morphing data stream elements.</add>
</niobject>
<niobject name="NiSkinningMeshModifier" inherit="NiMeshModifier">
<add name="Flags" type="ushort">
USE_SOFTWARE_SKINNING = 0x0001
RECOMPUTE_BOUNDS = 0x0002
</add>
<add name="Skeleton Root" type="Ptr" template="NiAVObject">The root bone of the skeleton.</add>
<add name="Skeleton Transform" type="NiTransform">The transform that takes the root bone parent coordinate system into the skin coordinate system.</add>
<add name="Num Bones" type="uint">The number of bones referenced by this mesh modifier.</add>
<add name="Bones" type="Ptr" template="NiAVObject" arr1="Num Bones">Pointers to the bone nodes that affect this skin.</add>
<add name="Bone Transforms" type="NiTransform" arr1="Num Bones">The transforms that go from bind-pose space to bone space.</add>
<add name="Bone Bounds" type="NiBound" cond="(Flags &amp; 2)!=0" arr1="Num Bones">The bounds of the bones. Only stored if the RECOMPUTE_BOUNDS bit is set.</add>
</niobject>
<niobject name="NiMeshHWInstance" inherit="NiAVObject">
An instance of a hardware-instanced mesh in a scene graph.
<add name="Master Mesh" type="Ref" template="NiMesh">The instanced mesh this object represents.</add>
<add name="Mesh Modifier" type="Ref" template="NiInstancingMeshModifier" />
</niobject>
<niobject name="NiInstancingMeshModifier" inherit="NiMeshModifier">
Mesh modifier that provides per-frame instancing capabilities in Gamebryo.
<add name="Has Instance Nodes" type="bool" />
<add name="Per Instance Culling" type="bool" />
<add name="Has Static Bounds" type="bool" />
<add name="Affected Mesh" type="Ref" template="NiMesh" />
<add name="Bound" type="NiBound" cond="Has Static Bounds" />
<add name="Num Instance Nodes" type="uint" cond="Has Instance Nodes" />
<add name="Instance Nodes" type="Ref" template="NiMeshHWInstance" arr1="Num Instance Nodes" cond="Has Instance Nodes" />
</niobject>
<compound name="LODInfo">
<add name="Num Bones" type="uint" />
<add name="Num Active Skins" type="uint" />
<add name="Skin Indices" type="uint" arr1="Num Active Skins" />
</compound>
<niobject name="NiSkinningLODController" inherit="NiTimeController">
Defines the levels of detail for a given character and dictates the character's current LOD.
<add name="Current LOD" type="uint" />
<add name="Num Bones" type="uint" />
<add name="Bones" type="Ref" template="NiNode" arr1="Num Bones" />
<add name="Num Skins" type="uint" />
<add name="Skins" type="Ref" template="NiMesh" arr1="Num Skins" />
<add name="Num LOD Levels" type="uint" />
<add name="LODs" type="LODInfo" arr1="Num LOD Levels" />
</niobject>
<!-- NiPS Particle System -->
<compound name="PSSpawnRateKey">
<add name="Value" type="float" />
<add name="Time" type="float" />
</compound>
<enum name="AlignMethod" storage="uint">
Describes the various methods that may be used to specify the orientation of the particles.
<option value="0" name="ALIGN_INVALID" />
<option value="1" name="ALIGN_PER_PARTICLE" />
<option value="2" name="ALIGN_LOCAL_FIXED" />
<option value="5" name="ALIGN_LOCAL_POSITION" />
<option value="9" name="ALIGN_LOCAL_VELOCITY" />
<option value="16" name="ALIGN_CAMERA" />
</enum>
<niobject name="NiPSParticleSystem" inherit="NiMesh">
Represents a particle system.
<add name="Simulator" type="Ref" template="NiPSSimulator" />
<add name="Generator" type="Ref" template="NiPSBoundUpdater" />
<add name="Num Emitters" type="uint" />
<add name="Emitters" type="Ref" template="NiPSEmitter" arr1="Num Emitters" />
<add name="Num Spawners" type="uint" />
<add name="Spawners" type="Ref" template="NiPSSpawner" arr1="Num Spawners" />
<add name="Death Spawner" type="Ref" template="NiPSSpawner" />
<add name="Max Num Particles" type="uint" />
<add name="Has Colors" type="bool" />
<add name="Has Rotations" type="bool" />
<add name="Has Rotation Axes" type="bool" />
<add name="Has Animated Textures" type="bool" ver1="20.6.1.0" />
<add name="World Space" type="bool" />
<add name="Normal Method" type="AlignMethod" ver1="20.6.1.0" />
<add name="Normal Direction" type="Vector3" ver1="20.6.1.0" />
<add name="Up Method" type="AlignMethod" ver1="20.6.1.0" />
<add name="Up Direction" type="Vector3" ver1="20.6.1.0" />
<add name="Living Spawner" type="Ref" template="NiPSSpawner" ver1="20.6.1.0" />
<add name="Num Spawn Rate Keys" type="byte" ver1="20.6.1.0" />
<add name="Spawn Rate Keys" type="PSSpawnRateKey" arr1="Num Spawn Rate Keys" ver1="20.6.1.0" />
<add name="Pre-RPI" type="bool" ver1="20.6.1.0" />
</niobject>
<niobject name="NiPSMeshParticleSystem" inherit="NiPSParticleSystem">
Represents a particle system that uses mesh particles instead of sprite-based particles.
<add name="Num Generations" type="uint" />
<add name="Master Particles" type="Ref" template="NiAVObject" arr1="Num Generations" />
<add name="Pool Size" type="uint" />
<add name="Auto-Fill Pools" type="bool" />
</niobject>
<!-- NiPS Generators -->
<niobject name="NiPSFacingQuadGenerator" inherit="NiMeshModifier">
A mesh modifier that uses particle system data to generate camera-facing quads.
</niobject>
<niobject name="NiPSAlignedQuadGenerator" inherit="NiMeshModifier">
A mesh modifier that uses particle system data to generate aligned quads for each particle.
<add name="Scale Amount U" type="float" />
<add name="Scale Limit U" type="float" />
<add name="Scale Rest U" type="float" />
<add name="Scale Amount V" type="float" />
<add name="Scale Limit V" type="float" />
<add name="Scale Rest V" type="float" />
<add name="Center U " type="float" />
<add name="Center V" type="float" />
<add name="UV Scrolling" type="bool" />
<add name="Num Frames Across" type="ushort" />
<add name="Num Frames Down" type="ushort" />
<add name="Ping Pong" type="bool" />
<add name="Initial Frame" type="ushort" />
<add name="Initial Frame Variation" type="float" />
<add name="Num Frames" type="ushort" />
<add name="Num Frames Variation" type="float" />
<add name="Initial Time" type="float" />
<add name="Final Time" type="float" />
</niobject>
<!-- NiPS Simulators -->
<niobject name="NiPSSimulator" inherit="NiMeshModifier">
The mesh modifier that performs all particle system simulation.
<add name="Num Simulation Steps" type="uint" />
<add name="Simulation Steps" type="Ref" template="NiPSSimulatorStep" arr1="Num Simulation Steps" />
</niobject>
<niobject name="NiPSSimulatorStep" inherit="NiObject" abstract="1">
Abstract base class for a single step in the particle system simulation process. It has no seralized data.
</niobject>
<enum name="PSLoopBehavior" ver1="20.5.0.0" storage="uint">
<option name="PS_LOOP_CLAMP_BIRTH" value="0">Key times map such that the first key occurs at the birth of the particle, and times later than the last key get the last key value.</option>
<option name="PS_LOOP_CLAMP_DEATH" value="1">Key times map such that the last key occurs at the death of the particle, and times before the initial key time get the value of the initial key.</option>
<option name="PS_LOOP_AGESCALE" value="2">Scale the animation to fit the particle lifetime, so that the first key is age zero, and the last key comes at the particle death.</option>
<option name="PS_LOOP_LOOP" value="3">The time is converted to one within the time range represented by the keys, as if the key sequence loops forever in the past and future.</option>
<option name="PS_LOOP_REFLECT" value="4">The time is reflection looped, as if the keys played forward then backward the forward then backward etc for all time.</option>
</enum>
<niobject name="NiPSSimulatorGeneralStep" inherit="NiPSSimulatorStep">
Encapsulates a floodgate kernel that updates particle size, colors, and rotations.
<add name="Num Size Keys" type="byte" ver1="20.6.1.0" />
<add name="Size Keys" type="Key" template="float" arg="1" arr1="Num Size Keys" ver1="20.6.1.0">The particle size keys.</add>
<add name="Size Loop Behavior" type="PSLoopBehavior" ver1="20.6.1.0">The loop behavior for the size keys.</add>
<add name="Num Color Keys" type="byte" />
<add name="Color Keys" type="Key" template="ByteColor4" arg="1" arr1="Num Color Keys">The particle color keys.</add>
<add name="Color Loop Behavior" type="PSLoopBehavior" ver1="20.6.1.0">The loop behavior for the color keys.</add>
<add name="Num Rotation Keys" type="byte" ver1="20.6.1.0" />
<add name="Rotation Keys" type="QuatKey" template="Quaternion" arg="1" arr1="Num Rotation Keys" ver1="20.6.1.0">The particle rotation keys.</add>
<add name="Rotation Loop Behavior" type="PSLoopBehavior" ver1="20.6.1.0">The loop behavior for the rotation keys.</add>
<add name="Grow Time" type="float"> The the amount of time over which a particle's size is ramped from 0.0 to 1.0 in seconds</add>
<add name="Shrink Time" type="float">The the amount of time over which a particle's size is ramped from 1.0 to 0.0 in seconds</add>
<add name="Grow Generation" type="ushort">Specifies the particle generation to which the grow effect should be applied. This is usually generation 0, so that newly created particles will grow.</add>
<add name="Shrink Generation" type="ushort">Specifies the particle generation to which the shrink effect should be applied. This is usually the highest supported generation for the particle system, so that particles will shrink immediately before getting killed.</add>
</niobject>
<niobject name="NiPSSimulatorForcesStep" inherit="NiPSSimulatorStep">
Encapsulates a floodgate kernel that simulates particle forces.
<add name="Num Forces" type="uint" />
<add name="Forces" type="Ref" template="NiPSForce" arr1="Num Forces">The forces affecting the particle system.</add>
</niobject>
<niobject name="NiPSSimulatorCollidersStep" inherit="NiPSSimulatorStep">
Encapsulates a floodgate kernel that simulates particle colliders.
<add name="Num Colliders" type="uint" />
<add name="Colliders" type="Ref" template="NiPSCollider" arr1="Num Colliders">The colliders affecting the particle system.</add>
</niobject>
<niobject name="NiPSSimulatorMeshAlignStep" inherit="NiPSSimulatorStep">
Encapsulates a floodgate kernel that updates mesh particle alignment and transforms.
<add name="Num Rotation Keys" type="byte" />
<add name="Rotation Keys" type="QuatKey" template="Quaternion" arg="1" arr1="Num Rotation Keys">The particle rotation keys.</add>
<add name="Rotation Loop Behavior" type="PSLoopBehavior">The loop behavior for the rotation keys.</add>
</niobject>
<niobject name="NiPSSimulatorFinalStep" inherit="NiPSSimulatorStep">
Encapsulates a floodgate kernel that updates particle positions and ages. As indicated by its name, this step should be attached last in the NiPSSimulator mesh modifier.
</niobject>
<niobject name="NiPSBoundUpdater" inherit="NiObject">
Updates the bounding volume for an NiPSParticleSystem object.
<add name="Update Skip" type="ushort">Number of particle bounds to skip updating every frame. Higher = more updates each frame.</add>
</niobject>
<!-- NiPS Forces -->
<enum name="PSForceType" storage="uint">
This is used by the Floodgate kernel to determine which NiPSForceHelpers functions to call.
<option value="0" name="FORCE_BOMB" />
<option value="1" name="FORCE_DRAG" />
<option value="2" name="FORCE_AIR_FIELD" />
<option value="3" name="FORCE_DRAG_FIELD" />
<option value="4" name="FORCE_GRAVITY_FIELD" />
<option value="5" name="FORCE_RADIAL_FIELD" />
<option value="6" name="FORCE_TURBULENCE_FIELD" />
<option value="7" name="FORCE_VORTEX_FIELD" />
<option value="8" name="FORCE_GRAVITY" />
</enum>
<niobject name="NiPSForce" abstract="1" inherit="NiObject">
Abstract base class for all particle forces.
<add name="Name" type="string" />
<add name="Type" type="PSForceType" />
<add name="Active" type="bool" />
</niobject>
<niobject name="NiPSDragForce" inherit="NiPSForce">
Applies a linear drag force to particles.
<add name="Drag Axis" type="Vector3" />
<add name="Percentage" type="float" />
<add name="Range" type="float" />
<add name="Range Falloff" type="float" />
<add name="Drag Object" type="Ptr" template="NiAVObject" />
</niobject>
<niobject name="NiPSGravityForce" inherit="NiPSForce">
Applies a gravitational force to particles.
<add name="Gravity Axis" type="Vector3" />
<add name="Decay" type="float" />
<add name="Strength" type="float" />
<add name="Force Type" type="ForceType" />
<add name="Turbulence" type="float" />
<add name="Turbulence Scale" type="float" />
<add name="Gravity Object" type="Ptr" template="NiAVObject" />
</niobject>
<niobject name="NiPSBombForce" inherit="NiPSForce">
Applies an explosive force to particles.
<add name="Bomb Axis" type="Vector3" />
<add name="Decay" type="float" />
<add name="Delta V" type="float" />
<add name="Decay Type" type="DecayType" />
<add name="Symmetry Type" type="SymmetryType" />
<add name="Bomb Object" type="Ptr" template="NiAVObject" />
</niobject>
<!-- NiPS Emitters -->
<niobject name="NiPSEmitter" abstract="1" inherit="NiObject">
Abstract base class for all particle emitters.
<add name="Name" type="string" />
<add name="Speed" type="float" />
<add name="Speed Var" type="float" />
<add name="Speed Flip Ratio" type="float" ver1="20.6.1.0" />
<add name="Declination" type="float" />
<add name="Declination Var" type="float" />
<add name="Planar Angle" type="float" />
<add name="Planar Angle Var" type="float" />
<add name="Color" type="ByteColor4" ver2="20.6.0.0" />
<add name="Size" type="float" />
<add name="Size Var" type="float" />
<add name="Lifespan" type="float" />
<add name="Lifespan Var" type="float" />
<add name="Rotation Angle" type="float" />
<add name="Rotation Angle Var" type="float" />
<add name="Rotation Speed" type="float" />
<add name="Rotation Speed Var" type="float" />
<add name="Rotation Axis" type="Vector3" />
<add name="Random Rot Speed Sign" type="bool" />
<add name="Random Rot Axis" type="bool" />
<add name="Unknown" type="bool" ver1="30.0.0.0" ver2="30.0.0.1" />
</niobject>
<niobject name="NiPSVolumeEmitter" abstract="1" inherit="NiPSEmitter">
Abstract base class for particle emitters that emit particles from a volume.
<add name="Emitter Object" type="Ptr" template="NiAVObject" />
</niobject>
<niobject name="NiPSBoxEmitter" inherit="NiPSVolumeEmitter">
A particle emitter that emits particles from a rectangular volume.
<add name="Emitter Width" type="float" />
<add name="Emitter Height" type="float" />
<add name="Emitter Depth" type="float" />
</niobject>
<niobject name="NiPSSphereEmitter" inherit="NiPSVolumeEmitter">
A particle emitter that emits particles from a spherical volume.
<add name="Emitter Radius" type="float" />
</niobject>
<niobject name="NiPSCylinderEmitter" inherit="NiPSVolumeEmitter">
A particle emitter that emits particles from a cylindrical volume.
<add name="Emitter Radius" type="float" />
<add name="Emitter Height" type="float" />
</niobject>
<niobject name="NiPSMeshEmitter" inherit="NiPSEmitter">
Emits particles from one or more NiMesh objects. A random mesh emitter is selected for each particle emission.
<add name="Num Mesh Emitters" type="uint" />
<add name="Mesh Emitters" type="Ptr" template="NiMesh" arr1="Num Mesh Emitters" />
<add name="Emit Axis" type="Vector3" ver2="20.6.0.0" />
<add name="Emitter Object" type="Ptr" template="NiAVObject" ver1="20.6.1.0" />
<add name="Mesh Emission Type" type="EmitFrom" />
<add name="Initial Velocity Type" type="VelocityType" />
</niobject>
<!-- NiPS Controllers -->
<niobject name="NiPSEmitterCtlr" abstract="1" inherit="NiSingleInterpController">
Abstract base class for all particle emitter time controllers.
<add name="Emitter Name" type="string" />
</niobject>
<niobject name="NiPSEmitterFloatCtlr" abstract="1" inherit="NiPSEmitterCtlr">
Abstract base class for controllers that animate a floating point value on an NiPSEmitter object.
</niobject>
<niobject name="NiPSEmitParticlesCtlr" inherit="NiPSEmitterCtlr">
Animates particle emission and birth rate.
<add name="Emitter Active Interpolator" type="Ref" template="NiInterpolator" />
</niobject>
<niobject name="NiPSForceCtlr" abstract="1" inherit="NiSingleInterpController">
Abstract base class for all particle force time controllers.
<add name="Force Name" type="string" />
</niobject>
<niobject name="NiPSForceBoolCtlr" abstract="1" inherit="NiPSForceCtlr">
Abstract base class for controllers that animate a Boolean value on an NiPSForce object.
</niobject>
<niobject name="NiPSForceFloatCtlr" abstract="1" inherit="NiPSForceCtlr">
Abstract base class for controllers that animate a floating point value on an NiPSForce object.
</niobject>
<niobject name="NiPSForceActiveCtlr" inherit="NiPSForceBoolCtlr">
Animates whether or not an NiPSForce object is active.
</niobject>
<niobject name="NiPSGravityStrengthCtlr" inherit="NiPSForceFloatCtlr">
Animates the strength value of an NiPSGravityForce object.
</niobject>
<niobject name="NiPSEmitterSpeedCtlr" inherit="NiPSEmitterFloatCtlr">
Animates the speed value on an NiPSEmitter object.
</niobject>
<niobject name="NiPSEmitterRadiusCtlr" inherit="NiPSEmitterFloatCtlr">
Animates the size value on an NiPSEmitter object.
</niobject>
<niobject name="NiPSEmitterDeclinationCtlr" inherit="NiPSEmitterFloatCtlr">
Animates the declination value on an NiPSEmitter object.
</niobject>
<niobject name="NiPSEmitterDeclinationVarCtlr" inherit="NiPSEmitterFloatCtlr">
Animates the declination variation value on an NiPSEmitter object.
</niobject>
<niobject name="NiPSEmitterPlanarAngleCtlr" inherit="NiPSEmitterFloatCtlr">
Animates the planar angle value on an NiPSEmitter object.
</niobject>
<niobject name="NiPSEmitterPlanarAngleVarCtlr" inherit="NiPSEmitterFloatCtlr">
Animates the planar angle variation value on an NiPSEmitter object.
</niobject>
<niobject name="NiPSEmitterRotAngleCtlr" inherit="NiPSEmitterFloatCtlr">
Animates the rotation angle value on an NiPSEmitter object.
</niobject>
<niobject name="NiPSEmitterRotAngleVarCtlr" inherit="NiPSEmitterFloatCtlr">
Animates the rotation angle variation value on an NiPSEmitter object.
</niobject>
<niobject name="NiPSEmitterRotSpeedCtlr" inherit="NiPSEmitterFloatCtlr">
Animates the rotation speed value on an NiPSEmitter object.
</niobject>
<niobject name="NiPSEmitterRotSpeedVarCtlr" inherit="NiPSEmitterFloatCtlr">
Animates the rotation speed variation value on an NiPSEmitter object.
</niobject>
<niobject name="NiPSEmitterLifeSpanCtlr" inherit="NiPSEmitterFloatCtlr">
Animates the lifespan value on an NiPSEmitter object.
</niobject>
<niobject name="NiPSResetOnLoopCtlr" inherit="NiTimeController">
Calls ResetParticleSystem on an NiPSParticleSystem target upon looping.
</niobject>
<!-- NiPS Colliders -->
<enum name="ColliderType" storage="uint">
This is used by the Floodgate kernel to determine which NiPSColliderHelpers functions to call.
<option value="0" name="COLLIDER_PLANAR" />
<option value="1" name="COLLIDER_SPHERICAL" />
</enum>
<niobject name="NiPSCollider" inherit="NiObject">
Abstract base class for all particle colliders.
<add name="Spawner" type="Ref" template="NiPSSpawner" />
<add name="Type" type="ColliderType" />
<add name="Active" type="bool" />
<add name="Bounce" type="float" />
<add name="Spawn on Collide" type="bool" />
<add name="Die on Collide" type="bool" />
</niobject>
<niobject name="NiPSPlanarCollider" inherit="NiPSCollider">
A planar collider for particles.
<add name="Width" type="float" />
<add name="Height" type="float" />
<add name="X Axis" type="Vector3" />
<add name="Y Axis" type="Vector3" />
<add name="Collider Object" type="Ptr" template="NiAVObject" />
</niobject>
<niobject name="NiPSSphericalCollider" inherit="NiPSCollider">
A spherical collider for particles.
<add name="Radius" type="float" />
<add name="Collider Object" type="Ptr" template="NiAVObject" />
</niobject>
<niobject name="NiPSSpawner" inherit="NiObject">
Creates a new particle whose initial parameters are based on an existing particle.
<add name="Master Particle System" type="Ptr" template="NiPSParticleSystem" ver1="20.6.1.0" />
<add name="Percentage Spawned" type="float" />
<add name="Spawn Speed Factor" type="float" ver1="20.6.1.0" />
<add name="Spawn Speed Factor Var" type="float" />
<add name="Spawn Dir Chaos" type="float" />
<add name="Life Span" type="float" />
<add name="Life Span Var" type="float" />
<add name="Num Spawn Generations" type="ushort" />
<add name="Min to Spawn" type="uint" />
<add name="Max to Spawn" type="uint" />
</niobject>
<niobject name="NiEvaluator" abstract="1" inherit="NiObject">
<add name="Node Name" type="string">The name of the animated NiAVObject.</add>
<add name="Property Type" type="string">The RTTI type of the NiProperty the controller is attached to, if applicable.</add>
<add name="Controller Type" type="string">The RTTI type of the NiTimeController.</add>
<add name="Controller ID" type="string">An ID that can uniquely identify the controller among others of the same type on the same NiObjectNET.</add>
<add name="Interpolator ID" type="string">An ID that can uniquely identify the interpolator among others of the same type on the same NiObjectNET.</add>
<add name="Channel Types" type="byte" arr1="4">
Channel Indices are BASE/POS = 0, ROT = 1, SCALE = 2, FLAG = 3
Channel Types are:
INVALID = 0, COLOR, BOOL, FLOAT, POINT3, ROT = 5
Any channel may be | 0x40 which means POSED
The FLAG (3) channel flags affects the whole evaluator:
REFERENCED = 0x1, TRANSFORM = 0x2, ALWAYSUPDATE = 0x4, SHUTDOWN = 0x8
</add>
</niobject>
<niobject name="NiKeyBasedEvaluator" abstract="1" inherit="NiEvaluator" />
<niobject name="NiBoolEvaluator" inherit="NiKeyBasedEvaluator">
<add name="Data" type="Ref" template="NiBoolData" />
</niobject>
<niobject name="NiBoolTimelineEvaluator" inherit="NiBoolEvaluator" />
<niobject name="NiColorEvaluator" inherit="NiKeyBasedEvaluator">
<add name="Data" type="Ref" template="NiColorData" />
</niobject>
<niobject name="NiFloatEvaluator" inherit="NiKeyBasedEvaluator">
<add name="Data" type="Ref" template="NiFloatData" />
</niobject>
<niobject name="NiPoint3Evaluator" inherit="NiKeyBasedEvaluator">
<add name="Data" type="Ref" template="NiPosData" />
</niobject>
<niobject name="NiQuaternionEvaluator" inherit="NiKeyBasedEvaluator">
<add name="Data" type="Ref" template="NiRotData" />
</niobject>
<niobject name="NiTransformEvaluator" inherit="NiKeyBasedEvaluator">
<add name="Value" type="NiQuatTransform" />
<add name="Data" type="Ref" template="NiTransformData" />
</niobject>
<niobject name="NiConstBoolEvaluator" inherit="NiEvaluator">
<add name="Value" type="float" default="-3.402823466e+38" /> <!-- Yes, this is actually a float. -->
</niobject>
<niobject name="NiConstColorEvaluator" inherit="NiEvaluator">
<add name="Value" type="Color4" default="-3.402823466e+38, -3.402823466e+38, -3.402823466e+38, -3.402823466e+38" />
</niobject>
<niobject name="NiConstFloatEvaluator" inherit="NiEvaluator">
<add name="Value" type="float" default="-3.402823466e+38" />
</niobject>
<niobject name="NiConstPoint3Evaluator" inherit="NiEvaluator">
<add name="Value" type="Vector3" default="-3.402823466e+38, -3.402823466e+38, -3.402823466e+38" />
</niobject>
<niobject name="NiConstQuaternionEvaluator" inherit="NiEvaluator">
<add name="Value" type="Quaternion" default="-3.402823466e+38, -3.402823466e+38, -3.402823466e+38, -3.402823466e+38" />
</niobject>
<niobject name="NiConstTransformEvaluator" inherit="NiEvaluator">
<add name="Value" type="NiQuatTransform" />
</niobject>
<niobject name="NiBSplineEvaluator" inherit="NiEvaluator">
<add name="Start Time" type="float" default="3.402823466e+38" />
<add name="End Time" type="float" default="-3.402823466e+38" />
<add name="Data" type="Ref" template="NiBSplineData" />
<add name="Basis Data" type="Ref" template="NiBSplineBasisData" />
</niobject>
<niobject name="NiBSplineColorEvaluator" inherit="NiBSplineEvaluator">
<add name="Handle" type="uint" default="0xFFFF">Handle into the data. (USHRT_MAX for invalid handle.)</add>
</niobject>
<niobject name="NiBSplineCompColorEvaluator" inherit="NiBSplineColorEvaluator">
<add name="Offset" type="float" default="3.402823466e+38" />
<add name="Half Range" type="float" default="3.402823466e+38" />
</niobject>
<niobject name="NiBSplineFloatEvaluator" inherit="NiBSplineEvaluator">
<add name="Handle" type="uint" default="0xFFFF">Handle into the data. (USHRT_MAX for invalid handle.)</add>
</niobject>
<niobject name="NiBSplineCompFloatEvaluator" inherit="NiBSplineFloatEvaluator">
<add name="Offset" type="float" default="3.402823466e+38" />
<add name="Half Range" type="float" default="3.402823466e+38" />
</niobject>
<niobject name="NiBSplinePoint3Evaluator" inherit="NiBSplineEvaluator">
<add name="Handle" type="uint" default="0xFFFF">Handle into the data. (USHRT_MAX for invalid handle.)</add>
</niobject>
<niobject name="NiBSplineCompPoint3Evaluator" inherit="NiBSplinePoint3Evaluator">
<add name="Offset" type="float" default="3.402823466e+38" />
<add name="Half Range" type="float" default="3.402823466e+38" />
</niobject>
<niobject name="NiBSplineTransformEvaluator" inherit="NiBSplineEvaluator">
<add name="Transform" type="NiQuatTransform" />
<add name="Translation Handle" type="uint" default="0xFFFF">Handle into the translation data. (USHRT_MAX for invalid handle.)</add>
<add name="Rotation Handle" type="uint" default="0xFFFF">Handle into the rotation data. (USHRT_MAX for invalid handle.)</add>
<add name="Scale Handle" type="uint" default="0xFFFF">Handle into the scale data. (USHRT_MAX for invalid handle.)</add>
</niobject>
<niobject name="NiBSplineCompTransformEvaluator" inherit="NiBSplineTransformEvaluator">
<add name="Translation Offset" type="float" default="3.402823466e+38" />
<add name="Translation Half Range" type="float" default="3.402823466e+38" />
<add name="Rotation Offset" type="float" default="3.402823466e+38" />
<add name="Rotation Half Range" type="float" default="3.402823466e+38" />
<add name="Scale Offset" type="float" default="3.402823466e+38" />
<add name="Scale Half Range" type="float" default="3.402823466e+38" />
</niobject>
<niobject name="NiLookAtEvaluator" inherit="NiEvaluator">
<add name="Flags" type="LookAtFlags" />
<add name="Look At Name" type="string" />
<add name="Driven Name" type="string" />
<add name="Interpolator: Translation" type="Ref" template="NiPoint3Interpolator" />
<add name="Interpolator: Roll" type="Ref" template="NiFloatInterpolator" />
<add name="Interpolator: Scale" type="Ref" template="NiFloatInterpolator" />
</niobject>
<niobject name="NiPathEvaluator" inherit="NiKeyBasedEvaluator">
<add name="Flags" type="PathFlags" default="3" />
<add name="Bank Dir" type="int" default="1">-1 = Negative, 1 = Positive</add>
<add name="Max Bank Angle" type="float">Max angle in radians.</add>
<add name="Smoothing" type="float" />
<add name="Follow Axis" type="short">0, 1, or 2 representing X, Y, or Z.</add>
<add name="Path Data" type="Ref" template="NiPosData" />
<add name="Percent Data" type="Ref" template="NiFloatData" />
</niobject>
<niobject name="NiSequenceData" inherit="NiObject">
Root node in Gamebryo .kf files (20.5.0.1 and up).
For 20.5.0.0, "NiSequenceData" is an alias for "NiControllerSequence" and this is not handled in nifxml.
This was not found in any 20.5.0.0 KFs available and they instead use NiControllerSequence directly.
<add name="Name" type="string" />
<!-- Pre-Evaluator -->
<add name="Num Controlled Blocks" type="uint" ver2="20.5.0.1" />
<add name="Array Grow By" type="uint" ver2="20.5.0.1" />
<add name="Controlled Blocks" type="ControlledBlock" arr1="Num Controlled Blocks" ver2="20.5.0.1" />
<!-- Evaluator -->
<add name="Num Evaluators" type="uint" ver1="20.5.0.2" />
<add name="Evaluators" type="Ref" template="NiEvaluator" arr1="Num Evaluators" ver1="20.5.0.2" />
<add name="Text Keys" type="Ref" template="NiTextKeyExtraData" />
<add name="Duration" type="float" />
<add name="Cycle Type" type="CycleType" />
<add name="Frequency" type="float" default="1.0" />
<add name="Accum Root Name" type="string">The name of the NiAVObject serving as the accumulation root. This is where all accumulated translations, scales, and rotations are applied.</add>
<add name="Accum Flags" type="AccumFlags" default="ACCUM_X_FRONT" />
</niobject>
<niobject name="NiShadowGenerator" inherit="NiObject">
An NiShadowGenerator object is attached to an NiDynamicEffect object to inform the shadowing system that the effect produces shadows.
<add name="Name" type="string" />
<add name="Flags" type="ushort" />
<add name="Num Shadow Casters" type="uint" />
<add name="Shadow Casters" type="Ref" template="NiNode" arr1="Num Shadow Casters" />
<add name="Num Shadow Receivers" type="uint" />
<add name="Shadow Receivers" type="Ref" template="NiNode" arr1="Num Shadow Receivers" />
<add name="Target" type="Ptr" template="NiDynamicEffect" />
<add name="Depth Bias" type="float" default="0.98" />
<add name="Size Hint" type="ushort" />
<add name="Near Clipping Distance" type="float" ver1="20.3.0.7" />
<add name="Far Clipping Distance" type="float" ver1="20.3.0.7" />
<add name="Directional Light Frustum Width" type="float" ver1="20.3.0.7" />
</niobject>
<niobject name="NiFurSpringController" inherit="NiTimeController"><!-- BloodBowl -->
<add name="Unknown Float" type="float"></add>
<add name="Unknown Float 2" type="float"></add>
<add name="Num Bones" type="uint">The number of node bones referenced as influences.</add>
<add name="Bones" type="Ptr" template="NiNode" arr1="Num Bones">List of all armature bones.</add>
<add name="Num Bones 2" type="uint">The number of node bones referenced as influences.</add>
<add name="Bones 2" type="Ptr" template="NiNode" arr1="Num Bones 2">List of all armature bones.</add>
</niobject>
<!-- Divinity 2 (P_Island_VerySmall_A.item) -->
<niobject name="CStreamableAssetData" inherit="NiObject">
<add name="Root" type="Ref" template="NiNode" />
<add name="Unknown Bytes" type="byte" arr1="5" />
</niobject>
<!-- Skyrim specific havok block -->
<niobject name="bhkCompressedMeshShape" inherit="bhkShape">
Compressed collision mesh.
<add name="Target" type="Ptr" template="NiAVObject">Points to root node?</add>
<add name="User Data" type="uint">Unknown.</add>
<add name="Radius" type="float" default="0.005">A shell that is added around the shape.</add>
<add name="Unknown Float 1" type="float">Unknown.</add>
<add name="Scale" type="Vector4" default="1.0, 1.0, 1.0, 0.0">Scale</add>
<add name="Radius Copy" type="float" default="0.005">A shell that is added around the shape.</add>
<add name="Scale Copy" type="Vector4" default="1.0, 1.0, 1.0, 0.0">Scale</add>
<add name="Data" type="Ref" template="bhkCompressedMeshShapeData">The collision mesh data.</add>
</niobject>
<niobject name="bhkCompressedMeshShapeData" inherit="bhkRefObject">
A compressed mesh shape for collision in Skyrim.
<add name="Bits Per Index" type="uint">Number of bits in the shape-key reserved for a triangle index</add>
<add name="Bits Per W Index" type="uint">Number of bits in the shape-key reserved for a triangle index and its winding</add>
<add name="Mask W Index" type="uint">Mask used to get the triangle index and winding from a shape-key (common: 262143 = 0x3ffff)</add>
<add name="Mask Index" type="uint">Mask used to get the triangle index from a shape-key (common: 131071 = 0x1ffff)</add>
<add name="Error" type="float">The radius of the storage mesh shape? Quantization error?</add>
<add name="Bounds Min" type="Vector4">The minimum boundary of the AABB (the coordinates of the corner with the lowest numerical values)</add>
<add name="Bounds Max" type="Vector4">The maximum boundary of the AABB (the coordinates of the corner with the highest numerical values)</add>
<add name="Welding Type" type="byte" />
<add name="Material Type" type="byte" />
<add name="Num Materials 32" type="uint" />
<add name="Materials 32" type="uint" arr1="Num Materials 32">Does not appear to be used.</add>
<add name="Num Materials 16" type="uint" />
<add name="Materials 16" type="uint" arr1="Num Materials 16">Does not appear to be used.</add>
<add name="Num Materials 8" type="uint" />
<add name="Materials 8" type="uint" arr1="Num Materials 8">Does not appear to be used.</add>
<add name="Num Materials" type="uint">Number of chunk materials</add>
<add name="Chunk Materials" type="bhkCMSDMaterial" arr1="Num Materials">Table (array) with sets of materials. Chunks refers to this table by index.</add>
<add name="Num Named Materials" type="uint" />
<add name="Num Transforms" type="uint">Number of chunk transformations</add>
<add name="Chunk Transforms" type="bhkCMSDTransform" arr1="Num Transforms">Table (array) with sets of transformations. Chunks refers to this table by index.</add>
<add name="Num Big Verts" type="uint" />
<add name="Big Verts" type="Vector4" arr1="Num Big Verts">Compressed Vertices?</add>
<add name="Num Big Tris" type="uint" />
<add name="Big Tris" type="bhkCMSDBigTris" arr1="Num Big Tris" />
<add name="Num Chunks" type="uint" />
<add name="Chunks" type="bhkCMSDChunk" arr1="Num Chunks" />
<add name="Num Convex Piece A" type="uint">Does not appear to be used. Needs array.</add>
</niobject>
<!-- Skyrim specific blocks -->
<niobject name="BSInvMarker" abstract="0" inherit="NiExtraData">
Orientation marker for Skyrim's inventory view.
How to show the nif in the player's inventory.
Typically attached to the root node of the nif tree.
If not present, then Skyrim will still show the nif in inventory,
using the default values.
Name should be 'INV' (without the quotes).
For rotations, a short of "4712" appears as "4.712" but "959" appears as "0.959" meshes\weapons\daedric\daedricbowskinned.nif
<add name="Rotation X" type="ushort" default="4712"></add>
<add name="Rotation Y" type="ushort" default="6283"></add>
<add name="Rotation Z" type="ushort" default="0"></add>
<add name="Zoom" type="float" default="1.0">Zoom factor.</add>
</niobject>
<niobject name="BSBoneLODExtraData" inherit="NiExtraData">
Unknown
<add name="BoneLOD Count" type="uint">Number of bone entries</add>
<add name="BoneLOD Info" type="BoneLOD" arr1="BoneLOD Count">Bone Entry</add>
</niobject>
<niobject name="BSBehaviorGraphExtraData" inherit="NiExtraData">
Links a nif with a Havok Behavior .hkx animation file
<add name="Behaviour Graph File" type="string">Name of the hkx file.</add>
<add name="Controls Base Skeleton" type="bool">Unknown, has to do with blending appended bones onto an actor.</add>
</niobject>
<niobject name="BSLagBoneController" inherit="NiTimeController">
A controller that trails a bone behind an actor.
<add name="Linear Velocity" type="float">How long it takes to rotate about an actor back to rest position.</add>
<add name="Linear Rotation" type="float">How the bone lags rotation</add>
<add name="Maximum Distance" type="float">How far bone will tail an actor.</add>
</niobject>
<niobject name="BSLODTriShape" inherit="NiTriBasedGeom">
A variation on NiTriShape, for visibility control over vertex groups.
<add name="LOD0 Size" type="uint" />
<add name="LOD1 Size" type="uint" />
<add name="LOD2 Size" type="uint" />
</niobject>
<niobject name="BSFurnitureMarkerNode" inherit="BSFurnitureMarker">
Furniture Marker for actors
</niobject>
<niobject name="BSLeafAnimNode" inherit="NiNode">
Unknown, related to trees.
</niobject>
<niobject name="BSTreeNode" inherit="NiNode">
Node for handling Trees, Switches branch configurations for variation?
<add name="Num Bones 1" type="uint" />
<add name="Bones 1" type="Ref" arr1="Num Bones 1" template="NiNode">Unknown</add>
<add name="Num Bones 2" type="uint" />
<add name="Bones" type="Ref" arr1="Num Bones 2" template="NiNode">Unknown</add>
</niobject>
<!-- Fallout 4 Geometry -->
<niobject name="BSTriShape" abstract="0" inherit="NiAVObject">
Fallout 4 Tri Shape
<add name="Bounding Sphere" type="NiBound" />
<add name="Skin" type="Ref" template="NiObject" />
<add name="Shader Property" type="Ref" template="BSShaderProperty" />
<add name="Alpha Property" type="Ref" template="NiAlphaProperty" />
<add name="Vertex Desc" type="BSVertexDesc" />
<add name="Num Triangles" type="uint" userver2="130" />
<add name="Num Triangles" type="ushort" vercond="User Version 2 &lt; 130" />
<add name="Num Vertices" type="ushort" />
<add name="Data Size" type="uint" />
<add name="Vertex Data" type="BSVertexData" arr1="Num Vertices" arg="Vertex Desc\Vertex Attributes" cond="Data Size &gt; 0" userver2="130" />
<add name="Vertex Data" type="BSVertexDataSSE" arr1="Num Vertices" arg="Vertex Desc\Vertex Attributes" cond="Data Size &gt; 0" userver2="100" />
<add name="Triangles" type="Triangle" arr1="Num Triangles" cond="Data Size &gt; 0" />
<add name="Particle Data Size" type="uint" userver2="100" />
<add name="Vertices" type="Vector3" arr1="Num Vertices" cond="Particle Data Size &gt; 0" userver2="100" />
<add name="Triangles Copy" type="Triangle" arr1="Num Triangles" cond="Particle Data Size &gt; 0" userver2="100" />
</niobject>
<niobject name="BSMeshLODTriShape" inherit="BSTriShape">
Fallout 4 LOD Tri Shape
<add name="LOD0 Size" type="uint" />
<add name="LOD1 Size" type="uint" />
<add name="LOD2 Size" type="uint" />
</niobject>
<compound name="BSGeometryPerSegmentSharedData">
<add name="User Index" type="uint">If Bone ID is 0xffffffff, this value refers to the Segment at the listed index. Otherwise this is the "Biped Object", which is like the body part types in Skyrim and earlier.</add>
<add name="Bone ID" type="uint">A hash of the bone name string.</add>
<add name="Num Cut Offsets" type="uint">Maximum of 8.</add>
<add name="Cut Offsets" type="float" arr1="Num Cut Offsets" />
</compound>
<compound name="BSGeometrySegmentSharedData">
<add name="Num Segments" type="uint" />
<add name="Total Segments" type="uint" />
<add name="Segment Starts" type="uint" arr1="Num Segments" />
<add name="Per Segment Data" type="BSGeometryPerSegmentSharedData" arr1="Total Segments" />
<!-- TODO: Actual ShortString type (current "ShortString" is actually a byte) -->
<add name="SSF Length" type="ushort" />
<add name="SSF File" type="byte" arr1="SSF Length" />
</compound>
<niobject name="BSSubIndexTriShape" inherit="BSTriShape">
Fallout 4 Sub-Index Tri Shape
<add name="Num Primitives" type="uint" userver2="130" cond="Data Size &gt; 0" />
<add name="Num Segments" type="uint" userver2="130" cond="Data Size &gt; 0" />
<add name="Total Segments" type="uint" userver2="130" cond="Data Size &gt; 0" />
<add name="Segment" type="BSGeometrySegmentData" userver2="130" arr1="Num Segments" cond="Data Size &gt; 0" />
<add name="Segment Data" type="BSGeometrySegmentSharedData" userver2="130" cond="(Num Segments &lt; Total Segments) &amp;&amp; (Data Size &gt; 0)" />
<add name="Num Segments" type="uint" userver2="100" />
<add name="Segment" type="BSGeometrySegmentData" userver2="100" arr1="Num Segments" />
</niobject>
<!-- Fallout 4 Physics -->
<niobject name="bhkSystem" abstract="1" inherit="NiObject">
Fallout 4 Physics System
</niobject>
<niobject name="bhkNPCollisionObject" inherit="NiCollisionObject">
Fallout 4 Collision Object
<add name="Flags" type="ushort">
Due to inaccurate reporting in the CK the Reset and Sync On Update positions are a guess.
Bits: 0=Reset, 2=Notify, 3=SetLocal, 7=SyncOnUpdate, 10=AnimTargeted
</add>
<add name="Data" type="Ref" template="bhkSystem" />
<add name="Body ID" type="uint" />
</niobject>
<niobject name="bhkPhysicsSystem" inherit="bhkSystem">
Fallout 4 Collision System
<add name="Binary Data" type="ByteArray" />
</niobject>
<niobject name="bhkRagdollSystem" inherit="bhkSystem">
Fallout 4 Ragdoll System
<add name="Binary Data" type="ByteArray" />
</niobject>
<niobject name="BSExtraData" inherit="NiExtraData">
Fallout 4 Extra Data
</niobject>
<niobject name="BSClothExtraData" inherit="BSExtraData">
Fallout 4 Cloth data
<add name="Binary Data" type="ByteArray" />
</niobject>
<!-- Fallout 4 Skeleton -->
<compound name="BSSkinBoneTrans">
Fallout 4 Bone Transform
<add name="Bounding Sphere" type="NiBound" />
<add name="Rotation" type="Matrix33" />
<add name="Translation" type="Vector3" />
<add name="Scale" type="float" />
</compound>
<niobject name="BSSkin::Instance" inherit="NiObject">
Fallout 4 Skin Instance
<add name="Skeleton Root" type="Ptr" template="NiAVObject" />
<add name="Data" type="Ref" template="BSSkin::BoneData" />
<add name="Num Bones" type="uint" />
<add name="Bones" type="Ptr" template="NiNode" arr1="Num Bones" />
<add name="Num Unknown" type="uint" />
<add name="Unknown" type="Vector3" arr1="Num Unknown" />
</niobject>
<niobject name="BSSkin::BoneData" inherit="NiObject">
Fallout 4 Bone Data
<add name="Num Bones" type="uint" />
<add name="Bone List" type="BSSkinBoneTrans" arr1="Num Bones" />
</niobject>
<niobject name="BSPositionData" inherit="NiExtraData">
Fallout 4 Positional Data
<add name="Num Data" type="uint" />
<add name="Data" type="hfloat" arr1="Num Data" />
</niobject>
<compound name="BSConnectPoint">
<add name="Parent" type="SizedString" default="WorkshopConnectPoints" />
<add name="Name" type="SizedString" />
<add name="Rotation" type="Quaternion" />
<add name="Translation" type="Vector3" />
<add name="Scale" type="float" default="1.0" />
</compound>
<niobject name="BSConnectPoint::Parents" inherit="NiExtraData">
Fallout 4 Item Slot Parent
<add name="Num Connect Points" type="uint" />
<add name="Connect Points" type="BSConnectPoint" arr1="Num Connect Points" />
</niobject>
<niobject name="BSConnectPoint::Children" inherit="NiExtraData">
Fallout 4 Item Slot Child
<add name="Skinned" type="bool" />
<add name="Num Points" type="int" />
<add name="Name" type="SizedString" arr1="Num Points" />
</niobject>
<niobject name="BSEyeCenterExtraData" inherit="NiExtraData">
Fallout 4 Eye Center Data
<add name="Num Data" type="int" />
<add name="Data" type="float" arr1="Num Data" />
</niobject>
<compound name="BSPackedGeomDataCombined">
<add name="Grayscale to Palette Scale" type="float" />
<add name="Transform" type="NiTransform" />
<add name="Bounding Sphere" type="NiBound" />
</compound>
<compound name="BSPackedGeomData">
<add name="Num Verts" type="uint" />
<add name="LOD Levels" type="uint" />
<add name="Tri Count LOD0" type="uint" />
<add name="Tri Offset LOD0" type="uint" />
<add name="Tri Count LOD1" type="uint" />
<add name="Tri Offset LOD1" type="uint" />
<add name="Tri Count LOD2" type="uint" />
<add name="Tri Offset LOD2" type="uint" />
<add name="Num Combined" type="uint" />
<add name="Combined" type="BSPackedGeomDataCombined" arr1="Num Combined" />
<add name="Vertex Desc" type="BSVertexDesc" />
<add name="Vertex Data" type="BSVertexData" arr1="Num Verts" arg="Vertex Desc\Vertex Attributes" cond="!BSPackedCombinedSharedGeomDataExtra" />
<add name="Triangles" type="Triangle" arr1="Tri Count LOD0 + Tri Count LOD1 + Tri Count LOD2" cond="!BSPackedCombinedSharedGeomDataExtra" />
</compound>
<compound name="BSPackedGeomObject">
This appears to be a 64-bit hash but nif.xml does not have a 64-bit type.
<add name="Shape ID 1" type="uint" />
<add name="Shape ID 2" type="uint" />
</compound>
<niobject name="BSPackedCombinedGeomDataExtra" inherit="NiExtraData">
Fallout 4 Packed Combined Geometry Data.
Geometry is baked into the file and given a list of transforms to position each copy.
<add name="Vertex Desc" type="BSVertexDesc" />
<add name="Num Vertices" type="uint" />
<add name="Num Triangles" type="uint" />
<add name="Unknown Flags 1" type="uint" />
<add name="Unknown Flags 2" type="uint" />
<add name="Num Data" type="uint" />
<add name="Object" type="BSPackedGeomObject" arr1="Num Data" cond="BSPackedCombinedSharedGeomDataExtra" />
<add name="Object Data" type="BSPackedGeomData" arr1="Num Data" />
</niobject>
<niobject name="BSPackedCombinedSharedGeomDataExtra" inherit="BSPackedCombinedGeomDataExtra">
Fallout 4 Packed Combined Shared Geometry Data.
Geometry is NOT baked into the file. It is instead a reference to the shape via a Shape ID (currently undecoded)
which loads the geometry via the STAT form for the NIF.
</niobject>
<!-- Fallout 4 Animation -->
<niobject name="NiLightRadiusController" inherit="NiFloatInterpController">
</niobject>
<!-- Skyrim SE -->
<niobject name="BSDynamicTriShape" inherit="BSTriShape">
<add name="Vertex Data Size" type="uint" />
<add name="Vertices" type="Vector4" arr1="Num Vertices" cond="Vertex Data Size &gt; 0" />
</niobject>
<niobject name="BSDistantObjectLargeRefExtraData" abstract="0" inherit="NiExtraData">
Large ref flag.
<add name="Large Ref" type="bool" />
</niobject>
</niftoolsxml>