rendered paste body// hex structure library for NIF Format 0x14000005#pragma maxarray(65536); // Increase the max array length#pragma enumsize(4)enum AlphaFormat { ALPHA_NONE = 0, ALPHA_BINARY = 1, ALPHA_SMOOTH = 2, ALPHA_DEFAULT = 3};#pragma enumsize(4)enum ApplyMode { APPLY_REPLACE = 0, APPLY_DECAL = 1, APPLY_MODULATE = 2, APPLY_HILIGHT = 3, APPLY_HILIGHT2 = 4};#pragma enumsize(4)enum TexType { BASE_MAP = 0, DARK_MAP = 1, DETAIL_MAP = 2, GLOSS_MAP = 3, GLOW_MAP = 4, BUMP_MAP = 5, DECAL_0_MAP = 6, DECAL_1_MAP = 7};#pragma enumsize(4)enum KeyType { LINEAR_KEY = 1, QUADRATIC_KEY = 2, TBC_KEY = 3, XYZ_ROTATION_KEY = 4, UNKNOWN_KEY = 5};#pragma enumsize(4)enum LightMode { LIGHT_MODE_EMISSIVE = 0, LIGHT_MODE_EMI_AMB_DIF = 1};#pragma enumsize(4)enum HavokMaterial { HAV_MAT_STONE = 0, HAV_MAT_CLOTH = 1, HAV_MAT_DIRT = 2, HAV_MAT_GLASS = 3, HAV_MAT_GRASS = 4, HAV_MAT_METAL = 5, HAV_MAT_ORGANIC = 6, HAV_MAT_SKIN = 7, HAV_MAT_WATER = 8, HAV_MAT_WOOD = 9, HAV_MAT_HEAVY_STONE = 10, HAV_MAT_HEAVY_METAL = 11, HAV_MAT_HEAVY_WOOD = 12, HAV_MAT_CHAIN = 13, HAV_MAT_SNOW = 14, HAV_MAT_STONE_STAIRS = 15, HAV_MAT_CLOTH_STAIRS = 16, HAV_MAT_DIRT_STAIRS = 17, HAV_MAT_GLASS_STAIRS = 18, HAV_MAT_GRASS_STAIRS = 19, HAV_MAT_METAL_STAIRS = 20, HAV_MAT_ORGANIC_STAIRS = 21, HAV_MAT_SKIN_STAIRS = 22, HAV_MAT_WATER_STAIRS = 23, HAV_MAT_WOOD_STAIRS = 24, HAV_MAT_HEAVY_STONE_STAIRS = 25, HAV_MAT_HEAVY_METAL_STAIRS = 26, HAV_MAT_HEAVY_WOOD_STAIRS = 27, HAV_MAT_CHAIN_STAIRS = 28, HAV_MAT_SNOW_STAIRS = 29, HAV_MAT_ELEVATOR = 30};#pragma enumsize(1)enum OblivionLayer { OL_UNIDENTIFIED = 0, OL_STATIC = 1, OL_ANIM_STATIC = 2, OL_TRANSPARENT = 3, OL_CLUTTER = 4, OL_WEAPON = 5, OL_PROJECTILE = 6, OL_SPELL = 7, OL_BIPED = 8, OL_TREES = 9, OL_PROPS = 10, OL_WATER = 11, OL_TRIGGER = 12, OL_TERRAIN = 13, OL_TRAP = 14, OL_NONCOLLIDABLE = 15, OL_CLOUD_TRAP = 16, OL_GROUND = 17, OL_PORTAL = 18, OL_STAIRS = 19, OL_CHAR_CONTROLLER = 20, OL_AVOID_BOX = 21, OL_UNKNOWN1 = 22, OL_UNKNOWN2 = 23, OL_CAMERA_PICK = 24, OL_ITEM_PICK = 25, OL_LINE_OF_SIGHT = 26, OL_PATH_PICK = 27, OL_CUSTOM_PICK_1 = 28, OL_CUSTOM_PICK_2 = 29, OL_SPELL_EXPLOSION = 30, OL_DROPPING_PICK = 31, OL_OTHER = 32, OL_HEAD = 33, OL_BODY = 34, OL_SPINE1 = 35, OL_SPINE2 = 36, OL_L_UPPER_ARM = 37, OL_L_FOREARM = 38, OL_L_HAND = 39, OL_L_THIGH = 40, OL_L_CALF = 41, OL_L_FOOT = 42, OL_R_UPPER_ARM = 43, OL_R_FOREARM = 44, OL_R_HAND = 45, OL_R_THIGH = 46, OL_R_CALF = 47, OL_R_FOOT = 48, OL_TAIL = 49, OL_SIDE_WEAPON = 50, OL_SHEILD = 51, OL_QUIVER = 52, OL_BACK_WEAPON = 53, OL_BACK_WEAPON2 = 54, OL_PONYTAIL = 55, OL_WING = 56, OL_NULL = 57};#pragma enumsize(4)enum MipMapFormat { MIP_FMT_NO = 0, MIP_FMT_YES = 1, MIP_FMT_DEFAULT = 2};#pragma enumsize(4)enum PixelFormat { PX_FMT_RGB8 = 0, PX_FMT_RGBA8 = 1, PX_FMT_PAL8 = 2};#pragma enumsize(4)enum PixelLayout { PIX_LAY_PALETTISED = 0, PIX_LAY_HIGH_COLOR_16 = 1, PIX_LAY_TRUE_COLOR_32 = 2, PIX_LAY_COMPRESSED = 3, PIX_LAY_BUMPMAP = 4, PIX_LAY_DEFAULT = 5};#pragma enumsize(4)enum TexClampMode { CLAMP_S_CLAMP_T = 0, CLAMP_S_WRAP_T = 1, WRAP_S_CLAMP_T = 2, WRAP_S_WRAP_T = 3};#pragma enumsize(4)enum TexFilterMode { FILTER_NEAREST = 0, FILTER_BILERP = 1, FILTER_TRILERP = 2, FILTER_NEAREST_MIPNEAREST = 3, FILTER_NEAREST_MIPLERP = 4, FILTER_BILERP_MIPNEAREST = 5};#pragma enumsize(4)enum VertMode { VERT_MODE_SRC_IGNORE = 0, VERT_MODE_SRC_EMISSIVE = 1, VERT_MODE_SRC_AMB_DIF = 2};#pragma enumsize(4)enum CycleType { CYCLE_LOOP = 0, CYCLE_REVERSE = 1, CYCLE_CLAMP = 2};#pragma enumsize(4)enum FieldType { FIELD_WIND = 0, FIELD_POINT = 1};#pragma enumsize(2)enum BillboardMode { ALWAYS_FACE_CAMERA = 0, ROTATE_ABOUT_UP = 1, RIGID_FACE_CAMERA = 2, ALWAYS_FACE_CENTER = 3, RIGID_FACE_CENTER = 4};#pragma enumsize(4)enum CompareMode { TEST_NEVER = 0, TEST_LESS = 1, TEST_EQUAL = 2, TEST_LESSEQUAL = 3, TEST_GREATER = 4, TEST_GREATEREQUAL = 5, TEST_ALWAYS = 6};#pragma enumsize(4)enum StencilAction { ACTION_KEEP = 0, ACTION_ZERO = 1, ACTION_REPLACE = 2, ACTION_INCREMENT = 3, ACTION_DECREMENT = 4, ACTION_INVERT = 5};#pragma enumsize(4)enum FaceDrawMode { DRAW_CCW_OR_BOTH = 0, DRAW_CCW = 1, DRAW_CW = 2, DRAW_BOTH = 3};#pragma enumsize(1)enum MotionSystem { MO_SYS_BOX = 4, MO_SYS_KEYFRAMED = 7};#pragma enumsize(1)enum MotionQuality { MO_QUAL_MOVING = 0, MO_QUAL_FIXED = 1, MO_QUAL_KEYFRAMED = 2, MO_QUAL_MOVING2 = 3, MO_QUAL_MOVING3 = 4, MO_QUAL_CRITICAL = 5, MO_QUAL_BULLET = 6, MO_QUAL_USER = 7, MO_QUAL_NULL = 8};#pragma enumsize(4)enum ForceType { FORCE_PLANAR = 0, FORCE_SPHERICAL = 1, FORCE_UNKNOWN = 2};struct ByteArray { unsigned __int32 dataSize; unsigned __int8 data[dataSize];};struct Color3 { double r; double g; double b;};struct ByteColor3 { unsigned __int8 r; unsigned __int8 g; unsigned __int8 b;};struct Color4 { double r; double g; double b; double a;};struct ByteColor4 { unsigned __int8 r; unsigned __int8 g; unsigned __int8 b; unsigned __int8 a;};struct FilePath { unsigned __int32 length; char value[length];};struct Footer { unsigned __int32 numRoots; signed __int32 roots[numRoots];};struct LODRange { double nearExtent; double farExtent;};struct MatchGroup { unsigned __int16 numVertices; unsigned __int16 vertexIndices[numVertices];};struct Matrix22 { double m11; double m21; double m12; double m22;};struct Matrix33 { double m11; double m21; double m31; double m12; double m22; double m32; double m13; double m23; double m33;};struct Matrix44 { double m11; double m21; double m31; double m41; double m12; double m22; double m32; double m42; double m13; double m23; double m33; double m43; double m14; double m24; double m34; double m44;};struct MipMap { unsigned __int32 width; unsigned __int32 height; unsigned __int32 offset;};struct NodeGroup { unsigned __int32 numNodes; signed __int32 nodes[numNodes];};struct Quaternion { double w; double x; double y; double z;};struct QuaternionXYZW { double x; double y; double z; double w;};struct ShortString { unsigned __int8 length; char value[length];};struct SkinShape { signed __int32 shape; signed __int32 skinInstance;};struct SkinShapeGroup { unsigned __int32 numLinkPairs; SkinShape linkPairs[numLinkPairs];};struct SkinWeight { unsigned __int16 index; double weight;};struct string { unsigned __int32 length; char value[length];};struct AVObject { String name; signed __int32 avObject;};struct ControllerLink { signed __int32 interpolator; signed __int32 controller; unsigned __int8 priority?; unsigned __int8 priority?; signed __int32 stringPalette; unsigned __int32 nodeNameOffset; unsigned __int32 propertyTypeOffset; unsigned __int32 controllerTypeOffset; unsigned __int32 variableOffset1; unsigned __int32 variableOffset2;};struct ExportInfo { ShortString creator; ShortString exportInfo1; ShortString exportInfo2;};struct Header { HeaderString headerString; FileVersion version; unsigned __int8 endianType; unsigned __int32 userVersion; unsigned __int32 numBlocks; unsigned __int32 userVersion2; ExportInfo exportInfo; unsigned __int16 numBlockTypes; String blockTypes[numBlockTypes]; unsigned __int16 blockTypeIndex[numBlocks]; unsigned __int32 unknownInt2;};struct StringPalette { String palette; unsigned __int32 length;};struct TBC { double t; double b; double c;};struct Key_Byte { double time; unsigned __int8 value; unsigned __int8 forward; unsigned __int8 backward; TBC tbc;};struct Key_String { double time; String value; String forward; String backward; TBC tbc;};struct Key_Quaternion { double time; Quaternion value; Quaternion forward; Quaternion backward; TBC tbc;};struct Key_Vector3 { double time; Vector3 value; Vector3 forward; Vector3 backward; TBC tbc;};struct Key_Float { double time; double value; double forward; double backward; TBC tbc;};struct Key_Color4 { double time; Color4 value; Color4 forward; Color4 backward; TBC tbc;};struct KeyGroup_Byte { unsigned __int32 numKeys; KeyType interpolation; Key_Byte keys[numKeys];};struct KeyGroup_String { unsigned __int32 numKeys; KeyType interpolation; Key_String keys[numKeys];};struct KeyGroup_Quaternion { unsigned __int32 numKeys; KeyType interpolation; Key_Quaternion keys[numKeys];};struct KeyGroup_Vector3 { unsigned __int32 numKeys; KeyType interpolation; Key_Vector3 keys[numKeys];};struct KeyGroup_Float { unsigned __int32 numKeys; KeyType interpolation; Key_Float keys[numKeys];};struct KeyGroup_Color4 { unsigned __int32 numKeys; KeyType interpolation; Key_Color4 keys[numKeys];};struct QuatKey_Byte { double time; unsigned __int8 value; TBC tbc;};struct QuatKey_String { double time; String value; TBC tbc;};struct QuatKey_Quaternion { double time; Quaternion value; TBC tbc;};struct QuatKey_Vector3 { double time; Vector3 value; TBC tbc;};struct QuatKey_Float { double time; double value; TBC tbc;};struct QuatKey_Color4 { double time; Color4 value; TBC tbc;};struct RotationKeyArray_Byte { unsigned __int32 numKeys; KeyType keyType; QuatKey_Byte keys[numKeys];};struct RotationKeyArray_String { unsigned __int32 numKeys; KeyType keyType; QuatKey_String keys[numKeys];};struct RotationKeyArray_Quaternion { unsigned __int32 numKeys; KeyType keyType; QuatKey_Quaternion keys[numKeys];};struct RotationKeyArray_Vector3 { unsigned __int32 numKeys; KeyType keyType; QuatKey_Vector3 keys[numKeys];};struct RotationKeyArray_Float { unsigned __int32 numKeys; KeyType keyType; QuatKey_Float keys[numKeys];};struct RotationKeyArray_Color4 { unsigned __int32 numKeys; KeyType keyType; QuatKey_Color4 keys[numKeys];};struct TexCoord { double u; double v;};struct TexDesc { signed __int32 source; TexClampMode clampMode; TexFilterMode filterMode; unsigned __int32 uvSet; unsigned __int8 hasTextureTransform; TexCoord translation; TexCoord tiling; double wRotation; unsigned __int32 transformType?; TexCoord centerOffset;};struct ShaderTexDesc { unsigned __int8 isUsed; TexDesc textureData; unsigned __int32 unknownInt;};struct TexSource { unsigned __int8 useExternal; String fileName; signed __int32 unknownLink; String originalFileName?; signed __int32 pixelData;};struct Triangle { unsigned __int16 v1; unsigned __int16 v2; unsigned __int16 v3;};struct SkinPartition { unsigned __int16 numVertices; unsigned __int16 numTriangles; unsigned __int16 numBones; unsigned __int16 numStrips; unsigned __int16 numWeightsPerVertex; unsigned __int16 bones[numBones]; unsigned __int8 hasVertexMap; unsigned __int16 vertexMap[numVertices]; unsigned __int8 hasVertexWeights; double vertexWeights[numVertices * numWeightsPerVertex]; unsigned __int16 stripLengths[numStrips]; unsigned __int8 hasStrips; unsigned __int16 strips[numStrips * stripLengths]; Triangle triangles[numTriangles]; unsigned __int8 hasBoneIndices; unsigned __int8 boneIndices[numVertices * numWeightsPerVertex];};struct Vector3 { double x; double y; double z;};struct BoundingBox { unsigned __int32 unknownInt; Vector3 translation; Matrix33 rotation; Vector3 radius;};struct FurniturePosition { Vector3 offset; unsigned __int16 orientation; unsigned __int8 positionRef1; unsigned __int8 positionRef2;};struct hkTriangle { Triangle triangle; unsigned __int16 unknownShort; Vector3 normal;};struct Morph { String frameName; Vector3 vectors[arg];};struct Particle { Vector3 velocity; Vector3 unknownVector; double lifetime; double lifespan; double timestamp; unsigned __int16 unknownShort; unsigned __int16 vertexId;};struct SkinData { Matrix33 rotation; Vector3 translation; double scale; Vector3 boundingSphereOffset; double boundingSphereRadius; unsigned __int16 numVertices; SkinWeight vertexWeights[numVertices];};struct Vector4 { double x; double y; double z; double w;};struct Sphere { Vector3 center; double radius;};struct OblivionColFilter { OblivionLayer layer; unsigned __int8 colFilter; unsigned __int16 unknownShort;};struct OblivionSubShape { OblivionLayer layer; unsigned __int8 colFilter; unsigned __int16 unknownShort; unsigned __int32 vertexCount(?); HavokMaterial material;};struct RagdollDescriptor { Vector4 pivotA; Vector4 planeA; Vector4 twistA; Vector4 pivotB; Vector4 planeB; Vector4 twistB; double coneMinAngle; double planeMinAngle; double planeMaxAngle; double twistMinAngle; double twistMaxAngle; double maxFriction;};struct LimitedHingeDescriptor { Vector4 pivotA; Vector4 axleA; Vector4 perp2axleina1; Vector4 perp2axleina2; Vector4 pivotB; Vector4 axleB; Vector4 perp2axleinb2; double minAngle; double maxAngle; double maxFriction;};struct OldSkinData { double vertexWeight; unsigned __int16 vertexIndex; Vector3 unknownVector;};struct MultiTextureElement { unsigned __int8 hasImage; signed __int32 image; unsigned __int32 unknownInt1; unsigned __int32 unknownInt2; unsigned __int32 unknownInt3; signed __int16 unknownShort1; signed __int16 unknownShort2; signed __int16 unknownShort3;};struct NiObject {};struct AParticleModifier { signed __int32 nextModifier; signed __int32 controller;};struct NiPSysCollider { double bounce; unsigned __int8 spawnOnCollide; unsigned __int8 dieOnCollide; signed __int32 spawnModifier; signed __int32 parent; signed __int32 nextCollider; signed __int32 colliderObject;};struct bhkRefObject {};struct bhkSerializable {};struct bhkWorldObject { signed __int32 shape; OblivionLayer layer; unsigned __int8 colFilter; unsigned __int16 unknownShort;};struct bhkPhantom { signed __int32 shape; OblivionLayer layer; unsigned __int8 colFilter; unsigned __int16 unknownShort;};struct bhkShapePhantom { signed __int32 shape; OblivionLayer layer; unsigned __int8 colFilter; unsigned __int16 unknownShort;};struct bhkSimpleShapePhantom { signed __int32 shape; OblivionLayer layer; unsigned __int8 colFilter; unsigned __int16 unknownShort; double unkownFloats[7]; double unknownFloats2[3 * 5]; double unknownFloat;};struct bhkEntity { signed __int32 shape; OblivionLayer layer; unsigned __int8 colFilter; unsigned __int16 unknownShort;};struct bhkRigidBody { signed __int32 shape; OblivionLayer layer; unsigned __int8 colFilter; unsigned __int16 unknownShort; double unknown5Floats[5]; unsigned __int16 unknown4Shorts[4]; OblivionLayer layerCopy; unsigned __int8 colFilterCopy; unsigned __int16 unknown7Shorts[7]; Vector3 translation; double unknownFloat00; QuaternionXYZW rotation; Vector3 linearVelocity; double unknownFloat01; Vector3 angularVelocity; double unknownFloat02; double inertia[12]; Vector3 center; double unknownFloat03; double mass; double linearDamping; double angularDamping; double friction; double restitution; double maxLinearVelocity; double maxAngularVelocity; double penetrationDepth; MotionSystem motionSystem; unsigned __int8 unknownByte1; unsigned __int8 unknownByte2; MotionQuality qualityType; unsigned __int32 unknownInt6; unsigned __int32 unknownInt7; unsigned __int32 unknownInt8; unsigned __int32 numConstraints; signed __int32 constraints[numConstraints]; unsigned __int32 unknownInt6;};struct bhkRigidBodyT { signed __int32 shape; OblivionLayer layer; unsigned __int8 colFilter; unsigned __int16 unknownShort; double unknown5Floats[5]; unsigned __int16 unknown4Shorts[4]; OblivionLayer layerCopy; unsigned __int8 colFilterCopy; unsigned __int16 unknown7Shorts[7]; Vector3 translation; double unknownFloat00; QuaternionXYZW rotation; Vector3 linearVelocity; double unknownFloat01; Vector3 angularVelocity; double unknownFloat02; double inertia[12]; Vector3 center; double unknownFloat03; double mass; double linearDamping; double angularDamping; double friction; double restitution; double maxLinearVelocity; double maxAngularVelocity; double penetrationDepth; MotionSystem motionSystem; unsigned __int8 unknownByte1; unsigned __int8 unknownByte2; MotionQuality qualityType; unsigned __int32 unknownInt6; unsigned __int32 unknownInt7; unsigned __int32 unknownInt8; unsigned __int32 numConstraints; signed __int32 constraints[numConstraints]; unsigned __int32 unknownInt6;};struct bhkConstraint { unsigned __int32 numEntities; signed __int32 entities[numEntities]; unsigned __int32 priority;};struct bhkLimitedHingeConstraint { unsigned __int32 numEntities; signed __int32 entities[numEntities]; unsigned __int32 priority; LimitedHingeDescriptor limitedHinge;};struct bhkMalleableConstraint { unsigned __int32 numEntities; signed __int32 entities[numEntities]; unsigned __int32 priority; unsigned __int32 type; unsigned __int32 unknownInt2; signed __int32 unknownLink1; signed __int32 unknownLink2; unsigned __int32 unknownInt3; RagdollDescriptor ragdoll; LimitedHingeDescriptor limitedHinge; double tau; double damping;};struct bhkStiffSpringConstraint { unsigned __int32 numEntities; signed __int32 entities[numEntities]; unsigned __int32 priority; Vector4 pivotA; Vector4 pivotB; double length;};struct bhkRagdollConstraint { unsigned __int32 numEntities; signed __int32 entities[numEntities]; unsigned __int32 priority; RagdollDescriptor ragdoll;};struct bhkPrismaticConstraint { unsigned __int32 numEntities; signed __int32 entities[numEntities]; unsigned __int32 priority; Vector4 unknownVectors[8]; double unknownFloats2[3];};struct bhkHingeConstraint { unsigned __int32 numEntities; signed __int32 entities[numEntities]; unsigned __int32 priority; Vector4 pivotA; Vector4 perp2axleina1; Vector4 perp2axleina2; Vector4 pivotB; Vector4 axleB;};struct bhkShape {};struct bhkTransformShape { signed __int32 shape; HavokMaterial material; double unknownFloat1; unsigned __int8 unknown8Bytes[8]; Matrix44 transform;};struct bhkSphereRepShape { HavokMaterial material; double radius;};struct bhkConvexShape { HavokMaterial material; double radius;};struct bhkSphereShape { HavokMaterial material; double radius;};struct bhkCapsuleShape { HavokMaterial material; double radius; unsigned __int16 unknownShort1; unsigned __int16 unknownShort2; unsigned __int16 unknownShort3; unsigned __int16 unknownShort4; Vector3 firstPoint; double radius1; Vector3 secondPoint; double radius2;};struct bhkBoxShape { HavokMaterial material; double radius; unsigned __int16 unknownShort1; unsigned __int16 unknownShort2; unsigned __int16 unknownShort3; unsigned __int16 unknownShort4; Vector3 dimensions; double min.Size;};struct bhkConvexVerticesShape { HavokMaterial material; double radius; double unknown6Floats[6]; unsigned __int32 numVertices; Vector4 vertices[numVertices]; unsigned __int32 numNormals; Vector4 normals[numNormals];};struct bhkConvexTransformShape { signed __int32 shape; HavokMaterial material; double unknownFloat1; unsigned __int8 unknown8Bytes[8]; Matrix44 transform;};struct bhkMultiSphereShape { HavokMaterial material; double radius; double unknownFloat1; double unknownFloat2; unsigned __int32 numSpheres; Sphere spheres[numSpheres];};struct bhkBvTreeShape {};struct bhkMoppBvTreeShape { signed __int32 shape; HavokMaterial material; unsigned __int8 unknown8Bytes[8]; double unknownFloat; unsigned __int32 moppDataSize; Vector3 objectCorner; double scalingFactor; unsigned __int8 moppData[moppDataSize];};struct bhkShapeCollection {};struct bhkListShape { unsigned __int32 numSubShapes; signed __int32 subShapes[numSubShapes]; HavokMaterial material; double unknownFloats[6]; unsigned __int32 numUnknownInts; unsigned __int32 unknownInts[numUnknownInts];};struct bhkPackedNiTriStripsShape { unsigned __int16 numSubShapes; OblivionSubShape subShapes[numSubShapes]; double unknownFloats[9]; double scale; double unknownFloats2[3]; signed __int32 data;};struct bhkNiTriStripsShape { HavokMaterial material; double unknownFloat1; unsigned __int32 unknownInt1; unsigned __int32 unknownInts1[4]; unsigned __int32 unknownInt2; Vector3 scale; unsigned __int32 unknownInt3; unsigned __int32 numStripsData; signed __int32 stripsData[numStripsData]; unsigned __int32 numDataLayers; OblivionColFilter dataLayers[numDataLayers];};struct NiExtraData { String name;};struct NiInterpolator {};struct NiKeyBasedInterpolator {};struct NiFloatInterpolator { double floatValue; signed __int32 data;};struct NiTransformInterpolator { Vector3 translation; Quaternion rotation; double scale; signed __int32 data;};struct NiPoint3Interpolator { Vector3 point3Value; signed __int32 data;};struct NiPathInterpolator { unsigned __int16 unknownShort; unsigned __int32 unknownInt; double unknownFloat1; double unknownFloat2; unsigned __int16 unknownShort2; signed __int32 posData; signed __int32 floatData;};struct NiBoolInterpolator { unsigned __int8 boolValue; signed __int32 data;};struct NiBoolTimelineInterpolator { unsigned __int8 boolValue; signed __int32 data;};struct NiBlendInterpolator { unsigned __int16 unknownShort; unsigned __int32 unknownInt;};struct NiBSplineInterpolator { double startTime; double stopTime; signed __int32 splineData; signed __int32 basisData;};struct NiObjectNET { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller;};struct NiCollisionObject { signed __int32 target; unsigned __int16 unknownShort; signed __int32 body;};struct NiCollisionData { signed __int32 target; unsigned __int16 unknownShort; signed __int32 body; unsigned __int32 unknownInt1; unsigned __int8 unknownByte; unsigned __int32 collisionType; unsigned __int32 unknownInt2; Vector3 unknownVector; double unknownFloat1[8]; double unknownFloat2[15];};struct bhkNiCollisionObject { signed __int32 target; unsigned __int16 unknownShort; signed __int32 body;};struct bhkCollisionObject { signed __int32 target; unsigned __int16 unknownShort; signed __int32 body;};struct bhkBlendCollisionObject { signed __int32 target; unsigned __int16 unknownShort; signed __int32 body; double unknownFloat1; double unknownFloat2;};struct bhkPCollisionObject { signed __int32 target; unsigned __int16 unknownShort; signed __int32 body;};struct bhkSPCollisionObject { signed __int32 target; unsigned __int16 unknownShort; signed __int32 body;};struct NiAVObject { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject;};struct NiDynamicEffect { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; unsigned __int8 switchState; unsigned __int32 numAffectedNodes; signed __int32 affectedNodes[numAffectedNodes];};struct NiLight { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; unsigned __int8 switchState; unsigned __int32 numAffectedNodes; signed __int32 affectedNodes[numAffectedNodes]; double dimmer; Color3 ambientColor; Color3 diffuseColor; Color3 specularColor;};struct NiProperty { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller;};struct NiPSysModifier { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active;};struct NiPSysEmitter { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active; double speed; double speedVariation; double declination; double declinationVariation; double planarAngle; double planarAngleVariation; Color4 initialColor; double initialRadius; double radiusVariation; double lifeSpan; double lifeSpanVariation;};struct NiPSysVolumeEmitter { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active; double speed; double speedVariation; double declination; double declinationVariation; double planarAngle; double planarAngleVariation; Color4 initialColor; double initialRadius; double radiusVariation; double lifeSpan; double lifeSpanVariation; signed __int32 emitterObject;};struct NiTimeController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target;};struct NiInterpController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target;};struct NiMultiTargetTransformController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; unsigned __int16 numExtraTargets; signed __int32 extraTargets[numExtraTargets];};struct NiGeomMorpherController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; unsigned __int16 unknown; signed __int32 data; unsigned __int8 unknownByte; unsigned __int32 numInterpolators; signed __int32 interpolators[numInterpolators]; unsigned __int32 numUnknownInts; unsigned __int32 unknownInts[numUnknownInts];};struct NiSingleInterpController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator;};struct NiTransformController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator;};struct NiPSysModifierCtlr { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator; String modifierName;};struct NiPSysEmitterCtlr { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator; String modifierName; signed __int32 visibilityInterpolator;};struct NiPSysModifierBoolCtlr { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator; String modifierName;};struct NiPSysModifierActiveCtlr { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator; String modifierName;};struct NiPSysModifierFloatCtlr { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator; String modifierName;};struct NiPSysEmitterDeclinationCtlr { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator; String modifierName;};struct NiPSysEmitterDeclinationVarCtlr { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator; String modifierName;};struct NiPSysEmitterInitialRadiusCtlr { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator; String modifierName;};struct NiPSysEmitterLifeSpanCtlr { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator; String modifierName;};struct NiPSysEmitterSpeedCtlr { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator; String modifierName;};struct NiPSysGravityStrengthCtlr { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator; String modifierName;};struct NiFloatInterpController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator;};struct NiFlipController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator; unsigned __int32 textureSlot; unsigned __int32 numSources; signed __int32 sources[numSources];};struct NiAlphaController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator;};struct NiTextureTransformController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator; unsigned __int8 unknown2; TexType textureSlot; unsigned __int32 operation;};struct NiLightDimmerController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator;};struct NiBoolInterpController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator;};struct NiVisController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator;};struct NiPoint3InterpController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator; unsigned __int16 targetColor;};struct NiMaterialColorController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator; unsigned __int16 targetColor;};struct NiLightColorController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator; unsigned __int16 targetColor;};struct NiExtraDataController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator;};struct NiFloatExtraDataController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator; String controllerData;};struct NiBoneLODController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; unsigned __int32 unknownInt1; unsigned __int32 numNodeGroups; unsigned __int32 numNodeGroups2; NodeGroup nodeGroups[numNodeGroups];};struct NiBSBoneLODController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; unsigned __int32 unknownInt1; unsigned __int32 numNodeGroups; unsigned __int32 numNodeGroups2; NodeGroup nodeGroups[numNodeGroups];};struct NiGeometry { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; signed __int32 data; signed __int32 skinInstance; unsigned __int8 hasShader; String shaderName; signed __int32 unknownLink;};struct NiTriBasedGeom { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; signed __int32 data; signed __int32 skinInstance; unsigned __int8 hasShader; String shaderName; signed __int32 unknownLink;};struct NiGeometryData { String name; unsigned __int16 numVertices; unsigned __int16 unknownShort1; unsigned __int8 hasVertices; Vector3 vertices[numVertices]; unsigned __int16 numUvSets; unsigned __int8 hasNormals; Vector3 normals[numVertices]; Vector3 unknownVectors1[numVertices]; Vector3 unknownVectors2[numVertices]; Vector3 center; double radius; unsigned __int8 hasVertexColors; Color4 vertexColors[numVertices]; TexCoord uvSets[numUvSets * numVertices] // WARNING - should be [numUvSets & 63 * numVertices]; unsigned __int16 unknownShort2; signed __int32 unknownLink1;};struct NiTriBasedGeomData { String name; unsigned __int16 numVertices; unsigned __int16 unknownShort1; unsigned __int8 hasVertices; Vector3 vertices[numVertices]; unsigned __int16 numUvSets; unsigned __int8 hasNormals; Vector3 normals[numVertices]; Vector3 unknownVectors1[numVertices]; Vector3 unknownVectors2[numVertices]; Vector3 center; double radius; unsigned __int8 hasVertexColors; Color4 vertexColors[numVertices]; TexCoord uvSets[numUvSets * numVertices] // WARNING - should be [numUvSets & 63 * numVertices]; unsigned __int16 unknownShort2; signed __int32 unknownLink1; unsigned __int16 numTriangles;};struct bhkBlendController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; unsigned __int32 unknownInt;};struct BSBound { String name; Vector3 center; Vector3 dimensions;};struct BSFurnitureMarker { String name; unsigned __int32 numPositions; FurniturePosition positions[numPositions];};struct BSParentVelocityModifier { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active; double unknownFloat;};struct BSPSysArrayEmitter { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active; double speed; double speedVariation; double declination; double declinationVariation; double planarAngle; double planarAngleVariation; Color4 initialColor; double initialRadius; double radiusVariation; double lifeSpan; double lifeSpanVariation; signed __int32 emitterObject;};struct BSWindModifier { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active; double unknownFloat;};struct hkPackedNiTriStripsData { unsigned __int32 numTriangles; hkTriangle triangles[numTriangles]; unsigned __int32 numVertices; Vector3 vertices[numVertices];};struct NiAlphaProperty { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; unsigned __int8 threshold;};struct NiAmbientLight { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; unsigned __int8 switchState; unsigned __int32 numAffectedNodes; signed __int32 affectedNodes[numAffectedNodes]; double dimmer; Color3 ambientColor; Color3 diffuseColor; Color3 specularColor;};struct NiParticlesData { String name; unsigned __int16 numVertices; unsigned __int16 unknownShort1; unsigned __int8 hasVertices; Vector3 vertices[numVertices]; unsigned __int16 numUvSets; unsigned __int8 hasNormals; Vector3 normals[numVertices]; Vector3 unknownVectors1[numVertices]; Vector3 unknownVectors2[numVertices]; Vector3 center; double radius; unsigned __int8 hasVertexColors; Color4 vertexColors[numVertices]; TexCoord uvSets[numUvSets * numVertices] // WARNING - should be [numUvSets & 63 * numVertices]; unsigned __int16 unknownShort2; signed __int32 unknownLink1; unsigned __int8 hasSizes; double sizes[numVertices]; unsigned __int16 numActive; unsigned __int8 hasUnknownFloats1; double unknownFloats1[numVertices]; unsigned __int8 hasRotations1; Quaternion rotations1[numVertices];};struct NiRotatingParticlesData { String name; unsigned __int16 numVertices; unsigned __int16 unknownShort1; unsigned __int8 hasVertices; Vector3 vertices[numVertices]; unsigned __int16 numUvSets; unsigned __int8 hasNormals; Vector3 normals[numVertices]; Vector3 unknownVectors1[numVertices]; Vector3 unknownVectors2[numVertices]; Vector3 center; double radius; unsigned __int8 hasVertexColors; Color4 vertexColors[numVertices]; TexCoord uvSets[numUvSets * numVertices] // WARNING - should be [numUvSets & 63 * numVertices]; unsigned __int16 unknownShort2; signed __int32 unknownLink1; unsigned __int8 hasSizes; double sizes[numVertices]; unsigned __int16 numActive; unsigned __int8 hasUnknownFloats1; double unknownFloats1[numVertices]; unsigned __int8 hasRotations1; Quaternion rotations1[numVertices];};struct NiAutoNormalParticlesData { String name; unsigned __int16 numVertices; unsigned __int16 unknownShort1; unsigned __int8 hasVertices; Vector3 vertices[numVertices]; unsigned __int16 numUvSets; unsigned __int8 hasNormals; Vector3 normals[numVertices]; Vector3 unknownVectors1[numVertices]; Vector3 unknownVectors2[numVertices]; Vector3 center; double radius; unsigned __int8 hasVertexColors; Color4 vertexColors[numVertices]; TexCoord uvSets[numUvSets * numVertices] // WARNING - should be [numUvSets & 63 * numVertices]; unsigned __int16 unknownShort2; signed __int32 unknownLink1; unsigned __int8 hasSizes; double sizes[numVertices]; unsigned __int16 numActive; unsigned __int8 hasUnknownFloats1; double unknownFloats1[numVertices]; unsigned __int8 hasRotations1; Quaternion rotations1[numVertices];};struct NiPSysData { String name; unsigned __int16 numVertices; unsigned __int16 unknownShort1; unsigned __int8 hasVertices; Vector3 vertices[numVertices]; unsigned __int16 numUvSets; unsigned __int8 hasNormals; Vector3 normals[numVertices]; Vector3 unknownVectors1[numVertices]; Vector3 unknownVectors2[numVertices]; Vector3 center; double radius; unsigned __int8 hasVertexColors; Color4 vertexColors[numVertices]; TexCoord uvSets[numUvSets * numVertices] // WARNING - should be [numUvSets & 63 * numVertices]; unsigned __int16 unknownShort2; signed __int32 unknownLink1; unsigned __int8 hasSizes; double sizes[numVertices]; unsigned __int16 numActive; unsigned __int8 hasUnknownFloats1; double unknownFloats1[numVertices]; unsigned __int8 hasRotations1; Quaternion rotations1[numVertices]; unsigned __int8 hasUnknownFloats3; double unknownFloats1[numVertices]; unsigned __int8 hasUnknownFloats4; double unknownFloats4[numVertices * 4]; double unknownFloats5[numVertices * 7]; unsigned __int8 hasUnknownFloats6; double unknownFloats6[numVertices]; unsigned __int32 unknownInt1;};struct NiMeshPSysData { String name; unsigned __int16 numVertices; unsigned __int16 unknownShort1; unsigned __int8 hasVertices; Vector3 vertices[numVertices]; unsigned __int16 numUvSets; unsigned __int8 hasNormals; Vector3 normals[numVertices]; Vector3 unknownVectors1[numVertices]; Vector3 unknownVectors2[numVertices]; Vector3 center; double radius; unsigned __int8 hasVertexColors; Color4 vertexColors[numVertices]; TexCoord uvSets[numUvSets * numVertices] // WARNING - should be [numUvSets & 63 * numVertices]; unsigned __int16 unknownShort2; signed __int32 unknownLink1; unsigned __int8 hasSizes; double sizes[numVertices]; unsigned __int16 numActive; unsigned __int8 hasUnknownFloats1; double unknownFloats1[numVertices]; unsigned __int8 hasRotations1; Quaternion rotations1[numVertices]; unsigned __int8 hasUnknownFloats3; double unknownFloats1[numVertices]; unsigned __int8 hasUnknownFloats4; double unknownFloats4[numVertices * 4]; double unknownFloats5[numVertices * 7]; unsigned __int8 hasUnknownFloats6; double unknownFloats6[numVertices]; unsigned __int32 unknownInt1; unsigned __int32 numVertices2; unsigned __int8 unknownByte3; unsigned __int32 unknownInt2; unsigned __int32 numVertices3; signed __int32 unknownLink2;};struct NiBinaryExtraData { String name; ByteArray binaryData;};struct NiBinaryVoxelExtraData { String name; unsigned __int32 unknownInt; signed __int32 data;};struct NiBinaryVoxelData { unsigned __int16 unknownShort1; unsigned __int16 unknownShort2; unsigned __int16 unknownShort3; double unknown7Floats[7]; unsigned __int8 unknownBytes1[7 * 12]; unsigned __int32 numUnknownVectors; Vector4 unknownVectors[numUnknownVectors]; unsigned __int32 numUnknownBytes2; unsigned __int8 unknownBytes2[numUnknownBytes2]; unsigned __int32 unknown5Ints[5];};struct NiBlendBoolInterpolator { unsigned __int16 unknownShort; unsigned __int32 unknownInt; unsigned __int8 boolValue;};struct NiBlendFloatInterpolator { unsigned __int16 unknownShort; unsigned __int32 unknownInt; double floatValue;};struct NiBlendPoint3Interpolator { unsigned __int16 unknownShort; unsigned __int32 unknownInt; Vector3 pointValue;};struct NiBlendTransformInterpolator { unsigned __int16 unknownShort; unsigned __int32 unknownInt;};struct NiBoolData { KeyGroup_Byte data;};struct NiBooleanExtraData { String name; unsigned __int8 booleanData;};struct NiBSplineBasisData { unsigned __int32 numControlPt;};struct NiBSplineFloatInterpolator { double startTime; double stopTime; signed __int32 splineData; signed __int32 basisData;};struct NiBSplineCompFloatInterpolator { double startTime; double stopTime; signed __int32 splineData; signed __int32 basisData; double unknownFloats[4];};struct NiBSplinePoint3Interpolator { double startTime; double stopTime; signed __int32 splineData; signed __int32 basisData; double unknownFloats[6];};struct NiBSplineCompPoint3Interpolator { double startTime; double stopTime; signed __int32 splineData; signed __int32 basisData; double unknownFloats[6]; double unknownFloats[6];};struct NiBSplineTransformInterpolator { double startTime; double stopTime; signed __int32 splineData; signed __int32 basisData;};struct NiBSplineCompTransformInterpolator { double startTime; double stopTime; signed __int32 splineData; signed __int32 basisData; Vector3 translation; Quaternion rotation; double scale; unsigned __int32 translateOffset; unsigned __int32 rotateOffset; unsigned __int32 scaleOffset; double translateBias; double translateMultiplier; double rotationBias; double rotationMultiplier; double scaleBias; double scaleMultiplier;};struct NiBSplineData { unsigned __int32 unknownInt; unsigned __int32 count; signed __int16 controlPoints[count];};struct NiCamera { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; unsigned __int16 unknownShort; double frustumLeft; double frustumRight; double frustumTop; double frustumBottom; double frustumNear; double frustumFar; unsigned __int8 useOrthographicProjection; double viewportLeft; double viewportRight; double viewportTop; double viewportBottom; double lodAdjust; signed __int32 unknownLink?; unsigned __int32 unknownInt; unsigned __int32 unknownInt2;};struct NiColorData { KeyGroup_Color4 data;};struct NiColorExtraData { String name; Color4 data;};struct NiControllerManager { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; unsigned __int8 cumulative; unsigned __int32 numControllerSequences; signed __int32 controllerSequences[numControllerSequences]; signed __int32 objectPalette;};struct NiSequence { String name; unsigned __int32 numControlledBlocks; unsigned __int32 unknownInt1; ControllerLink controlledBlocks[numControlledBlocks];};struct NiControllerSequence { String name; unsigned __int32 numControlledBlocks; unsigned __int32 unknownInt1; ControllerLink controlledBlocks[numControlledBlocks]; double weight; signed __int32 textKeys; CycleType cycleType; double frequency; double startTime; double stopTime; signed __int32 manager; String targetName; signed __int32 stringPalette;};struct NiAVObjectPalette {};struct NiDefaultAVObjectPalette { unsigned __int32 unknownInt; unsigned __int32 numObjs; AVObject objs[numObjs];};struct NiDirectionalLight { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; unsigned __int8 switchState; unsigned __int32 numAffectedNodes; signed __int32 affectedNodes[numAffectedNodes]; double dimmer; Color3 ambientColor; Color3 diffuseColor; Color3 specularColor;};struct NiDitherProperty { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags;};struct NiRollController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 interpolator; signed __int32 data;};struct NiFloatData { KeyGroup_Float data;};struct NiFloatExtraData { String name; double floatData;};struct NiFloatsExtraData { String name; unsigned __int32 numFloats; double data[numFloats];};struct NiFogProperty { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; double fogDepth; Color3 fogColor;};struct NiGravity { signed __int32 nextModifier; signed __int32 controller; double unknownFloat1; double force; FieldType type; Vector3 position; Vector3 direction;};struct NiIntegerExtraData { String name; unsigned __int32 integerData;};struct BSXFlags { String name; unsigned __int32 integerData;};struct NiIntegersExtraData { String name; unsigned __int32 numIntegers; unsigned __int32 data[numIntegers];};struct NiKeyframeController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 data;};struct BSKeyframeController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; signed __int32 data; signed __int32 data2;};struct NiKeyframeData { unsigned __int32 numRotationKeys; KeyType rotationType; QuatKey_Quaternion quaternionKeys[numRotationKeys]; KeyGroup_Float xyzRotations[3]; KeyGroup_Vector3 translations; KeyGroup_Float scales;};struct NiLookAtController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; unsigned __int16 unknown1; signed __int32 lookAtNode;};struct NiLookAtInterpolator { unsigned __int16 unknownShort; signed __int32 lookAt; double unknownFloat; Vector3 translation; Quaternion rotation; double scale; signed __int32 unknownLink1; signed __int32 unknownLink2; signed __int32 unknownLink3;};struct NiMaterialProperty { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Color3 ambientColor; Color3 diffuseColor; Color3 specularColor; Color3 emissiveColor; double glossiness; double alpha;};struct NiMorphData { unsigned __int32 numMorphs; unsigned __int32 numVertices; unsigned __int8 unknownByte; Morph morphs[numMorphs];};struct NiNode { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; unsigned __int32 numChildren; signed __int32 children[numChildren]; unsigned __int32 numEffects; signed __int32 effects[numEffects];};struct NiBone { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; unsigned __int32 numChildren; signed __int32 children[numChildren]; unsigned __int32 numEffects; signed __int32 effects[numEffects];};struct AvoidNode { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; unsigned __int32 numChildren; signed __int32 children[numChildren]; unsigned __int32 numEffects; signed __int32 effects[numEffects];};struct FxWidget { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; unsigned __int32 numChildren; signed __int32 children[numChildren]; unsigned __int32 numEffects; signed __int32 effects[numEffects]; unsigned __int8 unknown1; unsigned __int8 unknown292Bytes[292];};struct FxButton { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; unsigned __int32 numChildren; signed __int32 children[numChildren]; unsigned __int32 numEffects; signed __int32 effects[numEffects]; unsigned __int8 unknown1; unsigned __int8 unknown292Bytes[292];};struct FxRadioButton { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; unsigned __int32 numChildren; signed __int32 children[numChildren]; unsigned __int32 numEffects; signed __int32 effects[numEffects]; unsigned __int8 unknown1; unsigned __int8 unknown292Bytes[292]; unsigned __int32 unknownInt1; unsigned __int32 unknownInt2; unsigned __int32 unknownInt3; unsigned __int32 numButtons; signed __int32 buttons[numButtons];};struct NiBillboardNode { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; unsigned __int32 numChildren; signed __int32 children[numChildren]; unsigned __int32 numEffects; signed __int32 effects[numEffects]; BillboardMode billboardMode;};struct NiBSAnimationNode { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; unsigned __int32 numChildren; signed __int32 children[numChildren]; unsigned __int32 numEffects; signed __int32 effects[numEffects];};struct NiBSParticleNode { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; unsigned __int32 numChildren; signed __int32 children[numChildren]; unsigned __int32 numEffects; signed __int32 effects[numEffects];};struct NiSwitchNode { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; unsigned __int32 numChildren; signed __int32 children[numChildren]; unsigned __int32 numEffects; signed __int32 effects[numEffects];};struct NiLODNode { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; unsigned __int32 numChildren; signed __int32 children[numChildren]; unsigned __int32 numEffects; signed __int32 effects[numEffects]; unsigned __int8 unknown4Bytes[4]; unsigned __int16 unknownShort; signed __int32 lodLevelData;};struct NiPalette { unsigned __int8 unknownByte; unsigned __int32 numEntries?; unsigned __int8 palette[256 * 4];};struct NiParticleBomb { signed __int32 nextModifier; signed __int32 controller; double unknownFloat1; double unknownFloat2; double unknownFloat3; double unknownFloat4; unsigned __int32 unknownInt1; unsigned __int32 unknownInt2; double unknownFloat5; double unknownFloat6; double unknownFloat7; double unknownFloat8; double unknownFloat9; double unknownFloat10;};struct NiParticleColorModifier { signed __int32 nextModifier; signed __int32 controller; signed __int32 colorData;};struct NiParticleGrowFade { signed __int32 nextModifier; signed __int32 controller; double grow; double fade;};struct NiParticleMeshModifier { signed __int32 nextModifier; signed __int32 controller; unsigned __int32 numParticleMeshes; signed __int32 particleMeshes[numParticleMeshes];};struct NiParticleRotation { signed __int32 nextModifier; signed __int32 controller; unsigned __int8 unknownByte; double unknownFloat1; double unknownFloat2; double unknownFloat3; double unknownFloat4;};struct NiParticles { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; signed __int32 data; signed __int32 skinInstance; unsigned __int8 hasShader; String shaderName; signed __int32 unknownLink;};struct NiAutoNormalParticles { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; signed __int32 data; signed __int32 skinInstance; unsigned __int8 hasShader; String shaderName; signed __int32 unknownLink;};struct NiParticleMeshes { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; signed __int32 data; signed __int32 skinInstance; unsigned __int8 hasShader; String shaderName; signed __int32 unknownLink;};struct NiParticleMeshesData { String name; unsigned __int16 numVertices; unsigned __int16 unknownShort1; unsigned __int8 hasVertices; Vector3 vertices[numVertices]; unsigned __int16 numUvSets; unsigned __int8 hasNormals; Vector3 normals[numVertices]; Vector3 unknownVectors1[numVertices]; Vector3 unknownVectors2[numVertices]; Vector3 center; double radius; unsigned __int8 hasVertexColors; Color4 vertexColors[numVertices]; TexCoord uvSets[numUvSets * numVertices] // WARNING - should be [numUvSets & 63 * numVertices]; unsigned __int16 unknownShort2; signed __int32 unknownLink1; unsigned __int8 hasSizes; double sizes[numVertices]; unsigned __int16 numActive; unsigned __int8 hasUnknownFloats1; double unknownFloats1[numVertices]; unsigned __int8 hasRotations1; Quaternion rotations1[numVertices]; signed __int32 unknownLink2;};struct NiParticleSystem { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; signed __int32 data; signed __int32 skinInstance; unsigned __int8 hasShader; String shaderName; signed __int32 unknownLink; unsigned __int8 unknownBool; unsigned __int32 numModifiers; signed __int32 modifiers[numModifiers];};struct NiMeshParticleSystem { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; signed __int32 data; signed __int32 skinInstance; unsigned __int8 hasShader; String shaderName; signed __int32 unknownLink; unsigned __int8 unknownBool; unsigned __int32 numModifiers; signed __int32 modifiers[numModifiers];};struct NiParticleSystemController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; double speed; double speedRandom; double verticalDirection; double verticalAngle; double horizontalDirection; double horizontalAngle; double unknownFloat5; double unknownFloat6; double unknownFloat7; double unknownFloat8; double unknownFloat9; double unknownFloat10; double unknownFloat11; double size; double emitStartTime; double emitStopTime; unsigned __int8 unknownByte; double emitRate; double lifetime; double lifetimeRandom; unsigned __int16 emitFlags; Vector3 startRandom; signed __int32 emitter; unsigned __int16 unknownShort2?; double unknownFloat13?; unsigned __int32 unknownInt1?; unsigned __int32 unknownInt2?; unsigned __int16 unknownShort3?; unsigned __int16 numParticles; unsigned __int16 numValid; Particle particles[numParticles]; signed __int32 unknownLink; signed __int32 particleExtra; signed __int32 unknownLink2; unsigned __int8 trailer;};struct NiBSPArrayController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; double speed; double speedRandom; double verticalDirection; double verticalAngle; double horizontalDirection; double horizontalAngle; double unknownFloat5; double unknownFloat6; double unknownFloat7; double unknownFloat8; double unknownFloat9; double unknownFloat10; double unknownFloat11; double size; double emitStartTime; double emitStopTime; unsigned __int8 unknownByte; double emitRate; double lifetime; double lifetimeRandom; unsigned __int16 emitFlags; Vector3 startRandom; signed __int32 emitter; unsigned __int16 unknownShort2?; double unknownFloat13?; unsigned __int32 unknownInt1?; unsigned __int32 unknownInt2?; unsigned __int16 unknownShort3?; unsigned __int16 numParticles; unsigned __int16 numValid; Particle particles[numParticles]; signed __int32 unknownLink; signed __int32 particleExtra; signed __int32 unknownLink2; unsigned __int8 trailer;};struct NiPathController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; unsigned __int16 unknownShort2; unsigned __int32 unknownInt1; unsigned __int32 unknownInt2; unsigned __int32 unknownInt3; unsigned __int16 unknownShort; signed __int32 posData; signed __int32 floatData;};struct NiPixelData { PixelFormat pixelFormat; unsigned __int8 unknown54Bytes[54]; signed __int32 palette; unsigned __int32 numMipmaps; unsigned __int32 bytesPerPixel; MipMap mipmaps[numMipmaps]; ByteArray pixelData; unsigned __int32 unknownInt2;};struct NiPlanarCollider { signed __int32 nextModifier; signed __int32 controller; unsigned __int16 unknownShort; double unknownFloat1; double unknownFloat2; double unknownFloat3; double unknownFloat4; double unknownFloat5; double unknownFloat6; double unknownFloat7; double unknownFloat8; double unknownFloat9; double unknownFloat10; double unknownFloat11; double unknownFloat12; double unknownFloat13; double unknownFloat14; double unknownFloat15; double unknownFloat16;};struct NiPointLight { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; unsigned __int8 switchState; unsigned __int32 numAffectedNodes; signed __int32 affectedNodes[numAffectedNodes]; double dimmer; Color3 ambientColor; Color3 diffuseColor; Color3 specularColor; double constantAttenuation; double linearAttenuation; double quadraticAttenuation;};struct NiPosData { KeyGroup_Vector3 data;};struct NiPSysAgeDeathModifier { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active; unsigned __int8 spawnOnDeath; signed __int32 spawnModifier;};struct NiPSysBombModifier { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active; signed __int32 unknownLink; unsigned __int32 unknownInts1[2]; double unknownFloats[3]; unsigned __int32 unknownInts2[2];};struct NiPSysBoundUpdateModifier { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active; unsigned __int16 updateSkip;};struct NiPSysBoxEmitter { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active; double speed; double speedVariation; double declination; double declinationVariation; double planarAngle; double planarAngleVariation; Color4 initialColor; double initialRadius; double radiusVariation; double lifeSpan; double lifeSpanVariation; signed __int32 emitterObject; double width; double height; double depth;};struct NiPSysColliderManager { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active; signed __int32 collider;};struct NiPSysColorModifier { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active; signed __int32 data;};struct NiPSysCylinderEmitter { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active; double speed; double speedVariation; double declination; double declinationVariation; double planarAngle; double planarAngleVariation; Color4 initialColor; double initialRadius; double radiusVariation; double lifeSpan; double lifeSpanVariation; signed __int32 emitterObject; double radius; double height;};struct NiPSysDragModifier { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active; signed __int32 parent; Vector3 dragAxis; double percentage; double range; double rangeFalloff;};struct NiPSysEmitterCtlrData { KeyGroup_Float floatKeys?; unsigned __int32 numVisibilityKeys?; Key_Byte visibilityKeys?[numVisibilityKeys?];};struct NiPSysGravityModifier { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active; signed __int32 gravityObject; Vector3 gravityAxis; double decay; double strength; ForceType forceType; double turbulence; double turbulenceScale;};struct NiPSysGrowFadeModifier { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active; double growTime; unsigned __int16 growGeneration; double fadeTime; unsigned __int16 fadeGeneration;};struct NiPSysMeshEmitter { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active; double speed; double speedVariation; double declination; double declinationVariation; double planarAngle; double planarAngleVariation; Color4 initialColor; double initialRadius; double radiusVariation; double lifeSpan; double lifeSpanVariation; unsigned __int32 numEmitterMeshes; signed __int32 emitterMeshes[numEmitterMeshes]; unsigned __int32 initialVelocityType; unsigned __int32 emissionType; Vector3 emissionAxis;};struct NiPSysMeshUpdateModifier { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active; unsigned __int32 numMeshes; signed __int32 meshes[numMeshes];};struct NiPSysPlanarCollider { double bounce; unsigned __int8 spawnOnCollide; unsigned __int8 dieOnCollide; signed __int32 spawnModifier; signed __int32 parent; signed __int32 nextCollider; signed __int32 colliderObject; double width; double height; Vector3 xAxis; Vector3 yAxis;};struct NiPSysSphericalCollider { double bounce; unsigned __int8 spawnOnCollide; unsigned __int8 dieOnCollide; signed __int32 spawnModifier; signed __int32 parent; signed __int32 nextCollider; signed __int32 colliderObject; double radius;};struct NiPSysPositionModifier { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active;};struct NiPSysResetOnLoopCtlr { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target;};struct NiPSysRotationModifier { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active; double initialRotationSpeed; double initialRotationSpeedVariation; double initialRotationAngle; double initialRotationAngleVariation; unsigned __int8 randomRotSpeedSign; unsigned __int8 randomInitialAxis; Vector3 initialAxis;};struct NiPSysSpawnModifier { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active; unsigned __int16 numSpawnGenerations; double percentageSpawned; unsigned __int16 minNumToSpawn; unsigned __int16 maxNumToSpawn; double spawnSpeedChaos; double spawnDirChaos; double lifeSpan; double lifeSpanVariation;};struct NiPSysSphereEmitter { String name; unsigned __int32 order; signed __int32 target; unsigned __int8 active; double speed; double speedVariation; double declination; double declinationVariation; double planarAngle; double planarAngleVariation; Color4 initialColor; double initialRadius; double radiusVariation; double lifeSpan; double lifeSpanVariation; signed __int32 emitterObject; double radius;};struct NiPSysUpdateCtlr { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target;};struct NiLODData {};struct NiRangeLODData { Vector3 lodCenter; unsigned __int32 numLodLevels; LODRange lodLevels[numLodLevels];};struct NiScreenLODData { Vector3 boundCenter; double boundRadius; Vector3 worldCenter; double worldRadius; unsigned __int32 proportionCount; double proportionLevels[proportionCount];};struct NiRotatingParticles { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; signed __int32 data; signed __int32 skinInstance; unsigned __int8 hasShader; String shaderName; signed __int32 unknownLink;};struct NiSequenceStreamHelper { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller;};struct NiShadeProperty { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags;};struct NiSkinData { Matrix33 rotation; Vector3 translation; double scale; unsigned __int32 numBones; unsigned __int8 hasVertexWeights; SkinData boneList[numBones];};struct NiSkinInstance { signed __int32 data; signed __int32 skinPartition; signed __int32 skeletonRoot; unsigned __int32 numBones; signed __int32 bones[numBones];};struct NiTriShapeSkinController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; unsigned __int32 numBones; unsigned __int32 vertexCounts[numBones]; signed __int32 bones[numBones]; OldSkinData boneData[numBones * vertexCounts];};struct NiClodSkinInstance { signed __int32 data; signed __int32 skinPartition; signed __int32 skeletonRoot; unsigned __int32 numBones; signed __int32 bones[numBones];};struct NiSkinPartition { unsigned __int32 numSkinPartitionBlocks; SkinPartition skinPartitionBlocks[numSkinPartitionBlocks];};struct NiTexture { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller;};struct NiSourceTexture { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; unsigned __int8 useExternal; String fileName; signed __int32 unknownLink; String originalFileName?; signed __int32 pixelData; PixelLayout pixelLayout; MipMapFormat useMipmaps; AlphaFormat alphaFormat; unsigned __int8 unknownByte; unsigned __int8 unknownByte2;};struct NiSpecularProperty { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags;};struct NiSphericalCollider { signed __int32 nextModifier; signed __int32 controller; double unknownFloat1; unsigned __int16 unknownShort1; double unknownFloat2; double unknownFloat3; double unknownFloat4; double unknownFloat5;};struct NiSpotLight { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; unsigned __int8 switchState; unsigned __int32 numAffectedNodes; signed __int32 affectedNodes[numAffectedNodes]; double dimmer; Color3 ambientColor; Color3 diffuseColor; Color3 specularColor; double constantAttenuation; double linearAttenuation; double quadraticAttenuation; double cutoffAngle; double exponent;};struct NiStencilProperty { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; unsigned __int8 stencilEnabled; CompareMode stencilFunction; unsigned __int32 stencilRef; unsigned __int32 stencilMask; StencilAction failAction; StencilAction zFailAction; StencilAction passAction; FaceDrawMode drawMode;};struct NiStringExtraData { String name; String stringData;};struct NiStringPalette { StringPalette palette;};struct NiStringsExtraData { String name; unsigned __int32 numStrings; String data[numStrings];};struct NiTextKeyExtraData { String name; unsigned __int32 numTextKeys; Key_String textKeys[numTextKeys];};struct NiTextureEffect { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; unsigned __int8 switchState; unsigned __int32 numAffectedNodes; signed __int32 affectedNodes[numAffectedNodes]; Matrix33 modelProjectionMatrix; Vector3 modelProjectionTransform; TexFilterMode textureFiltering; TexClampMode textureClamping; unsigned __int32 textureType; unsigned __int32 coordinateGenerationType; signed __int32 sourceTexture; unsigned __int8 clippingPlane; Vector3 unknownVector; double unknownFloat;};struct NiTextureModeProperty { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; signed __int16 unknownShort; signed __int16 unknown2Shorts[2];};struct NiImage { unsigned __int8 external; String fileName; signed __int32 imageData; unsigned __int32 unknownInt1; unsigned __int32 unknownInt2;};struct NiTextureProperty { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; signed __int32 image;};struct NiMultiTextureProperty { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; unsigned __int32 unknownInt; MultiTextureElement textureElements[5];};struct NiTexturingProperty { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; ApplyMode applyMode; unsigned __int32 textureCount; unsigned __int8 hasBaseTexture; TexDesc baseTexture; unsigned __int8 hasDarkTexture; TexDesc darkTexture; unsigned __int8 hasDetailTexture; TexDesc detailTexture; unsigned __int8 hasGlossTexture; TexDesc glossTexture; unsigned __int8 hasGlowTexture; TexDesc glowTexture; unsigned __int8 hasBumpMapTexture; TexDesc bumpMapTexture; double bumpMapLumaScale; double bumpMapLumaOffset; Matrix22 bumpMapMatrix; unsigned __int8 hasDecal0Texture; TexDesc decal0Texture; unsigned __int8 hasDecal1Texture; TexDesc decal1Texture; unsigned __int8 hasDecal2Texture; TexDesc decal2Texture; unsigned __int8 hasDecal3Texture; TexDesc decal3Texture; unsigned __int32 numShaderTextures; ShaderTexDesc shaderTextures[numShaderTextures];};struct NiTransformData { unsigned __int32 numRotationKeys; KeyType rotationType; QuatKey_Quaternion quaternionKeys[numRotationKeys]; KeyGroup_Float xyzRotations[3]; KeyGroup_Vector3 translations; KeyGroup_Float scales;};struct NiTriShape { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; signed __int32 data; signed __int32 skinInstance; unsigned __int8 hasShader; String shaderName; signed __int32 unknownLink;};struct NiTriShapeData { String name; unsigned __int16 numVertices; unsigned __int16 unknownShort1; unsigned __int8 hasVertices; Vector3 vertices[numVertices]; unsigned __int16 numUvSets; unsigned __int8 hasNormals; Vector3 normals[numVertices]; Vector3 unknownVectors1[numVertices]; Vector3 unknownVectors2[numVertices]; Vector3 center; double radius; unsigned __int8 hasVertexColors; Color4 vertexColors[numVertices]; TexCoord uvSets[numUvSets * numVertices] // WARNING - should be [numUvSets & 63 * numVertices]; unsigned __int16 unknownShort2; signed __int32 unknownLink1; unsigned __int16 numTriangles; unsigned __int32 numTrianglePoints; unsigned __int8 hasTriangles; Triangle triangles[numTriangles]; unsigned __int16 numMatchGroups; MatchGroup matchGroups[numMatchGroups];};struct NiTriStrips { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; signed __int32 data; signed __int32 skinInstance; unsigned __int8 hasShader; String shaderName; signed __int32 unknownLink;};struct NiTriStripsData { String name; unsigned __int16 numVertices; unsigned __int16 unknownShort1; unsigned __int8 hasVertices; Vector3 vertices[numVertices]; unsigned __int16 numUvSets; unsigned __int8 hasNormals; Vector3 normals[numVertices]; Vector3 unknownVectors1[numVertices]; Vector3 unknownVectors2[numVertices]; Vector3 center; double radius; unsigned __int8 hasVertexColors; Color4 vertexColors[numVertices]; TexCoord uvSets[numUvSets * numVertices] // WARNING - should be [numUvSets & 63 * numVertices]; unsigned __int16 unknownShort2; signed __int32 unknownLink1; unsigned __int16 numTriangles; unsigned __int16 numStrips; unsigned __int16 stripLengths[numStrips]; unsigned __int8 hasPoints; unsigned __int16 points[numStrips * stripLengths];};struct NiClod { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; signed __int32 data; signed __int32 skinInstance; unsigned __int8 hasShader; String shaderName; signed __int32 unknownLink;};struct NiClodData { String name; unsigned __int16 numVertices; unsigned __int16 unknownShort1; unsigned __int8 hasVertices; Vector3 vertices[numVertices]; unsigned __int16 numUvSets; unsigned __int8 hasNormals; Vector3 normals[numVertices]; Vector3 unknownVectors1[numVertices]; Vector3 unknownVectors2[numVertices]; Vector3 center; double radius; unsigned __int8 hasVertexColors; Color4 vertexColors[numVertices]; TexCoord uvSets[numUvSets * numVertices] // WARNING - should be [numUvSets & 63 * numVertices]; unsigned __int16 unknownShort2; signed __int32 unknownLink1; unsigned __int16 numTriangles; unsigned __int16 unknownShorts; unsigned __int16 unknownCount1; unsigned __int16 unknownCount2; unsigned __int16 unknownCount3; double unknownFloat; unsigned __int16 unknownShort; unsigned __int16 unknownClodShorts1[unknownCount1 * 6]; unsigned __int16 unknownClodShorts2[unknownCount2]; unsigned __int16 unknownClodShorts3[unknownCount3 * 6];};struct NiUVController { signed __int32 nextController; Flags flags; double frequency; double phase; double startTime; double stopTime; signed __int32 target; unsigned __int16 unknownShort; signed __int32 data;};struct NiUVData { KeyGroup_Float uvGroups[4];};struct NiVectorExtraData { String name; Vector3 vectorData; double unknownFloat;};struct NiVertexColorProperty { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; VertMode vertexMode; LightMode lightingMode;};struct NiVertWeightsExtraData { String name; unsigned __int32 numBytes; unsigned __int16 numVertices; double weight[numVertices];};struct NiVisData { unsigned __int32 numVisKeys; Key_Byte visKeys[numVisKeys];};struct NiWireframeProperty { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags;};struct NiZBufferProperty { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; CompareMode function;};struct RootCollisionNode { String name; unsigned __int32 numExtraDataList; signed __int32 extraDataList[numExtraDataList]; signed __int32 controller; Flags flags; Vector3 translation; Matrix33 rotation; double scale; unsigned __int32 numProperties; signed __int32 properties[numProperties]; signed __int32 collisionObject; unsigned __int32 numChildren; signed __int32 children[numChildren]; unsigned __int32 numEffects; signed __int32 effects[numEffects];};struct NiRawImageData { unsigned __int32 width; unsigned __int32 height; unsigned __int32 imageType; ByteColor3 rgbImageData[width * height]; ByteColor4 rgbaImageData[width * height];};