Skip to content

Nif Format Description - 0.9.0

Latest
Compare
Choose a tag to compare
@neomonkeus neomonkeus released this 17 Dec 23:11
· 170 commits to master since this release
3242995

Release version 0.9.0

  • Header compound overhaul. Wider version support, correct versioning, decoding of all unknowns.
  • Removal of niflibtype - generators must map this internally.
  • NiPhysX block decoding
  • NiPS* block decoding
  • NiEvaluator (20.5+ KF) decoding
  • NiMesh skinning block decoding
  • Added 30.2.0.3 support to <version>
  • Major documentation changes at block and row level
  • Type narrowing for Ref and Ptr where possible
  • Major structural changes to:
    • NiBSpline* blocks
    • NiControllerSequence
    • NiSourceTexture
    • NiPixelData and NiPersistentSrcTextureRendererData
    • NiMesh/NiGeometry - moved shared data into a compound

New Attributes

  • prefix for enum/bitflags. It is used for prepending to each enum option name where necessary.
  • suffix for add. It is appended to the name of the add where necessary.

Required Parser Changes

  • [ALL PARSERS] For arg attribute, you must support \ to mean compound member accessor. For example Vertex Desc\Vertex Attributes for the compound BSVertexDesc.
  • If using C-style enums that need unique enumerator names, you must combine the prefix and the name on enum/bitflags.
  • If generating class variables in a strongly typed language, you must append the suffix to the variable name. The suffix is provided when multiple <add> use the same name but the type differs per version. They are always exclusive by version but sometimes the type changes.

Addition and Complete Decoding

20.5+ Animation

NiSequenceData           NiConstBoolEvaluator        NiBSplinePoint3Evaluator    
NiEvaluator              NiConstFloatEvaluator       NiBSplineCompPoint3Evaluator   
NiKeyBasedEvaluator      NiConstPoint3Evaluator      NiBSplineTransformEvaluator    
NiBoolEvaluator          NiConstQuaternionEvaluator  NiBSplineCompTransformEvaluator
NiBoolTimelineEvaluator  NiConstTransformEvaluator   NiLookAtEvaluator    
NiColorEvaluator         NiBSplineEvaluator          NiPathEvaluator    
NiFloatEvaluator         NiBSplineColorEvaluator
NiPoint3Evaluator        NiBSplineCompColorEvaluator
NiQuaternionEvaluator    NiBSplineFloatEvaluator
NiTransformEvaluator     NiBSplineCompFloatEvaluator

20.5+ Particles

NiPSParticleSystem          NiPSEmitterCtlr                NiPSEmitterRotSpeedCtlr   
NiPSMeshParticleSystem      NiPSEmitterFloatCtlr           NiPSEmitterRotSpeedVarCtlr
NiPSFacingQuadGenerator     NiPSEmitParticlesCtlr          NiPSEmitterLifeSpanCtlr   
NiPSAlignedQuadGenerator    NiPSForceCtlr                  NiPSResetOnLoopCtlr
NiPSSimulator               NiPSForceBoolCtlr              NiPSCollider
NiPSBoundUpdater            NiPSForceFloatCtlr             NiPSPlanarCollider
NiPSForce                   NiPSForceActiveCtlr            NiPSSphericalCollider
NiPSDragForce               NiPSGravityStrengthCtlr        NiPSSpawner
NiPSGravityForce            NiPSEmitterSpeedCtlr    
NiPSBombForce               NiPSEmitterRadiusCtlr    
NiPSEmitter                 NiPSEmitterDeclinationCtlr   
NiPSVolumeEmitter           NiPSEmitterDeclinationVarCtlr
NiPSBoxEmitter              NiPSEmitterPlanarAngleCtlr   
NiPSSphereEmitter           NiPSEmitterPlanarAngleVarCtlr
NiPSCylinderEmitter         NiPSEmitterRotAngleCtlr    
NiPSMeshEmitter             NiPSEmitterRotAngleVarCtlr   

20.2.0.8+ PhysX

NiPhysXProp          NiPhysXDest
NiPhysXPropDesc      NiPhysXRigidBodyDest
NiPhysXActorDesc     NiPhysXTransformDest
NiPhysXBodyDesc      NiPhysXSrc
NiPhysXJointDesc     NiPhysXRigidBodySrc
NiPhysXD6JointDesc   NiPhysXKinematicSrc
NiPhysXShapeDesc     NiPhysXDynamicSrc
NiPhysXMeshDesc
NiPhysXMaterialDesc