# NIF File Format Documentation

NIF Objects | Compound Types | Enum Types | Basic Types | File Versions

## NiRotatingParticlesData

Rotating particles data object.

### Attributes

Name | Type | Arg | Arr1 | Arr2 | Cond | Description | From | To
--- | --- | --- | --- | --- | --- | --- | --- | ---
From NiObject
From NiGeometryData
Unknown Int | int |  |  |  |  | Unknown identifier. Always 0. | 10.2.0.0 |
Num Vertices | ushort |  |  |  | !IsDerivedType(NiPSysData::TYPE) | Number of vertices. |  |
Num Vertices | ushort |  |  |  | IsDerivedType(NiPSysData::TYPE) | Number of vertices. |  |
BS Max Vertices | ushort |  |  |  | IsDerivedType(NiPSysData::TYPE) | Bethesda uses this for max number of particles in NiPSysData. |  |
Keep Flags | byte |  |  |  |  | Used with NiCollision objects when OBB or TRI is set. | 10.1.0.0 |
Compress Flags | byte |  |  |  |  | Unknown. | 10.1.0.0 |
Has Vertices | bool |  |  |  |  | Is the vertex array present? (Always non-zero.) |  |
Vertices | Vector3 |  | Num Vertices |  | hasVertices | The mesh vertices. |  |
Num UV Sets | ushort |  |  |  |  | Flag for tangents and bitangents in upper byte. Texture flags in lower byte. |  |
BS Num UV Sets | ushort |  |  |  |  | Bethesda's version of this field for nif versions 20.2.0.7 and up. Only a single bit denotes whether uv's are present. For example, see meshes/architecture/megaton/megatonrampturn45sml.nif in Fallout 3. |  |
Skyrim Material | SkyrimHavokMaterial |  |  |  | !IsDerivedType(NiPSysData::TYPE) | Material | 20.2.0.7 |
Has Normals | bool |  |  |  |  | Do we have lighting normals? These are essential for proper lighting: if not present, the model will only be influenced by ambient light. |  |
Normals | Vector3 |  | Num Vertices |  | hasNormals | The lighting normals. |  |
Tangents | Vector3 |  | Num Vertices |  | hasNormals && ((numUvSets & 61440) || (bsNumUvSets & 61440)) | Tangent vectors. | 10.1.0.0 |
Bitangents | Vector3 |  | Num Vertices |  | hasNormals && ((numUvSets & 61440) || (bsNumUvSets & 61440)) | Bitangent vectors. | 10.1.0.0 |
Center | Vector3 |  |  |  |  | Center of the bounding box (smallest box that contains all vertices) of the mesh. |  |
Radius | float |  |  |  |  | Radius of the mesh: maximal Euclidean distance between the center and all vertices. |  |
Unknown 13 shorts | short |  | 13 |  |  | Unknown, always 0? | 20.3.0.9 | 20.3.0.9
Has Vertex Colors | 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. |  |
Vertex Colors | Color4 |  | Num Vertices |  | hasVertexColors | The vertex colors. |  |
Num UV Sets | ushort |  |  |  |  | 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. |  | 4.2.2.0
Has UV | bool |  |  |  |  | Do we have UV coordinates? Note: for compatibility with NifTexture, set this value to either 0x00000000 or 0xFFFFFFFF. |  | 4.0.0.2
UV Sets | TexCoord |  | Num UV Sets & 63 | Num Vertices |  | The UV texture coordinates. They follow the OpenGL standard: some programs may require you to flip the second coordinate. |  |
Consistency Flags | ConsistencyType |  |  |  |  | Consistency Flags | 10.0.1.0 |
Consistency Flags | ConsistencyType |  |  |  | !IsDerivedType(NiPSysData::TYPE) | Consistency Flags | 10.0.1.0 |
Additional Data | Ref<AbstractAdditionalGeometryData> |  |  |  |  | Unknown. | 20.0.0.4 |
Additional Data | Ref<AbstractAdditionalGeometryData> |  |  |  | !IsDerivedType(NiPSysData::TYPE) | Unknown. | 20.0.0.4 |
From NiParticlesData
Num Particles | ushort |  |  |  |  | The maximum number of particles (matches the number of vertices). |  | 4.0.0.2
Particle Radius | float |  |  |  |  | The particles' size. |  | 10.0.1.0
Has Radii | bool |  |  |  |  | Is the particle size array present? | 10.1.0.0 |
Radii | float |  | Num Vertices |  | hasRadii | The individual particel sizes. | 10.1.0.0 |
Num Active | 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. |  |
Has Sizes | bool |  |  |  |  | Is the particle size array present? |  |
Sizes | float |  | Num Vertices |  | hasSizes | The individual particel sizes. |  |
Has Rotations | bool |  |  |  |  | Is the particle rotation array present? | 10.0.1.0 |
Rotations | Quaternion |  | Num Vertices |  | hasRotations | The individual particle rotations. | 10.0.1.0 |
Unknown Byte 1 | byte |  |  |  |  | Unknown, probably a boolean. |  |
Unknown Link | Ref<NiObject> |  |  |  |  | Unknown |  |
Has Rotation Angles | bool |  |  |  |  | Are the angles of rotation present? | 20.0.0.4 |
Rotation Angles | float |  | Num Vertices |  | hasRotationAngles | Angles of rotation |  |
Has Rotation Axes | bool |  |  |  |  | Are axes of rotation present? | 20.0.0.4 |
Rotation Axes | Vector3 |  | Num Vertices |  | hasRotationAxes | Unknown | 20.0.0.4 |
Has UV Quadrants | bool |  |  |  |  | if value is no, a single image rendered |  |
Num UV Quadrants | byte |  |  |  |  | 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 |  |
UV Quadrants | Vector4 |  | Num UV Quadrants |  | hasUvQuadrants | Unknown. |  |
Unknown Byte 2 | byte |  |  |  |  | Unknown |  |
From NiRotatingParticlesData
Has Rotations 2 | bool |  |  |  |  | Is the particle rotation array present? |  | 4.2.2.0
Rotations 2 | Quaternion |  | Num Vertices |  | hasRotations2 | The individual particle rotations. |  | 4.2.2.0

### Parent Of

- NiPSysData
- NiParticleMeshesData