diff --git a/nif.xml b/nif.xml index fedc4ef1705f4882bbc4af096897e222acc86ec4..9b81e4ca192c22588507f81dec6ef03bcebee6f6 100644 --- a/nif.xml +++ b/nif.xml @@ -1776,10 +1776,8 @@ </compound> <compound name="BallAndSocketDescriptor"> - <add name="Unknown 4 bytes" type="byte" arr1="4">Unknown</add> - <add name="Unknown Floats 1" type="Vector3">Unknown</add> - <add name="Unknown Floats 2" type="Vector3">Unknown</add> - <add name="Unknown Int 1" type="uint">Unknown</add> + <add name="Translation A" type="Vector4" /> + <add name="Translation B" type="Vector4" /> </compound> <compound name="PrismaticDescriptor"> @@ -2576,9 +2574,9 @@ </niobject> <niobject name="NiAVObject" abstract="1" inherit="NiObjectNET"> - Generic node object. - <add name="Flags" type="Flags" ver1="3.0">Some flags; commonly 0x000C or 0x000A.</add> - <add name="Unknown Short 1" type="ushort" default="8" ver1="20.2.0.7" vercond="(User Version >= 11) && (User Version 2 > 26)" >Unknown Flag</add> + Base audiovisual object. + <add name="Flags" type="Flags" ver1="3.0" vercond="!((Version == 20.2.0.7) && (User Version >= 11) && (User Version 2 > 26))">Basic flags for AV objects; commonly 0x000C or 0x000A.</add> + <add name="Flags" type="uint" default="14" vercond="(Version == 20.2.0.7) && (User Version >= 11) && (User Version 2 > 26)">Basic flags for AV objects.</add> <!-- TODO use MTransform --> <add name="Translation" type="Vector3">The translation vector.</add> <add name="Rotation" type="Matrix33">The rotation part of the transformation matrix.</add> @@ -3206,7 +3204,7 @@ <niobject name="NiCamera" abstract="0" inherit="NiAVObject"> Camera object. - <add name="Unknown Short" type="ushort" ver1="10.1.0.0">Unknown.</add> + <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> @@ -3219,10 +3217,10 @@ <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="Unknown Link" type="Ref" template="NiObject">Unknown.</add> - <add name="Unknown Int" type="uint">Unknown. Changing value crashes viewer.</add> - <add name="Unknown Int 2" type="uint" ver1="4.2.1.0">Unknown. Changing value crashes viewer.</add> - <add name="Unknown Int 3" type ="uint" ver2="3.1">Unknown.</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"> @@ -3492,11 +3490,17 @@ <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"> A node used to switch between branches, such as for LOD levels? - <add name="Unknown Flags 1" type="ushort" ver1="10.1.0.0">Flags</add> - <add name="Unknown Int 1" type="int">Index?</add> + <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"> @@ -3826,7 +3830,7 @@ <add name="Force Type" type="ForceType">Planar or Spherical type</add> <add name="Turbulence" type="float">Adds a degree of randomness.</add> <add name="Turbulence Scale" type="float" default="1.0">Range for turbulence.</add> - <add name="Unknown Byte" type="byte" ver1="20.2.0.7" vercond="User Version >= 11">Unknown</add> + <add name="World Aligned" type="bool" ver1="20.2.0.7" vercond="User Version >= 11" /> </niobject> <niobject name="NiPSysGrowFadeModifier" abstract="0" inherit="NiPSysModifier"> @@ -3855,10 +3859,10 @@ </niobject> <niobject name="BSPSysInheritVelocityModifier" abstract="0" inherit="NiPSysModifier"> - <add name="Unknown Int 1" type="uint">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="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"> @@ -3868,13 +3872,9 @@ </niobject> <niobject name="BSPSysRecycleBoundModifier" abstract="0" inherit="NiPSysModifier"> - <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 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 Int 1" type="uint">Unknown</add> + <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"> @@ -3973,10 +3973,10 @@ </niobject> <niobject name="BSPSysLODModifier" inherit="NiPSysModifier"> - <add name="Uknown Float 1" type="float">Unknown</add> - <add name="Uknown Float 2" type="float">Unknown</add> - <add name="Uknown Float 3" type="float">Unknown</add> - <add name="Uknown Float 4" type="float">Unknown</add> + <add name="LOD Begin Distance" type="float" /> + <add name="LOD End Distance" type="float" /> + <add name="Unknown Fade Factor 1" type="float" /> + <add name="Unknown Fade Factor 2" type="float" /> </niobject> <niobject name="BSPSysScaleModifier" inherit="NiPSysModifier"> @@ -5305,10 +5305,16 @@ </niobject> + <bitflags name="BSValueNodeFlags" storage="byte"> + Flags for BSValueNode. + <option value="0" name="BillboardWorldZ">Billboard World Z</option> + <option value="1" name="UsePlayerAdjust">Use Player Adjust</option> + </bitflags> + <niobject name="BSValueNode" inherit="NiNode"> Bethesda-Specific node. Found on fxFire effects - <add name="Value" type="int">Value</add> - <add name="Unknown byte" type="byte">Unknown</add> + <add name="Value" type="uint">Value</add> + <add name="Value Node Flags" type="BSValueNodeFlags">Value node flags.</add> </niobject> @@ -5319,10 +5325,10 @@ <niobject name="BSStripPSysData" inherit="NiPSysData"> Bethesda-Specific (mesh?) Particle System Data. - <add name="Unknown Short 5" type="short">Unknown</add> - <add name="Unknown Byte 6" type="byte">Unknown</add> - <add name="Unknown Int 7" type="int">Unknown</add> - <add name="Unknown Float 8" type="float">Unknown</add> + <add name="Max Point Count" type="short" /> + <add name="Start Cap Size" type="uint" /> + <add name="End Cap Size" type="uint" /> + <add name="Do Z Prepass" type="bool" /> </niobject> @@ -5351,8 +5357,8 @@ Particle system (multi?) emitter controller. <add name="Data" type="Ref" template="NiPSysEmitterCtlrData" ver2="10.1.0.0">This controller's data</add> <add name="Visibility Interpolator" type="Ref" template="NiInterpolator" ver1="10.2.0.0">Links to a bool interpolator. Controls emitter's visibility status?</add> - <add name="Unknown Short 1" type="short">Unknown</add> - <add name="Unknown Int 1" type="int">Unknown</add> + <add name="Max Emitters" type="ushort" /> + <add name="Master Particle System" type="Ptr" template="BSMasterParticleSystem" /> </niobject> @@ -5364,21 +5370,23 @@ <niobject name="BSOrderedNode" inherit="NiNode"> Bethesda-Specific node. <add name="Alpha Sort Bound" type="Vector4">Unknown</add> - <add name="Is Static Bound" type="byte">Unknown</add> + <add name="Static Bound" type="bool">Unknown</add> </niobject> - <niobject name="BSBlastNode" inherit="NiNode"> + <niobject name="BSRangeNode" inherit="NiNode"> Bethesda-Specific node. - <add name="Unknown Byte 1" type="byte">Unknown</add> - <add name="Unknown Short 2" type="short">Unknown</add><!-- Unknown Short 1 already used in NiNode --> + <add name="Min" type="byte">Min</add> + <add name="Max" type="byte">Max</add> + <add name="Current" type="byte">Current</add> </niobject> + <niobject name="BSBlastNode" inherit="BSRangeNode"> + Bethesda-Specific node. + </niobject> - <niobject name="BSDamageStage" inherit="NiNode"> + <niobject name="BSDamageStage" inherit="BSBlastNode"> Bethesda-Specific node. - <add name="Unknown Byte 1" type="byte">Unknown</add> - <add name="Unknown Short 2" type="short">Unknown</add><!-- Unknown Short 1 already used in NiNode --> </niobject> @@ -5463,17 +5471,25 @@ <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">Unknown.</add> - <add name="Unknown Int" type="uint" ver1="20.2.0.7" vercond="(User Version >= 12)">Unknown</add> + <add name="Multi Bound" type="Ref" template="BSMultiBound" /> + <add name="Culling Mode" type="BSCPCullingType" vercond="(User Version 2 >= 83)" /> </niobject> <niobject name="BSMultiBound" inherit="NiObject"> Bethesda-specific node. - <add name="Data" type="Ref" template="BSMultiBoundData">Unknown.</add> + <add name="Data" type="Ref" template="BSMultiBoundData" /> </niobject> - <niobject name="BSMultiBoundData" inherit="NiObject"> Abstract base type for bounding data. @@ -5488,9 +5504,7 @@ <niobject name="BSMultiBoundSphere" inherit="BSMultiBoundData"> Bethesda-specific node. - <add name="Unknown Int 1" type="int">Unknown Flag</add> - <add name="Unknown Int 2" type="int">Unknown Flag</add> - <add name="Unknown Int 3" type="int">Unknown Flag</add> + <add name="Center" type="Vector3">Center</add> <add name="Radius" type="float">Radius</add> </niobject> @@ -5577,10 +5591,8 @@ <add name="Interpolator" type="Ref" template="NiFloatInterpolator">Frustrum field of view animation interpolater and data.</add> </niobject> - <niobject name="BSDebrisNode" inherit="NiNode"> + <niobject name="BSDebrisNode" inherit="BSRangeNode"> Bethesda-Specific node. - <add name="Unknown byte 1" type="byte">Unknown</add> - <add name="Unknown Short 2" type="short">Unknown</add> </niobject> <niobject name="bhkBreakableConstraint" abstract="0" inherit="bhkConstraint">