From 75f537e7aa7a06afc8cf56779701f57a0f06c9b7 Mon Sep 17 00:00:00 2001 From: Shon Ferguson <shonferg@users.sourceforge.net> Date: Sat, 19 May 2007 21:55:39 +0000 Subject: [PATCH] Preparing for new Python generation method. Will break compilation for a while. obj_defines.h and obj_impl.cpp will no longer be necessary once this is complete. --- include/{gen => }/FixLink.h | 3 +- include/gen/obj_defines.h | 2215 ----- niflib.vcproj | 12 - src/gen/obj_impl.cpp | 14734 ---------------------------------- 4 files changed, 2 insertions(+), 16962 deletions(-) rename include/{gen => }/FixLink.h (97%) delete mode 100644 include/gen/obj_defines.h delete mode 100644 src/gen/obj_impl.cpp diff --git a/include/gen/FixLink.h b/include/FixLink.h similarity index 97% rename from include/gen/FixLink.h rename to include/FixLink.h index 93cb5c66..54b7bd3e 100644 --- a/include/gen/FixLink.h +++ b/include/FixLink.h @@ -5,7 +5,8 @@ All rights reserved. Please see niflib.h for license. */ //To change this file, alter the niftools/docsys/nifxml_niflib.py Python script. -#include "../../include/obj/NiObject.h" +#include "obj/NiObject.h" +#include "Ref.h" namespace Niflib { using namespace std; diff --git a/include/gen/obj_defines.h b/include/gen/obj_defines.h deleted file mode 100644 index 02ba52e3..00000000 --- a/include/gen/obj_defines.h +++ /dev/null @@ -1,2215 +0,0 @@ -/* Copyright (c) 2006, NIF File Format Library and Tools -All rights reserved. Please see niflib.h for license. */ - -//---THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT---// - -//To change this file, alter the niftools/docsys/nifxml_niflib.py Python script. - -#ifndef _OBJ_DEFINES_H_ -#define _OBJ_DEFINES_H_ - -#define MAXARRAYDUMP 20 - -#define NI_OBJECT_MEMBERS \ - -#define A_PARTICLE_MODIFIER_MEMBERS \ -Ref<AParticleModifier > nextModifier; \ -NiParticleSystemController * controller; \ - -#define NI_P_SYS_COLLIDER_MEMBERS \ -float bounce; \ -bool spawnOnCollide; \ -bool dieOnCollide; \ -Ref<NiPSysSpawnModifier > spawnModifier; \ -NiObject * parent; \ -Ref<NiObject > nextCollider; \ -Ref<NiNode > colliderObject; \ - -#define BHK_REF_OBJECT_MEMBERS \ - -#define BHK_SERIALIZABLE_MEMBERS \ - -#define BHK_WORLD_OBJECT_MEMBERS \ -Ref<bhkShape > shape; \ -OblivionLayer layer; \ -byte colFilter; \ -unsigned short unknownShort; \ - -#define BHK_PHANTOM_MEMBERS \ - -#define BHK_SHAPE_PHANTOM_MEMBERS \ - -#define BHK_SIMPLE_SHAPE_PHANTOM_MEMBERS \ -array<7,float > unkownFloats; \ -array< 3, array<5,float > > unknownFloats2; \ -float unknownFloat; \ - -#define BHK_ENTITY_MEMBERS \ - -#define BHK_RIGID_BODY_MEMBERS \ -array<5,float > unknown5Floats; \ -array<4,unsigned short > unknown4Shorts; \ -OblivionLayer layerCopy; \ -byte colFilterCopy; \ -array<7,unsigned short > unknown7Shorts; \ -Vector3 translation; \ -float unknownFloat00; \ -QuaternionXYZW rotation; \ -Vector3 linearVelocity; \ -float unknownFloat01; \ -Vector3 angularVelocity; \ -float unknownFloat02; \ -array<12,float > inertia; \ -Vector3 center; \ -float unknownFloat03; \ -float mass; \ -float linearDamping; \ -float angularDamping; \ -float friction; \ -float restitution; \ -float maxLinearVelocity; \ -float maxAngularVelocity; \ -float penetrationDepth; \ -MotionSystem motionSystem; \ -byte unknownByte1; \ -byte unknownByte2; \ -MotionQuality qualityType; \ -unsigned int unknownInt6; \ -unsigned int unknownInt7; \ -unsigned int unknownInt8; \ -mutable unsigned int numConstraints; \ -vector<Ref<bhkConstraint > > constraints; \ - -#define BHK_RIGID_BODY_T_MEMBERS \ - -#define BHK_CONSTRAINT_MEMBERS \ -mutable unsigned int numEntities; \ -vector<bhkEntity * > entities; \ -unsigned int priority; \ - -#define BHK_LIMITED_HINGE_CONSTRAINT_MEMBERS \ -LimitedHingeDescriptor limitedHinge; \ - -#define BHK_MALLEABLE_CONSTRAINT_MEMBERS \ -unsigned int type; \ -unsigned int unknownInt2; \ -Ref<NiObject > unknownLink1; \ -Ref<NiObject > unknownLink2; \ -unsigned int unknownInt3; \ -RagdollDescriptor ragdoll; \ -LimitedHingeDescriptor limitedHinge; \ -float tau; \ -float damping; \ - -#define BHK_STIFF_SPRING_CONSTRAINT_MEMBERS \ -Float4 pivotA; \ -Float4 pivotB; \ -float length; \ - -#define BHK_RAGDOLL_CONSTRAINT_MEMBERS \ -RagdollDescriptor ragdoll; \ - -#define BHK_PRISMATIC_CONSTRAINT_MEMBERS \ -array<8,Float4 > unknownVectors; \ -array<3,float > unknownFloats2; \ - -#define BHK_HINGE_CONSTRAINT_MEMBERS \ -Float4 pivotA; \ -Float4 perp2axleina1; \ -Float4 perp2axleina2; \ -Float4 pivotB; \ -Float4 axleB; \ - -#define BHK_SHAPE_MEMBERS \ - -#define BHK_TRANSFORM_SHAPE_MEMBERS \ -Ref<bhkShape > shape; \ -HavokMaterial material; \ -float unknownFloat1; \ -array<8,byte > unknown8Bytes; \ -Matrix44 transform; \ - -#define BHK_SPHERE_REP_SHAPE_MEMBERS \ -HavokMaterial material; \ -float radius; \ - -#define BHK_CONVEX_SHAPE_MEMBERS \ - -#define BHK_SPHERE_SHAPE_MEMBERS \ - -#define BHK_CAPSULE_SHAPE_MEMBERS \ -unsigned short unknownShort1; \ -unsigned short unknownShort2; \ -unsigned short unknownShort3; \ -unsigned short unknownShort4; \ -Vector3 firstPoint; \ -float radius1; \ -Vector3 secondPoint; \ -float radius2; \ - -#define BHK_BOX_SHAPE_MEMBERS \ -unsigned short unknownShort1; \ -unsigned short unknownShort2; \ -unsigned short unknownShort3; \ -unsigned short unknownShort4; \ -Vector3 dimensions; \ -float min_Size; \ - -#define BHK_CONVEX_VERTICES_SHAPE_MEMBERS \ -array<6,float > unknown6Floats; \ -mutable unsigned int numVertices; \ -vector<Float4 > vertices; \ -mutable unsigned int numNormals; \ -vector<Float4 > normals; \ - -#define BHK_CONVEX_TRANSFORM_SHAPE_MEMBERS \ - -#define BHK_MULTI_SPHERE_SHAPE_MEMBERS \ -float unknownFloat1; \ -float unknownFloat2; \ -mutable unsigned int numSpheres; \ -vector<Sphere > spheres; \ - -#define BHK_BV_TREE_SHAPE_MEMBERS \ - -#define BHK_MOPP_BV_TREE_SHAPE_MEMBERS \ -Ref<bhkShape > shape; \ -HavokMaterial material; \ -array<8,byte > unknown8Bytes; \ -float unknownFloat; \ -mutable unsigned int moppDataSize; \ -Vector3 objectCorner; \ -float scalingFactor; \ -vector<byte > moppData; \ - -#define BHK_SHAPE_COLLECTION_MEMBERS \ - -#define BHK_LIST_SHAPE_MEMBERS \ -mutable unsigned int numSubShapes; \ -vector<Ref<bhkShape > > subShapes; \ -HavokMaterial material; \ -array<6,float > unknownFloats; \ -mutable unsigned int numUnknownInts; \ -vector<unsigned int > unknownInts; \ - -#define BHK_PACKED_NI_TRI_STRIPS_SHAPE_MEMBERS \ -mutable unsigned short numSubShapes; \ -vector<OblivionSubShape > subShapes; \ -array<9,float > unknownFloats; \ -float scale; \ -array<3,float > unknownFloats2; \ -Ref<hkPackedNiTriStripsData > data; \ - -#define BHK_NI_TRI_STRIPS_SHAPE_MEMBERS \ -HavokMaterial material; \ -float unknownFloat1; \ -unsigned int unknownInt1; \ -array<4,unsigned int > unknownInts1; \ -unsigned int unknownInt2; \ -Vector3 scale; \ -unsigned int unknownInt3; \ -mutable unsigned int numStripsData; \ -vector<Ref<NiTriStripsData > > stripsData; \ -mutable unsigned int numDataLayers; \ -vector<OblivionColFilter > dataLayers; \ - -#define NI_EXTRA_DATA_MEMBERS \ -string name; \ -Ref<NiExtraData > nextExtraData; \ - -#define NI_INTERPOLATOR_MEMBERS \ - -#define NI_KEY_BASED_INTERPOLATOR_MEMBERS \ - -#define NI_FLOAT_INTERPOLATOR_MEMBERS \ -float floatValue; \ -Ref<NiFloatData > data; \ - -#define NI_TRANSFORM_INTERPOLATOR_MEMBERS \ -Vector3 translation; \ -Quaternion rotation; \ -float scale; \ -array<3,byte > unknownBytes; \ -Ref<NiTransformData > data; \ - -#define NI_POINT3_INTERPOLATOR_MEMBERS \ -Vector3 point3Value; \ -Ref<NiPosData > data; \ - -#define NI_PATH_INTERPOLATOR_MEMBERS \ -unsigned short unknownShort; \ -unsigned int unknownInt; \ -float unknownFloat1; \ -float unknownFloat2; \ -unsigned short unknownShort2; \ -Ref<NiPosData > posData; \ -Ref<NiFloatData > floatData; \ - -#define NI_BOOL_INTERPOLATOR_MEMBERS \ -bool boolValue; \ -Ref<NiBoolData > data; \ - -#define NI_BOOL_TIMELINE_INTERPOLATOR_MEMBERS \ - -#define NI_BLEND_INTERPOLATOR_MEMBERS \ -unsigned short unknownShort; \ -unsigned int unknownInt; \ - -#define NI_B_SPLINE_INTERPOLATOR_MEMBERS \ -float startTime; \ -float stopTime; \ -Ref<NiBSplineData > splineData; \ -Ref<NiBSplineBasisData > basisData; \ - -#define NI_OBJECT_N_E_T_MEMBERS \ -string name; \ -Ref<NiExtraData > extraData; \ -mutable unsigned int numExtraDataList; \ -vector<Ref<NiExtraData > > extraDataList; \ -Ref<NiTimeController > controller; \ - -#define NI_COLLISION_OBJECT_MEMBERS \ -NiAVObject * target; \ -unsigned short unknownShort; \ -Ref<NiObject > body; \ - -#define NI_COLLISION_DATA_MEMBERS \ -unsigned int unknownInt1; \ -unsigned int unknownInt2; \ -byte unknownByte; \ -unsigned int collisionType; \ -Vector3 unknownVector; \ -array<8,float > unknownFloat1; \ -array<15,float > unknownFloat2; \ - -#define BHK_NI_COLLISION_OBJECT_MEMBERS \ - -#define BHK_COLLISION_OBJECT_MEMBERS \ - -#define BHK_BLEND_COLLISION_OBJECT_MEMBERS \ -float unknownFloat1; \ -float unknownFloat2; \ - -#define BHK_P_COLLISION_OBJECT_MEMBERS \ - -#define BHK_S_P_COLLISION_OBJECT_MEMBERS \ - -#define NI_A_V_OBJECT_MEMBERS \ -unsigned short flags; \ -Vector3 translation; \ -Matrix33 rotation; \ -float scale; \ -Vector3 velocity; \ -mutable unsigned int numProperties; \ -vector<Ref<NiProperty > > properties; \ -bool hasBoundingBox; \ -BoundingBox boundingBox; \ -Ref<NiCollisionObject > collisionObject; \ - -#define NI_DYNAMIC_EFFECT_MEMBERS \ -bool switchState; \ -mutable unsigned int numAffectedNodeListPointers; \ -mutable unsigned int numAffectedNodes; \ -vector<unsigned int > affectedNodeListPointers; \ -vector<Ref<NiAVObject > > affectedNodes; \ - -#define NI_LIGHT_MEMBERS \ -float dimmer; \ -Color3 ambientColor; \ -Color3 diffuseColor; \ -Color3 specularColor; \ - -#define NI_PROPERTY_MEMBERS \ - -#define NI_P_SYS_MODIFIER_MEMBERS \ -string name; \ -unsigned int order; \ -NiParticleSystem * target; \ -bool active; \ - -#define NI_P_SYS_EMITTER_MEMBERS \ -float speed; \ -float speedVariation; \ -float declination; \ -float declinationVariation; \ -float planarAngle; \ -float planarAngleVariation; \ -Color4 initialColor; \ -float initialRadius; \ -float radiusVariation; \ -float lifeSpan; \ -float lifeSpanVariation; \ - -#define NI_P_SYS_VOLUME_EMITTER_MEMBERS \ -NiNode * emitterObject; \ - -#define NI_TIME_CONTROLLER_MEMBERS \ -Ref<NiTimeController > nextController; \ -unsigned short flags; \ -float frequency; \ -float phase; \ -float startTime; \ -float stopTime; \ -NiObjectNET * target; \ - -#define NI_INTERP_CONTROLLER_MEMBERS \ - -#define NI_MULTI_TARGET_TRANSFORM_CONTROLLER_MEMBERS \ -mutable unsigned short numExtraTargets; \ -vector<NiNode * > extraTargets; \ - -#define NI_GEOM_MORPHER_CONTROLLER_MEMBERS \ -unsigned short unknown; \ -byte unknown2; \ -Ref<NiMorphData > data; \ -byte unknownByte; \ -mutable unsigned int numInterpolators; \ -vector<Ref<NiInterpolator > > interpolators; \ -mutable unsigned int numUnknownInts; \ -vector<unsigned int > unknownInts; \ - -#define NI_SINGLE_INTERP_CONTROLLER_MEMBERS \ -Ref<NiInterpolator > interpolator; \ - -#define NI_TRANSFORM_CONTROLLER_MEMBERS \ - -#define NI_P_SYS_MODIFIER_CTLR_MEMBERS \ -string modifierName; \ - -#define NI_P_SYS_EMITTER_CTLR_MEMBERS \ -Ref<NiPSysEmitterCtlrData > data; \ -Ref<NiInterpolator > visibilityInterpolator; \ - -#define NI_P_SYS_MODIFIER_BOOL_CTLR_MEMBERS \ - -#define NI_P_SYS_MODIFIER_ACTIVE_CTLR_MEMBERS \ -Ref<NiVisData > data; \ - -#define NI_P_SYS_MODIFIER_FLOAT_CTLR_MEMBERS \ -Ref<NiFloatData > data; \ - -#define NI_P_SYS_EMITTER_DECLINATION_CTLR_MEMBERS \ - -#define NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_MEMBERS \ - -#define NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_MEMBERS \ - -#define NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_MEMBERS \ - -#define NI_P_SYS_EMITTER_SPEED_CTLR_MEMBERS \ - -#define NI_P_SYS_GRAVITY_STRENGTH_CTLR_MEMBERS \ - -#define NI_FLOAT_INTERP_CONTROLLER_MEMBERS \ - -#define NI_FLIP_CONTROLLER_MEMBERS \ -unsigned int textureSlot; \ -unsigned int unknownInt2; \ -float delta; \ -mutable unsigned int numSources; \ -vector<Ref<NiSourceTexture > > sources; \ -vector<Ref<NiImage > > image; \ - -#define NI_ALPHA_CONTROLLER_MEMBERS \ -Ref<NiFloatData > data; \ - -#define NI_TEXTURE_TRANSFORM_CONTROLLER_MEMBERS \ -byte unknown2; \ -TexType textureSlot; \ -unsigned int operation; \ -Ref<NiFloatData > data; \ - -#define NI_LIGHT_DIMMER_CONTROLLER_MEMBERS \ - -#define NI_BOOL_INTERP_CONTROLLER_MEMBERS \ - -#define NI_VIS_CONTROLLER_MEMBERS \ -Ref<NiVisData > data; \ - -#define NI_POINT3_INTERP_CONTROLLER_MEMBERS \ -unsigned short targetColor; \ -Ref<NiPosData > data; \ - -#define NI_MATERIAL_COLOR_CONTROLLER_MEMBERS \ - -#define NI_LIGHT_COLOR_CONTROLLER_MEMBERS \ - -#define NI_EXTRA_DATA_CONTROLLER_MEMBERS \ - -#define NI_FLOAT_EXTRA_DATA_CONTROLLER_MEMBERS \ -string controllerData; \ - -#define NI_BONE_L_O_D_CONTROLLER_MEMBERS \ -unsigned int unknownInt1; \ -mutable unsigned int numNodeGroups; \ -unsigned int numNodeGroups2; \ -vector<NodeGroup > nodeGroups; \ -mutable unsigned int numShapeGroups; \ -vector<SkinShapeGroup > shapeGroups1; \ -mutable unsigned int numShapeGroups2; \ -vector<Ref<NiTriShape > > shapeGroups2; \ - -#define NI_B_S_BONE_L_O_D_CONTROLLER_MEMBERS \ - -#define NI_GEOMETRY_MEMBERS \ -Ref<NiGeometryData > data; \ -Ref<NiSkinInstance > skinInstance; \ -bool hasShader; \ -string shaderName; \ -Ref<NiObject > unknownLink; \ - -#define NI_TRI_BASED_GEOM_MEMBERS \ - -#define NI_GEOMETRY_DATA_MEMBERS \ -string name; \ -mutable unsigned short numVertices; \ -unsigned short unknownShort1; \ -bool hasVertices; \ -vector<Vector3 > vertices; \ -mutable byte numUvSets2; \ -byte unknownByte1; \ -bool hasNormals; \ -vector<Vector3 > normals; \ -vector<Vector3 > unknownVectors1; \ -vector<Vector3 > unknownVectors2; \ -Vector3 center; \ -float radius; \ -bool hasVertexColors; \ -vector<Color4 > vertexColors; \ -mutable unsigned short numUvSets; \ -bool hasUv; \ -vector< vector<TexCoord > > uvSets; \ -unsigned short unknownShort2; \ -Ref<NiObject > unknownLink1; \ - -#define NI_TRI_BASED_GEOM_DATA_MEMBERS \ -unsigned short numTriangles; \ - -#define BHK_BLEND_CONTROLLER_MEMBERS \ -unsigned int unknownInt; \ - -#define B_S_BOUND_MEMBERS \ -Vector3 center; \ -Vector3 dimensions; \ - -#define B_S_FURNITURE_MARKER_MEMBERS \ -mutable unsigned int numPositions; \ -vector<FurniturePosition > positions; \ - -#define B_S_PARENT_VELOCITY_MODIFIER_MEMBERS \ -float unknownFloat; \ - -#define B_S_P_SYS_ARRAY_EMITTER_MEMBERS \ - -#define B_S_WIND_MODIFIER_MEMBERS \ -float unknownFloat; \ - -#define HK_PACKED_NI_TRI_STRIPS_DATA_MEMBERS \ -mutable unsigned int numTriangles; \ -vector<hkTriangle > triangles; \ -mutable unsigned int numVertices; \ -vector<Vector3 > vertices; \ - -#define NI_ALPHA_PROPERTY_MEMBERS \ -unsigned short flags; \ -byte threshold; \ - -#define NI_AMBIENT_LIGHT_MEMBERS \ - -#define NI_PARTICLES_DATA_MEMBERS \ -unsigned short numParticles; \ -float size; \ -unsigned short numActive; \ -unsigned short unknownShort; \ -bool hasSizes; \ -vector<float > sizes; \ -bool hasUnknownFloats1; \ -vector<float > unknownFloats1; \ -bool hasRotations1; \ -vector<Quaternion > rotations1; \ - -#define NI_ROTATING_PARTICLES_DATA_MEMBERS \ -bool hasRotations2; \ -vector<Quaternion > rotations2; \ - -#define NI_AUTO_NORMAL_PARTICLES_DATA_MEMBERS \ - -#define NI_P_SYS_DATA_MEMBERS \ -vector< array<10,float > > unknownFloats2; \ -bool hasUnknownFloats3; \ -vector<float > unknownFloats1; \ -bool hasUnknownFloats4; \ -vector< array<4,float > > unknownFloats4; \ -vector< array<7,float > > unknownFloats5; \ -bool hasUnknownFloats6; \ -vector<float > unknownFloats6; \ -unsigned int unknownInt1; \ - -#define NI_MESH_P_SYS_DATA_MEMBERS \ -Ref<NiObject > modifier; \ -byte unknownByte2; \ -mutable unsigned int numUnknownLinks; \ -vector<Ref<NiObject > > unknownLinks; \ -unsigned int numVertices2; \ -byte unknownByte3; \ -unsigned int unknownInt2; \ -unsigned int numVertices3; \ -Ref<NiNode > unknownLink2; \ - -#define NI_BINARY_EXTRA_DATA_MEMBERS \ -ByteArray binaryData; \ - -#define NI_BINARY_VOXEL_EXTRA_DATA_MEMBERS \ -unsigned int unknownInt; \ -Ref<NiBinaryVoxelData > data; \ - -#define NI_BINARY_VOXEL_DATA_MEMBERS \ -unsigned short unknownShort1; \ -unsigned short unknownShort2; \ -unsigned short unknownShort3; \ -array<7,float > unknown7Floats; \ -array< 7, array<12,byte > > unknownBytes1; \ -mutable unsigned int numUnknownVectors; \ -vector<Float4 > unknownVectors; \ -mutable unsigned int numUnknownBytes2; \ -vector<byte > unknownBytes2; \ -array<5,unsigned int > unknown5Ints; \ - -#define NI_BLEND_BOOL_INTERPOLATOR_MEMBERS \ -byte boolValue; \ - -#define NI_BLEND_FLOAT_INTERPOLATOR_MEMBERS \ -float floatValue; \ - -#define NI_BLEND_POINT3_INTERPOLATOR_MEMBERS \ -Vector3 pointValue; \ - -#define NI_BLEND_TRANSFORM_INTERPOLATOR_MEMBERS \ - -#define NI_BOOL_DATA_MEMBERS \ -KeyGroup<byte > data; \ - -#define NI_BOOLEAN_EXTRA_DATA_MEMBERS \ -byte booleanData; \ - -#define NI_B_SPLINE_BASIS_DATA_MEMBERS \ -unsigned int numControlPt; \ - -#define NI_B_SPLINE_FLOAT_INTERPOLATOR_MEMBERS \ - -#define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_MEMBERS \ -array<4,float > unknownFloats; \ - -#define NI_B_SPLINE_POINT3_INTERPOLATOR_MEMBERS \ -array<6,float > unknownFloats; \ - -#define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_MEMBERS \ -array<6,float > unknownFloats; \ - -#define NI_B_SPLINE_TRANSFORM_INTERPOLATOR_MEMBERS \ - -#define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_MEMBERS \ -Vector3 translation; \ -Quaternion rotation; \ -float scale; \ -unsigned int translateOffset; \ -unsigned int rotateOffset; \ -unsigned int scaleOffset; \ -float translateBias; \ -float translateMultiplier; \ -float rotationBias; \ -float rotationMultiplier; \ -float scaleBias; \ -float scaleMultiplier; \ - -#define NI_B_SPLINE_DATA_MEMBERS \ -unsigned int unknownInt; \ -mutable unsigned int count; \ -vector<short > controlPoints; \ - -#define NI_CAMERA_MEMBERS \ -unsigned short unknownShort; \ -float frustumLeft; \ -float frustumRight; \ -float frustumTop; \ -float frustumBottom; \ -float frustumNear; \ -float frustumFar; \ -bool useOrthographicProjection; \ -float viewportLeft; \ -float viewportRight; \ -float viewportTop; \ -float viewportBottom; \ -float lodAdjust; \ -Ref<NiObject > unknownLink_; \ -unsigned int unknownInt; \ -unsigned int unknownInt2; \ -unsigned int unknownInt3; \ - -#define NI_COLOR_DATA_MEMBERS \ -KeyGroup<Color4 > data; \ - -#define NI_COLOR_EXTRA_DATA_MEMBERS \ -Color4 data; \ - -#define NI_CONTROLLER_MANAGER_MEMBERS \ -bool cumulative; \ -mutable unsigned int numControllerSequences; \ -vector<Ref<NiControllerSequence > > controllerSequences; \ -Ref<NiDefaultAVObjectPalette > objectPalette; \ - -#define NI_SEQUENCE_MEMBERS \ -string name; \ -string textKeysName; \ -Ref<NiTextKeyExtraData > textKeys; \ -mutable unsigned int numControlledBlocks; \ -unsigned int unknownInt1; \ -vector<ControllerLink > controlledBlocks; \ - -#define NI_CONTROLLER_SEQUENCE_MEMBERS \ -float weight; \ -Ref<NiTextKeyExtraData > textKeys; \ -CycleType cycleType; \ -unsigned int unknownInt0; \ -float frequency; \ -float startTime; \ -float stopTime; \ -float unknownFloat2; \ -byte unknownByte; \ -NiControllerManager * manager; \ -string targetName; \ -Ref<NiStringPalette > stringPalette; \ - -#define NI_A_V_OBJECT_PALETTE_MEMBERS \ - -#define NI_DEFAULT_A_V_OBJECT_PALETTE_MEMBERS \ -unsigned int unknownInt; \ -mutable unsigned int numObjs; \ -vector<AVObject > objs; \ - -#define NI_DIRECTIONAL_LIGHT_MEMBERS \ - -#define NI_DITHER_PROPERTY_MEMBERS \ -unsigned short flags; \ - -#define NI_ROLL_CONTROLLER_MEMBERS \ -Ref<NiFloatData > data; \ - -#define NI_FLOAT_DATA_MEMBERS \ -KeyGroup<float > data; \ - -#define NI_FLOAT_EXTRA_DATA_MEMBERS \ -float floatData; \ - -#define NI_FLOATS_EXTRA_DATA_MEMBERS \ -mutable unsigned int numFloats; \ -vector<float > data; \ - -#define NI_FOG_PROPERTY_MEMBERS \ -unsigned short flags; \ -float fogDepth; \ -Color3 fogColor; \ - -#define NI_GRAVITY_MEMBERS \ -float unknownFloat1; \ -float force; \ -FieldType type; \ -Vector3 position; \ -Vector3 direction; \ - -#define NI_INTEGER_EXTRA_DATA_MEMBERS \ -unsigned int integerData; \ - -#define B_S_X_FLAGS_MEMBERS \ - -#define NI_INTEGERS_EXTRA_DATA_MEMBERS \ -mutable unsigned int numIntegers; \ -vector<unsigned int > data; \ - -#define NI_KEYFRAME_CONTROLLER_MEMBERS \ -Ref<NiKeyframeData > data; \ - -#define B_S_KEYFRAME_CONTROLLER_MEMBERS \ -Ref<NiKeyframeData > data2; \ - -#define NI_KEYFRAME_DATA_MEMBERS \ -mutable unsigned int numRotationKeys; \ -KeyType rotationType; \ -vector<Key<Quaternion > > quaternionKeys; \ -float unknownFloat; \ -array<3,KeyGroup<float > > xyzRotations; \ -KeyGroup<Vector3 > translations; \ -KeyGroup<float > scales; \ - -#define NI_LOOK_AT_CONTROLLER_MEMBERS \ -unsigned short unknown1; \ -Ref<NiNode > lookAtNode; \ - -#define NI_LOOK_AT_INTERPOLATOR_MEMBERS \ -unsigned short unknownShort; \ -Ref<NiNode > lookAt; \ -float unknownFloat; \ -Vector3 translation; \ -Quaternion rotation; \ -float scale; \ -Ref<NiPoint3Interpolator > unknownLink1; \ -Ref<NiFloatInterpolator > unknownLink2; \ -Ref<NiFloatInterpolator > unknownLink3; \ - -#define NI_MATERIAL_PROPERTY_MEMBERS \ -unsigned short flags; \ -Color3 ambientColor; \ -Color3 diffuseColor; \ -Color3 specularColor; \ -Color3 emissiveColor; \ -float glossiness; \ -float alpha; \ - -#define NI_MORPH_DATA_MEMBERS \ -mutable unsigned int numMorphs; \ -unsigned int numVertices; \ -byte unknownByte; \ -vector<Morph > morphs; \ - -#define NI_NODE_MEMBERS \ -mutable unsigned int numChildren; \ -vector<Ref<NiAVObject > > children; \ -mutable unsigned int numEffects; \ -vector<Ref<NiDynamicEffect > > effects; \ - -#define NI_BONE_MEMBERS \ - -#define AVOID_NODE_MEMBERS \ - -#define FX_WIDGET_MEMBERS \ -byte unknown1; \ -array<292,byte > unknown292Bytes; \ - -#define FX_BUTTON_MEMBERS \ - -#define FX_RADIO_BUTTON_MEMBERS \ -unsigned int unknownInt1; \ -unsigned int unknownInt2; \ -unsigned int unknownInt3; \ -mutable unsigned int numButtons; \ -vector<FxRadioButton * > buttons; \ - -#define NI_BILLBOARD_NODE_MEMBERS \ -BillboardMode billboardMode; \ - -#define NI_B_S_ANIMATION_NODE_MEMBERS \ - -#define NI_B_S_PARTICLE_NODE_MEMBERS \ - -#define NI_SWITCH_NODE_MEMBERS \ - -#define NI_L_O_D_NODE_MEMBERS \ -array<4,byte > unknown4Bytes; \ -Vector3 lodCenter; \ -mutable unsigned int numLodLevels; \ -vector<LODRange > lodLevels; \ -unsigned short unknownShort; \ -Ref<NiLODData > lodLevelData; \ - -#define NI_PALETTE_MEMBERS \ -byte unknownByte; \ -unsigned int numEntries_; \ -array< 256, array<4,byte > > palette; \ - -#define NI_PARTICLE_BOMB_MEMBERS \ -float unknownFloat1; \ -float unknownFloat2; \ -float unknownFloat3; \ -float unknownFloat4; \ -unsigned int unknownInt1; \ -unsigned int unknownInt2; \ -float unknownFloat5; \ -float unknownFloat6; \ -float unknownFloat7; \ -float unknownFloat8; \ -float unknownFloat9; \ -float unknownFloat10; \ - -#define NI_PARTICLE_COLOR_MODIFIER_MEMBERS \ -Ref<NiColorData > colorData; \ - -#define NI_PARTICLE_GROW_FADE_MEMBERS \ -float grow; \ -float fade; \ - -#define NI_PARTICLE_MESH_MODIFIER_MEMBERS \ -mutable unsigned int numParticleMeshes; \ -vector<Ref<NiAVObject > > particleMeshes; \ - -#define NI_PARTICLE_ROTATION_MEMBERS \ -byte unknownByte; \ -float unknownFloat1; \ -float unknownFloat2; \ -float unknownFloat3; \ -float unknownFloat4; \ - -#define NI_PARTICLES_MEMBERS \ - -#define NI_AUTO_NORMAL_PARTICLES_MEMBERS \ - -#define NI_PARTICLE_MESHES_MEMBERS \ - -#define NI_PARTICLE_MESHES_DATA_MEMBERS \ -Ref<NiAVObject > unknownLink2; \ - -#define NI_PARTICLE_SYSTEM_MEMBERS \ -bool unknownBool; \ -mutable unsigned int numModifiers; \ -vector<Ref<NiPSysModifier > > modifiers; \ - -#define NI_MESH_PARTICLE_SYSTEM_MEMBERS \ - -#define NI_PARTICLE_SYSTEM_CONTROLLER_MEMBERS \ -float speed; \ -float speedRandom; \ -float verticalDirection; \ -float verticalAngle; \ -float horizontalDirection; \ -float horizontalAngle; \ -float unknownFloat5; \ -float unknownFloat6; \ -float unknownFloat7; \ -float unknownFloat8; \ -float unknownFloat9; \ -float unknownFloat10; \ -float unknownFloat11; \ -float size; \ -float emitStartTime; \ -float emitStopTime; \ -byte unknownByte; \ -float emitRate; \ -float lifetime; \ -float lifetimeRandom; \ -unsigned short emitFlags; \ -Vector3 startRandom; \ -NiObject * emitter; \ -unsigned short unknownShort2_; \ -float unknownFloat13_; \ -unsigned int unknownInt1_; \ -unsigned int unknownInt2_; \ -unsigned short unknownShort3_; \ -Particle particle; \ -mutable unsigned short numParticles; \ -unsigned short numValid; \ -vector<Particle > particles; \ -Ref<NiObject > unknownLink; \ -Ref<AParticleModifier > particleExtra; \ -Ref<NiObject > unknownLink2; \ -byte trailer; \ -Ref<NiColorData > colorData; \ -array<2,float > unkownFloats; \ - -#define NI_B_S_P_ARRAY_CONTROLLER_MEMBERS \ - -#define NI_PATH_CONTROLLER_MEMBERS \ -unsigned short unknownShort2; \ -unsigned int unknownInt1; \ -unsigned int unknownInt2; \ -unsigned int unknownInt3; \ -unsigned short unknownShort; \ -Ref<NiPosData > posData; \ -Ref<NiFloatData > floatData; \ - -#define NI_PIXEL_DATA_MEMBERS \ -PixelFormat pixelFormat; \ -unsigned int redMask; \ -unsigned int greenMask; \ -unsigned int blueMask; \ -unsigned int alphaMask; \ -unsigned int bitsPerPixel; \ -array<8,byte > unknown8Bytes; \ -unsigned int unknownInt; \ -array<54,byte > unknown54Bytes; \ -Ref<NiPalette > palette; \ -mutable unsigned int numMipmaps; \ -unsigned int bytesPerPixel; \ -vector<MipMap > mipmaps; \ -ByteArray pixelData; \ -unsigned int unknownInt2; \ - -#define NI_PLANAR_COLLIDER_MEMBERS \ -unsigned short unknownShort; \ -float unknownFloat1; \ -float unknownFloat2; \ -unsigned short unknownShort2; \ -float unknownFloat3; \ -float unknownFloat4; \ -float unknownFloat5; \ -float unknownFloat6; \ -float unknownFloat7; \ -float unknownFloat8; \ -float unknownFloat9; \ -float unknownFloat10; \ -float unknownFloat11; \ -float unknownFloat12; \ -float unknownFloat13; \ -float unknownFloat14; \ -float unknownFloat15; \ -float unknownFloat16; \ - -#define NI_POINT_LIGHT_MEMBERS \ -float constantAttenuation; \ -float linearAttenuation; \ -float quadraticAttenuation; \ - -#define NI_POS_DATA_MEMBERS \ -KeyGroup<Vector3 > data; \ - -#define NI_P_SYS_AGE_DEATH_MODIFIER_MEMBERS \ -bool spawnOnDeath; \ -Ref<NiPSysSpawnModifier > spawnModifier; \ - -#define NI_P_SYS_BOMB_MODIFIER_MEMBERS \ -NiNode * unknownLink; \ -array<2,unsigned int > unknownInts1; \ -array<3,float > unknownFloats; \ -array<2,unsigned int > unknownInts2; \ - -#define NI_P_SYS_BOUND_UPDATE_MODIFIER_MEMBERS \ -unsigned short updateSkip; \ - -#define NI_P_SYS_BOX_EMITTER_MEMBERS \ -float width; \ -float height; \ -float depth; \ - -#define NI_P_SYS_COLLIDER_MANAGER_MEMBERS \ -Ref<NiPSysPlanarCollider > collider; \ - -#define NI_P_SYS_COLOR_MODIFIER_MEMBERS \ -Ref<NiColorData > data; \ - -#define NI_P_SYS_CYLINDER_EMITTER_MEMBERS \ -float radius; \ -float height; \ - -#define NI_P_SYS_DRAG_MODIFIER_MEMBERS \ -NiObject * parent; \ -Vector3 dragAxis; \ -float percentage; \ -float range; \ -float rangeFalloff; \ - -#define NI_P_SYS_EMITTER_CTLR_DATA_MEMBERS \ -KeyGroup<float > floatKeys_; \ -mutable unsigned int numVisibilityKeys_; \ -vector<Key<byte > > visibilityKeys_; \ - -#define NI_P_SYS_GRAVITY_MODIFIER_MEMBERS \ -NiNode * gravityObject; \ -Vector3 gravityAxis; \ -float decay; \ -float strength; \ -ForceType forceType; \ -float turbulence; \ -float turbulenceScale; \ - -#define NI_P_SYS_GROW_FADE_MODIFIER_MEMBERS \ -float growTime; \ -unsigned short growGeneration; \ -float fadeTime; \ -unsigned short fadeGeneration; \ - -#define NI_P_SYS_MESH_EMITTER_MEMBERS \ -mutable unsigned int numEmitterMeshes; \ -vector<Ref<NiTriBasedGeom > > emitterMeshes; \ -unsigned int initialVelocityType; \ -unsigned int emissionType; \ -Vector3 emissionAxis; \ - -#define NI_P_SYS_MESH_UPDATE_MODIFIER_MEMBERS \ -mutable unsigned int numMeshes; \ -vector<Ref<NiNode > > meshes; \ - -#define NI_P_SYS_PLANAR_COLLIDER_MEMBERS \ -float width; \ -float height; \ -Vector3 xAxis; \ -Vector3 yAxis; \ - -#define NI_P_SYS_SPHERICAL_COLLIDER_MEMBERS \ -float radius; \ - -#define NI_P_SYS_POSITION_MODIFIER_MEMBERS \ - -#define NI_P_SYS_RESET_ON_LOOP_CTLR_MEMBERS \ - -#define NI_P_SYS_ROTATION_MODIFIER_MEMBERS \ -float initialRotationSpeed; \ -float initialRotationSpeedVariation; \ -float initialRotationAngle; \ -float initialRotationAngleVariation; \ -bool randomRotSpeedSign; \ -bool randomInitialAxis; \ -Vector3 initialAxis; \ - -#define NI_P_SYS_SPAWN_MODIFIER_MEMBERS \ -unsigned short numSpawnGenerations; \ -float percentageSpawned; \ -unsigned short minNumToSpawn; \ -unsigned short maxNumToSpawn; \ -float spawnSpeedChaos; \ -float spawnDirChaos; \ -float lifeSpan; \ -float lifeSpanVariation; \ - -#define NI_P_SYS_SPHERE_EMITTER_MEMBERS \ -float radius; \ - -#define NI_P_SYS_UPDATE_CTLR_MEMBERS \ - -#define NI_L_O_D_DATA_MEMBERS \ - -#define NI_RANGE_L_O_D_DATA_MEMBERS \ -Vector3 lodCenter; \ -mutable unsigned int numLodLevels; \ -vector<LODRange > lodLevels; \ - -#define NI_SCREEN_L_O_D_DATA_MEMBERS \ -Vector3 boundCenter; \ -float boundRadius; \ -Vector3 worldCenter; \ -float worldRadius; \ -mutable unsigned int proportionCount; \ -vector<float > proportionLevels; \ - -#define NI_ROTATING_PARTICLES_MEMBERS \ - -#define NI_SEQUENCE_STREAM_HELPER_MEMBERS \ - -#define NI_SHADE_PROPERTY_MEMBERS \ -unsigned short flags; \ - -#define NI_SKIN_DATA_MEMBERS \ -Matrix33 rotation; \ -Vector3 translation; \ -float scale; \ -mutable unsigned int numBones; \ -Ref<NiSkinPartition > skinPartition; \ -byte hasVertexWeights; \ -vector<SkinData > boneList; \ - -#define NI_SKIN_INSTANCE_MEMBERS \ -Ref<NiSkinData > data; \ -Ref<NiSkinPartition > skinPartition; \ -NiNode * skeletonRoot; \ -mutable unsigned int numBones; \ -vector<NiNode * > bones; \ - -#define NI_TRI_SHAPE_SKIN_CONTROLLER_MEMBERS \ -mutable unsigned int numBones; \ -mutable vector<unsigned int > vertexCounts; \ -vector<NiBone * > bones; \ -vector< vector<OldSkinData > > boneData; \ - -#define NI_CLOD_SKIN_INSTANCE_MEMBERS \ - -#define NI_SKIN_PARTITION_MEMBERS \ -mutable unsigned int numSkinPartitionBlocks; \ -vector<SkinPartition > skinPartitionBlocks; \ - -#define NI_TEXTURE_MEMBERS \ - -#define NI_SOURCE_TEXTURE_MEMBERS \ -byte useExternal; \ -string fileName; \ -Ref<NiObject > unknownLink; \ -byte unknownByte; \ -string originalFileName_; \ -Ref<NiPixelData > pixelData; \ -PixelLayout pixelLayout; \ -MipMapFormat useMipmaps; \ -AlphaFormat alphaFormat; \ -byte unknownByte2; \ - -#define NI_SPECULAR_PROPERTY_MEMBERS \ -unsigned short flags; \ - -#define NI_SPHERICAL_COLLIDER_MEMBERS \ -float unknownFloat1; \ -unsigned short unknownShort1; \ -float unknownFloat2; \ -unsigned short unknownShort2; \ -float unknownFloat3; \ -float unknownFloat4; \ -float unknownFloat5; \ - -#define NI_SPOT_LIGHT_MEMBERS \ -float cutoffAngle; \ -float exponent; \ - -#define NI_STENCIL_PROPERTY_MEMBERS \ -unsigned short flags; \ -byte stencilEnabled; \ -CompareMode stencilFunction; \ -unsigned int stencilRef; \ -unsigned int stencilMask; \ -StencilAction failAction; \ -StencilAction zFailAction; \ -StencilAction passAction; \ -FaceDrawMode drawMode; \ - -#define NI_STRING_EXTRA_DATA_MEMBERS \ -unsigned int bytesRemaining; \ -string stringData; \ - -#define NI_STRING_PALETTE_MEMBERS \ -StringPalette palette; \ - -#define NI_STRINGS_EXTRA_DATA_MEMBERS \ -mutable unsigned int numStrings; \ -vector<string > data; \ - -#define NI_TEXT_KEY_EXTRA_DATA_MEMBERS \ -unsigned int unknownInt1; \ -mutable unsigned int numTextKeys; \ -vector<Key<string > > textKeys; \ - -#define NI_TEXTURE_EFFECT_MEMBERS \ -Matrix33 modelProjectionMatrix; \ -Vector3 modelProjectionTransform; \ -TexFilterMode textureFiltering; \ -TexClampMode textureClamping; \ -unsigned int textureType; \ -unsigned int coordinateGenerationType; \ -Ref<NiSourceTexture > sourceTexture; \ -byte clippingPlane; \ -Vector3 unknownVector; \ -float unknownFloat; \ -unsigned short ps2L; \ -unsigned short ps2K; \ -unsigned short unknownShort; \ - -#define NI_TEXTURE_MODE_PROPERTY_MEMBERS \ -short unknownShort; \ -array<2,short > unknown2Shorts; \ - -#define NI_IMAGE_MEMBERS \ -byte external; \ -string fileName; \ -Ref<NiRawImageData > imageData; \ -unsigned int unknownInt1; \ -unsigned int unknownInt2; \ - -#define NI_TEXTURE_PROPERTY_MEMBERS \ -unsigned short flags; \ -Ref<NiImage > image; \ -unsigned int unknownInt1; \ -unsigned int unknownInt2; \ - -#define NI_MULTI_TEXTURE_PROPERTY_MEMBERS \ -unsigned short flags; \ -unsigned int unknownInt; \ -array<5,MultiTextureElement > textureElements; \ - -#define NI_TEXTURING_PROPERTY_MEMBERS \ -unsigned short flags; \ -ApplyMode applyMode; \ -unsigned int textureCount; \ -bool hasBaseTexture; \ -TexDesc baseTexture; \ -bool hasDarkTexture; \ -TexDesc darkTexture; \ -bool hasDetailTexture; \ -TexDesc detailTexture; \ -bool hasGlossTexture; \ -TexDesc glossTexture; \ -bool hasGlowTexture; \ -TexDesc glowTexture; \ -bool hasBumpMapTexture; \ -TexDesc bumpMapTexture; \ -float bumpMapLumaScale; \ -float bumpMapLumaOffset; \ -Matrix22 bumpMapMatrix; \ -bool hasDecal0Texture; \ -TexDesc decal0Texture; \ -bool hasDecal1Texture; \ -TexDesc decal1Texture; \ -bool hasDecal2Texture; \ -TexDesc decal2Texture; \ -bool hasDecal3Texture; \ -TexDesc decal3Texture; \ -mutable unsigned int numShaderTextures; \ -vector<ShaderTexDesc > shaderTextures; \ - -#define NI_TRANSFORM_DATA_MEMBERS \ - -#define NI_TRI_SHAPE_MEMBERS \ - -#define NI_TRI_SHAPE_DATA_MEMBERS \ -unsigned int numTrianglePoints; \ -bool hasTriangles; \ -vector<Triangle > triangles; \ -mutable unsigned short numMatchGroups; \ -vector<MatchGroup > matchGroups; \ - -#define NI_TRI_STRIPS_MEMBERS \ - -#define NI_TRI_STRIPS_DATA_MEMBERS \ -mutable unsigned short numStrips; \ -mutable vector<unsigned short > stripLengths; \ -bool hasPoints; \ -vector< vector<unsigned short > > points; \ - -#define NI_CLOD_MEMBERS \ - -#define NI_CLOD_DATA_MEMBERS \ -unsigned short unknownShorts; \ -mutable unsigned short unknownCount1; \ -mutable unsigned short unknownCount2; \ -mutable unsigned short unknownCount3; \ -float unknownFloat; \ -unsigned short unknownShort; \ -vector< array<6,unsigned short > > unknownClodShorts1; \ -vector<unsigned short > unknownClodShorts2; \ -vector< array<6,unsigned short > > unknownClodShorts3; \ - -#define NI_U_V_CONTROLLER_MEMBERS \ -unsigned short unknownShort; \ -Ref<NiUVData > data; \ - -#define NI_U_V_DATA_MEMBERS \ -array<4,KeyGroup<float > > uvGroups; \ - -#define NI_VECTOR_EXTRA_DATA_MEMBERS \ -Vector3 vectorData; \ -float unknownFloat; \ - -#define NI_VERTEX_COLOR_PROPERTY_MEMBERS \ -unsigned short flags; \ -VertMode vertexMode; \ -LightMode lightingMode; \ - -#define NI_VERT_WEIGHTS_EXTRA_DATA_MEMBERS \ -unsigned int numBytes; \ -mutable unsigned short numVertices; \ -vector<float > weight; \ - -#define NI_VIS_DATA_MEMBERS \ -mutable unsigned int numVisKeys; \ -vector<Key<byte > > visKeys; \ - -#define NI_WIREFRAME_PROPERTY_MEMBERS \ -unsigned short flags; \ - -#define NI_Z_BUFFER_PROPERTY_MEMBERS \ -unsigned short flags; \ -CompareMode function; \ - -#define ROOT_COLLISION_NODE_MEMBERS \ - -#define NI_RAW_IMAGE_DATA_MEMBERS \ -mutable unsigned int width; \ -mutable unsigned int height; \ -unsigned int imageType; \ -vector< vector<ByteColor3 > > rgbImageData; \ -vector< vector<ByteColor4 > > rgbaImageData; \ - - -#define NI_OBJECT_PARENT - -#define NI_OBJECT_CONSTRUCT -#define A_PARTICLE_MODIFIER_PARENT NiObject - -#define A_PARTICLE_MODIFIER_CONSTRUCT : nextModifier(NULL), controller(NULL) - -#define NI_P_SYS_COLLIDER_PARENT NiObject - -#define NI_P_SYS_COLLIDER_CONSTRUCT : bounce(0.0f), spawnOnCollide(false), dieOnCollide(false), spawnModifier(NULL), parent(NULL), nextCollider(NULL), colliderObject(NULL) - -#define BHK_REF_OBJECT_PARENT NiObject - -#define BHK_REF_OBJECT_CONSTRUCT -#define BHK_SERIALIZABLE_PARENT bhkRefObject - -#define BHK_SERIALIZABLE_CONSTRUCT -#define BHK_WORLD_OBJECT_PARENT bhkSerializable - -#define BHK_WORLD_OBJECT_CONSTRUCT : shape(NULL), layer((OblivionLayer)1), colFilter((byte)0), unknownShort((unsigned short)0) - -#define BHK_PHANTOM_PARENT bhkWorldObject - -#define BHK_PHANTOM_CONSTRUCT -#define BHK_SHAPE_PHANTOM_PARENT bhkPhantom - -#define BHK_SHAPE_PHANTOM_CONSTRUCT -#define BHK_SIMPLE_SHAPE_PHANTOM_PARENT bhkShapePhantom - -#define BHK_SIMPLE_SHAPE_PHANTOM_CONSTRUCT : unknownFloat(0.0f) - -#define BHK_ENTITY_PARENT bhkWorldObject - -#define BHK_ENTITY_CONSTRUCT -#define BHK_RIGID_BODY_PARENT bhkEntity - -#define BHK_RIGID_BODY_CONSTRUCT : layerCopy((OblivionLayer)1), colFilterCopy((byte)0), unknownFloat00(0.0f), unknownFloat01(0.0f), unknownFloat02(0.0f), unknownFloat03(0.0f), mass(0.0f), linearDamping(0.1f), angularDamping(0.1f), friction(0.3f), restitution(0.3f), maxLinearVelocity(250.0f), maxAngularVelocity(31.415926535f), penetrationDepth(0.15f), motionSystem((MotionSystem)7), unknownByte1((byte)1), unknownByte2((byte)1), qualityType((MotionQuality)1), unknownInt6((unsigned int)0), unknownInt7((unsigned int)0), unknownInt8((unsigned int)0), numConstraints((unsigned int)0) - -#define BHK_RIGID_BODY_T_PARENT bhkRigidBody - -#define BHK_RIGID_BODY_T_CONSTRUCT -#define BHK_CONSTRAINT_PARENT bhkSerializable - -#define BHK_CONSTRAINT_CONSTRUCT : numEntities((unsigned int)0), priority((unsigned int)1) - -#define BHK_LIMITED_HINGE_CONSTRAINT_PARENT bhkConstraint - -#define BHK_LIMITED_HINGE_CONSTRAINT_CONSTRUCT -#define BHK_MALLEABLE_CONSTRAINT_PARENT bhkConstraint - -#define BHK_MALLEABLE_CONSTRAINT_CONSTRUCT : type((unsigned int)0), unknownInt2((unsigned int)0), unknownLink1(NULL), unknownLink2(NULL), unknownInt3((unsigned int)0), tau(0.0f), damping(0.0f) - -#define BHK_STIFF_SPRING_CONSTRAINT_PARENT bhkConstraint - -#define BHK_STIFF_SPRING_CONSTRAINT_CONSTRUCT : length(0.0f) - -#define BHK_RAGDOLL_CONSTRAINT_PARENT bhkConstraint - -#define BHK_RAGDOLL_CONSTRAINT_CONSTRUCT -#define BHK_PRISMATIC_CONSTRAINT_PARENT bhkConstraint - -#define BHK_PRISMATIC_CONSTRAINT_CONSTRUCT -#define BHK_HINGE_CONSTRAINT_PARENT bhkConstraint - -#define BHK_HINGE_CONSTRAINT_CONSTRUCT -#define BHK_SHAPE_PARENT bhkSerializable - -#define BHK_SHAPE_CONSTRUCT -#define BHK_TRANSFORM_SHAPE_PARENT bhkShape - -#define BHK_TRANSFORM_SHAPE_CONSTRUCT : shape(NULL), unknownFloat1(0.0f) - -#define BHK_SPHERE_REP_SHAPE_PARENT bhkShape - -#define BHK_SPHERE_REP_SHAPE_CONSTRUCT : radius(0.0f) - -#define BHK_CONVEX_SHAPE_PARENT bhkSphereRepShape - -#define BHK_CONVEX_SHAPE_CONSTRUCT -#define BHK_SPHERE_SHAPE_PARENT bhkConvexShape - -#define BHK_SPHERE_SHAPE_CONSTRUCT -#define BHK_CAPSULE_SHAPE_PARENT bhkConvexShape - -#define BHK_CAPSULE_SHAPE_CONSTRUCT : unknownShort1((unsigned short)0), unknownShort2((unsigned short)0), unknownShort3((unsigned short)0), unknownShort4((unsigned short)0), radius1(0.0f), radius2(0.0f) - -#define BHK_BOX_SHAPE_PARENT bhkConvexShape - -#define BHK_BOX_SHAPE_CONSTRUCT : unknownShort1((unsigned short)0), unknownShort2((unsigned short)0), unknownShort3((unsigned short)0), unknownShort4((unsigned short)0), min_Size(0.0f) - -#define BHK_CONVEX_VERTICES_SHAPE_PARENT bhkConvexShape - -#define BHK_CONVEX_VERTICES_SHAPE_CONSTRUCT : numVertices((unsigned int)0), numNormals((unsigned int)0) - -#define BHK_CONVEX_TRANSFORM_SHAPE_PARENT bhkTransformShape - -#define BHK_CONVEX_TRANSFORM_SHAPE_CONSTRUCT -#define BHK_MULTI_SPHERE_SHAPE_PARENT bhkSphereRepShape - -#define BHK_MULTI_SPHERE_SHAPE_CONSTRUCT : unknownFloat1(0.0f), unknownFloat2(0.0f), numSpheres((unsigned int)0) - -#define BHK_BV_TREE_SHAPE_PARENT bhkShape - -#define BHK_BV_TREE_SHAPE_CONSTRUCT -#define BHK_MOPP_BV_TREE_SHAPE_PARENT bhkBvTreeShape - -#define BHK_MOPP_BV_TREE_SHAPE_CONSTRUCT : shape(NULL), unknownFloat(0.0f), moppDataSize((unsigned int)0), scalingFactor(0.0f) - -#define BHK_SHAPE_COLLECTION_PARENT bhkShape - -#define BHK_SHAPE_COLLECTION_CONSTRUCT -#define BHK_LIST_SHAPE_PARENT bhkShapeCollection - -#define BHK_LIST_SHAPE_CONSTRUCT : numSubShapes((unsigned int)0), numUnknownInts((unsigned int)0) - -#define BHK_PACKED_NI_TRI_STRIPS_SHAPE_PARENT bhkShapeCollection - -#define BHK_PACKED_NI_TRI_STRIPS_SHAPE_CONSTRUCT : numSubShapes((unsigned short)0), scale(1.0f), data(NULL) - -#define BHK_NI_TRI_STRIPS_SHAPE_PARENT bhkShapeCollection - -#define BHK_NI_TRI_STRIPS_SHAPE_CONSTRUCT : unknownFloat1(0.1f), unknownInt1((unsigned int)0x004ABE60), unknownInt2((unsigned int)1), scale(1.0f, 1.0f, 1.0f), unknownInt3((unsigned int)0), numStripsData((unsigned int)0), numDataLayers((unsigned int)0) - -#define NI_EXTRA_DATA_PARENT NiObject - -#define NI_EXTRA_DATA_CONSTRUCT : nextExtraData(NULL) - -#define NI_INTERPOLATOR_PARENT NiObject - -#define NI_INTERPOLATOR_CONSTRUCT -#define NI_KEY_BASED_INTERPOLATOR_PARENT NiInterpolator - -#define NI_KEY_BASED_INTERPOLATOR_CONSTRUCT -#define NI_FLOAT_INTERPOLATOR_PARENT NiKeyBasedInterpolator - -#define NI_FLOAT_INTERPOLATOR_CONSTRUCT : floatValue(0.0f), data(NULL) - -#define NI_TRANSFORM_INTERPOLATOR_PARENT NiKeyBasedInterpolator - -#define NI_TRANSFORM_INTERPOLATOR_CONSTRUCT : scale(0.0f), data(NULL) - -#define NI_POINT3_INTERPOLATOR_PARENT NiKeyBasedInterpolator - -#define NI_POINT3_INTERPOLATOR_CONSTRUCT : data(NULL) - -#define NI_PATH_INTERPOLATOR_PARENT NiKeyBasedInterpolator - -#define NI_PATH_INTERPOLATOR_CONSTRUCT : unknownShort((unsigned short)0), unknownInt((unsigned int)0), unknownFloat1(0.0f), unknownFloat2(0.0f), unknownShort2((unsigned short)0), posData(NULL), floatData(NULL) - -#define NI_BOOL_INTERPOLATOR_PARENT NiKeyBasedInterpolator - -#define NI_BOOL_INTERPOLATOR_CONSTRUCT : boolValue(false), data(NULL) - -#define NI_BOOL_TIMELINE_INTERPOLATOR_PARENT NiBoolInterpolator - -#define NI_BOOL_TIMELINE_INTERPOLATOR_CONSTRUCT -#define NI_BLEND_INTERPOLATOR_PARENT NiInterpolator - -#define NI_BLEND_INTERPOLATOR_CONSTRUCT : unknownShort((unsigned short)0), unknownInt((unsigned int)0) - -#define NI_B_SPLINE_INTERPOLATOR_PARENT NiInterpolator - -#define NI_B_SPLINE_INTERPOLATOR_CONSTRUCT : startTime(0.0f), stopTime(0.0f), splineData(NULL), basisData(NULL) - -#define NI_OBJECT_N_E_T_PARENT NiObject - -#define NI_OBJECT_N_E_T_CONSTRUCT : extraData(NULL), numExtraDataList((unsigned int)0), controller(NULL) - -#define NI_COLLISION_OBJECT_PARENT NiObject - -#define NI_COLLISION_OBJECT_CONSTRUCT : target(NULL), unknownShort((unsigned short)1), body(NULL) - -#define NI_COLLISION_DATA_PARENT NiCollisionObject - -#define NI_COLLISION_DATA_CONSTRUCT : unknownInt1((unsigned int)0), unknownInt2((unsigned int)0), unknownByte((byte)0), collisionType((unsigned int)0) - -#define BHK_NI_COLLISION_OBJECT_PARENT NiCollisionObject - -#define BHK_NI_COLLISION_OBJECT_CONSTRUCT -#define BHK_COLLISION_OBJECT_PARENT bhkNiCollisionObject - -#define BHK_COLLISION_OBJECT_CONSTRUCT -#define BHK_BLEND_COLLISION_OBJECT_PARENT bhkCollisionObject - -#define BHK_BLEND_COLLISION_OBJECT_CONSTRUCT : unknownFloat1(0.0f), unknownFloat2(0.0f) - -#define BHK_P_COLLISION_OBJECT_PARENT bhkNiCollisionObject - -#define BHK_P_COLLISION_OBJECT_CONSTRUCT -#define BHK_S_P_COLLISION_OBJECT_PARENT bhkPCollisionObject - -#define BHK_S_P_COLLISION_OBJECT_CONSTRUCT -#define NI_A_V_OBJECT_PARENT NiObjectNET - -#define NI_A_V_OBJECT_CONSTRUCT : flags((unsigned short)0), scale(1.0f), numProperties((unsigned int)0), hasBoundingBox(false), collisionObject(NULL) - -#define NI_DYNAMIC_EFFECT_PARENT NiAVObject - -#define NI_DYNAMIC_EFFECT_CONSTRUCT : switchState(false), numAffectedNodeListPointers((unsigned int)0), numAffectedNodes((unsigned int)0) - -#define NI_LIGHT_PARENT NiDynamicEffect - -#define NI_LIGHT_CONSTRUCT : dimmer(0.0f) - -#define NI_PROPERTY_PARENT NiObjectNET - -#define NI_PROPERTY_CONSTRUCT -#define NI_P_SYS_MODIFIER_PARENT NiObject - -#define NI_P_SYS_MODIFIER_CONSTRUCT : order((unsigned int)0), target(NULL), active(false) - -#define NI_P_SYS_EMITTER_PARENT NiPSysModifier - -#define NI_P_SYS_EMITTER_CONSTRUCT : speed(0.0f), speedVariation(0.0f), declination(0.0f), declinationVariation(0.0f), planarAngle(0.0f), planarAngleVariation(0.0f), initialRadius(0.0f), radiusVariation(0.0f), lifeSpan(0.0f), lifeSpanVariation(0.0f) - -#define NI_P_SYS_VOLUME_EMITTER_PARENT NiPSysEmitter - -#define NI_P_SYS_VOLUME_EMITTER_CONSTRUCT : emitterObject(NULL) - -#define NI_TIME_CONTROLLER_PARENT NiObject - -#define NI_TIME_CONTROLLER_CONSTRUCT : nextController(NULL), flags((unsigned short)0), frequency(0.0f), phase(0.0f), startTime(0.0f), stopTime(0.0f), target(NULL) - -#define NI_INTERP_CONTROLLER_PARENT NiTimeController - -#define NI_INTERP_CONTROLLER_CONSTRUCT -#define NI_MULTI_TARGET_TRANSFORM_CONTROLLER_PARENT NiInterpController - -#define NI_MULTI_TARGET_TRANSFORM_CONTROLLER_CONSTRUCT : numExtraTargets((unsigned short)0) - -#define NI_GEOM_MORPHER_CONTROLLER_PARENT NiInterpController - -#define NI_GEOM_MORPHER_CONTROLLER_CONSTRUCT : unknown((unsigned short)0), unknown2((byte)0), data(NULL), unknownByte((byte)0), numInterpolators((unsigned int)0), numUnknownInts((unsigned int)0) - -#define NI_SINGLE_INTERP_CONTROLLER_PARENT NiInterpController - -#define NI_SINGLE_INTERP_CONTROLLER_CONSTRUCT : interpolator(NULL) - -#define NI_TRANSFORM_CONTROLLER_PARENT NiSingleInterpController - -#define NI_TRANSFORM_CONTROLLER_CONSTRUCT -#define NI_P_SYS_MODIFIER_CTLR_PARENT NiSingleInterpController - -#define NI_P_SYS_MODIFIER_CTLR_CONSTRUCT -#define NI_P_SYS_EMITTER_CTLR_PARENT NiPSysModifierCtlr - -#define NI_P_SYS_EMITTER_CTLR_CONSTRUCT : data(NULL), visibilityInterpolator(NULL) - -#define NI_P_SYS_MODIFIER_BOOL_CTLR_PARENT NiPSysModifierCtlr - -#define NI_P_SYS_MODIFIER_BOOL_CTLR_CONSTRUCT -#define NI_P_SYS_MODIFIER_ACTIVE_CTLR_PARENT NiPSysModifierBoolCtlr - -#define NI_P_SYS_MODIFIER_ACTIVE_CTLR_CONSTRUCT : data(NULL) - -#define NI_P_SYS_MODIFIER_FLOAT_CTLR_PARENT NiPSysModifierCtlr - -#define NI_P_SYS_MODIFIER_FLOAT_CTLR_CONSTRUCT : data(NULL) - -#define NI_P_SYS_EMITTER_DECLINATION_CTLR_PARENT NiPSysModifierFloatCtlr - -#define NI_P_SYS_EMITTER_DECLINATION_CTLR_CONSTRUCT -#define NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_PARENT NiPSysModifierFloatCtlr - -#define NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_CONSTRUCT -#define NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_PARENT NiPSysModifierFloatCtlr - -#define NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_CONSTRUCT -#define NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_PARENT NiPSysModifierFloatCtlr - -#define NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_CONSTRUCT -#define NI_P_SYS_EMITTER_SPEED_CTLR_PARENT NiPSysModifierFloatCtlr - -#define NI_P_SYS_EMITTER_SPEED_CTLR_CONSTRUCT -#define NI_P_SYS_GRAVITY_STRENGTH_CTLR_PARENT NiPSysModifierFloatCtlr - -#define NI_P_SYS_GRAVITY_STRENGTH_CTLR_CONSTRUCT -#define NI_FLOAT_INTERP_CONTROLLER_PARENT NiSingleInterpController - -#define NI_FLOAT_INTERP_CONTROLLER_CONSTRUCT -#define NI_FLIP_CONTROLLER_PARENT NiFloatInterpController - -#define NI_FLIP_CONTROLLER_CONSTRUCT : textureSlot((unsigned int)0), unknownInt2((unsigned int)0), delta(0.0f), numSources((unsigned int)0) - -#define NI_ALPHA_CONTROLLER_PARENT NiFloatInterpController - -#define NI_ALPHA_CONTROLLER_CONSTRUCT : data(NULL) - -#define NI_TEXTURE_TRANSFORM_CONTROLLER_PARENT NiFloatInterpController - -#define NI_TEXTURE_TRANSFORM_CONTROLLER_CONSTRUCT : unknown2((byte)0), operation((unsigned int)0), data(NULL) - -#define NI_LIGHT_DIMMER_CONTROLLER_PARENT NiFloatInterpController - -#define NI_LIGHT_DIMMER_CONTROLLER_CONSTRUCT -#define NI_BOOL_INTERP_CONTROLLER_PARENT NiSingleInterpController - -#define NI_BOOL_INTERP_CONTROLLER_CONSTRUCT -#define NI_VIS_CONTROLLER_PARENT NiBoolInterpController - -#define NI_VIS_CONTROLLER_CONSTRUCT : data(NULL) - -#define NI_POINT3_INTERP_CONTROLLER_PARENT NiSingleInterpController - -#define NI_POINT3_INTERP_CONTROLLER_CONSTRUCT : targetColor((unsigned short)0), data(NULL) - -#define NI_MATERIAL_COLOR_CONTROLLER_PARENT NiPoint3InterpController - -#define NI_MATERIAL_COLOR_CONTROLLER_CONSTRUCT -#define NI_LIGHT_COLOR_CONTROLLER_PARENT NiPoint3InterpController - -#define NI_LIGHT_COLOR_CONTROLLER_CONSTRUCT -#define NI_EXTRA_DATA_CONTROLLER_PARENT NiSingleInterpController - -#define NI_EXTRA_DATA_CONTROLLER_CONSTRUCT -#define NI_FLOAT_EXTRA_DATA_CONTROLLER_PARENT NiExtraDataController - -#define NI_FLOAT_EXTRA_DATA_CONTROLLER_CONSTRUCT -#define NI_BONE_L_O_D_CONTROLLER_PARENT NiTimeController - -#define NI_BONE_L_O_D_CONTROLLER_CONSTRUCT : unknownInt1((unsigned int)0), numNodeGroups((unsigned int)0), numNodeGroups2((unsigned int)0), numShapeGroups((unsigned int)0), numShapeGroups2((unsigned int)0) - -#define NI_B_S_BONE_L_O_D_CONTROLLER_PARENT NiBoneLODController - -#define NI_B_S_BONE_L_O_D_CONTROLLER_CONSTRUCT -#define NI_GEOMETRY_PARENT NiAVObject - -#define NI_GEOMETRY_CONSTRUCT : data(NULL), skinInstance(NULL), hasShader(false), unknownLink(NULL) - -#define NI_TRI_BASED_GEOM_PARENT NiGeometry - -#define NI_TRI_BASED_GEOM_CONSTRUCT -#define NI_GEOMETRY_DATA_PARENT NiObject - -#define NI_GEOMETRY_DATA_CONSTRUCT : numVertices((unsigned short)0), unknownShort1((unsigned short)0), hasVertices(false), numUvSets2((byte)0), unknownByte1((byte)0), hasNormals(false), radius(0.0f), hasVertexColors(false), numUvSets((unsigned short)0), hasUv(false), unknownShort2((unsigned short)0), unknownLink1(NULL) - -#define NI_TRI_BASED_GEOM_DATA_PARENT NiGeometryData - -#define NI_TRI_BASED_GEOM_DATA_CONSTRUCT : numTriangles((unsigned short)0) - -#define BHK_BLEND_CONTROLLER_PARENT NiTimeController - -#define BHK_BLEND_CONTROLLER_CONSTRUCT : unknownInt((unsigned int)0) - -#define B_S_BOUND_PARENT NiExtraData - -#define B_S_BOUND_CONSTRUCT -#define B_S_FURNITURE_MARKER_PARENT NiExtraData - -#define B_S_FURNITURE_MARKER_CONSTRUCT : numPositions((unsigned int)0) - -#define B_S_PARENT_VELOCITY_MODIFIER_PARENT NiPSysModifier - -#define B_S_PARENT_VELOCITY_MODIFIER_CONSTRUCT : unknownFloat(0.0f) - -#define B_S_P_SYS_ARRAY_EMITTER_PARENT NiPSysVolumeEmitter - -#define B_S_P_SYS_ARRAY_EMITTER_CONSTRUCT -#define B_S_WIND_MODIFIER_PARENT NiPSysModifier - -#define B_S_WIND_MODIFIER_CONSTRUCT : unknownFloat(0.0f) - -#define HK_PACKED_NI_TRI_STRIPS_DATA_PARENT bhkShapeCollection - -#define HK_PACKED_NI_TRI_STRIPS_DATA_CONSTRUCT : numTriangles((unsigned int)0), numVertices((unsigned int)0) - -#define NI_ALPHA_PROPERTY_PARENT NiProperty - -#define NI_ALPHA_PROPERTY_CONSTRUCT : flags((unsigned short)237), threshold((byte)0) - -#define NI_AMBIENT_LIGHT_PARENT NiLight - -#define NI_AMBIENT_LIGHT_CONSTRUCT -#define NI_PARTICLES_DATA_PARENT NiGeometryData - -#define NI_PARTICLES_DATA_CONSTRUCT : numParticles((unsigned short)0), size(0.0f), numActive((unsigned short)0), unknownShort((unsigned short)0), hasSizes(false), hasUnknownFloats1(false), hasRotations1(false) - -#define NI_ROTATING_PARTICLES_DATA_PARENT NiParticlesData - -#define NI_ROTATING_PARTICLES_DATA_CONSTRUCT : hasRotations2(false) - -#define NI_AUTO_NORMAL_PARTICLES_DATA_PARENT NiParticlesData - -#define NI_AUTO_NORMAL_PARTICLES_DATA_CONSTRUCT -#define NI_P_SYS_DATA_PARENT NiRotatingParticlesData - -#define NI_P_SYS_DATA_CONSTRUCT : hasUnknownFloats3(false), hasUnknownFloats4(false), hasUnknownFloats6(false), unknownInt1((unsigned int)0) - -#define NI_MESH_P_SYS_DATA_PARENT NiPSysData - -#define NI_MESH_P_SYS_DATA_CONSTRUCT : modifier(NULL), unknownByte2((byte)0), numUnknownLinks((unsigned int)0), numVertices2((unsigned int)0), unknownByte3((byte)0), unknownInt2((unsigned int)1), numVertices3((unsigned int)0), unknownLink2(NULL) - -#define NI_BINARY_EXTRA_DATA_PARENT NiExtraData - -#define NI_BINARY_EXTRA_DATA_CONSTRUCT -#define NI_BINARY_VOXEL_EXTRA_DATA_PARENT NiExtraData - -#define NI_BINARY_VOXEL_EXTRA_DATA_CONSTRUCT : unknownInt((unsigned int)0), data(NULL) - -#define NI_BINARY_VOXEL_DATA_PARENT NiObject - -#define NI_BINARY_VOXEL_DATA_CONSTRUCT : unknownShort1((unsigned short)0), unknownShort2((unsigned short)0), unknownShort3((unsigned short)0), numUnknownVectors((unsigned int)0), numUnknownBytes2((unsigned int)0) - -#define NI_BLEND_BOOL_INTERPOLATOR_PARENT NiBlendInterpolator - -#define NI_BLEND_BOOL_INTERPOLATOR_CONSTRUCT : boolValue((byte)0) - -#define NI_BLEND_FLOAT_INTERPOLATOR_PARENT NiBlendInterpolator - -#define NI_BLEND_FLOAT_INTERPOLATOR_CONSTRUCT : floatValue(0.0f) - -#define NI_BLEND_POINT3_INTERPOLATOR_PARENT NiBlendInterpolator - -#define NI_BLEND_POINT3_INTERPOLATOR_CONSTRUCT -#define NI_BLEND_TRANSFORM_INTERPOLATOR_PARENT NiBlendInterpolator - -#define NI_BLEND_TRANSFORM_INTERPOLATOR_CONSTRUCT -#define NI_BOOL_DATA_PARENT NiObject - -#define NI_BOOL_DATA_CONSTRUCT -#define NI_BOOLEAN_EXTRA_DATA_PARENT NiExtraData - -#define NI_BOOLEAN_EXTRA_DATA_CONSTRUCT : booleanData((byte)0) - -#define NI_B_SPLINE_BASIS_DATA_PARENT NiObject - -#define NI_B_SPLINE_BASIS_DATA_CONSTRUCT : numControlPt((unsigned int)0) - -#define NI_B_SPLINE_FLOAT_INTERPOLATOR_PARENT NiBSplineInterpolator - -#define NI_B_SPLINE_FLOAT_INTERPOLATOR_CONSTRUCT -#define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_PARENT NiBSplineFloatInterpolator - -#define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_CONSTRUCT -#define NI_B_SPLINE_POINT3_INTERPOLATOR_PARENT NiBSplineInterpolator - -#define NI_B_SPLINE_POINT3_INTERPOLATOR_CONSTRUCT -#define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_PARENT NiBSplinePoint3Interpolator - -#define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_CONSTRUCT -#define NI_B_SPLINE_TRANSFORM_INTERPOLATOR_PARENT NiBSplineInterpolator - -#define NI_B_SPLINE_TRANSFORM_INTERPOLATOR_CONSTRUCT -#define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_PARENT NiBSplineTransformInterpolator - -#define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_CONSTRUCT : scale(0.0f), translateOffset((unsigned int)0), rotateOffset((unsigned int)0), scaleOffset((unsigned int)0), translateBias(0.0f), translateMultiplier(0.0f), rotationBias(0.0f), rotationMultiplier(0.0f), scaleBias(0.0f), scaleMultiplier(0.0f) - -#define NI_B_SPLINE_DATA_PARENT NiObject - -#define NI_B_SPLINE_DATA_CONSTRUCT : unknownInt((unsigned int)0), count((unsigned int)0) - -#define NI_CAMERA_PARENT NiAVObject - -#define NI_CAMERA_CONSTRUCT : unknownShort((unsigned short)0), frustumLeft(0.0f), frustumRight(0.0f), frustumTop(0.0f), frustumBottom(0.0f), frustumNear(0.0f), frustumFar(0.0f), useOrthographicProjection(false), viewportLeft(0.0f), viewportRight(0.0f), viewportTop(0.0f), viewportBottom(0.0f), lodAdjust(0.0f), unknownLink_(NULL), unknownInt((unsigned int)0), unknownInt2((unsigned int)0), unknownInt3((unsigned int)0) - -#define NI_COLOR_DATA_PARENT NiObject - -#define NI_COLOR_DATA_CONSTRUCT -#define NI_COLOR_EXTRA_DATA_PARENT NiExtraData - -#define NI_COLOR_EXTRA_DATA_CONSTRUCT -#define NI_CONTROLLER_MANAGER_PARENT NiTimeController - -#define NI_CONTROLLER_MANAGER_CONSTRUCT : cumulative(false), numControllerSequences((unsigned int)0), objectPalette(NULL) - -#define NI_SEQUENCE_PARENT NiObject - -#define NI_SEQUENCE_CONSTRUCT : textKeys(NULL), numControlledBlocks((unsigned int)0), unknownInt1((unsigned int)0) - -#define NI_CONTROLLER_SEQUENCE_PARENT NiSequence - -#define NI_CONTROLLER_SEQUENCE_CONSTRUCT : weight(1.0f), textKeys(NULL), unknownInt0((unsigned int)0), frequency(0.0f), startTime(0.0f), stopTime(0.0f), unknownFloat2(0.0f), unknownByte((byte)0), manager(NULL), stringPalette(NULL) - -#define NI_A_V_OBJECT_PALETTE_PARENT NiObject - -#define NI_A_V_OBJECT_PALETTE_CONSTRUCT -#define NI_DEFAULT_A_V_OBJECT_PALETTE_PARENT NiAVObjectPalette - -#define NI_DEFAULT_A_V_OBJECT_PALETTE_CONSTRUCT : unknownInt((unsigned int)0), numObjs((unsigned int)0) - -#define NI_DIRECTIONAL_LIGHT_PARENT NiLight - -#define NI_DIRECTIONAL_LIGHT_CONSTRUCT -#define NI_DITHER_PROPERTY_PARENT NiProperty - -#define NI_DITHER_PROPERTY_CONSTRUCT : flags((unsigned short)0) - -#define NI_ROLL_CONTROLLER_PARENT NiSingleInterpController - -#define NI_ROLL_CONTROLLER_CONSTRUCT : data(NULL) - -#define NI_FLOAT_DATA_PARENT NiObject - -#define NI_FLOAT_DATA_CONSTRUCT -#define NI_FLOAT_EXTRA_DATA_PARENT NiExtraData - -#define NI_FLOAT_EXTRA_DATA_CONSTRUCT : floatData(0.0f) - -#define NI_FLOATS_EXTRA_DATA_PARENT NiExtraData - -#define NI_FLOATS_EXTRA_DATA_CONSTRUCT : numFloats((unsigned int)0) - -#define NI_FOG_PROPERTY_PARENT NiProperty - -#define NI_FOG_PROPERTY_CONSTRUCT : flags((unsigned short)0), fogDepth(0.0f) - -#define NI_GRAVITY_PARENT AParticleModifier - -#define NI_GRAVITY_CONSTRUCT : unknownFloat1(0.0f), force(0.0f) - -#define NI_INTEGER_EXTRA_DATA_PARENT NiExtraData - -#define NI_INTEGER_EXTRA_DATA_CONSTRUCT : integerData((unsigned int)0) - -#define B_S_X_FLAGS_PARENT NiIntegerExtraData - -#define B_S_X_FLAGS_CONSTRUCT -#define NI_INTEGERS_EXTRA_DATA_PARENT NiExtraData - -#define NI_INTEGERS_EXTRA_DATA_CONSTRUCT : numIntegers((unsigned int)0) - -#define NI_KEYFRAME_CONTROLLER_PARENT NiTimeController - -#define NI_KEYFRAME_CONTROLLER_CONSTRUCT : data(NULL) - -#define B_S_KEYFRAME_CONTROLLER_PARENT NiKeyframeController - -#define B_S_KEYFRAME_CONTROLLER_CONSTRUCT : data2(NULL) - -#define NI_KEYFRAME_DATA_PARENT NiObject - -#define NI_KEYFRAME_DATA_CONSTRUCT : numRotationKeys((unsigned int)0), rotationType((KeyType)0), unknownFloat(0.0f) - -#define NI_LOOK_AT_CONTROLLER_PARENT NiTimeController - -#define NI_LOOK_AT_CONTROLLER_CONSTRUCT : unknown1((unsigned short)0), lookAtNode(NULL) - -#define NI_LOOK_AT_INTERPOLATOR_PARENT NiInterpolator - -#define NI_LOOK_AT_INTERPOLATOR_CONSTRUCT : unknownShort((unsigned short)0), lookAt(NULL), unknownFloat(0.0f), scale(0.0f), unknownLink1(NULL), unknownLink2(NULL), unknownLink3(NULL) - -#define NI_MATERIAL_PROPERTY_PARENT NiProperty - -#define NI_MATERIAL_PROPERTY_CONSTRUCT : flags((unsigned short)0), glossiness(0.0f), alpha(0.0f) - -#define NI_MORPH_DATA_PARENT NiObject - -#define NI_MORPH_DATA_CONSTRUCT : numMorphs((unsigned int)0), numVertices((unsigned int)0), unknownByte((byte)0) - -#define NI_NODE_PARENT NiAVObject - -#define NI_NODE_CONSTRUCT : numChildren((unsigned int)0), numEffects((unsigned int)0) - -#define NI_BONE_PARENT NiNode - -#define NI_BONE_CONSTRUCT -#define AVOID_NODE_PARENT NiNode - -#define AVOID_NODE_CONSTRUCT -#define FX_WIDGET_PARENT NiNode - -#define FX_WIDGET_CONSTRUCT : unknown1((byte)0) - -#define FX_BUTTON_PARENT FxWidget - -#define FX_BUTTON_CONSTRUCT -#define FX_RADIO_BUTTON_PARENT FxWidget - -#define FX_RADIO_BUTTON_CONSTRUCT : unknownInt1((unsigned int)0), unknownInt2((unsigned int)0), unknownInt3((unsigned int)0), numButtons((unsigned int)0) - -#define NI_BILLBOARD_NODE_PARENT NiNode - -#define NI_BILLBOARD_NODE_CONSTRUCT -#define NI_B_S_ANIMATION_NODE_PARENT NiNode - -#define NI_B_S_ANIMATION_NODE_CONSTRUCT -#define NI_B_S_PARTICLE_NODE_PARENT NiNode - -#define NI_B_S_PARTICLE_NODE_CONSTRUCT -#define NI_SWITCH_NODE_PARENT NiNode - -#define NI_SWITCH_NODE_CONSTRUCT -#define NI_L_O_D_NODE_PARENT NiSwitchNode - -#define NI_L_O_D_NODE_CONSTRUCT : numLodLevels((unsigned int)0), unknownShort((unsigned short)0), lodLevelData(NULL) - -#define NI_PALETTE_PARENT NiObject - -#define NI_PALETTE_CONSTRUCT : unknownByte((byte)0), numEntries_((unsigned int)0) - -#define NI_PARTICLE_BOMB_PARENT AParticleModifier - -#define NI_PARTICLE_BOMB_CONSTRUCT : unknownFloat1(0.0f), unknownFloat2(0.0f), unknownFloat3(0.0f), unknownFloat4(0.0f), unknownInt1((unsigned int)0), unknownInt2((unsigned int)0), unknownFloat5(0.0f), unknownFloat6(0.0f), unknownFloat7(0.0f), unknownFloat8(0.0f), unknownFloat9(0.0f), unknownFloat10(0.0f) - -#define NI_PARTICLE_COLOR_MODIFIER_PARENT AParticleModifier - -#define NI_PARTICLE_COLOR_MODIFIER_CONSTRUCT : colorData(NULL) - -#define NI_PARTICLE_GROW_FADE_PARENT AParticleModifier - -#define NI_PARTICLE_GROW_FADE_CONSTRUCT : grow(0.0f), fade(0.0f) - -#define NI_PARTICLE_MESH_MODIFIER_PARENT AParticleModifier - -#define NI_PARTICLE_MESH_MODIFIER_CONSTRUCT : numParticleMeshes((unsigned int)0) - -#define NI_PARTICLE_ROTATION_PARENT AParticleModifier - -#define NI_PARTICLE_ROTATION_CONSTRUCT : unknownByte((byte)0), unknownFloat1(0.0f), unknownFloat2(0.0f), unknownFloat3(0.0f), unknownFloat4(0.0f) - -#define NI_PARTICLES_PARENT NiGeometry - -#define NI_PARTICLES_CONSTRUCT -#define NI_AUTO_NORMAL_PARTICLES_PARENT NiParticles - -#define NI_AUTO_NORMAL_PARTICLES_CONSTRUCT -#define NI_PARTICLE_MESHES_PARENT NiParticles - -#define NI_PARTICLE_MESHES_CONSTRUCT -#define NI_PARTICLE_MESHES_DATA_PARENT NiRotatingParticlesData - -#define NI_PARTICLE_MESHES_DATA_CONSTRUCT : unknownLink2(NULL) - -#define NI_PARTICLE_SYSTEM_PARENT NiParticles - -#define NI_PARTICLE_SYSTEM_CONSTRUCT : unknownBool(false), numModifiers((unsigned int)0) - -#define NI_MESH_PARTICLE_SYSTEM_PARENT NiParticleSystem - -#define NI_MESH_PARTICLE_SYSTEM_CONSTRUCT -#define NI_PARTICLE_SYSTEM_CONTROLLER_PARENT NiTimeController - -#define NI_PARTICLE_SYSTEM_CONTROLLER_CONSTRUCT : speed(0.0f), speedRandom(0.0f), verticalDirection(0.0f), verticalAngle(0.0f), horizontalDirection(0.0f), horizontalAngle(0.0f), unknownFloat5(0.0f), unknownFloat6(0.0f), unknownFloat7(0.0f), unknownFloat8(0.0f), unknownFloat9(0.0f), unknownFloat10(0.0f), unknownFloat11(0.0f), size(0.0f), emitStartTime(0.0f), emitStopTime(0.0f), unknownByte((byte)0), emitRate(0.0f), lifetime(0.0f), lifetimeRandom(0.0f), emitFlags((unsigned short)0), emitter(NULL), unknownShort2_((unsigned short)0), unknownFloat13_(0.0f), unknownInt1_((unsigned int)0), unknownInt2_((unsigned int)0), unknownShort3_((unsigned short)0), numParticles((unsigned short)0), numValid((unsigned short)0), unknownLink(NULL), particleExtra(NULL), unknownLink2(NULL), trailer((byte)0), colorData(NULL) - -#define NI_B_S_P_ARRAY_CONTROLLER_PARENT NiParticleSystemController - -#define NI_B_S_P_ARRAY_CONTROLLER_CONSTRUCT -#define NI_PATH_CONTROLLER_PARENT NiTimeController - -#define NI_PATH_CONTROLLER_CONSTRUCT : unknownShort2((unsigned short)0), unknownInt1((unsigned int)0), unknownInt2((unsigned int)0), unknownInt3((unsigned int)0), unknownShort((unsigned short)0), posData(NULL), floatData(NULL) - -#define NI_PIXEL_DATA_PARENT NiObject - -#define NI_PIXEL_DATA_CONSTRUCT : redMask((unsigned int)0), greenMask((unsigned int)0), blueMask((unsigned int)0), alphaMask((unsigned int)0), bitsPerPixel((unsigned int)0), unknownInt((unsigned int)0), palette(NULL), numMipmaps((unsigned int)0), bytesPerPixel((unsigned int)0), unknownInt2((unsigned int)0) - -#define NI_PLANAR_COLLIDER_PARENT AParticleModifier - -#define NI_PLANAR_COLLIDER_CONSTRUCT : unknownShort((unsigned short)0), unknownFloat1(0.0f), unknownFloat2(0.0f), unknownShort2((unsigned short)0), unknownFloat3(0.0f), unknownFloat4(0.0f), unknownFloat5(0.0f), unknownFloat6(0.0f), unknownFloat7(0.0f), unknownFloat8(0.0f), unknownFloat9(0.0f), unknownFloat10(0.0f), unknownFloat11(0.0f), unknownFloat12(0.0f), unknownFloat13(0.0f), unknownFloat14(0.0f), unknownFloat15(0.0f), unknownFloat16(0.0f) - -#define NI_POINT_LIGHT_PARENT NiLight - -#define NI_POINT_LIGHT_CONSTRUCT : constantAttenuation(0.0f), linearAttenuation(0.0f), quadraticAttenuation(0.0f) - -#define NI_POS_DATA_PARENT NiObject - -#define NI_POS_DATA_CONSTRUCT -#define NI_P_SYS_AGE_DEATH_MODIFIER_PARENT NiPSysModifier - -#define NI_P_SYS_AGE_DEATH_MODIFIER_CONSTRUCT : spawnOnDeath(false), spawnModifier(NULL) - -#define NI_P_SYS_BOMB_MODIFIER_PARENT NiPSysModifier - -#define NI_P_SYS_BOMB_MODIFIER_CONSTRUCT : unknownLink(NULL) - -#define NI_P_SYS_BOUND_UPDATE_MODIFIER_PARENT NiPSysModifier - -#define NI_P_SYS_BOUND_UPDATE_MODIFIER_CONSTRUCT : updateSkip((unsigned short)0) - -#define NI_P_SYS_BOX_EMITTER_PARENT NiPSysVolumeEmitter - -#define NI_P_SYS_BOX_EMITTER_CONSTRUCT : width(0.0f), height(0.0f), depth(0.0f) - -#define NI_P_SYS_COLLIDER_MANAGER_PARENT NiPSysModifier - -#define NI_P_SYS_COLLIDER_MANAGER_CONSTRUCT : collider(NULL) - -#define NI_P_SYS_COLOR_MODIFIER_PARENT NiPSysModifier - -#define NI_P_SYS_COLOR_MODIFIER_CONSTRUCT : data(NULL) - -#define NI_P_SYS_CYLINDER_EMITTER_PARENT NiPSysVolumeEmitter - -#define NI_P_SYS_CYLINDER_EMITTER_CONSTRUCT : radius(0.0f), height(0.0f) - -#define NI_P_SYS_DRAG_MODIFIER_PARENT NiPSysModifier - -#define NI_P_SYS_DRAG_MODIFIER_CONSTRUCT : parent(NULL), percentage(0.0f), range(0.0f), rangeFalloff(0.0f) - -#define NI_P_SYS_EMITTER_CTLR_DATA_PARENT NiObject - -#define NI_P_SYS_EMITTER_CTLR_DATA_CONSTRUCT : numVisibilityKeys_((unsigned int)0) - -#define NI_P_SYS_GRAVITY_MODIFIER_PARENT NiPSysModifier - -#define NI_P_SYS_GRAVITY_MODIFIER_CONSTRUCT : gravityObject(NULL), decay(0.0f), strength(0.0f), turbulence(0.0f), turbulenceScale(1.0f) - -#define NI_P_SYS_GROW_FADE_MODIFIER_PARENT NiPSysModifier - -#define NI_P_SYS_GROW_FADE_MODIFIER_CONSTRUCT : growTime(0.0f), growGeneration((unsigned short)0), fadeTime(0.0f), fadeGeneration((unsigned short)0) - -#define NI_P_SYS_MESH_EMITTER_PARENT NiPSysEmitter - -#define NI_P_SYS_MESH_EMITTER_CONSTRUCT : numEmitterMeshes((unsigned int)0), initialVelocityType((unsigned int)0), emissionType((unsigned int)0) - -#define NI_P_SYS_MESH_UPDATE_MODIFIER_PARENT NiPSysModifier - -#define NI_P_SYS_MESH_UPDATE_MODIFIER_CONSTRUCT : numMeshes((unsigned int)0) - -#define NI_P_SYS_PLANAR_COLLIDER_PARENT NiPSysCollider - -#define NI_P_SYS_PLANAR_COLLIDER_CONSTRUCT : width(0.0f), height(0.0f) - -#define NI_P_SYS_SPHERICAL_COLLIDER_PARENT NiPSysCollider - -#define NI_P_SYS_SPHERICAL_COLLIDER_CONSTRUCT : radius(0.0f) - -#define NI_P_SYS_POSITION_MODIFIER_PARENT NiPSysModifier - -#define NI_P_SYS_POSITION_MODIFIER_CONSTRUCT -#define NI_P_SYS_RESET_ON_LOOP_CTLR_PARENT NiTimeController - -#define NI_P_SYS_RESET_ON_LOOP_CTLR_CONSTRUCT -#define NI_P_SYS_ROTATION_MODIFIER_PARENT NiPSysModifier - -#define NI_P_SYS_ROTATION_MODIFIER_CONSTRUCT : initialRotationSpeed(0.0f), initialRotationSpeedVariation(0.0f), initialRotationAngle(0.0f), initialRotationAngleVariation(0.0f), randomRotSpeedSign(false), randomInitialAxis(false) - -#define NI_P_SYS_SPAWN_MODIFIER_PARENT NiPSysModifier - -#define NI_P_SYS_SPAWN_MODIFIER_CONSTRUCT : numSpawnGenerations((unsigned short)0), percentageSpawned(0.0f), minNumToSpawn((unsigned short)0), maxNumToSpawn((unsigned short)0), spawnSpeedChaos(0.0f), spawnDirChaos(0.0f), lifeSpan(0.0f), lifeSpanVariation(0.0f) - -#define NI_P_SYS_SPHERE_EMITTER_PARENT NiPSysVolumeEmitter - -#define NI_P_SYS_SPHERE_EMITTER_CONSTRUCT : radius(0.0f) - -#define NI_P_SYS_UPDATE_CTLR_PARENT NiTimeController - -#define NI_P_SYS_UPDATE_CTLR_CONSTRUCT -#define NI_L_O_D_DATA_PARENT NiObject - -#define NI_L_O_D_DATA_CONSTRUCT -#define NI_RANGE_L_O_D_DATA_PARENT NiLODData - -#define NI_RANGE_L_O_D_DATA_CONSTRUCT : numLodLevels((unsigned int)0) - -#define NI_SCREEN_L_O_D_DATA_PARENT NiLODData - -#define NI_SCREEN_L_O_D_DATA_CONSTRUCT : boundRadius(0.0f), worldRadius(0.0f), proportionCount((unsigned int)0) - -#define NI_ROTATING_PARTICLES_PARENT NiParticles - -#define NI_ROTATING_PARTICLES_CONSTRUCT -#define NI_SEQUENCE_STREAM_HELPER_PARENT NiObjectNET - -#define NI_SEQUENCE_STREAM_HELPER_CONSTRUCT -#define NI_SHADE_PROPERTY_PARENT NiProperty - -#define NI_SHADE_PROPERTY_CONSTRUCT : flags((unsigned short)0) - -#define NI_SKIN_DATA_PARENT NiObject - -#define NI_SKIN_DATA_CONSTRUCT : scale(0.0f), numBones((unsigned int)0), skinPartition(NULL), hasVertexWeights((byte)1) - -#define NI_SKIN_INSTANCE_PARENT NiObject - -#define NI_SKIN_INSTANCE_CONSTRUCT : data(NULL), skinPartition(NULL), skeletonRoot(NULL), numBones((unsigned int)0) - -#define NI_TRI_SHAPE_SKIN_CONTROLLER_PARENT NiTimeController - -#define NI_TRI_SHAPE_SKIN_CONTROLLER_CONSTRUCT : numBones((unsigned int)0) - -#define NI_CLOD_SKIN_INSTANCE_PARENT NiSkinInstance - -#define NI_CLOD_SKIN_INSTANCE_CONSTRUCT -#define NI_SKIN_PARTITION_PARENT NiObject - -#define NI_SKIN_PARTITION_CONSTRUCT : numSkinPartitionBlocks((unsigned int)0) - -#define NI_TEXTURE_PARENT NiObjectNET - -#define NI_TEXTURE_CONSTRUCT -#define NI_SOURCE_TEXTURE_PARENT NiTexture - -#define NI_SOURCE_TEXTURE_CONSTRUCT : useExternal((byte)1), unknownLink(NULL), unknownByte((byte)0), pixelData(NULL), pixelLayout((PixelLayout)5), useMipmaps((MipMapFormat)2), alphaFormat((AlphaFormat)3), unknownByte2((byte)1) - -#define NI_SPECULAR_PROPERTY_PARENT NiProperty - -#define NI_SPECULAR_PROPERTY_CONSTRUCT : flags((unsigned short)0) - -#define NI_SPHERICAL_COLLIDER_PARENT AParticleModifier - -#define NI_SPHERICAL_COLLIDER_CONSTRUCT : unknownFloat1(0.0f), unknownShort1((unsigned short)0), unknownFloat2(0.0f), unknownShort2((unsigned short)0), unknownFloat3(0.0f), unknownFloat4(0.0f), unknownFloat5(0.0f) - -#define NI_SPOT_LIGHT_PARENT NiPointLight - -#define NI_SPOT_LIGHT_CONSTRUCT : cutoffAngle(0.0f), exponent(0.0f) - -#define NI_STENCIL_PROPERTY_PARENT NiProperty - -#define NI_STENCIL_PROPERTY_CONSTRUCT : flags((unsigned short)0), stencilEnabled((byte)0), stencilRef((unsigned int)0), stencilMask((unsigned int)4294967295) - -#define NI_STRING_EXTRA_DATA_PARENT NiExtraData - -#define NI_STRING_EXTRA_DATA_CONSTRUCT : bytesRemaining((unsigned int)0) - -#define NI_STRING_PALETTE_PARENT NiObject - -#define NI_STRING_PALETTE_CONSTRUCT -#define NI_STRINGS_EXTRA_DATA_PARENT NiExtraData - -#define NI_STRINGS_EXTRA_DATA_CONSTRUCT : numStrings((unsigned int)0) - -#define NI_TEXT_KEY_EXTRA_DATA_PARENT NiExtraData - -#define NI_TEXT_KEY_EXTRA_DATA_CONSTRUCT : unknownInt1((unsigned int)0), numTextKeys((unsigned int)0) - -#define NI_TEXTURE_EFFECT_PARENT NiDynamicEffect - -#define NI_TEXTURE_EFFECT_CONSTRUCT : textureType((unsigned int)0), coordinateGenerationType((unsigned int)0), sourceTexture(NULL), clippingPlane((byte)0), unknownFloat(0.0f), ps2L((unsigned short)0), ps2K((unsigned short)0), unknownShort((unsigned short)0) - -#define NI_TEXTURE_MODE_PROPERTY_PARENT NiProperty - -#define NI_TEXTURE_MODE_PROPERTY_CONSTRUCT : unknownShort((short)0) - -#define NI_IMAGE_PARENT NiObject - -#define NI_IMAGE_CONSTRUCT : external((byte)0), imageData(NULL), unknownInt1((unsigned int)7), unknownInt2((unsigned int)0x43008000) - -#define NI_TEXTURE_PROPERTY_PARENT NiProperty - -#define NI_TEXTURE_PROPERTY_CONSTRUCT : flags((unsigned short)0), image(NULL), unknownInt1((unsigned int)0), unknownInt2((unsigned int)0) - -#define NI_MULTI_TEXTURE_PROPERTY_PARENT NiProperty - -#define NI_MULTI_TEXTURE_PROPERTY_CONSTRUCT : flags((unsigned short)0), unknownInt((unsigned int)0) - -#define NI_TEXTURING_PROPERTY_PARENT NiProperty - -#define NI_TEXTURING_PROPERTY_CONSTRUCT : flags((unsigned short)0), applyMode((ApplyMode)2), textureCount((unsigned int)7), hasBaseTexture(false), hasDarkTexture(false), hasDetailTexture(false), hasGlossTexture(false), hasGlowTexture(false), hasBumpMapTexture(false), bumpMapLumaScale(0.0f), bumpMapLumaOffset(0.0f), hasDecal0Texture(false), hasDecal1Texture(false), hasDecal2Texture(false), hasDecal3Texture(false), numShaderTextures((unsigned int)0) - -#define NI_TRANSFORM_DATA_PARENT NiKeyframeData - -#define NI_TRANSFORM_DATA_CONSTRUCT -#define NI_TRI_SHAPE_PARENT NiTriBasedGeom - -#define NI_TRI_SHAPE_CONSTRUCT -#define NI_TRI_SHAPE_DATA_PARENT NiTriBasedGeomData - -#define NI_TRI_SHAPE_DATA_CONSTRUCT : numTrianglePoints((unsigned int)0), hasTriangles(false), numMatchGroups((unsigned short)0) - -#define NI_TRI_STRIPS_PARENT NiTriBasedGeom - -#define NI_TRI_STRIPS_CONSTRUCT -#define NI_TRI_STRIPS_DATA_PARENT NiTriBasedGeomData - -#define NI_TRI_STRIPS_DATA_CONSTRUCT : numStrips((unsigned short)0), hasPoints(false) - -#define NI_CLOD_PARENT NiTriBasedGeom - -#define NI_CLOD_CONSTRUCT -#define NI_CLOD_DATA_PARENT NiTriBasedGeomData - -#define NI_CLOD_DATA_CONSTRUCT : unknownShorts((unsigned short)0), unknownCount1((unsigned short)0), unknownCount2((unsigned short)0), unknownCount3((unsigned short)0), unknownFloat(0.0f), unknownShort((unsigned short)0) - -#define NI_U_V_CONTROLLER_PARENT NiTimeController - -#define NI_U_V_CONTROLLER_CONSTRUCT : unknownShort((unsigned short)0), data(NULL) - -#define NI_U_V_DATA_PARENT NiObject - -#define NI_U_V_DATA_CONSTRUCT -#define NI_VECTOR_EXTRA_DATA_PARENT NiExtraData - -#define NI_VECTOR_EXTRA_DATA_CONSTRUCT : unknownFloat(0.0f) - -#define NI_VERTEX_COLOR_PROPERTY_PARENT NiProperty - -#define NI_VERTEX_COLOR_PROPERTY_CONSTRUCT : flags((unsigned short)0) - -#define NI_VERT_WEIGHTS_EXTRA_DATA_PARENT NiExtraData - -#define NI_VERT_WEIGHTS_EXTRA_DATA_CONSTRUCT : numBytes((unsigned int)0), numVertices((unsigned short)0) - -#define NI_VIS_DATA_PARENT NiObject - -#define NI_VIS_DATA_CONSTRUCT : numVisKeys((unsigned int)0) - -#define NI_WIREFRAME_PROPERTY_PARENT NiProperty - -#define NI_WIREFRAME_PROPERTY_CONSTRUCT : flags((unsigned short)0) - -#define NI_Z_BUFFER_PROPERTY_PARENT NiProperty - -#define NI_Z_BUFFER_PROPERTY_CONSTRUCT : flags((unsigned short)3), function((CompareMode)3) - -#define ROOT_COLLISION_NODE_PARENT NiNode - -#define ROOT_COLLISION_NODE_CONSTRUCT -#define NI_RAW_IMAGE_DATA_PARENT NiObject - -#define NI_RAW_IMAGE_DATA_CONSTRUCT : width((unsigned int)0), height((unsigned int)0), imageType((unsigned int)0) - -#endif diff --git a/niflib.vcproj b/niflib.vcproj index 1375d391..69fdcef9 100644 --- a/niflib.vcproj +++ b/niflib.vcproj @@ -303,10 +303,6 @@ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx" UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" > - <File - RelativePath=".\src\ComplexShape.cpp" - > - </File> <File RelativePath=".\src\kfm.cpp" > @@ -1414,10 +1410,6 @@ RelativePath=".\src\gen\NodeGroup.cpp" > </File> - <File - RelativePath=".\src\gen\obj_impl.cpp" - > - </File> <File RelativePath=".\src\gen\OblivionColFilter.cpp" > @@ -2648,10 +2640,6 @@ RelativePath=".\include\gen\NodeGroup.h" > </File> - <File - RelativePath=".\include\gen\obj_defines.h" - > - </File> <File RelativePath=".\include\gen\OblivionColFilter.h" > diff --git a/src/gen/obj_impl.cpp b/src/gen/obj_impl.cpp deleted file mode 100644 index 59bb6c9f..00000000 --- a/src/gen/obj_impl.cpp +++ /dev/null @@ -1,14734 +0,0 @@ -/* Copyright (c) 2006, NIF File Format Library and Tools -All rights reserved. Please see niflib.h for license. */ - -//---THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT---// - -//To change this file, alter the niftools/docsys/nifxml_niflib.py Python script. - -#include "../../include/obj/NiObject.h" -using namespace Niflib; -using namespace std; - -#include "../../include/obj/bhkSimpleShapePhantom.h" -#include "../../include/obj/bhkRigidBody.h" -#include "../../include/obj/bhkRigidBodyT.h" -#include "../../include/obj/bhkLimitedHingeConstraint.h" -#include "../../include/obj/bhkMalleableConstraint.h" -#include "../../include/obj/bhkStiffSpringConstraint.h" -#include "../../include/obj/bhkRagdollConstraint.h" -#include "../../include/obj/bhkPrismaticConstraint.h" -#include "../../include/obj/bhkHingeConstraint.h" -#include "../../include/obj/bhkTransformShape.h" -#include "../../include/obj/bhkSphereShape.h" -#include "../../include/obj/bhkCapsuleShape.h" -#include "../../include/obj/bhkBoxShape.h" -#include "../../include/obj/bhkConvexVerticesShape.h" -#include "../../include/obj/bhkConvexTransformShape.h" -#include "../../include/obj/bhkMultiSphereShape.h" -#include "../../include/obj/bhkMoppBvTreeShape.h" -#include "../../include/obj/bhkListShape.h" -#include "../../include/obj/bhkPackedNiTriStripsShape.h" -#include "../../include/obj/bhkNiTriStripsShape.h" -#include "../../include/obj/NiFloatInterpolator.h" -#include "../../include/obj/NiTransformInterpolator.h" -#include "../../include/obj/NiPoint3Interpolator.h" -#include "../../include/obj/NiPathInterpolator.h" -#include "../../include/obj/NiBoolInterpolator.h" -#include "../../include/obj/NiBoolTimelineInterpolator.h" -#include "../../include/obj/NiCollisionObject.h" -#include "../../include/obj/NiCollisionData.h" -#include "../../include/obj/bhkCollisionObject.h" -#include "../../include/obj/bhkBlendCollisionObject.h" -#include "../../include/obj/bhkSPCollisionObject.h" -#include "../../include/obj/NiMultiTargetTransformController.h" -#include "../../include/obj/NiGeomMorpherController.h" -#include "../../include/obj/NiTransformController.h" -#include "../../include/obj/NiPSysEmitterCtlr.h" -#include "../../include/obj/NiPSysModifierActiveCtlr.h" -#include "../../include/obj/NiPSysEmitterDeclinationCtlr.h" -#include "../../include/obj/NiPSysEmitterDeclinationVarCtlr.h" -#include "../../include/obj/NiPSysEmitterInitialRadiusCtlr.h" -#include "../../include/obj/NiPSysEmitterLifeSpanCtlr.h" -#include "../../include/obj/NiPSysEmitterSpeedCtlr.h" -#include "../../include/obj/NiPSysGravityStrengthCtlr.h" -#include "../../include/obj/NiFlipController.h" -#include "../../include/obj/NiAlphaController.h" -#include "../../include/obj/NiTextureTransformController.h" -#include "../../include/obj/NiLightDimmerController.h" -#include "../../include/obj/NiVisController.h" -#include "../../include/obj/NiMaterialColorController.h" -#include "../../include/obj/NiLightColorController.h" -#include "../../include/obj/NiFloatExtraDataController.h" -#include "../../include/obj/NiBoneLODController.h" -#include "../../include/obj/NiBSBoneLODController.h" -#include "../../include/obj/bhkBlendController.h" -#include "../../include/obj/BSBound.h" -#include "../../include/obj/BSFurnitureMarker.h" -#include "../../include/obj/BSParentVelocityModifier.h" -#include "../../include/obj/BSPSysArrayEmitter.h" -#include "../../include/obj/BSWindModifier.h" -#include "../../include/obj/hkPackedNiTriStripsData.h" -#include "../../include/obj/NiAlphaProperty.h" -#include "../../include/obj/NiAmbientLight.h" -#include "../../include/obj/NiParticlesData.h" -#include "../../include/obj/NiRotatingParticlesData.h" -#include "../../include/obj/NiAutoNormalParticlesData.h" -#include "../../include/obj/NiPSysData.h" -#include "../../include/obj/NiMeshPSysData.h" -#include "../../include/obj/NiBinaryExtraData.h" -#include "../../include/obj/NiBinaryVoxelExtraData.h" -#include "../../include/obj/NiBinaryVoxelData.h" -#include "../../include/obj/NiBlendBoolInterpolator.h" -#include "../../include/obj/NiBlendFloatInterpolator.h" -#include "../../include/obj/NiBlendPoint3Interpolator.h" -#include "../../include/obj/NiBlendTransformInterpolator.h" -#include "../../include/obj/NiBoolData.h" -#include "../../include/obj/NiBooleanExtraData.h" -#include "../../include/obj/NiBSplineBasisData.h" -#include "../../include/obj/NiBSplineCompFloatInterpolator.h" -#include "../../include/obj/NiBSplineCompPoint3Interpolator.h" -#include "../../include/obj/NiBSplineCompTransformInterpolator.h" -#include "../../include/obj/NiBSplineData.h" -#include "../../include/obj/NiCamera.h" -#include "../../include/obj/NiColorData.h" -#include "../../include/obj/NiColorExtraData.h" -#include "../../include/obj/NiControllerManager.h" -#include "../../include/obj/NiSequence.h" -#include "../../include/obj/NiControllerSequence.h" -#include "../../include/obj/NiDefaultAVObjectPalette.h" -#include "../../include/obj/NiDirectionalLight.h" -#include "../../include/obj/NiDitherProperty.h" -#include "../../include/obj/NiRollController.h" -#include "../../include/obj/NiFloatData.h" -#include "../../include/obj/NiFloatExtraData.h" -#include "../../include/obj/NiFloatsExtraData.h" -#include "../../include/obj/NiFogProperty.h" -#include "../../include/obj/NiGravity.h" -#include "../../include/obj/NiIntegerExtraData.h" -#include "../../include/obj/BSXFlags.h" -#include "../../include/obj/NiIntegersExtraData.h" -#include "../../include/obj/NiKeyframeController.h" -#include "../../include/obj/BSKeyframeController.h" -#include "../../include/obj/NiKeyframeData.h" -#include "../../include/obj/NiLookAtController.h" -#include "../../include/obj/NiLookAtInterpolator.h" -#include "../../include/obj/NiMaterialProperty.h" -#include "../../include/obj/NiMorphData.h" -#include "../../include/obj/NiNode.h" -#include "../../include/obj/NiBone.h" -#include "../../include/obj/AvoidNode.h" -#include "../../include/obj/FxWidget.h" -#include "../../include/obj/FxButton.h" -#include "../../include/obj/FxRadioButton.h" -#include "../../include/obj/NiBillboardNode.h" -#include "../../include/obj/NiBSAnimationNode.h" -#include "../../include/obj/NiBSParticleNode.h" -#include "../../include/obj/NiLODNode.h" -#include "../../include/obj/NiPalette.h" -#include "../../include/obj/NiParticleBomb.h" -#include "../../include/obj/NiParticleColorModifier.h" -#include "../../include/obj/NiParticleGrowFade.h" -#include "../../include/obj/NiParticleMeshModifier.h" -#include "../../include/obj/NiParticleRotation.h" -#include "../../include/obj/NiParticles.h" -#include "../../include/obj/NiAutoNormalParticles.h" -#include "../../include/obj/NiParticleMeshes.h" -#include "../../include/obj/NiParticleMeshesData.h" -#include "../../include/obj/NiParticleSystem.h" -#include "../../include/obj/NiMeshParticleSystem.h" -#include "../../include/obj/NiParticleSystemController.h" -#include "../../include/obj/NiBSPArrayController.h" -#include "../../include/obj/NiPathController.h" -#include "../../include/obj/NiPixelData.h" -#include "../../include/obj/NiPlanarCollider.h" -#include "../../include/obj/NiPointLight.h" -#include "../../include/obj/NiPosData.h" -#include "../../include/obj/NiPSysAgeDeathModifier.h" -#include "../../include/obj/NiPSysBombModifier.h" -#include "../../include/obj/NiPSysBoundUpdateModifier.h" -#include "../../include/obj/NiPSysBoxEmitter.h" -#include "../../include/obj/NiPSysColliderManager.h" -#include "../../include/obj/NiPSysColorModifier.h" -#include "../../include/obj/NiPSysCylinderEmitter.h" -#include "../../include/obj/NiPSysDragModifier.h" -#include "../../include/obj/NiPSysEmitterCtlrData.h" -#include "../../include/obj/NiPSysGravityModifier.h" -#include "../../include/obj/NiPSysGrowFadeModifier.h" -#include "../../include/obj/NiPSysMeshEmitter.h" -#include "../../include/obj/NiPSysMeshUpdateModifier.h" -#include "../../include/obj/NiPSysPlanarCollider.h" -#include "../../include/obj/NiPSysSphericalCollider.h" -#include "../../include/obj/NiPSysPositionModifier.h" -#include "../../include/obj/NiPSysResetOnLoopCtlr.h" -#include "../../include/obj/NiPSysRotationModifier.h" -#include "../../include/obj/NiPSysSpawnModifier.h" -#include "../../include/obj/NiPSysSphereEmitter.h" -#include "../../include/obj/NiPSysUpdateCtlr.h" -#include "../../include/obj/NiRangeLODData.h" -#include "../../include/obj/NiScreenLODData.h" -#include "../../include/obj/NiRotatingParticles.h" -#include "../../include/obj/NiSequenceStreamHelper.h" -#include "../../include/obj/NiShadeProperty.h" -#include "../../include/obj/NiSkinData.h" -#include "../../include/obj/NiSkinInstance.h" -#include "../../include/obj/NiTriShapeSkinController.h" -#include "../../include/obj/NiClodSkinInstance.h" -#include "../../include/obj/NiSkinPartition.h" -#include "../../include/obj/NiSourceTexture.h" -#include "../../include/obj/NiSpecularProperty.h" -#include "../../include/obj/NiSphericalCollider.h" -#include "../../include/obj/NiSpotLight.h" -#include "../../include/obj/NiStencilProperty.h" -#include "../../include/obj/NiStringExtraData.h" -#include "../../include/obj/NiStringPalette.h" -#include "../../include/obj/NiStringsExtraData.h" -#include "../../include/obj/NiTextKeyExtraData.h" -#include "../../include/obj/NiTextureEffect.h" -#include "../../include/obj/NiTextureModeProperty.h" -#include "../../include/obj/NiImage.h" -#include "../../include/obj/NiTextureProperty.h" -#include "../../include/obj/NiMultiTextureProperty.h" -#include "../../include/obj/NiTexturingProperty.h" -#include "../../include/obj/NiTransformData.h" -#include "../../include/obj/NiTriShape.h" -#include "../../include/obj/NiTriShapeData.h" -#include "../../include/obj/NiTriStrips.h" -#include "../../include/obj/NiTriStripsData.h" -#include "../../include/obj/NiClod.h" -#include "../../include/obj/NiClodData.h" -#include "../../include/obj/NiUVController.h" -#include "../../include/obj/NiUVData.h" -#include "../../include/obj/NiVectorExtraData.h" -#include "../../include/obj/NiVertexColorProperty.h" -#include "../../include/obj/NiVertWeightsExtraData.h" -#include "../../include/obj/NiVisData.h" -#include "../../include/obj/NiWireframeProperty.h" -#include "../../include/obj/NiZBufferProperty.h" -#include "../../include/obj/RootCollisionNode.h" -#include "../../include/obj/NiRawImageData.h" - -const char FIX_LINK_POP_ERROR[] = "Trying to pop a link from empty stack. This is probably a bug."; -const char FIX_LINK_INDEX_ERROR[] = "Object index was not found in object map. This NIF file may be invalid or imporperly supported."; -const char FIX_LINK_CAST_ERROR[] = "Link could not be cast to required type during file read. This NIF file may be invalid or improperly supported."; - -template <class T> -Ref<T> FixLink( const map<unsigned,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - if (link_stack.empty()) { - throw runtime_error(FIX_LINK_POP_ERROR); - } - unsigned int index = link_stack.front(); - link_stack.pop_front(); - - //Check if link is NULL - if ( info.version > VER_3_3_0_13) { - if ( index == 0xFFFFFFFF) { - return NULL; - } - } else { - if ( index == 0 ) { - return NULL; - } - } - - map<unsigned int,NiObjectRef>::const_iterator it = objects.find(index); - if ( it == objects.end() ) { - if ( info.version > VER_3_3_0_13 ) { - throw runtime_error(FIX_LINK_INDEX_ERROR); - } else { - return NULL; - } - } - - Ref<T> object = DynamicCast<T>(it->second); - if ( object == NULL ) { - stringstream ss; - ss << FIX_LINK_CAST_ERROR << endl; - ss << "Type of object with index " << index << " was: " << it->second->GetType().GetTypeName() << endl; - ss << "Required type was: " << T::TYPE.GetTypeName() << endl; - throw runtime_error( ss.str().c_str() ); - } - - return object; -} - -void NiObject::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { -} - -void NiObject::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { -} - -std::string NiObject::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - return out.str(); -} - -void NiObject::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { -} - -std::list<NiObjectRef> NiObject::InternalGetRefs() const { - list<Ref<NiObject> > refs; - return refs; -} - -void AParticleModifier::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiObject::Read( in, link_stack, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - if ( info.version >= 0x04000002 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void AParticleModifier::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - if ( nextModifier != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(nextModifier) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - if ( info.version >= 0x04000002 ) { - if ( controller != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(controller) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string AParticleModifier::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - out << " Next Modifier: " << nextModifier << endl; - out << " Controller: " << controller << endl; - return out.str(); -} - -void AParticleModifier::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); - nextModifier = FixLink<AParticleModifier>( objects, link_stack, info ); - if ( info.version >= 0x04000002 ) { - controller = FixLink<NiParticleSystemController>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> AParticleModifier::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - if ( nextModifier != NULL ) - refs.push_back(StaticCast<NiObject>(nextModifier)); - return refs; -} - -void NiPSysCollider::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiObject::Read( in, link_stack, info ); - NifStream( bounce, in, info ); - NifStream( spawnOnCollide, in, info ); - NifStream( dieOnCollide, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiPSysCollider::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - NifStream( bounce, out, info ); - NifStream( spawnOnCollide, out, info ); - NifStream( dieOnCollide, out, info ); - if ( spawnModifier != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(spawnModifier) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - if ( parent != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(parent) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - if ( nextCollider != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(nextCollider) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - if ( colliderObject != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(colliderObject) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiPSysCollider::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - out << " Bounce: " << bounce << endl; - out << " Spawn on Collide: " << spawnOnCollide << endl; - out << " Die on Collide: " << dieOnCollide << endl; - out << " Spawn Modifier: " << spawnModifier << endl; - out << " Parent: " << parent << endl; - out << " Next Collider: " << nextCollider << endl; - out << " Collider Object: " << colliderObject << endl; - return out.str(); -} - -void NiPSysCollider::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); - spawnModifier = FixLink<NiPSysSpawnModifier>( objects, link_stack, info ); - parent = FixLink<NiObject>( objects, link_stack, info ); - nextCollider = FixLink<NiObject>( objects, link_stack, info ); - colliderObject = FixLink<NiNode>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysCollider::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - if ( spawnModifier != NULL ) - refs.push_back(StaticCast<NiObject>(spawnModifier)); - if ( nextCollider != NULL ) - refs.push_back(StaticCast<NiObject>(nextCollider)); - if ( colliderObject != NULL ) - refs.push_back(StaticCast<NiObject>(colliderObject)); - return refs; -} - -void bhkRefObject::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::Read( in, link_stack, info ); -} - -void bhkRefObject::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); -} - -std::string bhkRefObject::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - return out.str(); -} - -void bhkRefObject::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkRefObject::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -void bhkSerializable::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkRefObject::Read( in, link_stack, info ); -} - -void bhkSerializable::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkRefObject::Write( out, link_map, info ); -} - -std::string bhkSerializable::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkRefObject::asString(); - return out.str(); -} - -void bhkSerializable::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkRefObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkSerializable::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkRefObject::GetRefs(); - return refs; -} - -void bhkWorldObject::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - bhkSerializable::Read( in, link_stack, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( layer, in, info ); - NifStream( colFilter, in, info ); - NifStream( unknownShort, in, info ); -} - -void bhkWorldObject::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkSerializable::Write( out, link_map, info ); - if ( shape != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(shape) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( layer, out, info ); - NifStream( colFilter, out, info ); - NifStream( unknownShort, out, info ); -} - -std::string bhkWorldObject::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkSerializable::asString(); - out << " Shape: " << shape << endl; - out << " Layer: " << layer << endl; - out << " Col Filter: " << colFilter << endl; - out << " Unknown Short: " << unknownShort << endl; - return out.str(); -} - -void bhkWorldObject::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkSerializable::FixLinks( objects, link_stack, info ); - shape = FixLink<bhkShape>( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkWorldObject::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkSerializable::GetRefs(); - if ( shape != NULL ) - refs.push_back(StaticCast<NiObject>(shape)); - return refs; -} - -void bhkPhantom::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkWorldObject::Read( in, link_stack, info ); -} - -void bhkPhantom::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkWorldObject::Write( out, link_map, info ); -} - -std::string bhkPhantom::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkWorldObject::asString(); - return out.str(); -} - -void bhkPhantom::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkWorldObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkPhantom::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkWorldObject::GetRefs(); - return refs; -} - -void bhkShapePhantom::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkPhantom::Read( in, link_stack, info ); -} - -void bhkShapePhantom::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkPhantom::Write( out, link_map, info ); -} - -std::string bhkShapePhantom::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkPhantom::asString(); - return out.str(); -} - -void bhkShapePhantom::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkPhantom::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkShapePhantom::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkPhantom::GetRefs(); - return refs; -} - -void bhkSimpleShapePhantom::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkShapePhantom::Read( in, link_stack, info ); - for (unsigned int i1 = 0; i1 < 7; i1++) { - NifStream( unkownFloats[i1], in, info ); - }; - for (unsigned int i1 = 0; i1 < 3; i1++) { - for (unsigned int i2 = 0; i2 < 5; i2++) { - NifStream( unknownFloats2[i1][i2], in, info ); - }; - }; - NifStream( unknownFloat, in, info ); -} - -void bhkSimpleShapePhantom::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkShapePhantom::Write( out, link_map, info ); - for (unsigned int i1 = 0; i1 < 7; i1++) { - NifStream( unkownFloats[i1], out, info ); - }; - for (unsigned int i1 = 0; i1 < 3; i1++) { - for (unsigned int i2 = 0; i2 < 5; i2++) { - NifStream( unknownFloats2[i1][i2], out, info ); - }; - }; - NifStream( unknownFloat, out, info ); -} - -std::string bhkSimpleShapePhantom::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkShapePhantom::asString(); - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 7; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unkown Floats[" << i1 << "]: " << unkownFloats[i1] << endl; - array_output_count++; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 3; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - for (unsigned int i2 = 0; i2 < 5; i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Floats 2[" << i2 << "]: " << unknownFloats2[i1][i2] << endl; - array_output_count++; - }; - }; - out << " Unknown Float: " << unknownFloat << endl; - return out.str(); -} - -void bhkSimpleShapePhantom::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkShapePhantom::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkSimpleShapePhantom::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkShapePhantom::GetRefs(); - return refs; -} - -void bhkEntity::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkWorldObject::Read( in, link_stack, info ); -} - -void bhkEntity::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkWorldObject::Write( out, link_map, info ); -} - -std::string bhkEntity::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkWorldObject::asString(); - return out.str(); -} - -void bhkEntity::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkWorldObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkEntity::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkWorldObject::GetRefs(); - return refs; -} - -void bhkRigidBody::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - bhkEntity::Read( in, link_stack, info ); - for (unsigned int i1 = 0; i1 < 5; i1++) { - NifStream( unknown5Floats[i1], in, info ); - }; - if ( info.version >= 0x14000004 ) { - for (unsigned int i2 = 0; i2 < 4; i2++) { - NifStream( unknown4Shorts[i2], in, info ); - }; - NifStream( layerCopy, in, info ); - NifStream( colFilterCopy, in, info ); - for (unsigned int i2 = 0; i2 < 7; i2++) { - NifStream( unknown7Shorts[i2], in, info ); - }; - }; - NifStream( translation, in, info ); - NifStream( unknownFloat00, in, info ); - NifStream( rotation.x, in, info ); - NifStream( rotation.y, in, info ); - NifStream( rotation.z, in, info ); - NifStream( rotation.w, in, info ); - NifStream( linearVelocity, in, info ); - NifStream( unknownFloat01, in, info ); - NifStream( angularVelocity, in, info ); - NifStream( unknownFloat02, in, info ); - for (unsigned int i1 = 0; i1 < 12; i1++) { - NifStream( inertia[i1], in, info ); - }; - NifStream( center, in, info ); - NifStream( unknownFloat03, in, info ); - NifStream( mass, in, info ); - NifStream( linearDamping, in, info ); - NifStream( angularDamping, in, info ); - NifStream( friction, in, info ); - NifStream( restitution, in, info ); - NifStream( maxLinearVelocity, in, info ); - NifStream( maxAngularVelocity, in, info ); - NifStream( penetrationDepth, in, info ); - NifStream( motionSystem, in, info ); - NifStream( unknownByte1, in, info ); - NifStream( unknownByte2, in, info ); - NifStream( qualityType, in, info ); - NifStream( unknownInt6, in, info ); - NifStream( unknownInt7, in, info ); - NifStream( unknownInt8, in, info ); - NifStream( numConstraints, in, info ); - constraints.resize(numConstraints); - for (unsigned int i1 = 0; i1 < constraints.size(); i1++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - NifStream( unknownInt6, in, info ); -} - -void bhkRigidBody::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkEntity::Write( out, link_map, info ); - numConstraints = (unsigned int)(constraints.size()); - for (unsigned int i1 = 0; i1 < 5; i1++) { - NifStream( unknown5Floats[i1], out, info ); - }; - if ( info.version >= 0x14000004 ) { - for (unsigned int i2 = 0; i2 < 4; i2++) { - NifStream( unknown4Shorts[i2], out, info ); - }; - NifStream( layerCopy, out, info ); - NifStream( colFilterCopy, out, info ); - for (unsigned int i2 = 0; i2 < 7; i2++) { - NifStream( unknown7Shorts[i2], out, info ); - }; - }; - NifStream( translation, out, info ); - NifStream( unknownFloat00, out, info ); - NifStream( rotation.x, out, info ); - NifStream( rotation.y, out, info ); - NifStream( rotation.z, out, info ); - NifStream( rotation.w, out, info ); - NifStream( linearVelocity, out, info ); - NifStream( unknownFloat01, out, info ); - NifStream( angularVelocity, out, info ); - NifStream( unknownFloat02, out, info ); - for (unsigned int i1 = 0; i1 < 12; i1++) { - NifStream( inertia[i1], out, info ); - }; - NifStream( center, out, info ); - NifStream( unknownFloat03, out, info ); - NifStream( mass, out, info ); - NifStream( linearDamping, out, info ); - NifStream( angularDamping, out, info ); - NifStream( friction, out, info ); - NifStream( restitution, out, info ); - NifStream( maxLinearVelocity, out, info ); - NifStream( maxAngularVelocity, out, info ); - NifStream( penetrationDepth, out, info ); - NifStream( motionSystem, out, info ); - NifStream( unknownByte1, out, info ); - NifStream( unknownByte2, out, info ); - NifStream( qualityType, out, info ); - NifStream( unknownInt6, out, info ); - NifStream( unknownInt7, out, info ); - NifStream( unknownInt8, out, info ); - NifStream( numConstraints, out, info ); - for (unsigned int i1 = 0; i1 < constraints.size(); i1++) { - if ( constraints[i1] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(constraints[i1]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - NifStream( unknownInt6, out, info ); -} - -std::string bhkRigidBody::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkEntity::asString(); - numConstraints = (unsigned int)(constraints.size()); - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 5; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown 5 Floats[" << i1 << "]: " << unknown5Floats[i1] << endl; - array_output_count++; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 4; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown 4 Shorts[" << i1 << "]: " << unknown4Shorts[i1] << endl; - array_output_count++; - }; - out << " Layer Copy: " << layerCopy << endl; - out << " Col Filter Copy: " << colFilterCopy << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 7; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown 7 Shorts[" << i1 << "]: " << unknown7Shorts[i1] << endl; - array_output_count++; - }; - out << " Translation: " << translation << endl; - out << " Unknown Float 00: " << unknownFloat00 << endl; - out << " x: " << rotation.x << endl; - out << " y: " << rotation.y << endl; - out << " z: " << rotation.z << endl; - out << " w: " << rotation.w << endl; - out << " Linear Velocity: " << linearVelocity << endl; - out << " Unknown Float 01: " << unknownFloat01 << endl; - out << " Angular Velocity: " << angularVelocity << endl; - out << " Unknown Float 02: " << unknownFloat02 << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 12; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Inertia[" << i1 << "]: " << inertia[i1] << endl; - array_output_count++; - }; - out << " Center: " << center << endl; - out << " Unknown Float 03: " << unknownFloat03 << endl; - out << " Mass: " << mass << endl; - out << " Linear Damping: " << linearDamping << endl; - out << " Angular Damping: " << angularDamping << endl; - out << " Friction: " << friction << endl; - out << " Restitution: " << restitution << endl; - out << " Max Linear Velocity: " << maxLinearVelocity << endl; - out << " Max Angular Velocity: " << maxAngularVelocity << endl; - out << " Penetration Depth: " << penetrationDepth << endl; - out << " Motion System: " << motionSystem << endl; - out << " Unknown Byte 1: " << unknownByte1 << endl; - out << " Unknown Byte 2: " << unknownByte2 << endl; - out << " Quality Type: " << qualityType << endl; - out << " Unknown Int 6: " << unknownInt6 << endl; - out << " Unknown Int 7: " << unknownInt7 << endl; - out << " Unknown Int 8: " << unknownInt8 << endl; - out << " Num Constraints: " << numConstraints << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < constraints.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Constraints[" << i1 << "]: " << constraints[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void bhkRigidBody::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkEntity::FixLinks( objects, link_stack, info ); - for (unsigned int i1 = 0; i1 < constraints.size(); i1++) { - constraints[i1] = FixLink<bhkConstraint>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> bhkRigidBody::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkEntity::GetRefs(); - for (unsigned int i1 = 0; i1 < constraints.size(); i1++) { - if ( constraints[i1] != NULL ) - refs.push_back(StaticCast<NiObject>(constraints[i1])); - }; - return refs; -} - -void bhkRigidBodyT::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkRigidBody::Read( in, link_stack, info ); -} - -void bhkRigidBodyT::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkRigidBody::Write( out, link_map, info ); -} - -std::string bhkRigidBodyT::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkRigidBody::asString(); - return out.str(); -} - -void bhkRigidBodyT::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkRigidBody::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkRigidBodyT::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkRigidBody::GetRefs(); - return refs; -} - -void bhkConstraint::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - bhkSerializable::Read( in, link_stack, info ); - NifStream( numEntities, in, info ); - entities.resize(numEntities); - for (unsigned int i1 = 0; i1 < entities.size(); i1++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - NifStream( priority, in, info ); -} - -void bhkConstraint::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkSerializable::Write( out, link_map, info ); - numEntities = (unsigned int)(entities.size()); - NifStream( numEntities, out, info ); - for (unsigned int i1 = 0; i1 < entities.size(); i1++) { - if ( entities[i1] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(entities[i1]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - NifStream( priority, out, info ); -} - -std::string bhkConstraint::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkSerializable::asString(); - numEntities = (unsigned int)(entities.size()); - out << " Num Entities: " << numEntities << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < entities.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Entities[" << i1 << "]: " << entities[i1] << endl; - array_output_count++; - }; - out << " Priority: " << priority << endl; - return out.str(); -} - -void bhkConstraint::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkSerializable::FixLinks( objects, link_stack, info ); - for (unsigned int i1 = 0; i1 < entities.size(); i1++) { - entities[i1] = FixLink<bhkEntity>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> bhkConstraint::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkSerializable::GetRefs(); - for (unsigned int i1 = 0; i1 < entities.size(); i1++) { - }; - return refs; -} - -void bhkLimitedHingeConstraint::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkConstraint::Read( in, link_stack, info ); - NifStream( limitedHinge.pivotA, in, info ); - NifStream( limitedHinge.axleA, in, info ); - NifStream( limitedHinge.perp2axleina1, in, info ); - NifStream( limitedHinge.perp2axleina2, in, info ); - NifStream( limitedHinge.pivotB, in, info ); - NifStream( limitedHinge.axleB, in, info ); - NifStream( limitedHinge.perp2axleinb2, in, info ); - NifStream( limitedHinge.minAngle, in, info ); - NifStream( limitedHinge.maxAngle, in, info ); - NifStream( limitedHinge.maxFriction, in, info ); -} - -void bhkLimitedHingeConstraint::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkConstraint::Write( out, link_map, info ); - NifStream( limitedHinge.pivotA, out, info ); - NifStream( limitedHinge.axleA, out, info ); - NifStream( limitedHinge.perp2axleina1, out, info ); - NifStream( limitedHinge.perp2axleina2, out, info ); - NifStream( limitedHinge.pivotB, out, info ); - NifStream( limitedHinge.axleB, out, info ); - NifStream( limitedHinge.perp2axleinb2, out, info ); - NifStream( limitedHinge.minAngle, out, info ); - NifStream( limitedHinge.maxAngle, out, info ); - NifStream( limitedHinge.maxFriction, out, info ); -} - -std::string bhkLimitedHingeConstraint::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkConstraint::asString(); - out << " Pivot A: " << limitedHinge.pivotA << endl; - out << " Axle A: " << limitedHinge.axleA << endl; - out << " Perp2AxleInA1: " << limitedHinge.perp2axleina1 << endl; - out << " Perp2AxleInA2: " << limitedHinge.perp2axleina2 << endl; - out << " Pivot B: " << limitedHinge.pivotB << endl; - out << " Axle B: " << limitedHinge.axleB << endl; - out << " Perp2AxleInB2: " << limitedHinge.perp2axleinb2 << endl; - out << " Min Angle: " << limitedHinge.minAngle << endl; - out << " Max Angle: " << limitedHinge.maxAngle << endl; - out << " Max Friction: " << limitedHinge.maxFriction << endl; - return out.str(); -} - -void bhkLimitedHingeConstraint::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkConstraint::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkLimitedHingeConstraint::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkConstraint::GetRefs(); - return refs; -} - -void bhkMalleableConstraint::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - bhkConstraint::Read( in, link_stack, info ); - NifStream( type, in, info ); - NifStream( unknownInt2, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( unknownInt3, in, info ); - if ( (type == 7) ) { - NifStream( ragdoll.pivotA, in, info ); - NifStream( ragdoll.planeA, in, info ); - NifStream( ragdoll.twistA, in, info ); - NifStream( ragdoll.pivotB, in, info ); - NifStream( ragdoll.planeB, in, info ); - NifStream( ragdoll.twistB, in, info ); - NifStream( ragdoll.coneMinAngle, in, info ); - NifStream( ragdoll.planeMinAngle, in, info ); - NifStream( ragdoll.planeMaxAngle, in, info ); - NifStream( ragdoll.twistMinAngle, in, info ); - NifStream( ragdoll.twistMaxAngle, in, info ); - NifStream( ragdoll.maxFriction, in, info ); - }; - if ( (type == 2) ) { - NifStream( limitedHinge.pivotA, in, info ); - NifStream( limitedHinge.axleA, in, info ); - NifStream( limitedHinge.perp2axleina1, in, info ); - NifStream( limitedHinge.perp2axleina2, in, info ); - NifStream( limitedHinge.pivotB, in, info ); - NifStream( limitedHinge.axleB, in, info ); - NifStream( limitedHinge.perp2axleinb2, in, info ); - NifStream( limitedHinge.minAngle, in, info ); - NifStream( limitedHinge.maxAngle, in, info ); - NifStream( limitedHinge.maxFriction, in, info ); - }; - NifStream( tau, in, info ); - NifStream( damping, in, info ); -} - -void bhkMalleableConstraint::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkConstraint::Write( out, link_map, info ); - NifStream( type, out, info ); - NifStream( unknownInt2, out, info ); - if ( unknownLink1 != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(unknownLink1) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - if ( unknownLink2 != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(unknownLink2) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( unknownInt3, out, info ); - if ( (type == 7) ) { - NifStream( ragdoll.pivotA, out, info ); - NifStream( ragdoll.planeA, out, info ); - NifStream( ragdoll.twistA, out, info ); - NifStream( ragdoll.pivotB, out, info ); - NifStream( ragdoll.planeB, out, info ); - NifStream( ragdoll.twistB, out, info ); - NifStream( ragdoll.coneMinAngle, out, info ); - NifStream( ragdoll.planeMinAngle, out, info ); - NifStream( ragdoll.planeMaxAngle, out, info ); - NifStream( ragdoll.twistMinAngle, out, info ); - NifStream( ragdoll.twistMaxAngle, out, info ); - NifStream( ragdoll.maxFriction, out, info ); - }; - if ( (type == 2) ) { - NifStream( limitedHinge.pivotA, out, info ); - NifStream( limitedHinge.axleA, out, info ); - NifStream( limitedHinge.perp2axleina1, out, info ); - NifStream( limitedHinge.perp2axleina2, out, info ); - NifStream( limitedHinge.pivotB, out, info ); - NifStream( limitedHinge.axleB, out, info ); - NifStream( limitedHinge.perp2axleinb2, out, info ); - NifStream( limitedHinge.minAngle, out, info ); - NifStream( limitedHinge.maxAngle, out, info ); - NifStream( limitedHinge.maxFriction, out, info ); - }; - NifStream( tau, out, info ); - NifStream( damping, out, info ); -} - -std::string bhkMalleableConstraint::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkConstraint::asString(); - out << " Type: " << type << endl; - out << " Unknown Int 2: " << unknownInt2 << endl; - out << " Unknown Link 1: " << unknownLink1 << endl; - out << " Unknown Link 2: " << unknownLink2 << endl; - out << " Unknown Int 3: " << unknownInt3 << endl; - if ( (type == 7) ) { - out << " Pivot A: " << ragdoll.pivotA << endl; - out << " Plane A: " << ragdoll.planeA << endl; - out << " Twist A: " << ragdoll.twistA << endl; - out << " Pivot B: " << ragdoll.pivotB << endl; - out << " Plane B: " << ragdoll.planeB << endl; - out << " Twist B: " << ragdoll.twistB << endl; - out << " Cone Min Angle: " << ragdoll.coneMinAngle << endl; - out << " Plane Min Angle: " << ragdoll.planeMinAngle << endl; - out << " Plane Max Angle: " << ragdoll.planeMaxAngle << endl; - out << " Twist Min Angle: " << ragdoll.twistMinAngle << endl; - out << " Twist Max Angle: " << ragdoll.twistMaxAngle << endl; - out << " Max Friction: " << ragdoll.maxFriction << endl; - }; - if ( (type == 2) ) { - out << " Pivot A: " << limitedHinge.pivotA << endl; - out << " Axle A: " << limitedHinge.axleA << endl; - out << " Perp2AxleInA1: " << limitedHinge.perp2axleina1 << endl; - out << " Perp2AxleInA2: " << limitedHinge.perp2axleina2 << endl; - out << " Pivot B: " << limitedHinge.pivotB << endl; - out << " Axle B: " << limitedHinge.axleB << endl; - out << " Perp2AxleInB2: " << limitedHinge.perp2axleinb2 << endl; - out << " Min Angle: " << limitedHinge.minAngle << endl; - out << " Max Angle: " << limitedHinge.maxAngle << endl; - out << " Max Friction: " << limitedHinge.maxFriction << endl; - }; - out << " Tau: " << tau << endl; - out << " Damping: " << damping << endl; - return out.str(); -} - -void bhkMalleableConstraint::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkConstraint::FixLinks( objects, link_stack, info ); - unknownLink1 = FixLink<NiObject>( objects, link_stack, info ); - unknownLink2 = FixLink<NiObject>( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkMalleableConstraint::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkConstraint::GetRefs(); - if ( unknownLink1 != NULL ) - refs.push_back(StaticCast<NiObject>(unknownLink1)); - if ( unknownLink2 != NULL ) - refs.push_back(StaticCast<NiObject>(unknownLink2)); - return refs; -} - -void bhkStiffSpringConstraint::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkConstraint::Read( in, link_stack, info ); - NifStream( pivotA, in, info ); - NifStream( pivotB, in, info ); - NifStream( length, in, info ); -} - -void bhkStiffSpringConstraint::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkConstraint::Write( out, link_map, info ); - NifStream( pivotA, out, info ); - NifStream( pivotB, out, info ); - NifStream( length, out, info ); -} - -std::string bhkStiffSpringConstraint::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkConstraint::asString(); - out << " Pivot A: " << pivotA << endl; - out << " Pivot B: " << pivotB << endl; - out << " Length: " << length << endl; - return out.str(); -} - -void bhkStiffSpringConstraint::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkConstraint::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkStiffSpringConstraint::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkConstraint::GetRefs(); - return refs; -} - -void bhkRagdollConstraint::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkConstraint::Read( in, link_stack, info ); - NifStream( ragdoll.pivotA, in, info ); - NifStream( ragdoll.planeA, in, info ); - NifStream( ragdoll.twistA, in, info ); - NifStream( ragdoll.pivotB, in, info ); - NifStream( ragdoll.planeB, in, info ); - NifStream( ragdoll.twistB, in, info ); - NifStream( ragdoll.coneMinAngle, in, info ); - NifStream( ragdoll.planeMinAngle, in, info ); - NifStream( ragdoll.planeMaxAngle, in, info ); - NifStream( ragdoll.twistMinAngle, in, info ); - NifStream( ragdoll.twistMaxAngle, in, info ); - NifStream( ragdoll.maxFriction, in, info ); -} - -void bhkRagdollConstraint::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkConstraint::Write( out, link_map, info ); - NifStream( ragdoll.pivotA, out, info ); - NifStream( ragdoll.planeA, out, info ); - NifStream( ragdoll.twistA, out, info ); - NifStream( ragdoll.pivotB, out, info ); - NifStream( ragdoll.planeB, out, info ); - NifStream( ragdoll.twistB, out, info ); - NifStream( ragdoll.coneMinAngle, out, info ); - NifStream( ragdoll.planeMinAngle, out, info ); - NifStream( ragdoll.planeMaxAngle, out, info ); - NifStream( ragdoll.twistMinAngle, out, info ); - NifStream( ragdoll.twistMaxAngle, out, info ); - NifStream( ragdoll.maxFriction, out, info ); -} - -std::string bhkRagdollConstraint::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkConstraint::asString(); - out << " Pivot A: " << ragdoll.pivotA << endl; - out << " Plane A: " << ragdoll.planeA << endl; - out << " Twist A: " << ragdoll.twistA << endl; - out << " Pivot B: " << ragdoll.pivotB << endl; - out << " Plane B: " << ragdoll.planeB << endl; - out << " Twist B: " << ragdoll.twistB << endl; - out << " Cone Min Angle: " << ragdoll.coneMinAngle << endl; - out << " Plane Min Angle: " << ragdoll.planeMinAngle << endl; - out << " Plane Max Angle: " << ragdoll.planeMaxAngle << endl; - out << " Twist Min Angle: " << ragdoll.twistMinAngle << endl; - out << " Twist Max Angle: " << ragdoll.twistMaxAngle << endl; - out << " Max Friction: " << ragdoll.maxFriction << endl; - return out.str(); -} - -void bhkRagdollConstraint::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkConstraint::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkRagdollConstraint::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkConstraint::GetRefs(); - return refs; -} - -void bhkPrismaticConstraint::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkConstraint::Read( in, link_stack, info ); - for (unsigned int i1 = 0; i1 < 8; i1++) { - NifStream( unknownVectors[i1], in, info ); - }; - for (unsigned int i1 = 0; i1 < 3; i1++) { - NifStream( unknownFloats2[i1], in, info ); - }; -} - -void bhkPrismaticConstraint::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkConstraint::Write( out, link_map, info ); - for (unsigned int i1 = 0; i1 < 8; i1++) { - NifStream( unknownVectors[i1], out, info ); - }; - for (unsigned int i1 = 0; i1 < 3; i1++) { - NifStream( unknownFloats2[i1], out, info ); - }; -} - -std::string bhkPrismaticConstraint::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkConstraint::asString(); - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 8; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Vectors[" << i1 << "]: " << unknownVectors[i1] << endl; - array_output_count++; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 3; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Floats 2[" << i1 << "]: " << unknownFloats2[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void bhkPrismaticConstraint::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkConstraint::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkPrismaticConstraint::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkConstraint::GetRefs(); - return refs; -} - -void bhkHingeConstraint::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkConstraint::Read( in, link_stack, info ); - NifStream( pivotA, in, info ); - NifStream( perp2axleina1, in, info ); - NifStream( perp2axleina2, in, info ); - NifStream( pivotB, in, info ); - NifStream( axleB, in, info ); -} - -void bhkHingeConstraint::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkConstraint::Write( out, link_map, info ); - NifStream( pivotA, out, info ); - NifStream( perp2axleina1, out, info ); - NifStream( perp2axleina2, out, info ); - NifStream( pivotB, out, info ); - NifStream( axleB, out, info ); -} - -std::string bhkHingeConstraint::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkConstraint::asString(); - out << " Pivot A: " << pivotA << endl; - out << " Perp2AxleInA1: " << perp2axleina1 << endl; - out << " Perp2AxleInA2: " << perp2axleina2 << endl; - out << " Pivot B: " << pivotB << endl; - out << " Axle B: " << axleB << endl; - return out.str(); -} - -void bhkHingeConstraint::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkConstraint::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkHingeConstraint::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkConstraint::GetRefs(); - return refs; -} - -void bhkShape::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkSerializable::Read( in, link_stack, info ); -} - -void bhkShape::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkSerializable::Write( out, link_map, info ); -} - -std::string bhkShape::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkSerializable::asString(); - return out.str(); -} - -void bhkShape::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkSerializable::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkShape::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkSerializable::GetRefs(); - return refs; -} - -void bhkTransformShape::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - bhkShape::Read( in, link_stack, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( material, in, info ); - NifStream( unknownFloat1, in, info ); - for (unsigned int i1 = 0; i1 < 8; i1++) { - NifStream( unknown8Bytes[i1], in, info ); - }; - NifStream( transform, in, info ); -} - -void bhkTransformShape::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkShape::Write( out, link_map, info ); - if ( shape != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(shape) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( material, out, info ); - NifStream( unknownFloat1, out, info ); - for (unsigned int i1 = 0; i1 < 8; i1++) { - NifStream( unknown8Bytes[i1], out, info ); - }; - NifStream( transform, out, info ); -} - -std::string bhkTransformShape::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkShape::asString(); - out << " Shape: " << shape << endl; - out << " Material: " << material << endl; - out << " Unknown Float 1: " << unknownFloat1 << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 8; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown 8 Bytes[" << i1 << "]: " << unknown8Bytes[i1] << endl; - array_output_count++; - }; - out << " Transform: " << transform << endl; - return out.str(); -} - -void bhkTransformShape::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkShape::FixLinks( objects, link_stack, info ); - shape = FixLink<bhkShape>( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkTransformShape::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkShape::GetRefs(); - if ( shape != NULL ) - refs.push_back(StaticCast<NiObject>(shape)); - return refs; -} - -void bhkSphereRepShape::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkShape::Read( in, link_stack, info ); - NifStream( material, in, info ); - NifStream( radius, in, info ); -} - -void bhkSphereRepShape::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkShape::Write( out, link_map, info ); - NifStream( material, out, info ); - NifStream( radius, out, info ); -} - -std::string bhkSphereRepShape::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkShape::asString(); - out << " Material: " << material << endl; - out << " Radius: " << radius << endl; - return out.str(); -} - -void bhkSphereRepShape::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkShape::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkSphereRepShape::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkShape::GetRefs(); - return refs; -} - -void bhkConvexShape::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkSphereRepShape::Read( in, link_stack, info ); -} - -void bhkConvexShape::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkSphereRepShape::Write( out, link_map, info ); -} - -std::string bhkConvexShape::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkSphereRepShape::asString(); - return out.str(); -} - -void bhkConvexShape::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkSphereRepShape::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkConvexShape::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkSphereRepShape::GetRefs(); - return refs; -} - -void bhkSphereShape::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkConvexShape::Read( in, link_stack, info ); -} - -void bhkSphereShape::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkConvexShape::Write( out, link_map, info ); -} - -std::string bhkSphereShape::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkConvexShape::asString(); - return out.str(); -} - -void bhkSphereShape::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkConvexShape::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkSphereShape::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkConvexShape::GetRefs(); - return refs; -} - -void bhkCapsuleShape::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkConvexShape::Read( in, link_stack, info ); - NifStream( unknownShort1, in, info ); - NifStream( unknownShort2, in, info ); - NifStream( unknownShort3, in, info ); - NifStream( unknownShort4, in, info ); - NifStream( firstPoint, in, info ); - NifStream( radius1, in, info ); - NifStream( secondPoint, in, info ); - NifStream( radius2, in, info ); -} - -void bhkCapsuleShape::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkConvexShape::Write( out, link_map, info ); - NifStream( unknownShort1, out, info ); - NifStream( unknownShort2, out, info ); - NifStream( unknownShort3, out, info ); - NifStream( unknownShort4, out, info ); - NifStream( firstPoint, out, info ); - NifStream( radius1, out, info ); - NifStream( secondPoint, out, info ); - NifStream( radius2, out, info ); -} - -std::string bhkCapsuleShape::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkConvexShape::asString(); - out << " Unknown Short 1: " << unknownShort1 << endl; - out << " Unknown Short 2: " << unknownShort2 << endl; - out << " Unknown Short 3: " << unknownShort3 << endl; - out << " Unknown Short 4: " << unknownShort4 << endl; - out << " First Point: " << firstPoint << endl; - out << " Radius 1: " << radius1 << endl; - out << " Second Point: " << secondPoint << endl; - out << " Radius 2: " << radius2 << endl; - return out.str(); -} - -void bhkCapsuleShape::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkConvexShape::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkCapsuleShape::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkConvexShape::GetRefs(); - return refs; -} - -void bhkBoxShape::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkConvexShape::Read( in, link_stack, info ); - NifStream( unknownShort1, in, info ); - NifStream( unknownShort2, in, info ); - NifStream( unknownShort3, in, info ); - NifStream( unknownShort4, in, info ); - NifStream( dimensions, in, info ); - NifStream( min_Size, in, info ); -} - -void bhkBoxShape::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkConvexShape::Write( out, link_map, info ); - NifStream( unknownShort1, out, info ); - NifStream( unknownShort2, out, info ); - NifStream( unknownShort3, out, info ); - NifStream( unknownShort4, out, info ); - NifStream( dimensions, out, info ); - NifStream( min_Size, out, info ); -} - -std::string bhkBoxShape::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkConvexShape::asString(); - out << " Unknown Short 1: " << unknownShort1 << endl; - out << " Unknown Short 2: " << unknownShort2 << endl; - out << " Unknown Short 3: " << unknownShort3 << endl; - out << " Unknown Short 4: " << unknownShort4 << endl; - out << " Dimensions: " << dimensions << endl; - out << " Min. size: " << min_Size << endl; - return out.str(); -} - -void bhkBoxShape::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkConvexShape::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkBoxShape::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkConvexShape::GetRefs(); - return refs; -} - -void bhkConvexVerticesShape::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkConvexShape::Read( in, link_stack, info ); - for (unsigned int i1 = 0; i1 < 6; i1++) { - NifStream( unknown6Floats[i1], in, info ); - }; - NifStream( numVertices, in, info ); - vertices.resize(numVertices); - for (unsigned int i1 = 0; i1 < vertices.size(); i1++) { - NifStream( vertices[i1], in, info ); - }; - NifStream( numNormals, in, info ); - normals.resize(numNormals); - for (unsigned int i1 = 0; i1 < normals.size(); i1++) { - NifStream( normals[i1], in, info ); - }; -} - -void bhkConvexVerticesShape::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkConvexShape::Write( out, link_map, info ); - numNormals = (unsigned int)(normals.size()); - numVertices = (unsigned int)(vertices.size()); - for (unsigned int i1 = 0; i1 < 6; i1++) { - NifStream( unknown6Floats[i1], out, info ); - }; - NifStream( numVertices, out, info ); - for (unsigned int i1 = 0; i1 < vertices.size(); i1++) { - NifStream( vertices[i1], out, info ); - }; - NifStream( numNormals, out, info ); - for (unsigned int i1 = 0; i1 < normals.size(); i1++) { - NifStream( normals[i1], out, info ); - }; -} - -std::string bhkConvexVerticesShape::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkConvexShape::asString(); - numNormals = (unsigned int)(normals.size()); - numVertices = (unsigned int)(vertices.size()); - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 6; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown 6 Floats[" << i1 << "]: " << unknown6Floats[i1] << endl; - array_output_count++; - }; - out << " Num Vertices: " << numVertices << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < vertices.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Vertices[" << i1 << "]: " << vertices[i1] << endl; - array_output_count++; - }; - out << " Num Normals: " << numNormals << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < normals.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Normals[" << i1 << "]: " << normals[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void bhkConvexVerticesShape::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkConvexShape::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkConvexVerticesShape::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkConvexShape::GetRefs(); - return refs; -} - -void bhkConvexTransformShape::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkTransformShape::Read( in, link_stack, info ); -} - -void bhkConvexTransformShape::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkTransformShape::Write( out, link_map, info ); -} - -std::string bhkConvexTransformShape::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkTransformShape::asString(); - return out.str(); -} - -void bhkConvexTransformShape::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkTransformShape::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkConvexTransformShape::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkTransformShape::GetRefs(); - return refs; -} - -void bhkMultiSphereShape::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkSphereRepShape::Read( in, link_stack, info ); - NifStream( unknownFloat1, in, info ); - NifStream( unknownFloat2, in, info ); - NifStream( numSpheres, in, info ); - spheres.resize(numSpheres); - for (unsigned int i1 = 0; i1 < spheres.size(); i1++) { - NifStream( spheres[i1].center, in, info ); - NifStream( spheres[i1].radius, in, info ); - }; -} - -void bhkMultiSphereShape::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkSphereRepShape::Write( out, link_map, info ); - numSpheres = (unsigned int)(spheres.size()); - NifStream( unknownFloat1, out, info ); - NifStream( unknownFloat2, out, info ); - NifStream( numSpheres, out, info ); - for (unsigned int i1 = 0; i1 < spheres.size(); i1++) { - NifStream( spheres[i1].center, out, info ); - NifStream( spheres[i1].radius, out, info ); - }; -} - -std::string bhkMultiSphereShape::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkSphereRepShape::asString(); - numSpheres = (unsigned int)(spheres.size()); - out << " Unknown Float 1: " << unknownFloat1 << endl; - out << " Unknown Float 2: " << unknownFloat2 << endl; - out << " Num Spheres: " << numSpheres << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < spheres.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - out << " Center: " << spheres[i1].center << endl; - out << " Radius: " << spheres[i1].radius << endl; - }; - return out.str(); -} - -void bhkMultiSphereShape::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkSphereRepShape::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkMultiSphereShape::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkSphereRepShape::GetRefs(); - return refs; -} - -void bhkBvTreeShape::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkShape::Read( in, link_stack, info ); -} - -void bhkBvTreeShape::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkShape::Write( out, link_map, info ); -} - -std::string bhkBvTreeShape::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkShape::asString(); - return out.str(); -} - -void bhkBvTreeShape::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkShape::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkBvTreeShape::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkShape::GetRefs(); - return refs; -} - -void bhkMoppBvTreeShape::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - bhkBvTreeShape::Read( in, link_stack, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( material, in, info ); - for (unsigned int i1 = 0; i1 < 8; i1++) { - NifStream( unknown8Bytes[i1], in, info ); - }; - NifStream( unknownFloat, in, info ); - NifStream( moppDataSize, in, info ); - if ( info.version >= 0x14000005 ) { - NifStream( objectCorner, in, info ); - NifStream( scalingFactor, in, info ); - }; - moppData.resize(moppDataSize); - for (unsigned int i1 = 0; i1 < moppData.size(); i1++) { - NifStream( moppData[i1], in, info ); - }; -} - -void bhkMoppBvTreeShape::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkBvTreeShape::Write( out, link_map, info ); - moppDataSize = (unsigned int)(moppData.size()); - if ( shape != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(shape) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( material, out, info ); - for (unsigned int i1 = 0; i1 < 8; i1++) { - NifStream( unknown8Bytes[i1], out, info ); - }; - NifStream( unknownFloat, out, info ); - NifStream( moppDataSize, out, info ); - if ( info.version >= 0x14000005 ) { - NifStream( objectCorner, out, info ); - NifStream( scalingFactor, out, info ); - }; - for (unsigned int i1 = 0; i1 < moppData.size(); i1++) { - NifStream( moppData[i1], out, info ); - }; -} - -std::string bhkMoppBvTreeShape::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkBvTreeShape::asString(); - moppDataSize = (unsigned int)(moppData.size()); - out << " Shape: " << shape << endl; - out << " Material: " << material << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 8; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown 8 Bytes[" << i1 << "]: " << unknown8Bytes[i1] << endl; - array_output_count++; - }; - out << " Unknown Float: " << unknownFloat << endl; - out << " MOPP Data Size: " << moppDataSize << endl; - out << " Object Corner: " << objectCorner << endl; - out << " Scaling Factor: " << scalingFactor << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < moppData.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " MOPP Data[" << i1 << "]: " << moppData[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void bhkMoppBvTreeShape::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkBvTreeShape::FixLinks( objects, link_stack, info ); - shape = FixLink<bhkShape>( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkMoppBvTreeShape::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkBvTreeShape::GetRefs(); - if ( shape != NULL ) - refs.push_back(StaticCast<NiObject>(shape)); - return refs; -} - -void bhkShapeCollection::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkShape::Read( in, link_stack, info ); -} - -void bhkShapeCollection::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkShape::Write( out, link_map, info ); -} - -std::string bhkShapeCollection::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkShape::asString(); - return out.str(); -} - -void bhkShapeCollection::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkShape::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkShapeCollection::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkShape::GetRefs(); - return refs; -} - -void bhkListShape::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - bhkShapeCollection::Read( in, link_stack, info ); - NifStream( numSubShapes, in, info ); - subShapes.resize(numSubShapes); - for (unsigned int i1 = 0; i1 < subShapes.size(); i1++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - NifStream( material, in, info ); - for (unsigned int i1 = 0; i1 < 6; i1++) { - NifStream( unknownFloats[i1], in, info ); - }; - NifStream( numUnknownInts, in, info ); - unknownInts.resize(numUnknownInts); - for (unsigned int i1 = 0; i1 < unknownInts.size(); i1++) { - NifStream( unknownInts[i1], in, info ); - }; -} - -void bhkListShape::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkShapeCollection::Write( out, link_map, info ); - numUnknownInts = (unsigned int)(unknownInts.size()); - numSubShapes = (unsigned int)(subShapes.size()); - NifStream( numSubShapes, out, info ); - for (unsigned int i1 = 0; i1 < subShapes.size(); i1++) { - if ( subShapes[i1] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(subShapes[i1]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - NifStream( material, out, info ); - for (unsigned int i1 = 0; i1 < 6; i1++) { - NifStream( unknownFloats[i1], out, info ); - }; - NifStream( numUnknownInts, out, info ); - for (unsigned int i1 = 0; i1 < unknownInts.size(); i1++) { - NifStream( unknownInts[i1], out, info ); - }; -} - -std::string bhkListShape::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkShapeCollection::asString(); - numUnknownInts = (unsigned int)(unknownInts.size()); - numSubShapes = (unsigned int)(subShapes.size()); - out << " Num Sub Shapes: " << numSubShapes << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < subShapes.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Sub Shapes[" << i1 << "]: " << subShapes[i1] << endl; - array_output_count++; - }; - out << " Material: " << material << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 6; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Floats[" << i1 << "]: " << unknownFloats[i1] << endl; - array_output_count++; - }; - out << " Num Unknown Ints: " << numUnknownInts << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < unknownInts.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Ints[" << i1 << "]: " << unknownInts[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void bhkListShape::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkShapeCollection::FixLinks( objects, link_stack, info ); - for (unsigned int i1 = 0; i1 < subShapes.size(); i1++) { - subShapes[i1] = FixLink<bhkShape>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> bhkListShape::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkShapeCollection::GetRefs(); - for (unsigned int i1 = 0; i1 < subShapes.size(); i1++) { - if ( subShapes[i1] != NULL ) - refs.push_back(StaticCast<NiObject>(subShapes[i1])); - }; - return refs; -} - -void bhkPackedNiTriStripsShape::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - bhkShapeCollection::Read( in, link_stack, info ); - NifStream( numSubShapes, in, info ); - subShapes.resize(numSubShapes); - for (unsigned int i1 = 0; i1 < subShapes.size(); i1++) { - NifStream( subShapes[i1].layer, in, info ); - NifStream( subShapes[i1].colFilter, in, info ); - NifStream( subShapes[i1].unknownShort, in, info ); - NifStream( subShapes[i1].vertexCount___, in, info ); - NifStream( subShapes[i1].material, in, info ); - }; - for (unsigned int i1 = 0; i1 < 9; i1++) { - NifStream( unknownFloats[i1], in, info ); - }; - NifStream( scale, in, info ); - for (unsigned int i1 = 0; i1 < 3; i1++) { - NifStream( unknownFloats2[i1], in, info ); - }; - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void bhkPackedNiTriStripsShape::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkShapeCollection::Write( out, link_map, info ); - numSubShapes = (unsigned short)(subShapes.size()); - NifStream( numSubShapes, out, info ); - for (unsigned int i1 = 0; i1 < subShapes.size(); i1++) { - NifStream( subShapes[i1].layer, out, info ); - NifStream( subShapes[i1].colFilter, out, info ); - NifStream( subShapes[i1].unknownShort, out, info ); - NifStream( subShapes[i1].vertexCount___, out, info ); - NifStream( subShapes[i1].material, out, info ); - }; - for (unsigned int i1 = 0; i1 < 9; i1++) { - NifStream( unknownFloats[i1], out, info ); - }; - NifStream( scale, out, info ); - for (unsigned int i1 = 0; i1 < 3; i1++) { - NifStream( unknownFloats2[i1], out, info ); - }; - if ( data != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string bhkPackedNiTriStripsShape::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkShapeCollection::asString(); - numSubShapes = (unsigned short)(subShapes.size()); - out << " Num Sub Shapes: " << numSubShapes << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < subShapes.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - out << " Layer: " << subShapes[i1].layer << endl; - out << " Col Filter: " << subShapes[i1].colFilter << endl; - out << " Unknown Short: " << subShapes[i1].unknownShort << endl; - out << " Vertex Count (?): " << subShapes[i1].vertexCount___ << endl; - out << " Material: " << subShapes[i1].material << endl; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 9; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Floats[" << i1 << "]: " << unknownFloats[i1] << endl; - array_output_count++; - }; - out << " Scale: " << scale << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 3; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Floats 2[" << i1 << "]: " << unknownFloats2[i1] << endl; - array_output_count++; - }; - out << " Data: " << data << endl; - return out.str(); -} - -void bhkPackedNiTriStripsShape::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkShapeCollection::FixLinks( objects, link_stack, info ); - data = FixLink<hkPackedNiTriStripsData>( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkPackedNiTriStripsShape::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkShapeCollection::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - return refs; -} - -void bhkNiTriStripsShape::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - bhkShapeCollection::Read( in, link_stack, info ); - NifStream( material, in, info ); - NifStream( unknownFloat1, in, info ); - NifStream( unknownInt1, in, info ); - for (unsigned int i1 = 0; i1 < 4; i1++) { - NifStream( unknownInts1[i1], in, info ); - }; - NifStream( unknownInt2, in, info ); - NifStream( scale, in, info ); - NifStream( unknownInt3, in, info ); - NifStream( numStripsData, in, info ); - stripsData.resize(numStripsData); - for (unsigned int i1 = 0; i1 < stripsData.size(); i1++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - NifStream( numDataLayers, in, info ); - dataLayers.resize(numDataLayers); - for (unsigned int i1 = 0; i1 < dataLayers.size(); i1++) { - NifStream( dataLayers[i1].layer, in, info ); - NifStream( dataLayers[i1].colFilter, in, info ); - NifStream( dataLayers[i1].unknownShort, in, info ); - }; -} - -void bhkNiTriStripsShape::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkShapeCollection::Write( out, link_map, info ); - numDataLayers = (unsigned int)(dataLayers.size()); - numStripsData = (unsigned int)(stripsData.size()); - NifStream( material, out, info ); - NifStream( unknownFloat1, out, info ); - NifStream( unknownInt1, out, info ); - for (unsigned int i1 = 0; i1 < 4; i1++) { - NifStream( unknownInts1[i1], out, info ); - }; - NifStream( unknownInt2, out, info ); - NifStream( scale, out, info ); - NifStream( unknownInt3, out, info ); - NifStream( numStripsData, out, info ); - for (unsigned int i1 = 0; i1 < stripsData.size(); i1++) { - if ( stripsData[i1] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(stripsData[i1]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - NifStream( numDataLayers, out, info ); - for (unsigned int i1 = 0; i1 < dataLayers.size(); i1++) { - NifStream( dataLayers[i1].layer, out, info ); - NifStream( dataLayers[i1].colFilter, out, info ); - NifStream( dataLayers[i1].unknownShort, out, info ); - }; -} - -std::string bhkNiTriStripsShape::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkShapeCollection::asString(); - numDataLayers = (unsigned int)(dataLayers.size()); - numStripsData = (unsigned int)(stripsData.size()); - out << " Material: " << material << endl; - out << " Unknown Float 1: " << unknownFloat1 << endl; - out << " Unknown Int 1: " << unknownInt1 << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 4; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Ints 1[" << i1 << "]: " << unknownInts1[i1] << endl; - array_output_count++; - }; - out << " Unknown Int 2: " << unknownInt2 << endl; - out << " Scale: " << scale << endl; - out << " Unknown Int 3: " << unknownInt3 << endl; - out << " Num Strips Data: " << numStripsData << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < stripsData.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Strips Data[" << i1 << "]: " << stripsData[i1] << endl; - array_output_count++; - }; - out << " Num Data Layers: " << numDataLayers << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < dataLayers.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - out << " Layer: " << dataLayers[i1].layer << endl; - out << " Col Filter: " << dataLayers[i1].colFilter << endl; - out << " Unknown Short: " << dataLayers[i1].unknownShort << endl; - }; - return out.str(); -} - -void bhkNiTriStripsShape::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkShapeCollection::FixLinks( objects, link_stack, info ); - for (unsigned int i1 = 0; i1 < stripsData.size(); i1++) { - stripsData[i1] = FixLink<NiTriStripsData>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> bhkNiTriStripsShape::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkShapeCollection::GetRefs(); - for (unsigned int i1 = 0; i1 < stripsData.size(); i1++) { - if ( stripsData[i1] != NULL ) - refs.push_back(StaticCast<NiObject>(stripsData[i1])); - }; - return refs; -} - -void NiExtraData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiObject::Read( in, link_stack, info ); - if ( info.version >= 0x0A000100 ) { - NifStream( name, in, info ); - }; - if ( info.version <= 0x04020200 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiExtraData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - if ( info.version >= 0x0A000100 ) { - NifStream( name, out, info ); - }; - if ( info.version <= 0x04020200 ) { - if ( nextExtraData != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(nextExtraData) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiExtraData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - out << " Name: " << name << endl; - out << " Next Extra Data: " << nextExtraData << endl; - return out.str(); -} - -void NiExtraData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); - if ( info.version <= 0x04020200 ) { - nextExtraData = FixLink<NiExtraData>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiExtraData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - if ( nextExtraData != NULL ) - refs.push_back(StaticCast<NiObject>(nextExtraData)); - return refs; -} - -void NiInterpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::Read( in, link_stack, info ); -} - -void NiInterpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); -} - -std::string NiInterpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - return out.str(); -} - -void NiInterpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiInterpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -void NiKeyBasedInterpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiInterpolator::Read( in, link_stack, info ); -} - -void NiKeyBasedInterpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiInterpolator::Write( out, link_map, info ); -} - -std::string NiKeyBasedInterpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiInterpolator::asString(); - return out.str(); -} - -void NiKeyBasedInterpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiInterpolator::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiKeyBasedInterpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiInterpolator::GetRefs(); - return refs; -} - -void NiFloatInterpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiKeyBasedInterpolator::Read( in, link_stack, info ); - NifStream( floatValue, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiFloatInterpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiKeyBasedInterpolator::Write( out, link_map, info ); - NifStream( floatValue, out, info ); - if ( data != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiFloatInterpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiKeyBasedInterpolator::asString(); - out << " Float Value: " << floatValue << endl; - out << " Data: " << data << endl; - return out.str(); -} - -void NiFloatInterpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiKeyBasedInterpolator::FixLinks( objects, link_stack, info ); - data = FixLink<NiFloatData>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiFloatInterpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiKeyBasedInterpolator::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - return refs; -} - -void NiTransformInterpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiKeyBasedInterpolator::Read( in, link_stack, info ); - NifStream( translation, in, info ); - NifStream( rotation, in, info ); - NifStream( scale, in, info ); - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - for (unsigned int i2 = 0; i2 < 3; i2++) { - NifStream( unknownBytes[i2], in, info ); - }; - }; - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiTransformInterpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiKeyBasedInterpolator::Write( out, link_map, info ); - NifStream( translation, out, info ); - NifStream( rotation, out, info ); - NifStream( scale, out, info ); - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - for (unsigned int i2 = 0; i2 < 3; i2++) { - NifStream( unknownBytes[i2], out, info ); - }; - }; - if ( data != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiTransformInterpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiKeyBasedInterpolator::asString(); - out << " Translation: " << translation << endl; - out << " Rotation: " << rotation << endl; - out << " Scale: " << scale << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 3; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Bytes[" << i1 << "]: " << unknownBytes[i1] << endl; - array_output_count++; - }; - out << " Data: " << data << endl; - return out.str(); -} - -void NiTransformInterpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiKeyBasedInterpolator::FixLinks( objects, link_stack, info ); - data = FixLink<NiTransformData>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiTransformInterpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiKeyBasedInterpolator::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - return refs; -} - -void NiPoint3Interpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiKeyBasedInterpolator::Read( in, link_stack, info ); - NifStream( point3Value, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiPoint3Interpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiKeyBasedInterpolator::Write( out, link_map, info ); - NifStream( point3Value, out, info ); - if ( data != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiPoint3Interpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiKeyBasedInterpolator::asString(); - out << " Point 3 Value: " << point3Value << endl; - out << " Data: " << data << endl; - return out.str(); -} - -void NiPoint3Interpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiKeyBasedInterpolator::FixLinks( objects, link_stack, info ); - data = FixLink<NiPosData>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPoint3Interpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiKeyBasedInterpolator::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - return refs; -} - -void NiPathInterpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiKeyBasedInterpolator::Read( in, link_stack, info ); - NifStream( unknownShort, in, info ); - NifStream( unknownInt, in, info ); - NifStream( unknownFloat1, in, info ); - NifStream( unknownFloat2, in, info ); - NifStream( unknownShort2, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiPathInterpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiKeyBasedInterpolator::Write( out, link_map, info ); - NifStream( unknownShort, out, info ); - NifStream( unknownInt, out, info ); - NifStream( unknownFloat1, out, info ); - NifStream( unknownFloat2, out, info ); - NifStream( unknownShort2, out, info ); - if ( posData != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(posData) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - if ( floatData != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(floatData) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiPathInterpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiKeyBasedInterpolator::asString(); - out << " Unknown Short: " << unknownShort << endl; - out << " Unknown Int: " << unknownInt << endl; - out << " Unknown Float 1: " << unknownFloat1 << endl; - out << " Unknown Float 2: " << unknownFloat2 << endl; - out << " Unknown Short 2: " << unknownShort2 << endl; - out << " Pos Data: " << posData << endl; - out << " Float Data: " << floatData << endl; - return out.str(); -} - -void NiPathInterpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiKeyBasedInterpolator::FixLinks( objects, link_stack, info ); - posData = FixLink<NiPosData>( objects, link_stack, info ); - floatData = FixLink<NiFloatData>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPathInterpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiKeyBasedInterpolator::GetRefs(); - if ( posData != NULL ) - refs.push_back(StaticCast<NiObject>(posData)); - if ( floatData != NULL ) - refs.push_back(StaticCast<NiObject>(floatData)); - return refs; -} - -void NiBoolInterpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiKeyBasedInterpolator::Read( in, link_stack, info ); - NifStream( boolValue, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiBoolInterpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiKeyBasedInterpolator::Write( out, link_map, info ); - NifStream( boolValue, out, info ); - if ( data != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiBoolInterpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiKeyBasedInterpolator::asString(); - out << " Bool Value: " << boolValue << endl; - out << " Data: " << data << endl; - return out.str(); -} - -void NiBoolInterpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiKeyBasedInterpolator::FixLinks( objects, link_stack, info ); - data = FixLink<NiBoolData>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBoolInterpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiKeyBasedInterpolator::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - return refs; -} - -void NiBoolTimelineInterpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBoolInterpolator::Read( in, link_stack, info ); -} - -void NiBoolTimelineInterpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiBoolInterpolator::Write( out, link_map, info ); -} - -std::string NiBoolTimelineInterpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiBoolInterpolator::asString(); - return out.str(); -} - -void NiBoolTimelineInterpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBoolInterpolator::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBoolTimelineInterpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiBoolInterpolator::GetRefs(); - return refs; -} - -void NiBlendInterpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiInterpolator::Read( in, link_stack, info ); - NifStream( unknownShort, in, info ); - NifStream( unknownInt, in, info ); -} - -void NiBlendInterpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiInterpolator::Write( out, link_map, info ); - NifStream( unknownShort, out, info ); - NifStream( unknownInt, out, info ); -} - -std::string NiBlendInterpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiInterpolator::asString(); - out << " Unknown Short: " << unknownShort << endl; - out << " Unknown Int: " << unknownInt << endl; - return out.str(); -} - -void NiBlendInterpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiInterpolator::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBlendInterpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiInterpolator::GetRefs(); - return refs; -} - -void NiBSplineInterpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiInterpolator::Read( in, link_stack, info ); - NifStream( startTime, in, info ); - NifStream( stopTime, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiBSplineInterpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiInterpolator::Write( out, link_map, info ); - NifStream( startTime, out, info ); - NifStream( stopTime, out, info ); - if ( splineData != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(splineData) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - if ( basisData != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(basisData) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiBSplineInterpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiInterpolator::asString(); - out << " Start Time: " << startTime << endl; - out << " Stop Time: " << stopTime << endl; - out << " Spline Data: " << splineData << endl; - out << " Basis Data: " << basisData << endl; - return out.str(); -} - -void NiBSplineInterpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiInterpolator::FixLinks( objects, link_stack, info ); - splineData = FixLink<NiBSplineData>( objects, link_stack, info ); - basisData = FixLink<NiBSplineBasisData>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBSplineInterpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiInterpolator::GetRefs(); - if ( splineData != NULL ) - refs.push_back(StaticCast<NiObject>(splineData)); - if ( basisData != NULL ) - refs.push_back(StaticCast<NiObject>(basisData)); - return refs; -} - -void NiObjectNET::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiObject::Read( in, link_stack, info ); - NifStream( name, in, info ); - if ( info.version <= 0x04020200 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - if ( info.version >= 0x0A000100 ) { - NifStream( numExtraDataList, in, info ); - extraDataList.resize(numExtraDataList); - for (unsigned int i2 = 0; i2 < extraDataList.size(); i2++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - }; - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiObjectNET::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - numExtraDataList = (unsigned int)(extraDataList.size()); - NifStream( name, out, info ); - if ( info.version <= 0x04020200 ) { - if ( extraData != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(extraData) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - if ( info.version >= 0x0A000100 ) { - NifStream( numExtraDataList, out, info ); - for (unsigned int i2 = 0; i2 < extraDataList.size(); i2++) { - if ( extraDataList[i2] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(extraDataList[i2]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - }; - if ( controller != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(controller) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiObjectNET::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - numExtraDataList = (unsigned int)(extraDataList.size()); - out << " Name: " << name << endl; - out << " Extra Data: " << extraData << endl; - out << " Num Extra Data List: " << numExtraDataList << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < extraDataList.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Extra Data List[" << i1 << "]: " << extraDataList[i1] << endl; - array_output_count++; - }; - out << " Controller: " << controller << endl; - return out.str(); -} - -void NiObjectNET::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); - if ( info.version <= 0x04020200 ) { - extraData = FixLink<NiExtraData>( objects, link_stack, info ); - }; - if ( info.version >= 0x0A000100 ) { - for (unsigned int i2 = 0; i2 < extraDataList.size(); i2++) { - extraDataList[i2] = FixLink<NiExtraData>( objects, link_stack, info ); - }; - }; - controller = FixLink<NiTimeController>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiObjectNET::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - if ( extraData != NULL ) - refs.push_back(StaticCast<NiObject>(extraData)); - for (unsigned int i1 = 0; i1 < extraDataList.size(); i1++) { - if ( extraDataList[i1] != NULL ) - refs.push_back(StaticCast<NiObject>(extraDataList[i1])); - }; - if ( controller != NULL ) - refs.push_back(StaticCast<NiObject>(controller)); - return refs; -} - -void NiCollisionObject::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiObject::Read( in, link_stack, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - if ( info.version >= 0x14000004 ) { - NifStream( unknownShort, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiCollisionObject::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - if ( target != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(target) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - if ( info.version >= 0x14000004 ) { - NifStream( unknownShort, out, info ); - if ( body != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(body) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiCollisionObject::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - out << " Target: " << target << endl; - out << " Unknown Short: " << unknownShort << endl; - out << " Body: " << body << endl; - return out.str(); -} - -void NiCollisionObject::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); - target = FixLink<NiAVObject>( objects, link_stack, info ); - if ( info.version >= 0x14000004 ) { - body = FixLink<NiObject>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiCollisionObject::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - if ( body != NULL ) - refs.push_back(StaticCast<NiObject>(body)); - return refs; -} - -void NiCollisionData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiCollisionObject::Read( in, link_stack, info ); - NifStream( unknownInt1, in, info ); - if ( ( info.version >= 0x0A010000 ) && ( info.version <= 0x0A010000 ) ) { - NifStream( unknownInt2, in, info ); - }; - NifStream( unknownByte, in, info ); - NifStream( collisionType, in, info ); - if ( (collisionType == 0) ) { - NifStream( unknownInt2, in, info ); - NifStream( unknownVector, in, info ); - }; - if ( (collisionType == 2) ) { - for (unsigned int i2 = 0; i2 < 8; i2++) { - NifStream( unknownFloat1[i2], in, info ); - }; - }; - if ( (collisionType == 1) ) { - for (unsigned int i2 = 0; i2 < 15; i2++) { - NifStream( unknownFloat2[i2], in, info ); - }; - }; -} - -void NiCollisionData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiCollisionObject::Write( out, link_map, info ); - NifStream( unknownInt1, out, info ); - if ( ( info.version >= 0x0A010000 ) && ( info.version <= 0x0A010000 ) ) { - NifStream( unknownInt2, out, info ); - }; - NifStream( unknownByte, out, info ); - NifStream( collisionType, out, info ); - if ( (collisionType == 0) ) { - NifStream( unknownInt2, out, info ); - NifStream( unknownVector, out, info ); - }; - if ( (collisionType == 2) ) { - for (unsigned int i2 = 0; i2 < 8; i2++) { - NifStream( unknownFloat1[i2], out, info ); - }; - }; - if ( (collisionType == 1) ) { - for (unsigned int i2 = 0; i2 < 15; i2++) { - NifStream( unknownFloat2[i2], out, info ); - }; - }; -} - -std::string NiCollisionData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiCollisionObject::asString(); - out << " Unknown Int 1: " << unknownInt1 << endl; - out << " Unknown Int 2: " << unknownInt2 << endl; - out << " Unknown Byte: " << unknownByte << endl; - out << " Collision Type: " << collisionType << endl; - if ( (collisionType == 0) ) { - out << " Unknown Vector: " << unknownVector << endl; - }; - if ( (collisionType == 2) ) { - array_output_count = 0; - for (unsigned int i2 = 0; i2 < 8; i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Float 1[" << i2 << "]: " << unknownFloat1[i2] << endl; - array_output_count++; - }; - }; - if ( (collisionType == 1) ) { - array_output_count = 0; - for (unsigned int i2 = 0; i2 < 15; i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Float 2[" << i2 << "]: " << unknownFloat2[i2] << endl; - array_output_count++; - }; - }; - return out.str(); -} - -void NiCollisionData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiCollisionObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiCollisionData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiCollisionObject::GetRefs(); - return refs; -} - -void bhkNiCollisionObject::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiCollisionObject::Read( in, link_stack, info ); -} - -void bhkNiCollisionObject::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiCollisionObject::Write( out, link_map, info ); -} - -std::string bhkNiCollisionObject::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiCollisionObject::asString(); - return out.str(); -} - -void bhkNiCollisionObject::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiCollisionObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkNiCollisionObject::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiCollisionObject::GetRefs(); - return refs; -} - -void bhkCollisionObject::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkNiCollisionObject::Read( in, link_stack, info ); -} - -void bhkCollisionObject::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkNiCollisionObject::Write( out, link_map, info ); -} - -std::string bhkCollisionObject::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkNiCollisionObject::asString(); - return out.str(); -} - -void bhkCollisionObject::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkNiCollisionObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkCollisionObject::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkNiCollisionObject::GetRefs(); - return refs; -} - -void bhkBlendCollisionObject::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkCollisionObject::Read( in, link_stack, info ); - NifStream( unknownFloat1, in, info ); - NifStream( unknownFloat2, in, info ); -} - -void bhkBlendCollisionObject::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkCollisionObject::Write( out, link_map, info ); - NifStream( unknownFloat1, out, info ); - NifStream( unknownFloat2, out, info ); -} - -std::string bhkBlendCollisionObject::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkCollisionObject::asString(); - out << " Unknown Float 1: " << unknownFloat1 << endl; - out << " Unknown Float 2: " << unknownFloat2 << endl; - return out.str(); -} - -void bhkBlendCollisionObject::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkCollisionObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkBlendCollisionObject::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkCollisionObject::GetRefs(); - return refs; -} - -void bhkPCollisionObject::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkNiCollisionObject::Read( in, link_stack, info ); -} - -void bhkPCollisionObject::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkNiCollisionObject::Write( out, link_map, info ); -} - -std::string bhkPCollisionObject::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkNiCollisionObject::asString(); - return out.str(); -} - -void bhkPCollisionObject::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkNiCollisionObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkPCollisionObject::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkNiCollisionObject::GetRefs(); - return refs; -} - -void bhkSPCollisionObject::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkPCollisionObject::Read( in, link_stack, info ); -} - -void bhkSPCollisionObject::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkPCollisionObject::Write( out, link_map, info ); -} - -std::string bhkSPCollisionObject::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkPCollisionObject::asString(); - return out.str(); -} - -void bhkSPCollisionObject::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkPCollisionObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkSPCollisionObject::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkPCollisionObject::GetRefs(); - return refs; -} - -void NiAVObject::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiObjectNET::Read( in, link_stack, info ); - NifStream( flags, in, info ); - NifStream( translation, in, info ); - NifStream( rotation, in, info ); - NifStream( scale, in, info ); - if ( info.version <= 0x04020200 ) { - NifStream( velocity, in, info ); - }; - NifStream( numProperties, in, info ); - properties.resize(numProperties); - for (unsigned int i1 = 0; i1 < properties.size(); i1++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - if ( info.version <= 0x04020200 ) { - NifStream( hasBoundingBox, in, info ); - if ( (hasBoundingBox != 0) ) { - NifStream( boundingBox.unknownInt, in, info ); - NifStream( boundingBox.translation, in, info ); - NifStream( boundingBox.rotation, in, info ); - NifStream( boundingBox.radius, in, info ); - }; - }; - if ( info.version >= 0x0A000100 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiAVObject::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObjectNET::Write( out, link_map, info ); - numProperties = (unsigned int)(properties.size()); - NifStream( flags, out, info ); - NifStream( translation, out, info ); - NifStream( rotation, out, info ); - NifStream( scale, out, info ); - if ( info.version <= 0x04020200 ) { - NifStream( velocity, out, info ); - }; - NifStream( numProperties, out, info ); - for (unsigned int i1 = 0; i1 < properties.size(); i1++) { - if ( properties[i1] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(properties[i1]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - if ( info.version <= 0x04020200 ) { - NifStream( hasBoundingBox, out, info ); - if ( (hasBoundingBox != 0) ) { - NifStream( boundingBox.unknownInt, out, info ); - NifStream( boundingBox.translation, out, info ); - NifStream( boundingBox.rotation, out, info ); - NifStream( boundingBox.radius, out, info ); - }; - }; - if ( info.version >= 0x0A000100 ) { - if ( collisionObject != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(collisionObject) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiAVObject::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObjectNET::asString(); - numProperties = (unsigned int)(properties.size()); - out << " Flags: " << flags << endl; - out << " Translation: " << translation << endl; - out << " Rotation: " << rotation << endl; - out << " Scale: " << scale << endl; - out << " Velocity: " << velocity << endl; - out << " Num Properties: " << numProperties << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < properties.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Properties[" << i1 << "]: " << properties[i1] << endl; - array_output_count++; - }; - out << " Has Bounding Box: " << hasBoundingBox << endl; - if ( (hasBoundingBox != 0) ) { - out << " Unknown Int: " << boundingBox.unknownInt << endl; - out << " Translation: " << boundingBox.translation << endl; - out << " Rotation: " << boundingBox.rotation << endl; - out << " Radius: " << boundingBox.radius << endl; - }; - out << " Collision Object: " << collisionObject << endl; - return out.str(); -} - -void NiAVObject::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObjectNET::FixLinks( objects, link_stack, info ); - for (unsigned int i1 = 0; i1 < properties.size(); i1++) { - properties[i1] = FixLink<NiProperty>( objects, link_stack, info ); - }; - if ( info.version >= 0x0A000100 ) { - collisionObject = FixLink<NiCollisionObject>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiAVObject::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObjectNET::GetRefs(); - for (unsigned int i1 = 0; i1 < properties.size(); i1++) { - if ( properties[i1] != NULL ) - refs.push_back(StaticCast<NiObject>(properties[i1])); - }; - if ( collisionObject != NULL ) - refs.push_back(StaticCast<NiObject>(collisionObject)); - return refs; -} - -void NiDynamicEffect::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiAVObject::Read( in, link_stack, info ); - if ( info.version >= 0x0A020000 ) { - NifStream( switchState, in, info ); - }; - if ( info.version <= 0x04000002 ) { - NifStream( numAffectedNodeListPointers, in, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( numAffectedNodes, in, info ); - }; - if ( info.version <= 0x04000002 ) { - affectedNodeListPointers.resize(numAffectedNodeListPointers); - for (unsigned int i2 = 0; i2 < affectedNodeListPointers.size(); i2++) { - NifStream( affectedNodeListPointers[i2], in, info ); - }; - }; - if ( info.version >= 0x0A010000 ) { - affectedNodes.resize(numAffectedNodes); - for (unsigned int i2 = 0; i2 < affectedNodes.size(); i2++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - }; -} - -void NiDynamicEffect::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiAVObject::Write( out, link_map, info ); - numAffectedNodes = (unsigned int)(affectedNodes.size()); - numAffectedNodeListPointers = (unsigned int)(affectedNodeListPointers.size()); - if ( info.version >= 0x0A020000 ) { - NifStream( switchState, out, info ); - }; - if ( info.version <= 0x04000002 ) { - NifStream( numAffectedNodeListPointers, out, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( numAffectedNodes, out, info ); - }; - if ( info.version <= 0x04000002 ) { - for (unsigned int i2 = 0; i2 < affectedNodeListPointers.size(); i2++) { - NifStream( affectedNodeListPointers[i2], out, info ); - }; - }; - if ( info.version >= 0x0A010000 ) { - for (unsigned int i2 = 0; i2 < affectedNodes.size(); i2++) { - if ( affectedNodes[i2] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(affectedNodes[i2]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - }; -} - -std::string NiDynamicEffect::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiAVObject::asString(); - numAffectedNodes = (unsigned int)(affectedNodes.size()); - numAffectedNodeListPointers = (unsigned int)(affectedNodeListPointers.size()); - out << " Switch State: " << switchState << endl; - out << " Num Affected Node List Pointers: " << numAffectedNodeListPointers << endl; - out << " Num Affected Nodes: " << numAffectedNodes << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < affectedNodeListPointers.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Affected Node List Pointers[" << i1 << "]: " << affectedNodeListPointers[i1] << endl; - array_output_count++; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < affectedNodes.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Affected Nodes[" << i1 << "]: " << affectedNodes[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiDynamicEffect::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiAVObject::FixLinks( objects, link_stack, info ); - if ( info.version >= 0x0A010000 ) { - for (unsigned int i2 = 0; i2 < affectedNodes.size(); i2++) { - affectedNodes[i2] = FixLink<NiAVObject>( objects, link_stack, info ); - }; - }; -} - -std::list<NiObjectRef> NiDynamicEffect::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiAVObject::GetRefs(); - for (unsigned int i1 = 0; i1 < affectedNodes.size(); i1++) { - if ( affectedNodes[i1] != NULL ) - refs.push_back(StaticCast<NiObject>(affectedNodes[i1])); - }; - return refs; -} - -void NiLight::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiDynamicEffect::Read( in, link_stack, info ); - NifStream( dimmer, in, info ); - NifStream( ambientColor, in, info ); - NifStream( diffuseColor, in, info ); - NifStream( specularColor, in, info ); -} - -void NiLight::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiDynamicEffect::Write( out, link_map, info ); - NifStream( dimmer, out, info ); - NifStream( ambientColor, out, info ); - NifStream( diffuseColor, out, info ); - NifStream( specularColor, out, info ); -} - -std::string NiLight::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiDynamicEffect::asString(); - out << " Dimmer: " << dimmer << endl; - out << " Ambient Color: " << ambientColor << endl; - out << " Diffuse Color: " << diffuseColor << endl; - out << " Specular Color: " << specularColor << endl; - return out.str(); -} - -void NiLight::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiDynamicEffect::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiLight::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiDynamicEffect::GetRefs(); - return refs; -} - -void NiProperty::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObjectNET::Read( in, link_stack, info ); -} - -void NiProperty::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObjectNET::Write( out, link_map, info ); -} - -std::string NiProperty::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObjectNET::asString(); - return out.str(); -} - -void NiProperty::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObjectNET::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiProperty::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObjectNET::GetRefs(); - return refs; -} - -void NiPSysModifier::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiObject::Read( in, link_stack, info ); - NifStream( name, in, info ); - NifStream( order, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( active, in, info ); -} - -void NiPSysModifier::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - NifStream( name, out, info ); - NifStream( order, out, info ); - if ( target != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(target) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( active, out, info ); -} - -std::string NiPSysModifier::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - out << " Name: " << name << endl; - out << " Order: " << order << endl; - out << " Target: " << target << endl; - out << " Active: " << active << endl; - return out.str(); -} - -void NiPSysModifier::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); - target = FixLink<NiParticleSystem>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysModifier::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -void NiPSysEmitter::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::Read( in, link_stack, info ); - NifStream( speed, in, info ); - NifStream( speedVariation, in, info ); - NifStream( declination, in, info ); - NifStream( declinationVariation, in, info ); - NifStream( planarAngle, in, info ); - NifStream( planarAngleVariation, in, info ); - NifStream( initialColor, in, info ); - NifStream( initialRadius, in, info ); - if ( info.version >= 0x14000004 ) { - NifStream( radiusVariation, in, info ); - }; - NifStream( lifeSpan, in, info ); - NifStream( lifeSpanVariation, in, info ); -} - -void NiPSysEmitter::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifier::Write( out, link_map, info ); - NifStream( speed, out, info ); - NifStream( speedVariation, out, info ); - NifStream( declination, out, info ); - NifStream( declinationVariation, out, info ); - NifStream( planarAngle, out, info ); - NifStream( planarAngleVariation, out, info ); - NifStream( initialColor, out, info ); - NifStream( initialRadius, out, info ); - if ( info.version >= 0x14000004 ) { - NifStream( radiusVariation, out, info ); - }; - NifStream( lifeSpan, out, info ); - NifStream( lifeSpanVariation, out, info ); -} - -std::string NiPSysEmitter::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifier::asString(); - out << " Speed: " << speed << endl; - out << " Speed Variation: " << speedVariation << endl; - out << " Declination: " << declination << endl; - out << " Declination Variation: " << declinationVariation << endl; - out << " Planar Angle: " << planarAngle << endl; - out << " Planar Angle Variation: " << planarAngleVariation << endl; - out << " Initial Color: " << initialColor << endl; - out << " Initial Radius: " << initialRadius << endl; - out << " Radius Variation: " << radiusVariation << endl; - out << " Life Span: " << lifeSpan << endl; - out << " Life Span Variation: " << lifeSpanVariation << endl; - return out.str(); -} - -void NiPSysEmitter::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysEmitter::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifier::GetRefs(); - return refs; -} - -void NiPSysVolumeEmitter::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiPSysEmitter::Read( in, link_stack, info ); - if ( info.version >= 0x0A010000 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiPSysVolumeEmitter::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysEmitter::Write( out, link_map, info ); - if ( info.version >= 0x0A010000 ) { - if ( emitterObject != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(emitterObject) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiPSysVolumeEmitter::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysEmitter::asString(); - out << " Emitter Object: " << emitterObject << endl; - return out.str(); -} - -void NiPSysVolumeEmitter::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysEmitter::FixLinks( objects, link_stack, info ); - if ( info.version >= 0x0A010000 ) { - emitterObject = FixLink<NiNode>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiPSysVolumeEmitter::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysEmitter::GetRefs(); - return refs; -} - -void NiTimeController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiObject::Read( in, link_stack, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( flags, in, info ); - NifStream( frequency, in, info ); - NifStream( phase, in, info ); - NifStream( startTime, in, info ); - NifStream( stopTime, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiTimeController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - if ( nextController != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(nextController) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( flags, out, info ); - NifStream( frequency, out, info ); - NifStream( phase, out, info ); - NifStream( startTime, out, info ); - NifStream( stopTime, out, info ); - if ( target != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(target) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiTimeController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - out << " Next Controller: " << nextController << endl; - out << " Flags: " << flags << endl; - out << " Frequency: " << frequency << endl; - out << " Phase: " << phase << endl; - out << " Start Time: " << startTime << endl; - out << " Stop Time: " << stopTime << endl; - out << " Target: " << target << endl; - return out.str(); -} - -void NiTimeController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); - nextController = FixLink<NiTimeController>( objects, link_stack, info ); - target = FixLink<NiObjectNET>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiTimeController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - if ( nextController != NULL ) - refs.push_back(StaticCast<NiObject>(nextController)); - return refs; -} - -void NiInterpController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTimeController::Read( in, link_stack, info ); -} - -void NiInterpController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiTimeController::Write( out, link_map, info ); -} - -std::string NiInterpController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiTimeController::asString(); - return out.str(); -} - -void NiInterpController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTimeController::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiInterpController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiTimeController::GetRefs(); - return refs; -} - -void NiMultiTargetTransformController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiInterpController::Read( in, link_stack, info ); - NifStream( numExtraTargets, in, info ); - extraTargets.resize(numExtraTargets); - for (unsigned int i1 = 0; i1 < extraTargets.size(); i1++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiMultiTargetTransformController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiInterpController::Write( out, link_map, info ); - numExtraTargets = (unsigned short)(extraTargets.size()); - NifStream( numExtraTargets, out, info ); - for (unsigned int i1 = 0; i1 < extraTargets.size(); i1++) { - if ( extraTargets[i1] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(extraTargets[i1]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiMultiTargetTransformController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiInterpController::asString(); - numExtraTargets = (unsigned short)(extraTargets.size()); - out << " Num Extra Targets: " << numExtraTargets << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < extraTargets.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Extra Targets[" << i1 << "]: " << extraTargets[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiMultiTargetTransformController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiInterpController::FixLinks( objects, link_stack, info ); - for (unsigned int i1 = 0; i1 < extraTargets.size(); i1++) { - extraTargets[i1] = FixLink<NiNode>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiMultiTargetTransformController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiInterpController::GetRefs(); - for (unsigned int i1 = 0; i1 < extraTargets.size(); i1++) { - }; - return refs; -} - -void NiGeomMorpherController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiInterpController::Read( in, link_stack, info ); - if ( info.version >= 0x0A010000 ) { - NifStream( unknown, in, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - NifStream( unknown2, in, info ); - }; - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( unknownByte, in, info ); - if ( info.version >= 0x0A01006A ) { - NifStream( numInterpolators, in, info ); - interpolators.resize(numInterpolators); - for (unsigned int i2 = 0; i2 < interpolators.size(); i2++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - }; - if ( info.version >= 0x0A020000 ) { - NifStream( numUnknownInts, in, info ); - unknownInts.resize(numUnknownInts); - for (unsigned int i2 = 0; i2 < unknownInts.size(); i2++) { - NifStream( unknownInts[i2], in, info ); - }; - }; -} - -void NiGeomMorpherController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiInterpController::Write( out, link_map, info ); - numUnknownInts = (unsigned int)(unknownInts.size()); - numInterpolators = (unsigned int)(interpolators.size()); - if ( info.version >= 0x0A010000 ) { - NifStream( unknown, out, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - NifStream( unknown2, out, info ); - }; - if ( data != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( unknownByte, out, info ); - if ( info.version >= 0x0A01006A ) { - NifStream( numInterpolators, out, info ); - for (unsigned int i2 = 0; i2 < interpolators.size(); i2++) { - if ( interpolators[i2] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(interpolators[i2]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - }; - if ( info.version >= 0x0A020000 ) { - NifStream( numUnknownInts, out, info ); - for (unsigned int i2 = 0; i2 < unknownInts.size(); i2++) { - NifStream( unknownInts[i2], out, info ); - }; - }; -} - -std::string NiGeomMorpherController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiInterpController::asString(); - numUnknownInts = (unsigned int)(unknownInts.size()); - numInterpolators = (unsigned int)(interpolators.size()); - out << " Unknown: " << unknown << endl; - out << " Unknown 2: " << unknown2 << endl; - out << " Data: " << data << endl; - out << " Unknown Byte: " << unknownByte << endl; - out << " Num Interpolators: " << numInterpolators << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < interpolators.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Interpolators[" << i1 << "]: " << interpolators[i1] << endl; - array_output_count++; - }; - out << " Num Unknown Ints: " << numUnknownInts << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < unknownInts.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Ints[" << i1 << "]: " << unknownInts[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiGeomMorpherController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiInterpController::FixLinks( objects, link_stack, info ); - data = FixLink<NiMorphData>( objects, link_stack, info ); - if ( info.version >= 0x0A01006A ) { - for (unsigned int i2 = 0; i2 < interpolators.size(); i2++) { - interpolators[i2] = FixLink<NiInterpolator>( objects, link_stack, info ); - }; - }; -} - -std::list<NiObjectRef> NiGeomMorpherController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiInterpController::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - for (unsigned int i1 = 0; i1 < interpolators.size(); i1++) { - if ( interpolators[i1] != NULL ) - refs.push_back(StaticCast<NiObject>(interpolators[i1])); - }; - return refs; -} - -void NiSingleInterpController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiInterpController::Read( in, link_stack, info ); - if ( info.version >= 0x0A020000 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiSingleInterpController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiInterpController::Write( out, link_map, info ); - if ( info.version >= 0x0A020000 ) { - if ( interpolator != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(interpolator) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiSingleInterpController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiInterpController::asString(); - out << " Interpolator: " << interpolator << endl; - return out.str(); -} - -void NiSingleInterpController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiInterpController::FixLinks( objects, link_stack, info ); - if ( info.version >= 0x0A020000 ) { - interpolator = FixLink<NiInterpolator>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiSingleInterpController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiInterpController::GetRefs(); - if ( interpolator != NULL ) - refs.push_back(StaticCast<NiObject>(interpolator)); - return refs; -} - -void NiTransformController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiSingleInterpController::Read( in, link_stack, info ); -} - -void NiTransformController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiSingleInterpController::Write( out, link_map, info ); -} - -std::string NiTransformController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiSingleInterpController::asString(); - return out.str(); -} - -void NiTransformController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiSingleInterpController::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiTransformController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiSingleInterpController::GetRefs(); - return refs; -} - -void NiPSysModifierCtlr::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiSingleInterpController::Read( in, link_stack, info ); - NifStream( modifierName, in, info ); -} - -void NiPSysModifierCtlr::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiSingleInterpController::Write( out, link_map, info ); - NifStream( modifierName, out, info ); -} - -std::string NiPSysModifierCtlr::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiSingleInterpController::asString(); - out << " Modifier Name: " << modifierName << endl; - return out.str(); -} - -void NiPSysModifierCtlr::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiSingleInterpController::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysModifierCtlr::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiSingleInterpController::GetRefs(); - return refs; -} - -void NiPSysEmitterCtlr::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiPSysModifierCtlr::Read( in, link_stack, info ); - if ( info.version <= 0x0A010000 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - if ( info.version >= 0x0A020000 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiPSysEmitterCtlr::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifierCtlr::Write( out, link_map, info ); - if ( info.version <= 0x0A010000 ) { - if ( data != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - if ( info.version >= 0x0A020000 ) { - if ( visibilityInterpolator != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(visibilityInterpolator) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiPSysEmitterCtlr::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifierCtlr::asString(); - out << " Data: " << data << endl; - out << " Visibility Interpolator: " << visibilityInterpolator << endl; - return out.str(); -} - -void NiPSysEmitterCtlr::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifierCtlr::FixLinks( objects, link_stack, info ); - if ( info.version <= 0x0A010000 ) { - data = FixLink<NiPSysEmitterCtlrData>( objects, link_stack, info ); - }; - if ( info.version >= 0x0A020000 ) { - visibilityInterpolator = FixLink<NiInterpolator>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiPSysEmitterCtlr::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifierCtlr::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - if ( visibilityInterpolator != NULL ) - refs.push_back(StaticCast<NiObject>(visibilityInterpolator)); - return refs; -} - -void NiPSysModifierBoolCtlr::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifierCtlr::Read( in, link_stack, info ); -} - -void NiPSysModifierBoolCtlr::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifierCtlr::Write( out, link_map, info ); -} - -std::string NiPSysModifierBoolCtlr::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifierCtlr::asString(); - return out.str(); -} - -void NiPSysModifierBoolCtlr::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifierCtlr::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysModifierBoolCtlr::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifierCtlr::GetRefs(); - return refs; -} - -void NiPSysModifierActiveCtlr::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiPSysModifierBoolCtlr::Read( in, link_stack, info ); - if ( info.version <= 0x0A010000 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiPSysModifierActiveCtlr::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifierBoolCtlr::Write( out, link_map, info ); - if ( info.version <= 0x0A010000 ) { - if ( data != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiPSysModifierActiveCtlr::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifierBoolCtlr::asString(); - out << " Data: " << data << endl; - return out.str(); -} - -void NiPSysModifierActiveCtlr::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifierBoolCtlr::FixLinks( objects, link_stack, info ); - if ( info.version <= 0x0A010000 ) { - data = FixLink<NiVisData>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiPSysModifierActiveCtlr::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifierBoolCtlr::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - return refs; -} - -void NiPSysModifierFloatCtlr::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiPSysModifierCtlr::Read( in, link_stack, info ); - if ( info.version <= 0x0A010000 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiPSysModifierFloatCtlr::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifierCtlr::Write( out, link_map, info ); - if ( info.version <= 0x0A010000 ) { - if ( data != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiPSysModifierFloatCtlr::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifierCtlr::asString(); - out << " Data: " << data << endl; - return out.str(); -} - -void NiPSysModifierFloatCtlr::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifierCtlr::FixLinks( objects, link_stack, info ); - if ( info.version <= 0x0A010000 ) { - data = FixLink<NiFloatData>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiPSysModifierFloatCtlr::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifierCtlr::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - return refs; -} - -void NiPSysEmitterDeclinationCtlr::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifierFloatCtlr::Read( in, link_stack, info ); -} - -void NiPSysEmitterDeclinationCtlr::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifierFloatCtlr::Write( out, link_map, info ); -} - -std::string NiPSysEmitterDeclinationCtlr::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifierFloatCtlr::asString(); - return out.str(); -} - -void NiPSysEmitterDeclinationCtlr::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifierFloatCtlr::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysEmitterDeclinationCtlr::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifierFloatCtlr::GetRefs(); - return refs; -} - -void NiPSysEmitterDeclinationVarCtlr::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifierFloatCtlr::Read( in, link_stack, info ); -} - -void NiPSysEmitterDeclinationVarCtlr::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifierFloatCtlr::Write( out, link_map, info ); -} - -std::string NiPSysEmitterDeclinationVarCtlr::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifierFloatCtlr::asString(); - return out.str(); -} - -void NiPSysEmitterDeclinationVarCtlr::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifierFloatCtlr::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysEmitterDeclinationVarCtlr::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifierFloatCtlr::GetRefs(); - return refs; -} - -void NiPSysEmitterInitialRadiusCtlr::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifierFloatCtlr::Read( in, link_stack, info ); -} - -void NiPSysEmitterInitialRadiusCtlr::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifierFloatCtlr::Write( out, link_map, info ); -} - -std::string NiPSysEmitterInitialRadiusCtlr::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifierFloatCtlr::asString(); - return out.str(); -} - -void NiPSysEmitterInitialRadiusCtlr::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifierFloatCtlr::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysEmitterInitialRadiusCtlr::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifierFloatCtlr::GetRefs(); - return refs; -} - -void NiPSysEmitterLifeSpanCtlr::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifierFloatCtlr::Read( in, link_stack, info ); -} - -void NiPSysEmitterLifeSpanCtlr::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifierFloatCtlr::Write( out, link_map, info ); -} - -std::string NiPSysEmitterLifeSpanCtlr::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifierFloatCtlr::asString(); - return out.str(); -} - -void NiPSysEmitterLifeSpanCtlr::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifierFloatCtlr::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysEmitterLifeSpanCtlr::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifierFloatCtlr::GetRefs(); - return refs; -} - -void NiPSysEmitterSpeedCtlr::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifierFloatCtlr::Read( in, link_stack, info ); -} - -void NiPSysEmitterSpeedCtlr::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifierFloatCtlr::Write( out, link_map, info ); -} - -std::string NiPSysEmitterSpeedCtlr::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifierFloatCtlr::asString(); - return out.str(); -} - -void NiPSysEmitterSpeedCtlr::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifierFloatCtlr::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysEmitterSpeedCtlr::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifierFloatCtlr::GetRefs(); - return refs; -} - -void NiPSysGravityStrengthCtlr::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifierFloatCtlr::Read( in, link_stack, info ); -} - -void NiPSysGravityStrengthCtlr::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifierFloatCtlr::Write( out, link_map, info ); -} - -std::string NiPSysGravityStrengthCtlr::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifierFloatCtlr::asString(); - return out.str(); -} - -void NiPSysGravityStrengthCtlr::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifierFloatCtlr::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysGravityStrengthCtlr::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifierFloatCtlr::GetRefs(); - return refs; -} - -void NiFloatInterpController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiSingleInterpController::Read( in, link_stack, info ); -} - -void NiFloatInterpController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiSingleInterpController::Write( out, link_map, info ); -} - -std::string NiFloatInterpController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiSingleInterpController::asString(); - return out.str(); -} - -void NiFloatInterpController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiSingleInterpController::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiFloatInterpController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiSingleInterpController::GetRefs(); - return refs; -} - -void NiFlipController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiFloatInterpController::Read( in, link_stack, info ); - NifStream( textureSlot, in, info ); - if ( ( info.version >= 0x04000000 ) && ( info.version <= 0x0A010000 ) ) { - NifStream( unknownInt2, in, info ); - }; - if ( info.version <= 0x0A010000 ) { - NifStream( delta, in, info ); - }; - NifStream( numSources, in, info ); - if ( info.version >= 0x04000000 ) { - sources.resize(numSources); - for (unsigned int i2 = 0; i2 < sources.size(); i2++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - }; - if ( info.version <= 0x03010000 ) { - image.resize(numSources); - for (unsigned int i2 = 0; i2 < image.size(); i2++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - }; -} - -void NiFlipController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiFloatInterpController::Write( out, link_map, info ); - numSources = (unsigned int)(sources.size()); - NifStream( textureSlot, out, info ); - if ( ( info.version >= 0x04000000 ) && ( info.version <= 0x0A010000 ) ) { - NifStream( unknownInt2, out, info ); - }; - if ( info.version <= 0x0A010000 ) { - NifStream( delta, out, info ); - }; - NifStream( numSources, out, info ); - if ( info.version >= 0x04000000 ) { - for (unsigned int i2 = 0; i2 < sources.size(); i2++) { - if ( sources[i2] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(sources[i2]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - }; - if ( info.version <= 0x03010000 ) { - for (unsigned int i2 = 0; i2 < image.size(); i2++) { - if ( image[i2] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(image[i2]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - }; -} - -std::string NiFlipController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiFloatInterpController::asString(); - numSources = (unsigned int)(sources.size()); - out << " Texture Slot: " << textureSlot << endl; - out << " Unknown Int 2: " << unknownInt2 << endl; - out << " Delta: " << delta << endl; - out << " Num Sources: " << numSources << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < sources.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Sources[" << i1 << "]: " << sources[i1] << endl; - array_output_count++; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < image.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Image[" << i1 << "]: " << image[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiFlipController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiFloatInterpController::FixLinks( objects, link_stack, info ); - if ( info.version >= 0x04000000 ) { - for (unsigned int i2 = 0; i2 < sources.size(); i2++) { - sources[i2] = FixLink<NiSourceTexture>( objects, link_stack, info ); - }; - }; - if ( info.version <= 0x03010000 ) { - for (unsigned int i2 = 0; i2 < image.size(); i2++) { - image[i2] = FixLink<NiImage>( objects, link_stack, info ); - }; - }; -} - -std::list<NiObjectRef> NiFlipController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiFloatInterpController::GetRefs(); - for (unsigned int i1 = 0; i1 < sources.size(); i1++) { - if ( sources[i1] != NULL ) - refs.push_back(StaticCast<NiObject>(sources[i1])); - }; - for (unsigned int i1 = 0; i1 < image.size(); i1++) { - if ( image[i1] != NULL ) - refs.push_back(StaticCast<NiObject>(image[i1])); - }; - return refs; -} - -void NiAlphaController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiFloatInterpController::Read( in, link_stack, info ); - if ( info.version <= 0x0A010000 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiAlphaController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiFloatInterpController::Write( out, link_map, info ); - if ( info.version <= 0x0A010000 ) { - if ( data != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiAlphaController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiFloatInterpController::asString(); - out << " Data: " << data << endl; - return out.str(); -} - -void NiAlphaController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiFloatInterpController::FixLinks( objects, link_stack, info ); - if ( info.version <= 0x0A010000 ) { - data = FixLink<NiFloatData>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiAlphaController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiFloatInterpController::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - return refs; -} - -void NiTextureTransformController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiFloatInterpController::Read( in, link_stack, info ); - NifStream( unknown2, in, info ); - NifStream( textureSlot, in, info ); - NifStream( operation, in, info ); - if ( info.version <= 0x0A010000 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiTextureTransformController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiFloatInterpController::Write( out, link_map, info ); - NifStream( unknown2, out, info ); - NifStream( textureSlot, out, info ); - NifStream( operation, out, info ); - if ( info.version <= 0x0A010000 ) { - if ( data != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiTextureTransformController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiFloatInterpController::asString(); - out << " Unknown2: " << unknown2 << endl; - out << " Texture Slot: " << textureSlot << endl; - out << " Operation: " << operation << endl; - out << " Data: " << data << endl; - return out.str(); -} - -void NiTextureTransformController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiFloatInterpController::FixLinks( objects, link_stack, info ); - if ( info.version <= 0x0A010000 ) { - data = FixLink<NiFloatData>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiTextureTransformController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiFloatInterpController::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - return refs; -} - -void NiLightDimmerController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiFloatInterpController::Read( in, link_stack, info ); -} - -void NiLightDimmerController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiFloatInterpController::Write( out, link_map, info ); -} - -std::string NiLightDimmerController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiFloatInterpController::asString(); - return out.str(); -} - -void NiLightDimmerController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiFloatInterpController::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiLightDimmerController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiFloatInterpController::GetRefs(); - return refs; -} - -void NiBoolInterpController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiSingleInterpController::Read( in, link_stack, info ); -} - -void NiBoolInterpController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiSingleInterpController::Write( out, link_map, info ); -} - -std::string NiBoolInterpController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiSingleInterpController::asString(); - return out.str(); -} - -void NiBoolInterpController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiSingleInterpController::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBoolInterpController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiSingleInterpController::GetRefs(); - return refs; -} - -void NiVisController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiBoolInterpController::Read( in, link_stack, info ); - if ( info.version <= 0x0A010000 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiVisController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiBoolInterpController::Write( out, link_map, info ); - if ( info.version <= 0x0A010000 ) { - if ( data != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiVisController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiBoolInterpController::asString(); - out << " Data: " << data << endl; - return out.str(); -} - -void NiVisController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBoolInterpController::FixLinks( objects, link_stack, info ); - if ( info.version <= 0x0A010000 ) { - data = FixLink<NiVisData>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiVisController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiBoolInterpController::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - return refs; -} - -void NiPoint3InterpController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiSingleInterpController::Read( in, link_stack, info ); - if ( info.version >= 0x0A010000 ) { - NifStream( targetColor, in, info ); - }; - if ( info.version <= 0x0A010000 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiPoint3InterpController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiSingleInterpController::Write( out, link_map, info ); - if ( info.version >= 0x0A010000 ) { - NifStream( targetColor, out, info ); - }; - if ( info.version <= 0x0A010000 ) { - if ( data != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiPoint3InterpController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiSingleInterpController::asString(); - out << " Target Color: " << targetColor << endl; - out << " Data: " << data << endl; - return out.str(); -} - -void NiPoint3InterpController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiSingleInterpController::FixLinks( objects, link_stack, info ); - if ( info.version <= 0x0A010000 ) { - data = FixLink<NiPosData>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiPoint3InterpController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiSingleInterpController::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - return refs; -} - -void NiMaterialColorController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPoint3InterpController::Read( in, link_stack, info ); -} - -void NiMaterialColorController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPoint3InterpController::Write( out, link_map, info ); -} - -std::string NiMaterialColorController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPoint3InterpController::asString(); - return out.str(); -} - -void NiMaterialColorController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPoint3InterpController::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiMaterialColorController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPoint3InterpController::GetRefs(); - return refs; -} - -void NiLightColorController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPoint3InterpController::Read( in, link_stack, info ); -} - -void NiLightColorController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPoint3InterpController::Write( out, link_map, info ); -} - -std::string NiLightColorController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPoint3InterpController::asString(); - return out.str(); -} - -void NiLightColorController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPoint3InterpController::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiLightColorController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPoint3InterpController::GetRefs(); - return refs; -} - -void NiExtraDataController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiSingleInterpController::Read( in, link_stack, info ); -} - -void NiExtraDataController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiSingleInterpController::Write( out, link_map, info ); -} - -std::string NiExtraDataController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiSingleInterpController::asString(); - return out.str(); -} - -void NiExtraDataController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiSingleInterpController::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiExtraDataController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiSingleInterpController::GetRefs(); - return refs; -} - -void NiFloatExtraDataController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraDataController::Read( in, link_stack, info ); - NifStream( controllerData, in, info ); -} - -void NiFloatExtraDataController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiExtraDataController::Write( out, link_map, info ); - NifStream( controllerData, out, info ); -} - -std::string NiFloatExtraDataController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiExtraDataController::asString(); - out << " Controller Data: " << controllerData << endl; - return out.str(); -} - -void NiFloatExtraDataController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraDataController::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiFloatExtraDataController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiExtraDataController::GetRefs(); - return refs; -} - -void NiBoneLODController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiTimeController::Read( in, link_stack, info ); - NifStream( unknownInt1, in, info ); - NifStream( numNodeGroups, in, info ); - NifStream( numNodeGroups2, in, info ); - nodeGroups.resize(numNodeGroups); - for (unsigned int i1 = 0; i1 < nodeGroups.size(); i1++) { - NifStream( nodeGroups[i1].numNodes, in, info ); - nodeGroups[i1].nodes.resize(nodeGroups[i1].numNodes); - for (unsigned int i2 = 0; i2 < nodeGroups[i1].nodes.size(); i2++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - }; - if ( info.version <= 0x0A000100 ) { - NifStream( numShapeGroups, in, info ); - shapeGroups1.resize(numShapeGroups); - for (unsigned int i2 = 0; i2 < shapeGroups1.size(); i2++) { - NifStream( shapeGroups1[i2].numLinkPairs, in, info ); - shapeGroups1[i2].linkPairs.resize(shapeGroups1[i2].numLinkPairs); - for (unsigned int i3 = 0; i3 < shapeGroups1[i2].linkPairs.size(); i3++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - }; - NifStream( numShapeGroups2, in, info ); - shapeGroups2.resize(numShapeGroups2); - for (unsigned int i2 = 0; i2 < shapeGroups2.size(); i2++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - }; -} - -void NiBoneLODController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiTimeController::Write( out, link_map, info ); - numShapeGroups2 = (unsigned int)(shapeGroups2.size()); - numShapeGroups = (unsigned int)(shapeGroups1.size()); - numNodeGroups = (unsigned int)(nodeGroups.size()); - NifStream( unknownInt1, out, info ); - NifStream( numNodeGroups, out, info ); - NifStream( numNodeGroups2, out, info ); - for (unsigned int i1 = 0; i1 < nodeGroups.size(); i1++) { - nodeGroups[i1].numNodes = (unsigned int)(nodeGroups[i1].nodes.size()); - NifStream( nodeGroups[i1].numNodes, out, info ); - for (unsigned int i2 = 0; i2 < nodeGroups[i1].nodes.size(); i2++) { - if ( nodeGroups[i1].nodes[i2] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(nodeGroups[i1].nodes[i2]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - }; - if ( info.version <= 0x0A000100 ) { - NifStream( numShapeGroups, out, info ); - for (unsigned int i2 = 0; i2 < shapeGroups1.size(); i2++) { - shapeGroups1[i2].numLinkPairs = (unsigned int)(shapeGroups1[i2].linkPairs.size()); - NifStream( shapeGroups1[i2].numLinkPairs, out, info ); - for (unsigned int i3 = 0; i3 < shapeGroups1[i2].linkPairs.size(); i3++) { - if ( shapeGroups1[i2].linkPairs[i3].shape != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(shapeGroups1[i2].linkPairs[i3].shape) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - if ( shapeGroups1[i2].linkPairs[i3].skinInstance != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(shapeGroups1[i2].linkPairs[i3].skinInstance) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - }; - NifStream( numShapeGroups2, out, info ); - for (unsigned int i2 = 0; i2 < shapeGroups2.size(); i2++) { - if ( shapeGroups2[i2] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(shapeGroups2[i2]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - }; -} - -std::string NiBoneLODController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiTimeController::asString(); - numShapeGroups2 = (unsigned int)(shapeGroups2.size()); - numShapeGroups = (unsigned int)(shapeGroups1.size()); - numNodeGroups = (unsigned int)(nodeGroups.size()); - out << " Unknown Int 1: " << unknownInt1 << endl; - out << " Num Node Groups: " << numNodeGroups << endl; - out << " Num Node Groups 2: " << numNodeGroups2 << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < nodeGroups.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - nodeGroups[i1].numNodes = (unsigned int)(nodeGroups[i1].nodes.size()); - out << " Num Nodes: " << nodeGroups[i1].numNodes << endl; - array_output_count = 0; - for (unsigned int i2 = 0; i2 < nodeGroups[i1].nodes.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Nodes[" << i2 << "]: " << nodeGroups[i1].nodes[i2] << endl; - array_output_count++; - }; - }; - out << " Num Shape Groups: " << numShapeGroups << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < shapeGroups1.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - shapeGroups1[i1].numLinkPairs = (unsigned int)(shapeGroups1[i1].linkPairs.size()); - out << " Num Link Pairs: " << shapeGroups1[i1].numLinkPairs << endl; - array_output_count = 0; - for (unsigned int i2 = 0; i2 < shapeGroups1[i1].linkPairs.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - out << " Shape: " << shapeGroups1[i1].linkPairs[i2].shape << endl; - out << " Skin Instance: " << shapeGroups1[i1].linkPairs[i2].skinInstance << endl; - }; - }; - out << " Num Shape Groups 2: " << numShapeGroups2 << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < shapeGroups2.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Shape Groups 2[" << i1 << "]: " << shapeGroups2[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiBoneLODController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTimeController::FixLinks( objects, link_stack, info ); - for (unsigned int i1 = 0; i1 < nodeGroups.size(); i1++) { - for (unsigned int i2 = 0; i2 < nodeGroups[i1].nodes.size(); i2++) { - nodeGroups[i1].nodes[i2] = FixLink<NiNode>( objects, link_stack, info ); - }; - }; - if ( info.version <= 0x0A000100 ) { - for (unsigned int i2 = 0; i2 < shapeGroups1.size(); i2++) { - for (unsigned int i3 = 0; i3 < shapeGroups1[i2].linkPairs.size(); i3++) { - shapeGroups1[i2].linkPairs[i3].shape = FixLink<NiTriShape>( objects, link_stack, info ); - shapeGroups1[i2].linkPairs[i3].skinInstance = FixLink<NiSkinInstance>( objects, link_stack, info ); - }; - }; - for (unsigned int i2 = 0; i2 < shapeGroups2.size(); i2++) { - shapeGroups2[i2] = FixLink<NiTriShape>( objects, link_stack, info ); - }; - }; -} - -std::list<NiObjectRef> NiBoneLODController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiTimeController::GetRefs(); - for (unsigned int i1 = 0; i1 < nodeGroups.size(); i1++) { - for (unsigned int i2 = 0; i2 < nodeGroups[i1].nodes.size(); i2++) { - }; - }; - for (unsigned int i1 = 0; i1 < shapeGroups1.size(); i1++) { - for (unsigned int i2 = 0; i2 < shapeGroups1[i1].linkPairs.size(); i2++) { - if ( shapeGroups1[i1].linkPairs[i2].shape != NULL ) - refs.push_back(StaticCast<NiObject>(shapeGroups1[i1].linkPairs[i2].shape)); - if ( shapeGroups1[i1].linkPairs[i2].skinInstance != NULL ) - refs.push_back(StaticCast<NiObject>(shapeGroups1[i1].linkPairs[i2].skinInstance)); - }; - }; - for (unsigned int i1 = 0; i1 < shapeGroups2.size(); i1++) { - if ( shapeGroups2[i1] != NULL ) - refs.push_back(StaticCast<NiObject>(shapeGroups2[i1])); - }; - return refs; -} - -void NiBSBoneLODController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBoneLODController::Read( in, link_stack, info ); -} - -void NiBSBoneLODController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiBoneLODController::Write( out, link_map, info ); -} - -std::string NiBSBoneLODController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiBoneLODController::asString(); - return out.str(); -} - -void NiBSBoneLODController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBoneLODController::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBSBoneLODController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiBoneLODController::GetRefs(); - return refs; -} - -void NiGeometry::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiAVObject::Read( in, link_stack, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - if ( info.version >= 0x0303000D ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - if ( info.version >= 0x0A000100 ) { - NifStream( hasShader, in, info ); - if ( (hasShader != 0) ) { - NifStream( shaderName, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - }; -} - -void NiGeometry::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiAVObject::Write( out, link_map, info ); - if ( data != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - if ( info.version >= 0x0303000D ) { - if ( skinInstance != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(skinInstance) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - if ( info.version >= 0x0A000100 ) { - NifStream( hasShader, out, info ); - if ( (hasShader != 0) ) { - NifStream( shaderName, out, info ); - if ( unknownLink != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(unknownLink) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - }; -} - -std::string NiGeometry::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiAVObject::asString(); - out << " Data: " << data << endl; - out << " Skin Instance: " << skinInstance << endl; - out << " Has Shader: " << hasShader << endl; - if ( (hasShader != 0) ) { - out << " Shader Name: " << shaderName << endl; - out << " Unknown Link: " << unknownLink << endl; - }; - return out.str(); -} - -void NiGeometry::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiAVObject::FixLinks( objects, link_stack, info ); - data = FixLink<NiGeometryData>( objects, link_stack, info ); - if ( info.version >= 0x0303000D ) { - skinInstance = FixLink<NiSkinInstance>( objects, link_stack, info ); - }; - if ( info.version >= 0x0A000100 ) { - if ( (hasShader != 0) ) { - unknownLink = FixLink<NiObject>( objects, link_stack, info ); - }; - }; -} - -std::list<NiObjectRef> NiGeometry::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiAVObject::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - if ( skinInstance != NULL ) - refs.push_back(StaticCast<NiObject>(skinInstance)); - if ( unknownLink != NULL ) - refs.push_back(StaticCast<NiObject>(unknownLink)); - return refs; -} - -void NiTriBasedGeom::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiGeometry::Read( in, link_stack, info ); -} - -void NiTriBasedGeom::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiGeometry::Write( out, link_map, info ); -} - -std::string NiTriBasedGeom::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiGeometry::asString(); - return out.str(); -} - -void NiTriBasedGeom::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiGeometry::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiTriBasedGeom::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiGeometry::GetRefs(); - return refs; -} - -void NiGeometryData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiObject::Read( in, link_stack, info ); - if ( info.version >= 0x0A020000 ) { - NifStream( name, in, info ); - }; - NifStream( numVertices, in, info ); - if ( info.version >= 0x0A010000 ) { - NifStream( unknownShort1, in, info ); - }; - NifStream( hasVertices, in, info ); - if ( (hasVertices != 0) ) { - vertices.resize(numVertices); - for (unsigned int i2 = 0; i2 < vertices.size(); i2++) { - NifStream( vertices[i2], in, info ); - }; - }; - if ( info.version >= 0x0A000100 ) { - NifStream( numUvSets2, in, info ); - NifStream( unknownByte1, in, info ); - }; - NifStream( hasNormals, in, info ); - if ( (hasNormals != 0) ) { - normals.resize(numVertices); - for (unsigned int i2 = 0; i2 < normals.size(); i2++) { - NifStream( normals[i2], in, info ); - }; - }; - if ( info.version >= 0x0A010000 ) { - if ( (((hasNormals != 0)) && ((unknownByte1 & 16))) ) { - unknownVectors1.resize(numVertices); - for (unsigned int i3 = 0; i3 < unknownVectors1.size(); i3++) { - NifStream( unknownVectors1[i3], in, info ); - }; - unknownVectors2.resize(numVertices); - for (unsigned int i3 = 0; i3 < unknownVectors2.size(); i3++) { - NifStream( unknownVectors2[i3], in, info ); - }; - }; - }; - NifStream( center, in, info ); - NifStream( radius, in, info ); - NifStream( hasVertexColors, in, info ); - if ( (hasVertexColors != 0) ) { - vertexColors.resize(numVertices); - for (unsigned int i2 = 0; i2 < vertexColors.size(); i2++) { - NifStream( vertexColors[i2], in, info ); - }; - }; - if ( info.version <= 0x04020200 ) { - NifStream( numUvSets, in, info ); - }; - if ( info.version <= 0x04000002 ) { - NifStream( hasUv, in, info ); - }; - if ( info.version <= 0x04020200 ) { - uvSets.resize(numUvSets); - for (unsigned int i2 = 0; i2 < uvSets.size(); i2++) { - uvSets[i2].resize(numVertices); - for (unsigned int i3 = 0; i3 < uvSets[i2].size(); i3++) { - NifStream( uvSets[i2][i3], in, info ); - }; - }; - }; - if ( info.version >= 0x0A000100 ) { - uvSets.resize((numUvSets2 & 63)); - for (unsigned int i2 = 0; i2 < uvSets.size(); i2++) { - uvSets[i2].resize(numVertices); - for (unsigned int i3 = 0; i3 < uvSets[i2].size(); i3++) { - NifStream( uvSets[i2][i3], in, info ); - }; - }; - NifStream( unknownShort2, in, info ); - }; - if ( info.version >= 0x14000004 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiGeometryData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - numUvSets = (unsigned short)(uvSets.size()); - numUvSets2 = (byte)(uvSets.size()); - numVertices = (unsigned short)(vertices.size()); - if ( info.version >= 0x0A020000 ) { - NifStream( name, out, info ); - }; - NifStream( numVertices, out, info ); - if ( info.version >= 0x0A010000 ) { - NifStream( unknownShort1, out, info ); - }; - NifStream( hasVertices, out, info ); - if ( (hasVertices != 0) ) { - for (unsigned int i2 = 0; i2 < vertices.size(); i2++) { - NifStream( vertices[i2], out, info ); - }; - }; - if ( info.version >= 0x0A000100 ) { - NifStream( numUvSets2, out, info ); - NifStream( unknownByte1, out, info ); - }; - NifStream( hasNormals, out, info ); - if ( (hasNormals != 0) ) { - for (unsigned int i2 = 0; i2 < normals.size(); i2++) { - NifStream( normals[i2], out, info ); - }; - }; - if ( info.version >= 0x0A010000 ) { - if ( (((hasNormals != 0)) && ((unknownByte1 & 16))) ) { - for (unsigned int i3 = 0; i3 < unknownVectors1.size(); i3++) { - NifStream( unknownVectors1[i3], out, info ); - }; - for (unsigned int i3 = 0; i3 < unknownVectors2.size(); i3++) { - NifStream( unknownVectors2[i3], out, info ); - }; - }; - }; - NifStream( center, out, info ); - NifStream( radius, out, info ); - NifStream( hasVertexColors, out, info ); - if ( (hasVertexColors != 0) ) { - for (unsigned int i2 = 0; i2 < vertexColors.size(); i2++) { - NifStream( vertexColors[i2], out, info ); - }; - }; - if ( info.version <= 0x04020200 ) { - NifStream( numUvSets, out, info ); - }; - if ( info.version <= 0x04000002 ) { - NifStream( hasUv, out, info ); - }; - if ( info.version <= 0x04020200 ) { - for (unsigned int i2 = 0; i2 < uvSets.size(); i2++) { - for (unsigned int i3 = 0; i3 < uvSets[i2].size(); i3++) { - NifStream( uvSets[i2][i3], out, info ); - }; - }; - }; - if ( info.version >= 0x0A000100 ) { - for (unsigned int i2 = 0; i2 < uvSets.size(); i2++) { - for (unsigned int i3 = 0; i3 < uvSets[i2].size(); i3++) { - NifStream( uvSets[i2][i3], out, info ); - }; - }; - NifStream( unknownShort2, out, info ); - }; - if ( info.version >= 0x14000004 ) { - if ( unknownLink1 != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(unknownLink1) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiGeometryData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - numUvSets = (unsigned short)(uvSets.size()); - numUvSets2 = (byte)(uvSets.size()); - numVertices = (unsigned short)(vertices.size()); - out << " Name: " << name << endl; - out << " Num Vertices: " << numVertices << endl; - out << " Unknown Short 1: " << unknownShort1 << endl; - out << " Has Vertices: " << hasVertices << endl; - if ( (hasVertices != 0) ) { - array_output_count = 0; - for (unsigned int i2 = 0; i2 < vertices.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Vertices[" << i2 << "]: " << vertices[i2] << endl; - array_output_count++; - }; - }; - out << " Num UV Sets 2: " << numUvSets2 << endl; - out << " Unknown Byte 1: " << unknownByte1 << endl; - out << " Has Normals: " << hasNormals << endl; - if ( (hasNormals != 0) ) { - array_output_count = 0; - for (unsigned int i2 = 0; i2 < normals.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Normals[" << i2 << "]: " << normals[i2] << endl; - array_output_count++; - }; - }; - if ( (((hasNormals != 0)) && ((unknownByte1 & 16))) ) { - array_output_count = 0; - for (unsigned int i2 = 0; i2 < unknownVectors1.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Vectors 1[" << i2 << "]: " << unknownVectors1[i2] << endl; - array_output_count++; - }; - array_output_count = 0; - for (unsigned int i2 = 0; i2 < unknownVectors2.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Vectors 2[" << i2 << "]: " << unknownVectors2[i2] << endl; - array_output_count++; - }; - }; - out << " Center: " << center << endl; - out << " Radius: " << radius << endl; - out << " Has Vertex Colors: " << hasVertexColors << endl; - if ( (hasVertexColors != 0) ) { - array_output_count = 0; - for (unsigned int i2 = 0; i2 < vertexColors.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Vertex Colors[" << i2 << "]: " << vertexColors[i2] << endl; - array_output_count++; - }; - }; - out << " Num UV Sets: " << numUvSets << endl; - out << " Has UV: " << hasUv << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < uvSets.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - for (unsigned int i2 = 0; i2 < uvSets[i1].size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " UV Sets[" << i2 << "]: " << uvSets[i1][i2] << endl; - array_output_count++; - }; - }; - out << " Unknown Short 2: " << unknownShort2 << endl; - out << " Unknown Link 1: " << unknownLink1 << endl; - return out.str(); -} - -void NiGeometryData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); - if ( info.version >= 0x14000004 ) { - unknownLink1 = FixLink<NiObject>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiGeometryData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - if ( unknownLink1 != NULL ) - refs.push_back(StaticCast<NiObject>(unknownLink1)); - return refs; -} - -void NiTriBasedGeomData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiGeometryData::Read( in, link_stack, info ); - NifStream( numTriangles, in, info ); -} - -void NiTriBasedGeomData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiGeometryData::Write( out, link_map, info ); - NifStream( numTriangles, out, info ); -} - -std::string NiTriBasedGeomData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiGeometryData::asString(); - out << " Num Triangles: " << numTriangles << endl; - return out.str(); -} - -void NiTriBasedGeomData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiGeometryData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiTriBasedGeomData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiGeometryData::GetRefs(); - return refs; -} - -void bhkBlendController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTimeController::Read( in, link_stack, info ); - NifStream( unknownInt, in, info ); -} - -void bhkBlendController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiTimeController::Write( out, link_map, info ); - NifStream( unknownInt, out, info ); -} - -std::string bhkBlendController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiTimeController::asString(); - out << " Unknown Int: " << unknownInt << endl; - return out.str(); -} - -void bhkBlendController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTimeController::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> bhkBlendController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiTimeController::GetRefs(); - return refs; -} - -void BSBound::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::Read( in, link_stack, info ); - NifStream( center, in, info ); - NifStream( dimensions, in, info ); -} - -void BSBound::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiExtraData::Write( out, link_map, info ); - NifStream( center, out, info ); - NifStream( dimensions, out, info ); -} - -std::string BSBound::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiExtraData::asString(); - out << " Center: " << center << endl; - out << " Dimensions: " << dimensions << endl; - return out.str(); -} - -void BSBound::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> BSBound::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiExtraData::GetRefs(); - return refs; -} - -void BSFurnitureMarker::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::Read( in, link_stack, info ); - NifStream( numPositions, in, info ); - positions.resize(numPositions); - for (unsigned int i1 = 0; i1 < positions.size(); i1++) { - NifStream( positions[i1].offset, in, info ); - NifStream( positions[i1].orientation, in, info ); - NifStream( positions[i1].positionRef1, in, info ); - NifStream( positions[i1].positionRef2, in, info ); - }; -} - -void BSFurnitureMarker::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiExtraData::Write( out, link_map, info ); - numPositions = (unsigned int)(positions.size()); - NifStream( numPositions, out, info ); - for (unsigned int i1 = 0; i1 < positions.size(); i1++) { - NifStream( positions[i1].offset, out, info ); - NifStream( positions[i1].orientation, out, info ); - NifStream( positions[i1].positionRef1, out, info ); - NifStream( positions[i1].positionRef2, out, info ); - }; -} - -std::string BSFurnitureMarker::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiExtraData::asString(); - numPositions = (unsigned int)(positions.size()); - out << " Num Positions: " << numPositions << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < positions.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - out << " Offset: " << positions[i1].offset << endl; - out << " Orientation: " << positions[i1].orientation << endl; - out << " Position Ref 1: " << positions[i1].positionRef1 << endl; - out << " Position Ref 2: " << positions[i1].positionRef2 << endl; - }; - return out.str(); -} - -void BSFurnitureMarker::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> BSFurnitureMarker::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiExtraData::GetRefs(); - return refs; -} - -void BSParentVelocityModifier::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::Read( in, link_stack, info ); - NifStream( unknownFloat, in, info ); -} - -void BSParentVelocityModifier::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifier::Write( out, link_map, info ); - NifStream( unknownFloat, out, info ); -} - -std::string BSParentVelocityModifier::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifier::asString(); - out << " Unknown Float: " << unknownFloat << endl; - return out.str(); -} - -void BSParentVelocityModifier::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> BSParentVelocityModifier::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifier::GetRefs(); - return refs; -} - -void BSPSysArrayEmitter::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysVolumeEmitter::Read( in, link_stack, info ); -} - -void BSPSysArrayEmitter::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysVolumeEmitter::Write( out, link_map, info ); -} - -std::string BSPSysArrayEmitter::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysVolumeEmitter::asString(); - return out.str(); -} - -void BSPSysArrayEmitter::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysVolumeEmitter::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> BSPSysArrayEmitter::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysVolumeEmitter::GetRefs(); - return refs; -} - -void BSWindModifier::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::Read( in, link_stack, info ); - NifStream( unknownFloat, in, info ); -} - -void BSWindModifier::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifier::Write( out, link_map, info ); - NifStream( unknownFloat, out, info ); -} - -std::string BSWindModifier::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifier::asString(); - out << " Unknown Float: " << unknownFloat << endl; - return out.str(); -} - -void BSWindModifier::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> BSWindModifier::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifier::GetRefs(); - return refs; -} - -void hkPackedNiTriStripsData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkShapeCollection::Read( in, link_stack, info ); - NifStream( numTriangles, in, info ); - triangles.resize(numTriangles); - for (unsigned int i1 = 0; i1 < triangles.size(); i1++) { - NifStream( triangles[i1].triangle, in, info ); - NifStream( triangles[i1].unknownShort, in, info ); - NifStream( triangles[i1].normal, in, info ); - }; - NifStream( numVertices, in, info ); - vertices.resize(numVertices); - for (unsigned int i1 = 0; i1 < vertices.size(); i1++) { - NifStream( vertices[i1], in, info ); - }; -} - -void hkPackedNiTriStripsData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - bhkShapeCollection::Write( out, link_map, info ); - numVertices = (unsigned int)(vertices.size()); - numTriangles = (unsigned int)(triangles.size()); - NifStream( numTriangles, out, info ); - for (unsigned int i1 = 0; i1 < triangles.size(); i1++) { - NifStream( triangles[i1].triangle, out, info ); - NifStream( triangles[i1].unknownShort, out, info ); - NifStream( triangles[i1].normal, out, info ); - }; - NifStream( numVertices, out, info ); - for (unsigned int i1 = 0; i1 < vertices.size(); i1++) { - NifStream( vertices[i1], out, info ); - }; -} - -std::string hkPackedNiTriStripsData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << bhkShapeCollection::asString(); - numVertices = (unsigned int)(vertices.size()); - numTriangles = (unsigned int)(triangles.size()); - out << " Num Triangles: " << numTriangles << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < triangles.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - out << " Triangle: " << triangles[i1].triangle << endl; - out << " Unknown Short: " << triangles[i1].unknownShort << endl; - out << " Normal: " << triangles[i1].normal << endl; - }; - out << " Num Vertices: " << numVertices << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < vertices.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Vertices[" << i1 << "]: " << vertices[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void hkPackedNiTriStripsData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - bhkShapeCollection::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> hkPackedNiTriStripsData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = bhkShapeCollection::GetRefs(); - return refs; -} - -void NiAlphaProperty::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::Read( in, link_stack, info ); - NifStream( flags, in, info ); - NifStream( threshold, in, info ); -} - -void NiAlphaProperty::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiProperty::Write( out, link_map, info ); - NifStream( flags, out, info ); - NifStream( threshold, out, info ); -} - -std::string NiAlphaProperty::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiProperty::asString(); - out << " Flags: " << flags << endl; - out << " Threshold: " << threshold << endl; - return out.str(); -} - -void NiAlphaProperty::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiAlphaProperty::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiProperty::GetRefs(); - return refs; -} - -void NiAmbientLight::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiLight::Read( in, link_stack, info ); -} - -void NiAmbientLight::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiLight::Write( out, link_map, info ); -} - -std::string NiAmbientLight::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiLight::asString(); - return out.str(); -} - -void NiAmbientLight::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiLight::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiAmbientLight::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiLight::GetRefs(); - return refs; -} - -void NiParticlesData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiGeometryData::Read( in, link_stack, info ); - if ( info.version <= 0x04000002 ) { - NifStream( numParticles, in, info ); - }; - if ( info.version <= 0x0A000100 ) { - NifStream( size, in, info ); - }; - if ( info.version <= 0x04000002 ) { - NifStream( numActive, in, info ); - }; - if ( ( info.version >= 0x0401000C ) && ( info.version <= 0x0A000100 ) ) { - NifStream( unknownShort, in, info ); - }; - NifStream( hasSizes, in, info ); - if ( (hasSizes != 0) ) { - sizes.resize(numVertices); - for (unsigned int i2 = 0; i2 < sizes.size(); i2++) { - NifStream( sizes[i2], in, info ); - }; - }; - if ( info.version >= 0x0A010000 ) { - NifStream( numActive, in, info ); - NifStream( hasUnknownFloats1, in, info ); - if ( (hasUnknownFloats1 != 0) ) { - unknownFloats1.resize(numVertices); - for (unsigned int i3 = 0; i3 < unknownFloats1.size(); i3++) { - NifStream( unknownFloats1[i3], in, info ); - }; - }; - }; - if ( info.version >= 0x0A000100 ) { - NifStream( hasRotations1, in, info ); - if ( (hasRotations1 != 0) ) { - rotations1.resize(numVertices); - for (unsigned int i3 = 0; i3 < rotations1.size(); i3++) { - NifStream( rotations1[i3], in, info ); - }; - }; - }; -} - -void NiParticlesData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiGeometryData::Write( out, link_map, info ); - if ( info.version <= 0x04000002 ) { - NifStream( numParticles, out, info ); - }; - if ( info.version <= 0x0A000100 ) { - NifStream( size, out, info ); - }; - if ( info.version <= 0x04000002 ) { - NifStream( numActive, out, info ); - }; - if ( ( info.version >= 0x0401000C ) && ( info.version <= 0x0A000100 ) ) { - NifStream( unknownShort, out, info ); - }; - NifStream( hasSizes, out, info ); - if ( (hasSizes != 0) ) { - for (unsigned int i2 = 0; i2 < sizes.size(); i2++) { - NifStream( sizes[i2], out, info ); - }; - }; - if ( info.version >= 0x0A010000 ) { - NifStream( numActive, out, info ); - NifStream( hasUnknownFloats1, out, info ); - if ( (hasUnknownFloats1 != 0) ) { - for (unsigned int i3 = 0; i3 < unknownFloats1.size(); i3++) { - NifStream( unknownFloats1[i3], out, info ); - }; - }; - }; - if ( info.version >= 0x0A000100 ) { - NifStream( hasRotations1, out, info ); - if ( (hasRotations1 != 0) ) { - for (unsigned int i3 = 0; i3 < rotations1.size(); i3++) { - NifStream( rotations1[i3], out, info ); - }; - }; - }; -} - -std::string NiParticlesData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiGeometryData::asString(); - out << " Num Particles: " << numParticles << endl; - out << " Size: " << size << endl; - out << " Num Active: " << numActive << endl; - out << " Unknown Short: " << unknownShort << endl; - out << " Has Sizes: " << hasSizes << endl; - if ( (hasSizes != 0) ) { - array_output_count = 0; - for (unsigned int i2 = 0; i2 < sizes.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Sizes[" << i2 << "]: " << sizes[i2] << endl; - array_output_count++; - }; - }; - out << " Has Unknown Floats 1: " << hasUnknownFloats1 << endl; - if ( (hasUnknownFloats1 != 0) ) { - array_output_count = 0; - for (unsigned int i2 = 0; i2 < unknownFloats1.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Floats 1[" << i2 << "]: " << unknownFloats1[i2] << endl; - array_output_count++; - }; - }; - out << " Has Rotations 1: " << hasRotations1 << endl; - if ( (hasRotations1 != 0) ) { - array_output_count = 0; - for (unsigned int i2 = 0; i2 < rotations1.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Rotations 1[" << i2 << "]: " << rotations1[i2] << endl; - array_output_count++; - }; - }; - return out.str(); -} - -void NiParticlesData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiGeometryData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiParticlesData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiGeometryData::GetRefs(); - return refs; -} - -void NiRotatingParticlesData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiParticlesData::Read( in, link_stack, info ); - if ( info.version <= 0x04020200 ) { - NifStream( hasRotations2, in, info ); - if ( (hasRotations2 != 0) ) { - rotations2.resize(numVertices); - for (unsigned int i3 = 0; i3 < rotations2.size(); i3++) { - NifStream( rotations2[i3], in, info ); - }; - }; - }; -} - -void NiRotatingParticlesData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiParticlesData::Write( out, link_map, info ); - if ( info.version <= 0x04020200 ) { - NifStream( hasRotations2, out, info ); - if ( (hasRotations2 != 0) ) { - for (unsigned int i3 = 0; i3 < rotations2.size(); i3++) { - NifStream( rotations2[i3], out, info ); - }; - }; - }; -} - -std::string NiRotatingParticlesData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiParticlesData::asString(); - out << " Has Rotations 2: " << hasRotations2 << endl; - if ( (hasRotations2 != 0) ) { - array_output_count = 0; - for (unsigned int i2 = 0; i2 < rotations2.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Rotations 2[" << i2 << "]: " << rotations2[i2] << endl; - array_output_count++; - }; - }; - return out.str(); -} - -void NiRotatingParticlesData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiParticlesData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiRotatingParticlesData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiParticlesData::GetRefs(); - return refs; -} - -void NiAutoNormalParticlesData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiParticlesData::Read( in, link_stack, info ); -} - -void NiAutoNormalParticlesData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiParticlesData::Write( out, link_map, info ); -} - -std::string NiAutoNormalParticlesData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiParticlesData::asString(); - return out.str(); -} - -void NiAutoNormalParticlesData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiParticlesData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiAutoNormalParticlesData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiParticlesData::GetRefs(); - return refs; -} - -void NiPSysData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiRotatingParticlesData::Read( in, link_stack, info ); - if ( info.version <= 0x0A020000 ) { - unknownFloats2.resize(numVertices); - for (unsigned int i2 = 0; i2 < unknownFloats2.size(); i2++) { - for (unsigned int i3 = 0; i3 < 10; i3++) { - NifStream( unknownFloats2[i2][i3], in, info ); - }; - }; - }; - if ( info.version >= 0x14000004 ) { - NifStream( hasUnknownFloats3, in, info ); - if ( (hasUnknownFloats3 != 0) ) { - unknownFloats1.resize(numVertices); - for (unsigned int i3 = 0; i3 < unknownFloats1.size(); i3++) { - NifStream( unknownFloats1[i3], in, info ); - }; - }; - NifStream( hasUnknownFloats4, in, info ); - }; - if ( (hasUnknownFloats4 != 0) ) { - unknownFloats4.resize(numVertices); - for (unsigned int i2 = 0; i2 < unknownFloats4.size(); i2++) { - for (unsigned int i3 = 0; i3 < 4; i3++) { - NifStream( unknownFloats4[i2][i3], in, info ); - }; - }; - }; - if ( info.version >= 0x14000004 ) { - unknownFloats5.resize(numVertices); - for (unsigned int i2 = 0; i2 < unknownFloats5.size(); i2++) { - for (unsigned int i3 = 0; i3 < 7; i3++) { - NifStream( unknownFloats5[i2][i3], in, info ); - }; - }; - NifStream( hasUnknownFloats6, in, info ); - if ( (hasUnknownFloats6 != 0) ) { - unknownFloats6.resize(numVertices); - for (unsigned int i3 = 0; i3 < unknownFloats6.size(); i3++) { - NifStream( unknownFloats6[i3], in, info ); - }; - }; - }; - NifStream( unknownInt1, in, info ); -} - -void NiPSysData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiRotatingParticlesData::Write( out, link_map, info ); - if ( info.version <= 0x0A020000 ) { - for (unsigned int i2 = 0; i2 < unknownFloats2.size(); i2++) { - for (unsigned int i3 = 0; i3 < 10; i3++) { - NifStream( unknownFloats2[i2][i3], out, info ); - }; - }; - }; - if ( info.version >= 0x14000004 ) { - NifStream( hasUnknownFloats3, out, info ); - if ( (hasUnknownFloats3 != 0) ) { - for (unsigned int i3 = 0; i3 < unknownFloats1.size(); i3++) { - NifStream( unknownFloats1[i3], out, info ); - }; - }; - NifStream( hasUnknownFloats4, out, info ); - }; - if ( (hasUnknownFloats4 != 0) ) { - for (unsigned int i2 = 0; i2 < unknownFloats4.size(); i2++) { - for (unsigned int i3 = 0; i3 < 4; i3++) { - NifStream( unknownFloats4[i2][i3], out, info ); - }; - }; - }; - if ( info.version >= 0x14000004 ) { - for (unsigned int i2 = 0; i2 < unknownFloats5.size(); i2++) { - for (unsigned int i3 = 0; i3 < 7; i3++) { - NifStream( unknownFloats5[i2][i3], out, info ); - }; - }; - NifStream( hasUnknownFloats6, out, info ); - if ( (hasUnknownFloats6 != 0) ) { - for (unsigned int i3 = 0; i3 < unknownFloats6.size(); i3++) { - NifStream( unknownFloats6[i3], out, info ); - }; - }; - }; - NifStream( unknownInt1, out, info ); -} - -std::string NiPSysData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiRotatingParticlesData::asString(); - array_output_count = 0; - for (unsigned int i1 = 0; i1 < unknownFloats2.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - for (unsigned int i2 = 0; i2 < 10; i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Floats 2[" << i2 << "]: " << unknownFloats2[i1][i2] << endl; - array_output_count++; - }; - }; - out << " Has Unknown Floats 3: " << hasUnknownFloats3 << endl; - if ( (hasUnknownFloats3 != 0) ) { - array_output_count = 0; - for (unsigned int i2 = 0; i2 < unknownFloats1.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Floats 1[" << i2 << "]: " << unknownFloats1[i2] << endl; - array_output_count++; - }; - }; - out << " Has Unknown Floats 4: " << hasUnknownFloats4 << endl; - if ( (hasUnknownFloats4 != 0) ) { - array_output_count = 0; - for (unsigned int i2 = 0; i2 < unknownFloats4.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - for (unsigned int i3 = 0; i3 < 4; i3++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Floats 4[" << i3 << "]: " << unknownFloats4[i2][i3] << endl; - array_output_count++; - }; - }; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < unknownFloats5.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - for (unsigned int i2 = 0; i2 < 7; i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Floats 5[" << i2 << "]: " << unknownFloats5[i1][i2] << endl; - array_output_count++; - }; - }; - out << " Has Unknown Floats 6: " << hasUnknownFloats6 << endl; - if ( (hasUnknownFloats6 != 0) ) { - array_output_count = 0; - for (unsigned int i2 = 0; i2 < unknownFloats6.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Floats 6[" << i2 << "]: " << unknownFloats6[i2] << endl; - array_output_count++; - }; - }; - out << " Unknown Int 1: " << unknownInt1 << endl; - return out.str(); -} - -void NiPSysData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiRotatingParticlesData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiRotatingParticlesData::GetRefs(); - return refs; -} - -void NiMeshPSysData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiPSysData::Read( in, link_stack, info ); - if ( info.version <= 0x14000004 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - if ( ( info.version >= 0x0A020000 ) && ( info.version <= 0x14000004 ) ) { - NifStream( unknownByte2, in, info ); - NifStream( numUnknownLinks, in, info ); - unknownLinks.resize(numUnknownLinks); - for (unsigned int i2 = 0; i2 < unknownLinks.size(); i2++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - }; - if ( info.version >= 0x14000005 ) { - NifStream( numVertices2, in, info ); - NifStream( unknownByte3, in, info ); - NifStream( unknownInt2, in, info ); - NifStream( numVertices3, in, info ); - }; - if ( info.version >= 0x0A020000 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiMeshPSysData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysData::Write( out, link_map, info ); - numUnknownLinks = (unsigned int)(unknownLinks.size()); - if ( info.version <= 0x14000004 ) { - if ( modifier != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(modifier) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - if ( ( info.version >= 0x0A020000 ) && ( info.version <= 0x14000004 ) ) { - NifStream( unknownByte2, out, info ); - NifStream( numUnknownLinks, out, info ); - for (unsigned int i2 = 0; i2 < unknownLinks.size(); i2++) { - if ( unknownLinks[i2] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(unknownLinks[i2]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - }; - if ( info.version >= 0x14000005 ) { - NifStream( numVertices2, out, info ); - NifStream( unknownByte3, out, info ); - NifStream( unknownInt2, out, info ); - NifStream( numVertices3, out, info ); - }; - if ( info.version >= 0x0A020000 ) { - if ( unknownLink2 != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(unknownLink2) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiMeshPSysData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysData::asString(); - numUnknownLinks = (unsigned int)(unknownLinks.size()); - out << " Modifier: " << modifier << endl; - out << " Unknown Byte 2: " << unknownByte2 << endl; - out << " Num Unknown Links: " << numUnknownLinks << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < unknownLinks.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Links[" << i1 << "]: " << unknownLinks[i1] << endl; - array_output_count++; - }; - out << " Num Vertices 2: " << numVertices2 << endl; - out << " Unknown Byte 3: " << unknownByte3 << endl; - out << " Unknown Int 2: " << unknownInt2 << endl; - out << " Num Vertices 3: " << numVertices3 << endl; - out << " Unknown Link 2: " << unknownLink2 << endl; - return out.str(); -} - -void NiMeshPSysData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysData::FixLinks( objects, link_stack, info ); - if ( info.version <= 0x14000004 ) { - modifier = FixLink<NiObject>( objects, link_stack, info ); - }; - if ( ( info.version >= 0x0A020000 ) && ( info.version <= 0x14000004 ) ) { - for (unsigned int i2 = 0; i2 < unknownLinks.size(); i2++) { - unknownLinks[i2] = FixLink<NiObject>( objects, link_stack, info ); - }; - }; - if ( info.version >= 0x0A020000 ) { - unknownLink2 = FixLink<NiNode>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiMeshPSysData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysData::GetRefs(); - if ( modifier != NULL ) - refs.push_back(StaticCast<NiObject>(modifier)); - for (unsigned int i1 = 0; i1 < unknownLinks.size(); i1++) { - if ( unknownLinks[i1] != NULL ) - refs.push_back(StaticCast<NiObject>(unknownLinks[i1])); - }; - if ( unknownLink2 != NULL ) - refs.push_back(StaticCast<NiObject>(unknownLink2)); - return refs; -} - -void NiBinaryExtraData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::Read( in, link_stack, info ); - NifStream( binaryData.dataSize, in, info ); - binaryData.data.resize(binaryData.dataSize); - for (unsigned int i1 = 0; i1 < binaryData.data.size(); i1++) { - NifStream( binaryData.data[i1], in, info ); - }; -} - -void NiBinaryExtraData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiExtraData::Write( out, link_map, info ); - binaryData.dataSize = (unsigned int)(binaryData.data.size()); - NifStream( binaryData.dataSize, out, info ); - for (unsigned int i1 = 0; i1 < binaryData.data.size(); i1++) { - NifStream( binaryData.data[i1], out, info ); - }; -} - -std::string NiBinaryExtraData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiExtraData::asString(); - binaryData.dataSize = (unsigned int)(binaryData.data.size()); - out << " Data Size: " << binaryData.dataSize << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < binaryData.data.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Data[" << i1 << "]: " << binaryData.data[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiBinaryExtraData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBinaryExtraData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiExtraData::GetRefs(); - return refs; -} - -void NiBinaryVoxelExtraData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiExtraData::Read( in, link_stack, info ); - NifStream( unknownInt, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiBinaryVoxelExtraData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiExtraData::Write( out, link_map, info ); - NifStream( unknownInt, out, info ); - if ( data != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiBinaryVoxelExtraData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiExtraData::asString(); - out << " Unknown Int: " << unknownInt << endl; - out << " Data: " << data << endl; - return out.str(); -} - -void NiBinaryVoxelExtraData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::FixLinks( objects, link_stack, info ); - data = FixLink<NiBinaryVoxelData>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBinaryVoxelExtraData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiExtraData::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - return refs; -} - -void NiBinaryVoxelData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::Read( in, link_stack, info ); - NifStream( unknownShort1, in, info ); - NifStream( unknownShort2, in, info ); - NifStream( unknownShort3, in, info ); - for (unsigned int i1 = 0; i1 < 7; i1++) { - NifStream( unknown7Floats[i1], in, info ); - }; - for (unsigned int i1 = 0; i1 < 7; i1++) { - for (unsigned int i2 = 0; i2 < 12; i2++) { - NifStream( unknownBytes1[i1][i2], in, info ); - }; - }; - NifStream( numUnknownVectors, in, info ); - unknownVectors.resize(numUnknownVectors); - for (unsigned int i1 = 0; i1 < unknownVectors.size(); i1++) { - NifStream( unknownVectors[i1], in, info ); - }; - NifStream( numUnknownBytes2, in, info ); - unknownBytes2.resize(numUnknownBytes2); - for (unsigned int i1 = 0; i1 < unknownBytes2.size(); i1++) { - NifStream( unknownBytes2[i1], in, info ); - }; - for (unsigned int i1 = 0; i1 < 5; i1++) { - NifStream( unknown5Ints[i1], in, info ); - }; -} - -void NiBinaryVoxelData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - numUnknownBytes2 = (unsigned int)(unknownBytes2.size()); - numUnknownVectors = (unsigned int)(unknownVectors.size()); - NifStream( unknownShort1, out, info ); - NifStream( unknownShort2, out, info ); - NifStream( unknownShort3, out, info ); - for (unsigned int i1 = 0; i1 < 7; i1++) { - NifStream( unknown7Floats[i1], out, info ); - }; - for (unsigned int i1 = 0; i1 < 7; i1++) { - for (unsigned int i2 = 0; i2 < 12; i2++) { - NifStream( unknownBytes1[i1][i2], out, info ); - }; - }; - NifStream( numUnknownVectors, out, info ); - for (unsigned int i1 = 0; i1 < unknownVectors.size(); i1++) { - NifStream( unknownVectors[i1], out, info ); - }; - NifStream( numUnknownBytes2, out, info ); - for (unsigned int i1 = 0; i1 < unknownBytes2.size(); i1++) { - NifStream( unknownBytes2[i1], out, info ); - }; - for (unsigned int i1 = 0; i1 < 5; i1++) { - NifStream( unknown5Ints[i1], out, info ); - }; -} - -std::string NiBinaryVoxelData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - numUnknownBytes2 = (unsigned int)(unknownBytes2.size()); - numUnknownVectors = (unsigned int)(unknownVectors.size()); - out << " Unknown Short 1: " << unknownShort1 << endl; - out << " Unknown Short 2: " << unknownShort2 << endl; - out << " Unknown Short 3: " << unknownShort3 << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 7; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown 7 Floats[" << i1 << "]: " << unknown7Floats[i1] << endl; - array_output_count++; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 7; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - for (unsigned int i2 = 0; i2 < 12; i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Bytes 1[" << i2 << "]: " << unknownBytes1[i1][i2] << endl; - array_output_count++; - }; - }; - out << " Num Unknown Vectors: " << numUnknownVectors << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < unknownVectors.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Vectors[" << i1 << "]: " << unknownVectors[i1] << endl; - array_output_count++; - }; - out << " Num Unknown Bytes 2: " << numUnknownBytes2 << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < unknownBytes2.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Bytes 2[" << i1 << "]: " << unknownBytes2[i1] << endl; - array_output_count++; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 5; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown 5 Ints[" << i1 << "]: " << unknown5Ints[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiBinaryVoxelData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBinaryVoxelData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -void NiBlendBoolInterpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBlendInterpolator::Read( in, link_stack, info ); - NifStream( boolValue, in, info ); -} - -void NiBlendBoolInterpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiBlendInterpolator::Write( out, link_map, info ); - NifStream( boolValue, out, info ); -} - -std::string NiBlendBoolInterpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiBlendInterpolator::asString(); - out << " Bool Value: " << boolValue << endl; - return out.str(); -} - -void NiBlendBoolInterpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBlendInterpolator::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBlendBoolInterpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiBlendInterpolator::GetRefs(); - return refs; -} - -void NiBlendFloatInterpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBlendInterpolator::Read( in, link_stack, info ); - NifStream( floatValue, in, info ); -} - -void NiBlendFloatInterpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiBlendInterpolator::Write( out, link_map, info ); - NifStream( floatValue, out, info ); -} - -std::string NiBlendFloatInterpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiBlendInterpolator::asString(); - out << " Float Value: " << floatValue << endl; - return out.str(); -} - -void NiBlendFloatInterpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBlendInterpolator::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBlendFloatInterpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiBlendInterpolator::GetRefs(); - return refs; -} - -void NiBlendPoint3Interpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBlendInterpolator::Read( in, link_stack, info ); - NifStream( pointValue, in, info ); -} - -void NiBlendPoint3Interpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiBlendInterpolator::Write( out, link_map, info ); - NifStream( pointValue, out, info ); -} - -std::string NiBlendPoint3Interpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiBlendInterpolator::asString(); - out << " Point Value: " << pointValue << endl; - return out.str(); -} - -void NiBlendPoint3Interpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBlendInterpolator::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBlendPoint3Interpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiBlendInterpolator::GetRefs(); - return refs; -} - -void NiBlendTransformInterpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBlendInterpolator::Read( in, link_stack, info ); -} - -void NiBlendTransformInterpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiBlendInterpolator::Write( out, link_map, info ); -} - -std::string NiBlendTransformInterpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiBlendInterpolator::asString(); - return out.str(); -} - -void NiBlendTransformInterpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBlendInterpolator::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBlendTransformInterpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiBlendInterpolator::GetRefs(); - return refs; -} - -void NiBoolData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::Read( in, link_stack, info ); - NifStream( data.numKeys, in, info ); - if ( (data.numKeys != 0) ) { - NifStream( data.interpolation, in, info ); - }; - data.keys.resize(data.numKeys); - for (unsigned int i1 = 0; i1 < data.keys.size(); i1++) { - NifStream( data.keys[i1], in, info, data.interpolation ); - }; -} - -void NiBoolData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - data.numKeys = (unsigned int)(data.keys.size()); - NifStream( data.numKeys, out, info ); - if ( (data.numKeys != 0) ) { - NifStream( data.interpolation, out, info ); - }; - for (unsigned int i1 = 0; i1 < data.keys.size(); i1++) { - NifStream( data.keys[i1], out, info, data.interpolation ); - }; -} - -std::string NiBoolData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - data.numKeys = (unsigned int)(data.keys.size()); - out << " Num Keys: " << data.numKeys << endl; - if ( (data.numKeys != 0) ) { - out << " Interpolation: " << data.interpolation << endl; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < data.keys.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Keys[" << i1 << "]: " << data.keys[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiBoolData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBoolData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -void NiBooleanExtraData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::Read( in, link_stack, info ); - NifStream( booleanData, in, info ); -} - -void NiBooleanExtraData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiExtraData::Write( out, link_map, info ); - NifStream( booleanData, out, info ); -} - -std::string NiBooleanExtraData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiExtraData::asString(); - out << " Boolean Data: " << booleanData << endl; - return out.str(); -} - -void NiBooleanExtraData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBooleanExtraData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiExtraData::GetRefs(); - return refs; -} - -void NiBSplineBasisData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::Read( in, link_stack, info ); - NifStream( numControlPt, in, info ); -} - -void NiBSplineBasisData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - NifStream( numControlPt, out, info ); -} - -std::string NiBSplineBasisData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - out << " Num Control Pt: " << numControlPt << endl; - return out.str(); -} - -void NiBSplineBasisData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBSplineBasisData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -void NiBSplineFloatInterpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBSplineInterpolator::Read( in, link_stack, info ); -} - -void NiBSplineFloatInterpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiBSplineInterpolator::Write( out, link_map, info ); -} - -std::string NiBSplineFloatInterpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiBSplineInterpolator::asString(); - return out.str(); -} - -void NiBSplineFloatInterpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBSplineInterpolator::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBSplineFloatInterpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiBSplineInterpolator::GetRefs(); - return refs; -} - -void NiBSplineCompFloatInterpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBSplineFloatInterpolator::Read( in, link_stack, info ); - for (unsigned int i1 = 0; i1 < 4; i1++) { - NifStream( unknownFloats[i1], in, info ); - }; -} - -void NiBSplineCompFloatInterpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiBSplineFloatInterpolator::Write( out, link_map, info ); - for (unsigned int i1 = 0; i1 < 4; i1++) { - NifStream( unknownFloats[i1], out, info ); - }; -} - -std::string NiBSplineCompFloatInterpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiBSplineFloatInterpolator::asString(); - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 4; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Floats[" << i1 << "]: " << unknownFloats[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiBSplineCompFloatInterpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBSplineFloatInterpolator::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBSplineCompFloatInterpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiBSplineFloatInterpolator::GetRefs(); - return refs; -} - -void NiBSplinePoint3Interpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBSplineInterpolator::Read( in, link_stack, info ); - for (unsigned int i1 = 0; i1 < 6; i1++) { - NifStream( unknownFloats[i1], in, info ); - }; -} - -void NiBSplinePoint3Interpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiBSplineInterpolator::Write( out, link_map, info ); - for (unsigned int i1 = 0; i1 < 6; i1++) { - NifStream( unknownFloats[i1], out, info ); - }; -} - -std::string NiBSplinePoint3Interpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiBSplineInterpolator::asString(); - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 6; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Floats[" << i1 << "]: " << unknownFloats[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiBSplinePoint3Interpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBSplineInterpolator::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBSplinePoint3Interpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiBSplineInterpolator::GetRefs(); - return refs; -} - -void NiBSplineCompPoint3Interpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBSplinePoint3Interpolator::Read( in, link_stack, info ); - for (unsigned int i1 = 0; i1 < 6; i1++) { - NifStream( unknownFloats[i1], in, info ); - }; -} - -void NiBSplineCompPoint3Interpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiBSplinePoint3Interpolator::Write( out, link_map, info ); - for (unsigned int i1 = 0; i1 < 6; i1++) { - NifStream( unknownFloats[i1], out, info ); - }; -} - -std::string NiBSplineCompPoint3Interpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiBSplinePoint3Interpolator::asString(); - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 6; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Floats[" << i1 << "]: " << unknownFloats[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiBSplineCompPoint3Interpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBSplinePoint3Interpolator::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBSplineCompPoint3Interpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiBSplinePoint3Interpolator::GetRefs(); - return refs; -} - -void NiBSplineTransformInterpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBSplineInterpolator::Read( in, link_stack, info ); -} - -void NiBSplineTransformInterpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiBSplineInterpolator::Write( out, link_map, info ); -} - -std::string NiBSplineTransformInterpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiBSplineInterpolator::asString(); - return out.str(); -} - -void NiBSplineTransformInterpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBSplineInterpolator::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBSplineTransformInterpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiBSplineInterpolator::GetRefs(); - return refs; -} - -void NiBSplineCompTransformInterpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBSplineTransformInterpolator::Read( in, link_stack, info ); - NifStream( translation, in, info ); - NifStream( rotation, in, info ); - NifStream( scale, in, info ); - NifStream( translateOffset, in, info ); - NifStream( rotateOffset, in, info ); - NifStream( scaleOffset, in, info ); - NifStream( translateBias, in, info ); - NifStream( translateMultiplier, in, info ); - NifStream( rotationBias, in, info ); - NifStream( rotationMultiplier, in, info ); - NifStream( scaleBias, in, info ); - NifStream( scaleMultiplier, in, info ); -} - -void NiBSplineCompTransformInterpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiBSplineTransformInterpolator::Write( out, link_map, info ); - NifStream( translation, out, info ); - NifStream( rotation, out, info ); - NifStream( scale, out, info ); - NifStream( translateOffset, out, info ); - NifStream( rotateOffset, out, info ); - NifStream( scaleOffset, out, info ); - NifStream( translateBias, out, info ); - NifStream( translateMultiplier, out, info ); - NifStream( rotationBias, out, info ); - NifStream( rotationMultiplier, out, info ); - NifStream( scaleBias, out, info ); - NifStream( scaleMultiplier, out, info ); -} - -std::string NiBSplineCompTransformInterpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiBSplineTransformInterpolator::asString(); - out << " Translation: " << translation << endl; - out << " Rotation: " << rotation << endl; - out << " Scale: " << scale << endl; - out << " Translate Offset: " << translateOffset << endl; - out << " Rotate Offset: " << rotateOffset << endl; - out << " Scale Offset: " << scaleOffset << endl; - out << " Translate Bias: " << translateBias << endl; - out << " Translate Multiplier: " << translateMultiplier << endl; - out << " Rotation Bias: " << rotationBias << endl; - out << " Rotation Multiplier: " << rotationMultiplier << endl; - out << " Scale Bias: " << scaleBias << endl; - out << " Scale Multiplier: " << scaleMultiplier << endl; - return out.str(); -} - -void NiBSplineCompTransformInterpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiBSplineTransformInterpolator::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBSplineCompTransformInterpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiBSplineTransformInterpolator::GetRefs(); - return refs; -} - -void NiBSplineData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::Read( in, link_stack, info ); - NifStream( unknownInt, in, info ); - NifStream( count, in, info ); - controlPoints.resize(count); - for (unsigned int i1 = 0; i1 < controlPoints.size(); i1++) { - NifStream( controlPoints[i1], in, info ); - }; -} - -void NiBSplineData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - count = (unsigned int)(controlPoints.size()); - NifStream( unknownInt, out, info ); - NifStream( count, out, info ); - for (unsigned int i1 = 0; i1 < controlPoints.size(); i1++) { - NifStream( controlPoints[i1], out, info ); - }; -} - -std::string NiBSplineData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - count = (unsigned int)(controlPoints.size()); - out << " Unknown Int: " << unknownInt << endl; - out << " Count: " << count << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < controlPoints.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Control Points[" << i1 << "]: " << controlPoints[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiBSplineData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBSplineData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -void NiCamera::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiAVObject::Read( in, link_stack, info ); - if ( info.version >= 0x0A010000 ) { - NifStream( unknownShort, in, info ); - }; - NifStream( frustumLeft, in, info ); - NifStream( frustumRight, in, info ); - NifStream( frustumTop, in, info ); - NifStream( frustumBottom, in, info ); - NifStream( frustumNear, in, info ); - NifStream( frustumFar, in, info ); - if ( info.version >= 0x0A010000 ) { - NifStream( useOrthographicProjection, in, info ); - }; - NifStream( viewportLeft, in, info ); - NifStream( viewportRight, in, info ); - NifStream( viewportTop, in, info ); - NifStream( viewportBottom, in, info ); - NifStream( lodAdjust, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( unknownInt, in, info ); - if ( info.version >= 0x04020100 ) { - NifStream( unknownInt2, in, info ); - }; - if ( info.version <= 0x03010000 ) { - NifStream( unknownInt3, in, info ); - }; -} - -void NiCamera::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiAVObject::Write( out, link_map, info ); - if ( info.version >= 0x0A010000 ) { - NifStream( unknownShort, out, info ); - }; - NifStream( frustumLeft, out, info ); - NifStream( frustumRight, out, info ); - NifStream( frustumTop, out, info ); - NifStream( frustumBottom, out, info ); - NifStream( frustumNear, out, info ); - NifStream( frustumFar, out, info ); - if ( info.version >= 0x0A010000 ) { - NifStream( useOrthographicProjection, out, info ); - }; - NifStream( viewportLeft, out, info ); - NifStream( viewportRight, out, info ); - NifStream( viewportTop, out, info ); - NifStream( viewportBottom, out, info ); - NifStream( lodAdjust, out, info ); - if ( unknownLink_ != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(unknownLink_) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( unknownInt, out, info ); - if ( info.version >= 0x04020100 ) { - NifStream( unknownInt2, out, info ); - }; - if ( info.version <= 0x03010000 ) { - NifStream( unknownInt3, out, info ); - }; -} - -std::string NiCamera::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiAVObject::asString(); - out << " Unknown Short: " << unknownShort << endl; - out << " Frustum Left: " << frustumLeft << endl; - out << " Frustum Right: " << frustumRight << endl; - out << " Frustum Top: " << frustumTop << endl; - out << " Frustum Bottom: " << frustumBottom << endl; - out << " Frustum Near: " << frustumNear << endl; - out << " Frustum Far: " << frustumFar << endl; - out << " Use Orthographic Projection: " << useOrthographicProjection << endl; - out << " Viewport Left: " << viewportLeft << endl; - out << " Viewport Right: " << viewportRight << endl; - out << " Viewport Top: " << viewportTop << endl; - out << " Viewport Bottom: " << viewportBottom << endl; - out << " LOD Adjust: " << lodAdjust << endl; - out << " Unknown Link?: " << unknownLink_ << endl; - out << " Unknown Int: " << unknownInt << endl; - out << " Unknown Int 2: " << unknownInt2 << endl; - out << " Unknown Int 3: " << unknownInt3 << endl; - return out.str(); -} - -void NiCamera::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiAVObject::FixLinks( objects, link_stack, info ); - unknownLink_ = FixLink<NiObject>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiCamera::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiAVObject::GetRefs(); - if ( unknownLink_ != NULL ) - refs.push_back(StaticCast<NiObject>(unknownLink_)); - return refs; -} - -void NiColorData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::Read( in, link_stack, info ); - NifStream( data.numKeys, in, info ); - if ( (data.numKeys != 0) ) { - NifStream( data.interpolation, in, info ); - }; - data.keys.resize(data.numKeys); - for (unsigned int i1 = 0; i1 < data.keys.size(); i1++) { - NifStream( data.keys[i1], in, info, data.interpolation ); - }; -} - -void NiColorData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - data.numKeys = (unsigned int)(data.keys.size()); - NifStream( data.numKeys, out, info ); - if ( (data.numKeys != 0) ) { - NifStream( data.interpolation, out, info ); - }; - for (unsigned int i1 = 0; i1 < data.keys.size(); i1++) { - NifStream( data.keys[i1], out, info, data.interpolation ); - }; -} - -std::string NiColorData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - data.numKeys = (unsigned int)(data.keys.size()); - out << " Num Keys: " << data.numKeys << endl; - if ( (data.numKeys != 0) ) { - out << " Interpolation: " << data.interpolation << endl; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < data.keys.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Keys[" << i1 << "]: " << data.keys[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiColorData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiColorData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -void NiColorExtraData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::Read( in, link_stack, info ); - NifStream( data, in, info ); -} - -void NiColorExtraData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiExtraData::Write( out, link_map, info ); - NifStream( data, out, info ); -} - -std::string NiColorExtraData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiExtraData::asString(); - out << " Data: " << data << endl; - return out.str(); -} - -void NiColorExtraData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiColorExtraData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiExtraData::GetRefs(); - return refs; -} - -void NiControllerManager::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiTimeController::Read( in, link_stack, info ); - NifStream( cumulative, in, info ); - NifStream( numControllerSequences, in, info ); - controllerSequences.resize(numControllerSequences); - for (unsigned int i1 = 0; i1 < controllerSequences.size(); i1++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiControllerManager::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiTimeController::Write( out, link_map, info ); - numControllerSequences = (unsigned int)(controllerSequences.size()); - NifStream( cumulative, out, info ); - NifStream( numControllerSequences, out, info ); - for (unsigned int i1 = 0; i1 < controllerSequences.size(); i1++) { - if ( controllerSequences[i1] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(controllerSequences[i1]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - if ( objectPalette != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(objectPalette) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiControllerManager::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiTimeController::asString(); - numControllerSequences = (unsigned int)(controllerSequences.size()); - out << " Cumulative: " << cumulative << endl; - out << " Num Controller Sequences: " << numControllerSequences << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < controllerSequences.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Controller Sequences[" << i1 << "]: " << controllerSequences[i1] << endl; - array_output_count++; - }; - out << " Object Palette: " << objectPalette << endl; - return out.str(); -} - -void NiControllerManager::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTimeController::FixLinks( objects, link_stack, info ); - for (unsigned int i1 = 0; i1 < controllerSequences.size(); i1++) { - controllerSequences[i1] = FixLink<NiControllerSequence>( objects, link_stack, info ); - }; - objectPalette = FixLink<NiDefaultAVObjectPalette>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiControllerManager::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiTimeController::GetRefs(); - for (unsigned int i1 = 0; i1 < controllerSequences.size(); i1++) { - if ( controllerSequences[i1] != NULL ) - refs.push_back(StaticCast<NiObject>(controllerSequences[i1])); - }; - if ( objectPalette != NULL ) - refs.push_back(StaticCast<NiObject>(objectPalette)); - return refs; -} - -void NiSequence::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiObject::Read( in, link_stack, info ); - NifStream( name, in, info ); - if ( info.version <= 0x0A010000 ) { - NifStream( textKeysName, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - NifStream( numControlledBlocks, in, info ); - if ( info.version >= 0x0A01006A ) { - NifStream( unknownInt1, in, info ); - }; - controlledBlocks.resize(numControlledBlocks); - for (unsigned int i1 = 0; i1 < controlledBlocks.size(); i1++) { - if ( info.version <= 0x0A010000 ) { - NifStream( controlledBlocks[i1].targetName, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - if ( info.version >= 0x0A01006A ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( controlledBlocks[i1].unknownShort0, in, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.userVersion == 10 ) ) { - NifStream( controlledBlocks[i1].priority_, in, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.userVersion == 11 ) ) { - NifStream( controlledBlocks[i1].priority_, in, info ); - }; - if ( info.version >= 0x0A020000 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - NifStream( controlledBlocks[i1].nodeName, in, info ); - }; - if ( info.version >= 0x0A020000 ) { - NifStream( controlledBlocks[i1].nodeNameOffset, in, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - NifStream( controlledBlocks[i1].propertyType, in, info ); - }; - if ( info.version >= 0x0A020000 ) { - NifStream( controlledBlocks[i1].propertyTypeOffset, in, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - NifStream( controlledBlocks[i1].controllerType, in, info ); - }; - if ( info.version >= 0x0A020000 ) { - NifStream( controlledBlocks[i1].controllerTypeOffset, in, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - NifStream( controlledBlocks[i1].variable1, in, info ); - }; - if ( info.version >= 0x0A020000 ) { - NifStream( controlledBlocks[i1].variableOffset1, in, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - NifStream( controlledBlocks[i1].variable2, in, info ); - }; - if ( info.version >= 0x0A020000 ) { - NifStream( controlledBlocks[i1].variableOffset2, in, info ); - }; - }; -} - -void NiSequence::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - numControlledBlocks = (unsigned int)(controlledBlocks.size()); - NifStream( name, out, info ); - if ( info.version <= 0x0A010000 ) { - NifStream( textKeysName, out, info ); - if ( textKeys != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(textKeys) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - NifStream( numControlledBlocks, out, info ); - if ( info.version >= 0x0A01006A ) { - NifStream( unknownInt1, out, info ); - }; - for (unsigned int i1 = 0; i1 < controlledBlocks.size(); i1++) { - if ( info.version <= 0x0A010000 ) { - NifStream( controlledBlocks[i1].targetName, out, info ); - if ( controlledBlocks[i1].controller != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(controlledBlocks[i1].controller) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - if ( info.version >= 0x0A01006A ) { - if ( controlledBlocks[i1].interpolator != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(controlledBlocks[i1].interpolator) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - if ( controlledBlocks[i1].controller != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(controlledBlocks[i1].controller) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - if ( controlledBlocks[i1].unknownLink2 != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(controlledBlocks[i1].unknownLink2) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( controlledBlocks[i1].unknownShort0, out, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.userVersion == 10 ) ) { - NifStream( controlledBlocks[i1].priority_, out, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.userVersion == 11 ) ) { - NifStream( controlledBlocks[i1].priority_, out, info ); - }; - if ( info.version >= 0x0A020000 ) { - if ( controlledBlocks[i1].stringPalette != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(controlledBlocks[i1].stringPalette) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - NifStream( controlledBlocks[i1].nodeName, out, info ); - }; - if ( info.version >= 0x0A020000 ) { - NifStream( controlledBlocks[i1].nodeNameOffset, out, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - NifStream( controlledBlocks[i1].propertyType, out, info ); - }; - if ( info.version >= 0x0A020000 ) { - NifStream( controlledBlocks[i1].propertyTypeOffset, out, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - NifStream( controlledBlocks[i1].controllerType, out, info ); - }; - if ( info.version >= 0x0A020000 ) { - NifStream( controlledBlocks[i1].controllerTypeOffset, out, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - NifStream( controlledBlocks[i1].variable1, out, info ); - }; - if ( info.version >= 0x0A020000 ) { - NifStream( controlledBlocks[i1].variableOffset1, out, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - NifStream( controlledBlocks[i1].variable2, out, info ); - }; - if ( info.version >= 0x0A020000 ) { - NifStream( controlledBlocks[i1].variableOffset2, out, info ); - }; - }; -} - -std::string NiSequence::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - numControlledBlocks = (unsigned int)(controlledBlocks.size()); - out << " Name: " << name << endl; - out << " Text Keys Name: " << textKeysName << endl; - out << " Text Keys: " << textKeys << endl; - out << " Num Controlled Blocks: " << numControlledBlocks << endl; - out << " Unknown Int 1: " << unknownInt1 << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < controlledBlocks.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - out << " Target Name: " << controlledBlocks[i1].targetName << endl; - out << " Controller: " << controlledBlocks[i1].controller << endl; - out << " Interpolator: " << controlledBlocks[i1].interpolator << endl; - out << " Unknown Link 2: " << controlledBlocks[i1].unknownLink2 << endl; - out << " Unknown Short 0: " << controlledBlocks[i1].unknownShort0 << endl; - out << " Priority?: " << controlledBlocks[i1].priority_ << endl; - out << " String Palette: " << controlledBlocks[i1].stringPalette << endl; - out << " Node Name: " << controlledBlocks[i1].nodeName << endl; - out << " Node Name Offset: " << controlledBlocks[i1].nodeNameOffset << endl; - out << " Property Type: " << controlledBlocks[i1].propertyType << endl; - out << " Property Type Offset: " << controlledBlocks[i1].propertyTypeOffset << endl; - out << " Controller Type: " << controlledBlocks[i1].controllerType << endl; - out << " Controller Type Offset: " << controlledBlocks[i1].controllerTypeOffset << endl; - out << " Variable 1: " << controlledBlocks[i1].variable1 << endl; - out << " Variable Offset 1: " << controlledBlocks[i1].variableOffset1 << endl; - out << " Variable 2: " << controlledBlocks[i1].variable2 << endl; - out << " Variable Offset 2: " << controlledBlocks[i1].variableOffset2 << endl; - }; - return out.str(); -} - -void NiSequence::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); - if ( info.version <= 0x0A010000 ) { - textKeys = FixLink<NiTextKeyExtraData>( objects, link_stack, info ); - }; - for (unsigned int i1 = 0; i1 < controlledBlocks.size(); i1++) { - if ( info.version <= 0x0A010000 ) { - controlledBlocks[i1].controller = FixLink<NiTimeController>( objects, link_stack, info ); - }; - if ( info.version >= 0x0A01006A ) { - controlledBlocks[i1].interpolator = FixLink<NiInterpolator>( objects, link_stack, info ); - controlledBlocks[i1].controller = FixLink<NiTimeController>( objects, link_stack, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - controlledBlocks[i1].unknownLink2 = FixLink<NiObject>( objects, link_stack, info ); - }; - if ( info.version >= 0x0A020000 ) { - controlledBlocks[i1].stringPalette = FixLink<NiStringPalette>( objects, link_stack, info ); - }; - }; -} - -std::list<NiObjectRef> NiSequence::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - if ( textKeys != NULL ) - refs.push_back(StaticCast<NiObject>(textKeys)); - for (unsigned int i1 = 0; i1 < controlledBlocks.size(); i1++) { - if ( controlledBlocks[i1].controller != NULL ) - refs.push_back(StaticCast<NiObject>(controlledBlocks[i1].controller)); - if ( controlledBlocks[i1].interpolator != NULL ) - refs.push_back(StaticCast<NiObject>(controlledBlocks[i1].interpolator)); - if ( controlledBlocks[i1].unknownLink2 != NULL ) - refs.push_back(StaticCast<NiObject>(controlledBlocks[i1].unknownLink2)); - if ( controlledBlocks[i1].stringPalette != NULL ) - refs.push_back(StaticCast<NiObject>(controlledBlocks[i1].stringPalette)); - }; - return refs; -} - -void NiControllerSequence::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiSequence::Read( in, link_stack, info ); - if ( info.version >= 0x0A01006A ) { - NifStream( weight, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( cycleType, in, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - NifStream( unknownInt0, in, info ); - }; - if ( info.version >= 0x0A01006A ) { - NifStream( frequency, in, info ); - NifStream( startTime, in, info ); - NifStream( stopTime, in, info ); - }; - if ( ( info.version >= 0x0A020000 ) && ( info.version <= 0x0A020000 ) ) { - NifStream( unknownFloat2, in, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - NifStream( unknownByte, in, info ); - }; - if ( info.version >= 0x0A01006A ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( targetName, in, info ); - }; - if ( info.version >= 0x0A020000 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiControllerSequence::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiSequence::Write( out, link_map, info ); - if ( info.version >= 0x0A01006A ) { - NifStream( weight, out, info ); - if ( textKeys != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(textKeys) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( cycleType, out, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - NifStream( unknownInt0, out, info ); - }; - if ( info.version >= 0x0A01006A ) { - NifStream( frequency, out, info ); - NifStream( startTime, out, info ); - NifStream( stopTime, out, info ); - }; - if ( ( info.version >= 0x0A020000 ) && ( info.version <= 0x0A020000 ) ) { - NifStream( unknownFloat2, out, info ); - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - NifStream( unknownByte, out, info ); - }; - if ( info.version >= 0x0A01006A ) { - if ( manager != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(manager) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( targetName, out, info ); - }; - if ( info.version >= 0x0A020000 ) { - if ( stringPalette != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(stringPalette) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiControllerSequence::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiSequence::asString(); - out << " Weight: " << weight << endl; - out << " Text Keys: " << textKeys << endl; - out << " Cycle Type: " << cycleType << endl; - out << " Unknown Int 0: " << unknownInt0 << endl; - out << " Frequency: " << frequency << endl; - out << " Start Time: " << startTime << endl; - out << " Stop Time: " << stopTime << endl; - out << " Unknown Float 2: " << unknownFloat2 << endl; - out << " Unknown Byte: " << unknownByte << endl; - out << " Manager: " << manager << endl; - out << " Target Name: " << targetName << endl; - out << " String Palette: " << stringPalette << endl; - return out.str(); -} - -void NiControllerSequence::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiSequence::FixLinks( objects, link_stack, info ); - if ( info.version >= 0x0A01006A ) { - textKeys = FixLink<NiTextKeyExtraData>( objects, link_stack, info ); - manager = FixLink<NiControllerManager>( objects, link_stack, info ); - }; - if ( info.version >= 0x0A020000 ) { - stringPalette = FixLink<NiStringPalette>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiControllerSequence::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiSequence::GetRefs(); - if ( textKeys != NULL ) - refs.push_back(StaticCast<NiObject>(textKeys)); - if ( stringPalette != NULL ) - refs.push_back(StaticCast<NiObject>(stringPalette)); - return refs; -} - -void NiAVObjectPalette::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::Read( in, link_stack, info ); -} - -void NiAVObjectPalette::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); -} - -std::string NiAVObjectPalette::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - return out.str(); -} - -void NiAVObjectPalette::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiAVObjectPalette::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -void NiDefaultAVObjectPalette::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiAVObjectPalette::Read( in, link_stack, info ); - NifStream( unknownInt, in, info ); - NifStream( numObjs, in, info ); - objs.resize(numObjs); - for (unsigned int i1 = 0; i1 < objs.size(); i1++) { - NifStream( objs[i1].name, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiDefaultAVObjectPalette::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiAVObjectPalette::Write( out, link_map, info ); - numObjs = (unsigned int)(objs.size()); - NifStream( unknownInt, out, info ); - NifStream( numObjs, out, info ); - for (unsigned int i1 = 0; i1 < objs.size(); i1++) { - NifStream( objs[i1].name, out, info ); - if ( objs[i1].avObject != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(objs[i1].avObject) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiDefaultAVObjectPalette::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiAVObjectPalette::asString(); - numObjs = (unsigned int)(objs.size()); - out << " Unknown Int: " << unknownInt << endl; - out << " Num Objs: " << numObjs << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < objs.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - out << " Name: " << objs[i1].name << endl; - out << " AV Object: " << objs[i1].avObject << endl; - }; - return out.str(); -} - -void NiDefaultAVObjectPalette::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiAVObjectPalette::FixLinks( objects, link_stack, info ); - for (unsigned int i1 = 0; i1 < objs.size(); i1++) { - objs[i1].avObject = FixLink<NiAVObject>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiDefaultAVObjectPalette::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiAVObjectPalette::GetRefs(); - for (unsigned int i1 = 0; i1 < objs.size(); i1++) { - }; - return refs; -} - -void NiDirectionalLight::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiLight::Read( in, link_stack, info ); -} - -void NiDirectionalLight::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiLight::Write( out, link_map, info ); -} - -std::string NiDirectionalLight::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiLight::asString(); - return out.str(); -} - -void NiDirectionalLight::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiLight::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiDirectionalLight::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiLight::GetRefs(); - return refs; -} - -void NiDitherProperty::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::Read( in, link_stack, info ); - NifStream( flags, in, info ); -} - -void NiDitherProperty::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiProperty::Write( out, link_map, info ); - NifStream( flags, out, info ); -} - -std::string NiDitherProperty::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiProperty::asString(); - out << " Flags: " << flags << endl; - return out.str(); -} - -void NiDitherProperty::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiDitherProperty::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiProperty::GetRefs(); - return refs; -} - -void NiRollController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiSingleInterpController::Read( in, link_stack, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiRollController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiSingleInterpController::Write( out, link_map, info ); - if ( data != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiRollController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiSingleInterpController::asString(); - out << " Data: " << data << endl; - return out.str(); -} - -void NiRollController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiSingleInterpController::FixLinks( objects, link_stack, info ); - data = FixLink<NiFloatData>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiRollController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiSingleInterpController::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - return refs; -} - -void NiFloatData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::Read( in, link_stack, info ); - NifStream( data.numKeys, in, info ); - if ( (data.numKeys != 0) ) { - NifStream( data.interpolation, in, info ); - }; - data.keys.resize(data.numKeys); - for (unsigned int i1 = 0; i1 < data.keys.size(); i1++) { - NifStream( data.keys[i1], in, info, data.interpolation ); - }; -} - -void NiFloatData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - data.numKeys = (unsigned int)(data.keys.size()); - NifStream( data.numKeys, out, info ); - if ( (data.numKeys != 0) ) { - NifStream( data.interpolation, out, info ); - }; - for (unsigned int i1 = 0; i1 < data.keys.size(); i1++) { - NifStream( data.keys[i1], out, info, data.interpolation ); - }; -} - -std::string NiFloatData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - data.numKeys = (unsigned int)(data.keys.size()); - out << " Num Keys: " << data.numKeys << endl; - if ( (data.numKeys != 0) ) { - out << " Interpolation: " << data.interpolation << endl; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < data.keys.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Keys[" << i1 << "]: " << data.keys[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiFloatData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiFloatData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -void NiFloatExtraData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::Read( in, link_stack, info ); - NifStream( floatData, in, info ); -} - -void NiFloatExtraData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiExtraData::Write( out, link_map, info ); - NifStream( floatData, out, info ); -} - -std::string NiFloatExtraData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiExtraData::asString(); - out << " Float Data: " << floatData << endl; - return out.str(); -} - -void NiFloatExtraData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiFloatExtraData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiExtraData::GetRefs(); - return refs; -} - -void NiFloatsExtraData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::Read( in, link_stack, info ); - NifStream( numFloats, in, info ); - data.resize(numFloats); - for (unsigned int i1 = 0; i1 < data.size(); i1++) { - NifStream( data[i1], in, info ); - }; -} - -void NiFloatsExtraData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiExtraData::Write( out, link_map, info ); - numFloats = (unsigned int)(data.size()); - NifStream( numFloats, out, info ); - for (unsigned int i1 = 0; i1 < data.size(); i1++) { - NifStream( data[i1], out, info ); - }; -} - -std::string NiFloatsExtraData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiExtraData::asString(); - numFloats = (unsigned int)(data.size()); - out << " Num Floats: " << numFloats << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < data.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Data[" << i1 << "]: " << data[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiFloatsExtraData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiFloatsExtraData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiExtraData::GetRefs(); - return refs; -} - -void NiFogProperty::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::Read( in, link_stack, info ); - NifStream( flags, in, info ); - NifStream( fogDepth, in, info ); - NifStream( fogColor, in, info ); -} - -void NiFogProperty::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiProperty::Write( out, link_map, info ); - NifStream( flags, out, info ); - NifStream( fogDepth, out, info ); - NifStream( fogColor, out, info ); -} - -std::string NiFogProperty::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiProperty::asString(); - out << " Flags: " << flags << endl; - out << " Fog Depth: " << fogDepth << endl; - out << " Fog Color: " << fogColor << endl; - return out.str(); -} - -void NiFogProperty::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiFogProperty::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiProperty::GetRefs(); - return refs; -} - -void NiGravity::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - AParticleModifier::Read( in, link_stack, info ); - if ( info.version >= 0x04000002 ) { - NifStream( unknownFloat1, in, info ); - }; - NifStream( force, in, info ); - NifStream( type, in, info ); - NifStream( position, in, info ); - NifStream( direction, in, info ); -} - -void NiGravity::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - AParticleModifier::Write( out, link_map, info ); - if ( info.version >= 0x04000002 ) { - NifStream( unknownFloat1, out, info ); - }; - NifStream( force, out, info ); - NifStream( type, out, info ); - NifStream( position, out, info ); - NifStream( direction, out, info ); -} - -std::string NiGravity::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << AParticleModifier::asString(); - out << " Unknown Float 1: " << unknownFloat1 << endl; - out << " Force: " << force << endl; - out << " Type: " << type << endl; - out << " Position: " << position << endl; - out << " Direction: " << direction << endl; - return out.str(); -} - -void NiGravity::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - AParticleModifier::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiGravity::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = AParticleModifier::GetRefs(); - return refs; -} - -void NiIntegerExtraData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::Read( in, link_stack, info ); - NifStream( integerData, in, info ); -} - -void NiIntegerExtraData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiExtraData::Write( out, link_map, info ); - NifStream( integerData, out, info ); -} - -std::string NiIntegerExtraData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiExtraData::asString(); - out << " Integer Data: " << integerData << endl; - return out.str(); -} - -void NiIntegerExtraData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiIntegerExtraData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiExtraData::GetRefs(); - return refs; -} - -void BSXFlags::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiIntegerExtraData::Read( in, link_stack, info ); -} - -void BSXFlags::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiIntegerExtraData::Write( out, link_map, info ); -} - -std::string BSXFlags::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiIntegerExtraData::asString(); - return out.str(); -} - -void BSXFlags::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiIntegerExtraData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> BSXFlags::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiIntegerExtraData::GetRefs(); - return refs; -} - -void NiIntegersExtraData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::Read( in, link_stack, info ); - NifStream( numIntegers, in, info ); - data.resize(numIntegers); - for (unsigned int i1 = 0; i1 < data.size(); i1++) { - NifStream( data[i1], in, info ); - }; -} - -void NiIntegersExtraData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiExtraData::Write( out, link_map, info ); - numIntegers = (unsigned int)(data.size()); - NifStream( numIntegers, out, info ); - for (unsigned int i1 = 0; i1 < data.size(); i1++) { - NifStream( data[i1], out, info ); - }; -} - -std::string NiIntegersExtraData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiExtraData::asString(); - numIntegers = (unsigned int)(data.size()); - out << " Num Integers: " << numIntegers << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < data.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Data[" << i1 << "]: " << data[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiIntegersExtraData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiIntegersExtraData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiExtraData::GetRefs(); - return refs; -} - -void NiKeyframeController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiTimeController::Read( in, link_stack, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiKeyframeController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiTimeController::Write( out, link_map, info ); - if ( data != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiKeyframeController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiTimeController::asString(); - out << " Data: " << data << endl; - return out.str(); -} - -void NiKeyframeController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTimeController::FixLinks( objects, link_stack, info ); - data = FixLink<NiKeyframeData>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiKeyframeController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiTimeController::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - return refs; -} - -void BSKeyframeController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiKeyframeController::Read( in, link_stack, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void BSKeyframeController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiKeyframeController::Write( out, link_map, info ); - if ( data2 != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data2) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string BSKeyframeController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiKeyframeController::asString(); - out << " Data 2: " << data2 << endl; - return out.str(); -} - -void BSKeyframeController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiKeyframeController::FixLinks( objects, link_stack, info ); - data2 = FixLink<NiKeyframeData>( objects, link_stack, info ); -} - -std::list<NiObjectRef> BSKeyframeController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiKeyframeController::GetRefs(); - if ( data2 != NULL ) - refs.push_back(StaticCast<NiObject>(data2)); - return refs; -} - -void NiKeyframeData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::Read( in, link_stack, info ); - NifStream( numRotationKeys, in, info ); - if ( (numRotationKeys != 0) ) { - NifStream( rotationType, in, info ); - }; - if ( (rotationType != 4) ) { - quaternionKeys.resize(numRotationKeys); - for (unsigned int i2 = 0; i2 < quaternionKeys.size(); i2++) { - NifStream( quaternionKeys[i2], in, info, rotationType ); - }; - }; - if ( info.version <= 0x0A010000 ) { - if ( (rotationType == 4) ) { - NifStream( unknownFloat, in, info ); - }; - }; - if ( (rotationType == 4) ) { - for (unsigned int i2 = 0; i2 < 3; i2++) { - NifStream( xyzRotations[i2].numKeys, in, info ); - if ( (xyzRotations[i2].numKeys != 0) ) { - NifStream( xyzRotations[i2].interpolation, in, info ); - }; - xyzRotations[i2].keys.resize(xyzRotations[i2].numKeys); - for (unsigned int i3 = 0; i3 < xyzRotations[i2].keys.size(); i3++) { - NifStream( xyzRotations[i2].keys[i3], in, info, xyzRotations[i2].interpolation ); - }; - }; - }; - NifStream( translations.numKeys, in, info ); - if ( (translations.numKeys != 0) ) { - NifStream( translations.interpolation, in, info ); - }; - translations.keys.resize(translations.numKeys); - for (unsigned int i1 = 0; i1 < translations.keys.size(); i1++) { - NifStream( translations.keys[i1], in, info, translations.interpolation ); - }; - NifStream( scales.numKeys, in, info ); - if ( (scales.numKeys != 0) ) { - NifStream( scales.interpolation, in, info ); - }; - scales.keys.resize(scales.numKeys); - for (unsigned int i1 = 0; i1 < scales.keys.size(); i1++) { - NifStream( scales.keys[i1], in, info, scales.interpolation ); - }; -} - -void NiKeyframeData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - NifStream( numRotationKeys, out, info ); - if ( (numRotationKeys != 0) ) { - NifStream( rotationType, out, info ); - }; - if ( (rotationType != 4) ) { - for (unsigned int i2 = 0; i2 < quaternionKeys.size(); i2++) { - NifStream( quaternionKeys[i2], out, info, rotationType ); - }; - }; - if ( info.version <= 0x0A010000 ) { - if ( (rotationType == 4) ) { - NifStream( unknownFloat, out, info ); - }; - }; - if ( (rotationType == 4) ) { - for (unsigned int i2 = 0; i2 < 3; i2++) { - xyzRotations[i2].numKeys = (unsigned int)(xyzRotations[i2].keys.size()); - NifStream( xyzRotations[i2].numKeys, out, info ); - if ( (xyzRotations[i2].numKeys != 0) ) { - NifStream( xyzRotations[i2].interpolation, out, info ); - }; - for (unsigned int i3 = 0; i3 < xyzRotations[i2].keys.size(); i3++) { - NifStream( xyzRotations[i2].keys[i3], out, info, xyzRotations[i2].interpolation ); - }; - }; - }; - translations.numKeys = (unsigned int)(translations.keys.size()); - NifStream( translations.numKeys, out, info ); - if ( (translations.numKeys != 0) ) { - NifStream( translations.interpolation, out, info ); - }; - for (unsigned int i1 = 0; i1 < translations.keys.size(); i1++) { - NifStream( translations.keys[i1], out, info, translations.interpolation ); - }; - scales.numKeys = (unsigned int)(scales.keys.size()); - NifStream( scales.numKeys, out, info ); - if ( (scales.numKeys != 0) ) { - NifStream( scales.interpolation, out, info ); - }; - for (unsigned int i1 = 0; i1 < scales.keys.size(); i1++) { - NifStream( scales.keys[i1], out, info, scales.interpolation ); - }; -} - -std::string NiKeyframeData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - out << " Num Rotation Keys: " << numRotationKeys << endl; - if ( (numRotationKeys != 0) ) { - out << " Rotation Type: " << rotationType << endl; - }; - if ( (rotationType != 4) ) { - array_output_count = 0; - for (unsigned int i2 = 0; i2 < quaternionKeys.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Quaternion Keys[" << i2 << "]: " << quaternionKeys[i2] << endl; - array_output_count++; - }; - }; - if ( (rotationType == 4) ) { - out << " Unknown Float: " << unknownFloat << endl; - array_output_count = 0; - for (unsigned int i2 = 0; i2 < 3; i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - xyzRotations[i2].numKeys = (unsigned int)(xyzRotations[i2].keys.size()); - out << " Num Keys: " << xyzRotations[i2].numKeys << endl; - if ( (xyzRotations[i2].numKeys != 0) ) { - out << " Interpolation: " << xyzRotations[i2].interpolation << endl; - }; - array_output_count = 0; - for (unsigned int i3 = 0; i3 < xyzRotations[i2].keys.size(); i3++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Keys[" << i3 << "]: " << xyzRotations[i2].keys[i3] << endl; - array_output_count++; - }; - }; - }; - translations.numKeys = (unsigned int)(translations.keys.size()); - out << " Num Keys: " << translations.numKeys << endl; - if ( (translations.numKeys != 0) ) { - out << " Interpolation: " << translations.interpolation << endl; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < translations.keys.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Keys[" << i1 << "]: " << translations.keys[i1] << endl; - array_output_count++; - }; - scales.numKeys = (unsigned int)(scales.keys.size()); - out << " Num Keys: " << scales.numKeys << endl; - if ( (scales.numKeys != 0) ) { - out << " Interpolation: " << scales.interpolation << endl; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < scales.keys.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Keys[" << i1 << "]: " << scales.keys[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiKeyframeData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiKeyframeData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -void NiLookAtController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiTimeController::Read( in, link_stack, info ); - if ( info.version >= 0x0A010000 ) { - NifStream( unknown1, in, info ); - }; - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiLookAtController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiTimeController::Write( out, link_map, info ); - if ( info.version >= 0x0A010000 ) { - NifStream( unknown1, out, info ); - }; - if ( lookAtNode != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(lookAtNode) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiLookAtController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiTimeController::asString(); - out << " Unknown1: " << unknown1 << endl; - out << " Look At Node: " << lookAtNode << endl; - return out.str(); -} - -void NiLookAtController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTimeController::FixLinks( objects, link_stack, info ); - lookAtNode = FixLink<NiNode>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiLookAtController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiTimeController::GetRefs(); - if ( lookAtNode != NULL ) - refs.push_back(StaticCast<NiObject>(lookAtNode)); - return refs; -} - -void NiLookAtInterpolator::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiInterpolator::Read( in, link_stack, info ); - NifStream( unknownShort, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( unknownFloat, in, info ); - NifStream( translation, in, info ); - NifStream( rotation, in, info ); - NifStream( scale, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiLookAtInterpolator::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiInterpolator::Write( out, link_map, info ); - NifStream( unknownShort, out, info ); - if ( lookAt != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(lookAt) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( unknownFloat, out, info ); - NifStream( translation, out, info ); - NifStream( rotation, out, info ); - NifStream( scale, out, info ); - if ( unknownLink1 != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(unknownLink1) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - if ( unknownLink2 != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(unknownLink2) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - if ( unknownLink3 != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(unknownLink3) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiLookAtInterpolator::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiInterpolator::asString(); - out << " Unknown Short: " << unknownShort << endl; - out << " Look At: " << lookAt << endl; - out << " Unknown Float: " << unknownFloat << endl; - out << " Translation: " << translation << endl; - out << " Rotation: " << rotation << endl; - out << " Scale: " << scale << endl; - out << " Unknown Link 1: " << unknownLink1 << endl; - out << " Unknown Link 2: " << unknownLink2 << endl; - out << " Unknown Link 3: " << unknownLink3 << endl; - return out.str(); -} - -void NiLookAtInterpolator::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiInterpolator::FixLinks( objects, link_stack, info ); - lookAt = FixLink<NiNode>( objects, link_stack, info ); - unknownLink1 = FixLink<NiPoint3Interpolator>( objects, link_stack, info ); - unknownLink2 = FixLink<NiFloatInterpolator>( objects, link_stack, info ); - unknownLink3 = FixLink<NiFloatInterpolator>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiLookAtInterpolator::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiInterpolator::GetRefs(); - if ( lookAt != NULL ) - refs.push_back(StaticCast<NiObject>(lookAt)); - if ( unknownLink1 != NULL ) - refs.push_back(StaticCast<NiObject>(unknownLink1)); - if ( unknownLink2 != NULL ) - refs.push_back(StaticCast<NiObject>(unknownLink2)); - if ( unknownLink3 != NULL ) - refs.push_back(StaticCast<NiObject>(unknownLink3)); - return refs; -} - -void NiMaterialProperty::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::Read( in, link_stack, info ); - if ( info.version <= 0x0A000102 ) { - NifStream( flags, in, info ); - }; - NifStream( ambientColor, in, info ); - NifStream( diffuseColor, in, info ); - NifStream( specularColor, in, info ); - NifStream( emissiveColor, in, info ); - NifStream( glossiness, in, info ); - NifStream( alpha, in, info ); -} - -void NiMaterialProperty::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiProperty::Write( out, link_map, info ); - if ( info.version <= 0x0A000102 ) { - NifStream( flags, out, info ); - }; - NifStream( ambientColor, out, info ); - NifStream( diffuseColor, out, info ); - NifStream( specularColor, out, info ); - NifStream( emissiveColor, out, info ); - NifStream( glossiness, out, info ); - NifStream( alpha, out, info ); -} - -std::string NiMaterialProperty::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiProperty::asString(); - out << " Flags: " << flags << endl; - out << " Ambient Color: " << ambientColor << endl; - out << " Diffuse Color: " << diffuseColor << endl; - out << " Specular Color: " << specularColor << endl; - out << " Emissive Color: " << emissiveColor << endl; - out << " Glossiness: " << glossiness << endl; - out << " Alpha: " << alpha << endl; - return out.str(); -} - -void NiMaterialProperty::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiMaterialProperty::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiProperty::GetRefs(); - return refs; -} - -void NiMorphData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::Read( in, link_stack, info ); - NifStream( numMorphs, in, info ); - NifStream( numVertices, in, info ); - NifStream( unknownByte, in, info ); - morphs.resize(numMorphs); - for (unsigned int i1 = 0; i1 < morphs.size(); i1++) { - if ( info.version >= 0x0A01006A ) { - NifStream( morphs[i1].frameName, in, info ); - }; - if ( info.version <= 0x0A010000 ) { - NifStream( morphs[i1].numKeys, in, info ); - NifStream( morphs[i1].interpolation, in, info ); - morphs[i1].keys.resize(morphs[i1].numKeys); - for (unsigned int i3 = 0; i3 < morphs[i1].keys.size(); i3++) { - NifStream( morphs[i1].keys[i3], in, info, morphs[i1].interpolation ); - }; - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - NifStream( morphs[i1].unknownInt, in, info ); - }; - morphs[i1].vectors.resize(numVertices); - for (unsigned int i2 = 0; i2 < morphs[i1].vectors.size(); i2++) { - NifStream( morphs[i1].vectors[i2], in, info ); - }; - }; -} - -void NiMorphData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - numMorphs = (unsigned int)(morphs.size()); - NifStream( numMorphs, out, info ); - NifStream( numVertices, out, info ); - NifStream( unknownByte, out, info ); - for (unsigned int i1 = 0; i1 < morphs.size(); i1++) { - morphs[i1].numKeys = (unsigned int)(morphs[i1].keys.size()); - if ( info.version >= 0x0A01006A ) { - NifStream( morphs[i1].frameName, out, info ); - }; - if ( info.version <= 0x0A010000 ) { - NifStream( morphs[i1].numKeys, out, info ); - NifStream( morphs[i1].interpolation, out, info ); - for (unsigned int i3 = 0; i3 < morphs[i1].keys.size(); i3++) { - NifStream( morphs[i1].keys[i3], out, info, morphs[i1].interpolation ); - }; - }; - if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) { - NifStream( morphs[i1].unknownInt, out, info ); - }; - for (unsigned int i2 = 0; i2 < morphs[i1].vectors.size(); i2++) { - NifStream( morphs[i1].vectors[i2], out, info ); - }; - }; -} - -std::string NiMorphData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - numMorphs = (unsigned int)(morphs.size()); - out << " Num Morphs: " << numMorphs << endl; - out << " Num Vertices: " << numVertices << endl; - out << " Unknown Byte: " << unknownByte << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < morphs.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - morphs[i1].numKeys = (unsigned int)(morphs[i1].keys.size()); - out << " Frame Name: " << morphs[i1].frameName << endl; - out << " Num Keys: " << morphs[i1].numKeys << endl; - out << " Interpolation: " << morphs[i1].interpolation << endl; - array_output_count = 0; - for (unsigned int i2 = 0; i2 < morphs[i1].keys.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Keys[" << i2 << "]: " << morphs[i1].keys[i2] << endl; - array_output_count++; - }; - out << " Unknown Int: " << morphs[i1].unknownInt << endl; - array_output_count = 0; - for (unsigned int i2 = 0; i2 < morphs[i1].vectors.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Vectors[" << i2 << "]: " << morphs[i1].vectors[i2] << endl; - array_output_count++; - }; - }; - return out.str(); -} - -void NiMorphData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiMorphData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -void NiNode::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiAVObject::Read( in, link_stack, info ); - NifStream( numChildren, in, info ); - children.resize(numChildren); - for (unsigned int i1 = 0; i1 < children.size(); i1++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - NifStream( numEffects, in, info ); - effects.resize(numEffects); - for (unsigned int i1 = 0; i1 < effects.size(); i1++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiNode::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiAVObject::Write( out, link_map, info ); - numEffects = (unsigned int)(effects.size()); - numChildren = (unsigned int)(children.size()); - NifStream( numChildren, out, info ); - for (unsigned int i1 = 0; i1 < children.size(); i1++) { - if ( children[i1] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(children[i1]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - NifStream( numEffects, out, info ); - for (unsigned int i1 = 0; i1 < effects.size(); i1++) { - if ( effects[i1] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(effects[i1]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiNode::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiAVObject::asString(); - numEffects = (unsigned int)(effects.size()); - numChildren = (unsigned int)(children.size()); - out << " Num Children: " << numChildren << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < children.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Children[" << i1 << "]: " << children[i1] << endl; - array_output_count++; - }; - out << " Num Effects: " << numEffects << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < effects.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Effects[" << i1 << "]: " << effects[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiNode::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiAVObject::FixLinks( objects, link_stack, info ); - for (unsigned int i1 = 0; i1 < children.size(); i1++) { - children[i1] = FixLink<NiAVObject>( objects, link_stack, info ); - }; - for (unsigned int i1 = 0; i1 < effects.size(); i1++) { - effects[i1] = FixLink<NiDynamicEffect>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiNode::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiAVObject::GetRefs(); - for (unsigned int i1 = 0; i1 < children.size(); i1++) { - if ( children[i1] != NULL ) - refs.push_back(StaticCast<NiObject>(children[i1])); - }; - for (unsigned int i1 = 0; i1 < effects.size(); i1++) { - if ( effects[i1] != NULL ) - refs.push_back(StaticCast<NiObject>(effects[i1])); - }; - return refs; -} - -void NiBone::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiNode::Read( in, link_stack, info ); -} - -void NiBone::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiNode::Write( out, link_map, info ); -} - -std::string NiBone::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiNode::asString(); - return out.str(); -} - -void NiBone::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiNode::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBone::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiNode::GetRefs(); - return refs; -} - -void AvoidNode::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiNode::Read( in, link_stack, info ); -} - -void AvoidNode::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiNode::Write( out, link_map, info ); -} - -std::string AvoidNode::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiNode::asString(); - return out.str(); -} - -void AvoidNode::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiNode::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> AvoidNode::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiNode::GetRefs(); - return refs; -} - -void FxWidget::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiNode::Read( in, link_stack, info ); - NifStream( unknown1, in, info ); - for (unsigned int i1 = 0; i1 < 292; i1++) { - NifStream( unknown292Bytes[i1], in, info ); - }; -} - -void FxWidget::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiNode::Write( out, link_map, info ); - NifStream( unknown1, out, info ); - for (unsigned int i1 = 0; i1 < 292; i1++) { - NifStream( unknown292Bytes[i1], out, info ); - }; -} - -std::string FxWidget::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiNode::asString(); - out << " Unknown1: " << unknown1 << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 292; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown 292 Bytes[" << i1 << "]: " << unknown292Bytes[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void FxWidget::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiNode::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> FxWidget::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiNode::GetRefs(); - return refs; -} - -void FxButton::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - FxWidget::Read( in, link_stack, info ); -} - -void FxButton::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - FxWidget::Write( out, link_map, info ); -} - -std::string FxButton::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << FxWidget::asString(); - return out.str(); -} - -void FxButton::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - FxWidget::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> FxButton::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = FxWidget::GetRefs(); - return refs; -} - -void FxRadioButton::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - FxWidget::Read( in, link_stack, info ); - NifStream( unknownInt1, in, info ); - NifStream( unknownInt2, in, info ); - NifStream( unknownInt3, in, info ); - NifStream( numButtons, in, info ); - buttons.resize(numButtons); - for (unsigned int i1 = 0; i1 < buttons.size(); i1++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void FxRadioButton::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - FxWidget::Write( out, link_map, info ); - numButtons = (unsigned int)(buttons.size()); - NifStream( unknownInt1, out, info ); - NifStream( unknownInt2, out, info ); - NifStream( unknownInt3, out, info ); - NifStream( numButtons, out, info ); - for (unsigned int i1 = 0; i1 < buttons.size(); i1++) { - if ( buttons[i1] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(buttons[i1]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string FxRadioButton::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << FxWidget::asString(); - numButtons = (unsigned int)(buttons.size()); - out << " Unknown Int 1: " << unknownInt1 << endl; - out << " Unknown Int 2: " << unknownInt2 << endl; - out << " Unknown Int 3: " << unknownInt3 << endl; - out << " Num Buttons: " << numButtons << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < buttons.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Buttons[" << i1 << "]: " << buttons[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void FxRadioButton::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - FxWidget::FixLinks( objects, link_stack, info ); - for (unsigned int i1 = 0; i1 < buttons.size(); i1++) { - buttons[i1] = FixLink<FxRadioButton>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> FxRadioButton::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = FxWidget::GetRefs(); - for (unsigned int i1 = 0; i1 < buttons.size(); i1++) { - }; - return refs; -} - -void NiBillboardNode::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiNode::Read( in, link_stack, info ); - if ( info.version >= 0x0A010000 ) { - NifStream( billboardMode, in, info ); - }; -} - -void NiBillboardNode::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiNode::Write( out, link_map, info ); - if ( info.version >= 0x0A010000 ) { - NifStream( billboardMode, out, info ); - }; -} - -std::string NiBillboardNode::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiNode::asString(); - out << " Billboard Mode: " << billboardMode << endl; - return out.str(); -} - -void NiBillboardNode::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiNode::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBillboardNode::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiNode::GetRefs(); - return refs; -} - -void NiBSAnimationNode::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiNode::Read( in, link_stack, info ); -} - -void NiBSAnimationNode::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiNode::Write( out, link_map, info ); -} - -std::string NiBSAnimationNode::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiNode::asString(); - return out.str(); -} - -void NiBSAnimationNode::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiNode::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBSAnimationNode::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiNode::GetRefs(); - return refs; -} - -void NiBSParticleNode::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiNode::Read( in, link_stack, info ); -} - -void NiBSParticleNode::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiNode::Write( out, link_map, info ); -} - -std::string NiBSParticleNode::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiNode::asString(); - return out.str(); -} - -void NiBSParticleNode::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiNode::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBSParticleNode::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiNode::GetRefs(); - return refs; -} - -void NiSwitchNode::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiNode::Read( in, link_stack, info ); -} - -void NiSwitchNode::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiNode::Write( out, link_map, info ); -} - -std::string NiSwitchNode::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiNode::asString(); - return out.str(); -} - -void NiSwitchNode::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiNode::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiSwitchNode::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiNode::GetRefs(); - return refs; -} - -void NiLODNode::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiSwitchNode::Read( in, link_stack, info ); - for (unsigned int i1 = 0; i1 < 4; i1++) { - NifStream( unknown4Bytes[i1], in, info ); - }; - if ( ( info.version >= 0x04000002 ) && ( info.version <= 0x0A000100 ) ) { - NifStream( lodCenter, in, info ); - }; - if ( info.version <= 0x0A000100 ) { - NifStream( numLodLevels, in, info ); - lodLevels.resize(numLodLevels); - for (unsigned int i2 = 0; i2 < lodLevels.size(); i2++) { - NifStream( lodLevels[i2].nearExtent, in, info ); - NifStream( lodLevels[i2].farExtent, in, info ); - if ( info.version <= 0x03010000 ) { - for (unsigned int i4 = 0; i4 < 3; i4++) { - NifStream( lodLevels[i2].unknownInts[i4], in, info ); - }; - }; - }; - }; - if ( info.version >= 0x0A010000 ) { - NifStream( unknownShort, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiLODNode::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiSwitchNode::Write( out, link_map, info ); - numLodLevels = (unsigned int)(lodLevels.size()); - for (unsigned int i1 = 0; i1 < 4; i1++) { - NifStream( unknown4Bytes[i1], out, info ); - }; - if ( ( info.version >= 0x04000002 ) && ( info.version <= 0x0A000100 ) ) { - NifStream( lodCenter, out, info ); - }; - if ( info.version <= 0x0A000100 ) { - NifStream( numLodLevels, out, info ); - for (unsigned int i2 = 0; i2 < lodLevels.size(); i2++) { - NifStream( lodLevels[i2].nearExtent, out, info ); - NifStream( lodLevels[i2].farExtent, out, info ); - if ( info.version <= 0x03010000 ) { - for (unsigned int i4 = 0; i4 < 3; i4++) { - NifStream( lodLevels[i2].unknownInts[i4], out, info ); - }; - }; - }; - }; - if ( info.version >= 0x0A010000 ) { - NifStream( unknownShort, out, info ); - if ( lodLevelData != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(lodLevelData) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiLODNode::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiSwitchNode::asString(); - numLodLevels = (unsigned int)(lodLevels.size()); - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 4; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown 4 Bytes[" << i1 << "]: " << unknown4Bytes[i1] << endl; - array_output_count++; - }; - out << " LOD Center: " << lodCenter << endl; - out << " Num LOD Levels: " << numLodLevels << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < lodLevels.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - out << " Near Extent: " << lodLevels[i1].nearExtent << endl; - out << " Far Extent: " << lodLevels[i1].farExtent << endl; - array_output_count = 0; - for (unsigned int i2 = 0; i2 < 3; i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Ints[" << i2 << "]: " << lodLevels[i1].unknownInts[i2] << endl; - array_output_count++; - }; - }; - out << " Unknown Short: " << unknownShort << endl; - out << " LOD Level Data: " << lodLevelData << endl; - return out.str(); -} - -void NiLODNode::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiSwitchNode::FixLinks( objects, link_stack, info ); - if ( info.version >= 0x0A010000 ) { - lodLevelData = FixLink<NiLODData>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiLODNode::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiSwitchNode::GetRefs(); - if ( lodLevelData != NULL ) - refs.push_back(StaticCast<NiObject>(lodLevelData)); - return refs; -} - -void NiPalette::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::Read( in, link_stack, info ); - NifStream( unknownByte, in, info ); - NifStream( numEntries_, in, info ); - for (unsigned int i1 = 0; i1 < 256; i1++) { - for (unsigned int i2 = 0; i2 < 4; i2++) { - NifStream( palette[i1][i2], in, info ); - }; - }; -} - -void NiPalette::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - NifStream( unknownByte, out, info ); - NifStream( numEntries_, out, info ); - for (unsigned int i1 = 0; i1 < 256; i1++) { - for (unsigned int i2 = 0; i2 < 4; i2++) { - NifStream( palette[i1][i2], out, info ); - }; - }; -} - -std::string NiPalette::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - out << " Unknown Byte: " << unknownByte << endl; - out << " Num Entries?: " << numEntries_ << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 256; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - for (unsigned int i2 = 0; i2 < 4; i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Palette[" << i2 << "]: " << palette[i1][i2] << endl; - array_output_count++; - }; - }; - return out.str(); -} - -void NiPalette::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPalette::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -void NiParticleBomb::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - AParticleModifier::Read( in, link_stack, info ); - NifStream( unknownFloat1, in, info ); - NifStream( unknownFloat2, in, info ); - NifStream( unknownFloat3, in, info ); - NifStream( unknownFloat4, in, info ); - NifStream( unknownInt1, in, info ); - NifStream( unknownInt2, in, info ); - NifStream( unknownFloat5, in, info ); - NifStream( unknownFloat6, in, info ); - NifStream( unknownFloat7, in, info ); - NifStream( unknownFloat8, in, info ); - NifStream( unknownFloat9, in, info ); - NifStream( unknownFloat10, in, info ); -} - -void NiParticleBomb::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - AParticleModifier::Write( out, link_map, info ); - NifStream( unknownFloat1, out, info ); - NifStream( unknownFloat2, out, info ); - NifStream( unknownFloat3, out, info ); - NifStream( unknownFloat4, out, info ); - NifStream( unknownInt1, out, info ); - NifStream( unknownInt2, out, info ); - NifStream( unknownFloat5, out, info ); - NifStream( unknownFloat6, out, info ); - NifStream( unknownFloat7, out, info ); - NifStream( unknownFloat8, out, info ); - NifStream( unknownFloat9, out, info ); - NifStream( unknownFloat10, out, info ); -} - -std::string NiParticleBomb::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << AParticleModifier::asString(); - out << " Unknown Float 1: " << unknownFloat1 << endl; - out << " Unknown Float 2: " << unknownFloat2 << endl; - out << " Unknown Float 3: " << unknownFloat3 << endl; - out << " Unknown Float 4: " << unknownFloat4 << endl; - out << " Unknown Int 1: " << unknownInt1 << endl; - out << " Unknown Int 2: " << unknownInt2 << endl; - out << " Unknown Float 5: " << unknownFloat5 << endl; - out << " Unknown Float 6: " << unknownFloat6 << endl; - out << " Unknown Float 7: " << unknownFloat7 << endl; - out << " Unknown Float 8: " << unknownFloat8 << endl; - out << " Unknown Float 9: " << unknownFloat9 << endl; - out << " Unknown Float 10: " << unknownFloat10 << endl; - return out.str(); -} - -void NiParticleBomb::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - AParticleModifier::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiParticleBomb::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = AParticleModifier::GetRefs(); - return refs; -} - -void NiParticleColorModifier::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - AParticleModifier::Read( in, link_stack, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiParticleColorModifier::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - AParticleModifier::Write( out, link_map, info ); - if ( colorData != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(colorData) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiParticleColorModifier::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << AParticleModifier::asString(); - out << " Color Data: " << colorData << endl; - return out.str(); -} - -void NiParticleColorModifier::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - AParticleModifier::FixLinks( objects, link_stack, info ); - colorData = FixLink<NiColorData>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiParticleColorModifier::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = AParticleModifier::GetRefs(); - if ( colorData != NULL ) - refs.push_back(StaticCast<NiObject>(colorData)); - return refs; -} - -void NiParticleGrowFade::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - AParticleModifier::Read( in, link_stack, info ); - NifStream( grow, in, info ); - NifStream( fade, in, info ); -} - -void NiParticleGrowFade::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - AParticleModifier::Write( out, link_map, info ); - NifStream( grow, out, info ); - NifStream( fade, out, info ); -} - -std::string NiParticleGrowFade::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << AParticleModifier::asString(); - out << " Grow: " << grow << endl; - out << " Fade: " << fade << endl; - return out.str(); -} - -void NiParticleGrowFade::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - AParticleModifier::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiParticleGrowFade::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = AParticleModifier::GetRefs(); - return refs; -} - -void NiParticleMeshModifier::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - AParticleModifier::Read( in, link_stack, info ); - NifStream( numParticleMeshes, in, info ); - particleMeshes.resize(numParticleMeshes); - for (unsigned int i1 = 0; i1 < particleMeshes.size(); i1++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiParticleMeshModifier::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - AParticleModifier::Write( out, link_map, info ); - numParticleMeshes = (unsigned int)(particleMeshes.size()); - NifStream( numParticleMeshes, out, info ); - for (unsigned int i1 = 0; i1 < particleMeshes.size(); i1++) { - if ( particleMeshes[i1] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(particleMeshes[i1]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiParticleMeshModifier::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << AParticleModifier::asString(); - numParticleMeshes = (unsigned int)(particleMeshes.size()); - out << " Num Particle Meshes: " << numParticleMeshes << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < particleMeshes.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Particle Meshes[" << i1 << "]: " << particleMeshes[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiParticleMeshModifier::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - AParticleModifier::FixLinks( objects, link_stack, info ); - for (unsigned int i1 = 0; i1 < particleMeshes.size(); i1++) { - particleMeshes[i1] = FixLink<NiAVObject>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiParticleMeshModifier::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = AParticleModifier::GetRefs(); - for (unsigned int i1 = 0; i1 < particleMeshes.size(); i1++) { - if ( particleMeshes[i1] != NULL ) - refs.push_back(StaticCast<NiObject>(particleMeshes[i1])); - }; - return refs; -} - -void NiParticleRotation::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - AParticleModifier::Read( in, link_stack, info ); - NifStream( unknownByte, in, info ); - NifStream( unknownFloat1, in, info ); - NifStream( unknownFloat2, in, info ); - NifStream( unknownFloat3, in, info ); - NifStream( unknownFloat4, in, info ); -} - -void NiParticleRotation::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - AParticleModifier::Write( out, link_map, info ); - NifStream( unknownByte, out, info ); - NifStream( unknownFloat1, out, info ); - NifStream( unknownFloat2, out, info ); - NifStream( unknownFloat3, out, info ); - NifStream( unknownFloat4, out, info ); -} - -std::string NiParticleRotation::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << AParticleModifier::asString(); - out << " Unknown Byte: " << unknownByte << endl; - out << " Unknown Float 1: " << unknownFloat1 << endl; - out << " Unknown Float 2: " << unknownFloat2 << endl; - out << " Unknown Float 3: " << unknownFloat3 << endl; - out << " Unknown Float 4: " << unknownFloat4 << endl; - return out.str(); -} - -void NiParticleRotation::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - AParticleModifier::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiParticleRotation::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = AParticleModifier::GetRefs(); - return refs; -} - -void NiParticles::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiGeometry::Read( in, link_stack, info ); -} - -void NiParticles::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiGeometry::Write( out, link_map, info ); -} - -std::string NiParticles::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiGeometry::asString(); - return out.str(); -} - -void NiParticles::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiGeometry::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiParticles::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiGeometry::GetRefs(); - return refs; -} - -void NiAutoNormalParticles::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiParticles::Read( in, link_stack, info ); -} - -void NiAutoNormalParticles::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiParticles::Write( out, link_map, info ); -} - -std::string NiAutoNormalParticles::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiParticles::asString(); - return out.str(); -} - -void NiAutoNormalParticles::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiParticles::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiAutoNormalParticles::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiParticles::GetRefs(); - return refs; -} - -void NiParticleMeshes::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiParticles::Read( in, link_stack, info ); -} - -void NiParticleMeshes::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiParticles::Write( out, link_map, info ); -} - -std::string NiParticleMeshes::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiParticles::asString(); - return out.str(); -} - -void NiParticleMeshes::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiParticles::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiParticleMeshes::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiParticles::GetRefs(); - return refs; -} - -void NiParticleMeshesData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiRotatingParticlesData::Read( in, link_stack, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiParticleMeshesData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiRotatingParticlesData::Write( out, link_map, info ); - if ( unknownLink2 != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(unknownLink2) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiParticleMeshesData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiRotatingParticlesData::asString(); - out << " Unknown Link 2: " << unknownLink2 << endl; - return out.str(); -} - -void NiParticleMeshesData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiRotatingParticlesData::FixLinks( objects, link_stack, info ); - unknownLink2 = FixLink<NiAVObject>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiParticleMeshesData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiRotatingParticlesData::GetRefs(); - if ( unknownLink2 != NULL ) - refs.push_back(StaticCast<NiObject>(unknownLink2)); - return refs; -} - -void NiParticleSystem::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiParticles::Read( in, link_stack, info ); - if ( info.version >= 0x0A010000 ) { - NifStream( unknownBool, in, info ); - NifStream( numModifiers, in, info ); - modifiers.resize(numModifiers); - for (unsigned int i2 = 0; i2 < modifiers.size(); i2++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - }; -} - -void NiParticleSystem::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiParticles::Write( out, link_map, info ); - numModifiers = (unsigned int)(modifiers.size()); - if ( info.version >= 0x0A010000 ) { - NifStream( unknownBool, out, info ); - NifStream( numModifiers, out, info ); - for (unsigned int i2 = 0; i2 < modifiers.size(); i2++) { - if ( modifiers[i2] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(modifiers[i2]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - }; -} - -std::string NiParticleSystem::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiParticles::asString(); - numModifiers = (unsigned int)(modifiers.size()); - out << " Unknown Bool: " << unknownBool << endl; - out << " Num Modifiers: " << numModifiers << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < modifiers.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Modifiers[" << i1 << "]: " << modifiers[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiParticleSystem::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiParticles::FixLinks( objects, link_stack, info ); - if ( info.version >= 0x0A010000 ) { - for (unsigned int i2 = 0; i2 < modifiers.size(); i2++) { - modifiers[i2] = FixLink<NiPSysModifier>( objects, link_stack, info ); - }; - }; -} - -std::list<NiObjectRef> NiParticleSystem::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiParticles::GetRefs(); - for (unsigned int i1 = 0; i1 < modifiers.size(); i1++) { - if ( modifiers[i1] != NULL ) - refs.push_back(StaticCast<NiObject>(modifiers[i1])); - }; - return refs; -} - -void NiMeshParticleSystem::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiParticleSystem::Read( in, link_stack, info ); -} - -void NiMeshParticleSystem::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiParticleSystem::Write( out, link_map, info ); -} - -std::string NiMeshParticleSystem::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiParticleSystem::asString(); - return out.str(); -} - -void NiMeshParticleSystem::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiParticleSystem::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiMeshParticleSystem::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiParticleSystem::GetRefs(); - return refs; -} - -void NiParticleSystemController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiTimeController::Read( in, link_stack, info ); - NifStream( speed, in, info ); - NifStream( speedRandom, in, info ); - NifStream( verticalDirection, in, info ); - NifStream( verticalAngle, in, info ); - NifStream( horizontalDirection, in, info ); - NifStream( horizontalAngle, in, info ); - NifStream( unknownFloat5, in, info ); - NifStream( unknownFloat6, in, info ); - NifStream( unknownFloat7, in, info ); - NifStream( unknownFloat8, in, info ); - NifStream( unknownFloat9, in, info ); - NifStream( unknownFloat10, in, info ); - NifStream( unknownFloat11, in, info ); - NifStream( size, in, info ); - NifStream( emitStartTime, in, info ); - NifStream( emitStopTime, in, info ); - if ( info.version >= 0x04000002 ) { - NifStream( unknownByte, in, info ); - }; - NifStream( emitRate, in, info ); - NifStream( lifetime, in, info ); - NifStream( lifetimeRandom, in, info ); - if ( info.version >= 0x04000002 ) { - NifStream( emitFlags, in, info ); - }; - NifStream( startRandom, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - if ( info.version >= 0x04000002 ) { - NifStream( unknownShort2_, in, info ); - NifStream( unknownFloat13_, in, info ); - NifStream( unknownInt1_, in, info ); - NifStream( unknownInt2_, in, info ); - NifStream( unknownShort3_, in, info ); - }; - if ( info.version <= 0x03010000 ) { - NifStream( particle.velocity, in, info ); - NifStream( particle.unknownVector, in, info ); - NifStream( particle.lifetime, in, info ); - NifStream( particle.lifespan, in, info ); - NifStream( particle.timestamp, in, info ); - NifStream( particle.unknownShort, in, info ); - NifStream( particle.vertexId, in, info ); - }; - if ( info.version >= 0x04000002 ) { - NifStream( numParticles, in, info ); - NifStream( numValid, in, info ); - particles.resize(numParticles); - for (unsigned int i2 = 0; i2 < particles.size(); i2++) { - NifStream( particles[i2].velocity, in, info ); - NifStream( particles[i2].unknownVector, in, info ); - NifStream( particles[i2].lifetime, in, info ); - NifStream( particles[i2].lifespan, in, info ); - NifStream( particles[i2].timestamp, in, info ); - NifStream( particles[i2].unknownShort, in, info ); - NifStream( particles[i2].vertexId, in, info ); - }; - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - if ( info.version >= 0x04000002 ) { - NifStream( trailer, in, info ); - }; - if ( info.version <= 0x03010000 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - for (unsigned int i2 = 0; i2 < 2; i2++) { - NifStream( unkownFloats[i2], in, info ); - }; - }; -} - -void NiParticleSystemController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiTimeController::Write( out, link_map, info ); - numParticles = (unsigned short)(particles.size()); - NifStream( speed, out, info ); - NifStream( speedRandom, out, info ); - NifStream( verticalDirection, out, info ); - NifStream( verticalAngle, out, info ); - NifStream( horizontalDirection, out, info ); - NifStream( horizontalAngle, out, info ); - NifStream( unknownFloat5, out, info ); - NifStream( unknownFloat6, out, info ); - NifStream( unknownFloat7, out, info ); - NifStream( unknownFloat8, out, info ); - NifStream( unknownFloat9, out, info ); - NifStream( unknownFloat10, out, info ); - NifStream( unknownFloat11, out, info ); - NifStream( size, out, info ); - NifStream( emitStartTime, out, info ); - NifStream( emitStopTime, out, info ); - if ( info.version >= 0x04000002 ) { - NifStream( unknownByte, out, info ); - }; - NifStream( emitRate, out, info ); - NifStream( lifetime, out, info ); - NifStream( lifetimeRandom, out, info ); - if ( info.version >= 0x04000002 ) { - NifStream( emitFlags, out, info ); - }; - NifStream( startRandom, out, info ); - if ( emitter != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(emitter) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - if ( info.version >= 0x04000002 ) { - NifStream( unknownShort2_, out, info ); - NifStream( unknownFloat13_, out, info ); - NifStream( unknownInt1_, out, info ); - NifStream( unknownInt2_, out, info ); - NifStream( unknownShort3_, out, info ); - }; - if ( info.version <= 0x03010000 ) { - NifStream( particle.velocity, out, info ); - NifStream( particle.unknownVector, out, info ); - NifStream( particle.lifetime, out, info ); - NifStream( particle.lifespan, out, info ); - NifStream( particle.timestamp, out, info ); - NifStream( particle.unknownShort, out, info ); - NifStream( particle.vertexId, out, info ); - }; - if ( info.version >= 0x04000002 ) { - NifStream( numParticles, out, info ); - NifStream( numValid, out, info ); - for (unsigned int i2 = 0; i2 < particles.size(); i2++) { - NifStream( particles[i2].velocity, out, info ); - NifStream( particles[i2].unknownVector, out, info ); - NifStream( particles[i2].lifetime, out, info ); - NifStream( particles[i2].lifespan, out, info ); - NifStream( particles[i2].timestamp, out, info ); - NifStream( particles[i2].unknownShort, out, info ); - NifStream( particles[i2].vertexId, out, info ); - }; - if ( unknownLink != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(unknownLink) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - if ( particleExtra != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(particleExtra) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - if ( unknownLink2 != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(unknownLink2) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - if ( info.version >= 0x04000002 ) { - NifStream( trailer, out, info ); - }; - if ( info.version <= 0x03010000 ) { - if ( colorData != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(colorData) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - for (unsigned int i2 = 0; i2 < 2; i2++) { - NifStream( unkownFloats[i2], out, info ); - }; - }; -} - -std::string NiParticleSystemController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiTimeController::asString(); - numParticles = (unsigned short)(particles.size()); - out << " Speed: " << speed << endl; - out << " Speed Random: " << speedRandom << endl; - out << " Vertical Direction: " << verticalDirection << endl; - out << " Vertical Angle: " << verticalAngle << endl; - out << " Horizontal Direction: " << horizontalDirection << endl; - out << " Horizontal Angle: " << horizontalAngle << endl; - out << " Unknown Float 5: " << unknownFloat5 << endl; - out << " Unknown Float 6: " << unknownFloat6 << endl; - out << " Unknown Float 7: " << unknownFloat7 << endl; - out << " Unknown Float 8: " << unknownFloat8 << endl; - out << " Unknown Float 9: " << unknownFloat9 << endl; - out << " Unknown Float 10: " << unknownFloat10 << endl; - out << " Unknown Float 11: " << unknownFloat11 << endl; - out << " Size: " << size << endl; - out << " Emit Start Time: " << emitStartTime << endl; - out << " Emit Stop Time: " << emitStopTime << endl; - out << " Unknown Byte: " << unknownByte << endl; - out << " Emit Rate: " << emitRate << endl; - out << " Lifetime: " << lifetime << endl; - out << " Lifetime Random: " << lifetimeRandom << endl; - out << " Emit Flags: " << emitFlags << endl; - out << " Start Random: " << startRandom << endl; - out << " Emitter: " << emitter << endl; - out << " Unknown Short 2?: " << unknownShort2_ << endl; - out << " Unknown Float 13?: " << unknownFloat13_ << endl; - out << " Unknown Int 1?: " << unknownInt1_ << endl; - out << " Unknown Int 2?: " << unknownInt2_ << endl; - out << " Unknown Short 3?: " << unknownShort3_ << endl; - out << " Velocity: " << particle.velocity << endl; - out << " Unknown Vector: " << particle.unknownVector << endl; - out << " Lifetime: " << particle.lifetime << endl; - out << " Lifespan: " << particle.lifespan << endl; - out << " Timestamp: " << particle.timestamp << endl; - out << " Unknown Short: " << particle.unknownShort << endl; - out << " Vertex ID: " << particle.vertexId << endl; - out << " Num Particles: " << numParticles << endl; - out << " Num Valid: " << numValid << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < particles.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - out << " Velocity: " << particles[i1].velocity << endl; - out << " Unknown Vector: " << particles[i1].unknownVector << endl; - out << " Lifetime: " << particles[i1].lifetime << endl; - out << " Lifespan: " << particles[i1].lifespan << endl; - out << " Timestamp: " << particles[i1].timestamp << endl; - out << " Unknown Short: " << particles[i1].unknownShort << endl; - out << " Vertex ID: " << particles[i1].vertexId << endl; - }; - out << " Unknown Link: " << unknownLink << endl; - out << " Particle Extra: " << particleExtra << endl; - out << " Unknown Link 2: " << unknownLink2 << endl; - out << " Trailer: " << trailer << endl; - out << " Color Data: " << colorData << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 2; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unkown Floats[" << i1 << "]: " << unkownFloats[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiParticleSystemController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTimeController::FixLinks( objects, link_stack, info ); - emitter = FixLink<NiObject>( objects, link_stack, info ); - if ( info.version >= 0x04000002 ) { - unknownLink = FixLink<NiObject>( objects, link_stack, info ); - }; - particleExtra = FixLink<AParticleModifier>( objects, link_stack, info ); - unknownLink2 = FixLink<NiObject>( objects, link_stack, info ); - if ( info.version <= 0x03010000 ) { - colorData = FixLink<NiColorData>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiParticleSystemController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiTimeController::GetRefs(); - if ( unknownLink != NULL ) - refs.push_back(StaticCast<NiObject>(unknownLink)); - if ( particleExtra != NULL ) - refs.push_back(StaticCast<NiObject>(particleExtra)); - if ( unknownLink2 != NULL ) - refs.push_back(StaticCast<NiObject>(unknownLink2)); - if ( colorData != NULL ) - refs.push_back(StaticCast<NiObject>(colorData)); - return refs; -} - -void NiBSPArrayController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiParticleSystemController::Read( in, link_stack, info ); -} - -void NiBSPArrayController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiParticleSystemController::Write( out, link_map, info ); -} - -std::string NiBSPArrayController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiParticleSystemController::asString(); - return out.str(); -} - -void NiBSPArrayController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiParticleSystemController::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiBSPArrayController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiParticleSystemController::GetRefs(); - return refs; -} - -void NiPathController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiTimeController::Read( in, link_stack, info ); - if ( info.version >= 0x0A010000 ) { - NifStream( unknownShort2, in, info ); - }; - NifStream( unknownInt1, in, info ); - NifStream( unknownInt2, in, info ); - NifStream( unknownInt3, in, info ); - NifStream( unknownShort, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiPathController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiTimeController::Write( out, link_map, info ); - if ( info.version >= 0x0A010000 ) { - NifStream( unknownShort2, out, info ); - }; - NifStream( unknownInt1, out, info ); - NifStream( unknownInt2, out, info ); - NifStream( unknownInt3, out, info ); - NifStream( unknownShort, out, info ); - if ( posData != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(posData) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - if ( floatData != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(floatData) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiPathController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiTimeController::asString(); - out << " Unknown Short 2: " << unknownShort2 << endl; - out << " Unknown Int 1: " << unknownInt1 << endl; - out << " Unknown Int 2: " << unknownInt2 << endl; - out << " Unknown Int 3: " << unknownInt3 << endl; - out << " Unknown Short: " << unknownShort << endl; - out << " Pos Data: " << posData << endl; - out << " Float Data: " << floatData << endl; - return out.str(); -} - -void NiPathController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTimeController::FixLinks( objects, link_stack, info ); - posData = FixLink<NiPosData>( objects, link_stack, info ); - floatData = FixLink<NiFloatData>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPathController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiTimeController::GetRefs(); - if ( posData != NULL ) - refs.push_back(StaticCast<NiObject>(posData)); - if ( floatData != NULL ) - refs.push_back(StaticCast<NiObject>(floatData)); - return refs; -} - -void NiPixelData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiObject::Read( in, link_stack, info ); - NifStream( pixelFormat, in, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( redMask, in, info ); - NifStream( greenMask, in, info ); - NifStream( blueMask, in, info ); - NifStream( alphaMask, in, info ); - NifStream( bitsPerPixel, in, info ); - for (unsigned int i2 = 0; i2 < 8; i2++) { - NifStream( unknown8Bytes[i2], in, info ); - }; - }; - if ( ( info.version >= 0x0A010000 ) && ( info.version <= 0x0A020000 ) ) { - NifStream( unknownInt, in, info ); - }; - if ( info.version >= 0x14000004 ) { - for (unsigned int i2 = 0; i2 < 54; i2++) { - NifStream( unknown54Bytes[i2], in, info ); - }; - }; - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( numMipmaps, in, info ); - NifStream( bytesPerPixel, in, info ); - mipmaps.resize(numMipmaps); - for (unsigned int i1 = 0; i1 < mipmaps.size(); i1++) { - NifStream( mipmaps[i1].width, in, info ); - NifStream( mipmaps[i1].height, in, info ); - NifStream( mipmaps[i1].offset, in, info ); - }; - NifStream( pixelData.dataSize, in, info ); - pixelData.data.resize(pixelData.dataSize); - for (unsigned int i1 = 0; i1 < pixelData.data.size(); i1++) { - NifStream( pixelData.data[i1], in, info ); - }; - if ( info.version >= 0x14000004 ) { - NifStream( unknownInt2, in, info ); - }; -} - -void NiPixelData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - numMipmaps = (unsigned int)(mipmaps.size()); - NifStream( pixelFormat, out, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( redMask, out, info ); - NifStream( greenMask, out, info ); - NifStream( blueMask, out, info ); - NifStream( alphaMask, out, info ); - NifStream( bitsPerPixel, out, info ); - for (unsigned int i2 = 0; i2 < 8; i2++) { - NifStream( unknown8Bytes[i2], out, info ); - }; - }; - if ( ( info.version >= 0x0A010000 ) && ( info.version <= 0x0A020000 ) ) { - NifStream( unknownInt, out, info ); - }; - if ( info.version >= 0x14000004 ) { - for (unsigned int i2 = 0; i2 < 54; i2++) { - NifStream( unknown54Bytes[i2], out, info ); - }; - }; - if ( palette != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(palette) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( numMipmaps, out, info ); - NifStream( bytesPerPixel, out, info ); - for (unsigned int i1 = 0; i1 < mipmaps.size(); i1++) { - NifStream( mipmaps[i1].width, out, info ); - NifStream( mipmaps[i1].height, out, info ); - NifStream( mipmaps[i1].offset, out, info ); - }; - pixelData.dataSize = (unsigned int)(pixelData.data.size()); - NifStream( pixelData.dataSize, out, info ); - for (unsigned int i1 = 0; i1 < pixelData.data.size(); i1++) { - NifStream( pixelData.data[i1], out, info ); - }; - if ( info.version >= 0x14000004 ) { - NifStream( unknownInt2, out, info ); - }; -} - -std::string NiPixelData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - numMipmaps = (unsigned int)(mipmaps.size()); - out << " Pixel Format: " << pixelFormat << endl; - out << " Red Mask: " << redMask << endl; - out << " Green Mask: " << greenMask << endl; - out << " Blue Mask: " << blueMask << endl; - out << " Alpha Mask: " << alphaMask << endl; - out << " Bits Per Pixel: " << bitsPerPixel << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 8; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown 8 Bytes[" << i1 << "]: " << unknown8Bytes[i1] << endl; - array_output_count++; - }; - out << " Unknown Int: " << unknownInt << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 54; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown 54 Bytes[" << i1 << "]: " << unknown54Bytes[i1] << endl; - array_output_count++; - }; - out << " Palette: " << palette << endl; - out << " Num Mipmaps: " << numMipmaps << endl; - out << " Bytes Per Pixel: " << bytesPerPixel << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < mipmaps.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - out << " Width: " << mipmaps[i1].width << endl; - out << " Height: " << mipmaps[i1].height << endl; - out << " Offset: " << mipmaps[i1].offset << endl; - }; - pixelData.dataSize = (unsigned int)(pixelData.data.size()); - out << " Data Size: " << pixelData.dataSize << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < pixelData.data.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Data[" << i1 << "]: " << pixelData.data[i1] << endl; - array_output_count++; - }; - out << " Unknown Int 2: " << unknownInt2 << endl; - return out.str(); -} - -void NiPixelData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); - palette = FixLink<NiPalette>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPixelData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - if ( palette != NULL ) - refs.push_back(StaticCast<NiObject>(palette)); - return refs; -} - -void NiPlanarCollider::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - AParticleModifier::Read( in, link_stack, info ); - if ( info.version >= 0x0A000100 ) { - NifStream( unknownShort, in, info ); - }; - NifStream( unknownFloat1, in, info ); - NifStream( unknownFloat2, in, info ); - if ( ( info.version >= 0x04020200 ) && ( info.version <= 0x04020200 ) ) { - NifStream( unknownShort2, in, info ); - }; - NifStream( unknownFloat3, in, info ); - NifStream( unknownFloat4, in, info ); - NifStream( unknownFloat5, in, info ); - NifStream( unknownFloat6, in, info ); - NifStream( unknownFloat7, in, info ); - NifStream( unknownFloat8, in, info ); - NifStream( unknownFloat9, in, info ); - NifStream( unknownFloat10, in, info ); - NifStream( unknownFloat11, in, info ); - NifStream( unknownFloat12, in, info ); - NifStream( unknownFloat13, in, info ); - NifStream( unknownFloat14, in, info ); - NifStream( unknownFloat15, in, info ); - NifStream( unknownFloat16, in, info ); -} - -void NiPlanarCollider::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - AParticleModifier::Write( out, link_map, info ); - if ( info.version >= 0x0A000100 ) { - NifStream( unknownShort, out, info ); - }; - NifStream( unknownFloat1, out, info ); - NifStream( unknownFloat2, out, info ); - if ( ( info.version >= 0x04020200 ) && ( info.version <= 0x04020200 ) ) { - NifStream( unknownShort2, out, info ); - }; - NifStream( unknownFloat3, out, info ); - NifStream( unknownFloat4, out, info ); - NifStream( unknownFloat5, out, info ); - NifStream( unknownFloat6, out, info ); - NifStream( unknownFloat7, out, info ); - NifStream( unknownFloat8, out, info ); - NifStream( unknownFloat9, out, info ); - NifStream( unknownFloat10, out, info ); - NifStream( unknownFloat11, out, info ); - NifStream( unknownFloat12, out, info ); - NifStream( unknownFloat13, out, info ); - NifStream( unknownFloat14, out, info ); - NifStream( unknownFloat15, out, info ); - NifStream( unknownFloat16, out, info ); -} - -std::string NiPlanarCollider::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << AParticleModifier::asString(); - out << " Unknown Short: " << unknownShort << endl; - out << " Unknown Float 1: " << unknownFloat1 << endl; - out << " Unknown Float 2: " << unknownFloat2 << endl; - out << " Unknown Short 2: " << unknownShort2 << endl; - out << " Unknown Float 3: " << unknownFloat3 << endl; - out << " Unknown Float 4: " << unknownFloat4 << endl; - out << " Unknown Float 5: " << unknownFloat5 << endl; - out << " Unknown Float 6: " << unknownFloat6 << endl; - out << " Unknown Float 7: " << unknownFloat7 << endl; - out << " Unknown Float 8: " << unknownFloat8 << endl; - out << " Unknown Float 9: " << unknownFloat9 << endl; - out << " Unknown Float 10: " << unknownFloat10 << endl; - out << " Unknown Float 11: " << unknownFloat11 << endl; - out << " Unknown Float 12: " << unknownFloat12 << endl; - out << " Unknown Float 13: " << unknownFloat13 << endl; - out << " Unknown Float 14: " << unknownFloat14 << endl; - out << " Unknown Float 15: " << unknownFloat15 << endl; - out << " Unknown Float 16: " << unknownFloat16 << endl; - return out.str(); -} - -void NiPlanarCollider::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - AParticleModifier::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPlanarCollider::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = AParticleModifier::GetRefs(); - return refs; -} - -void NiPointLight::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiLight::Read( in, link_stack, info ); - NifStream( constantAttenuation, in, info ); - NifStream( linearAttenuation, in, info ); - NifStream( quadraticAttenuation, in, info ); -} - -void NiPointLight::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiLight::Write( out, link_map, info ); - NifStream( constantAttenuation, out, info ); - NifStream( linearAttenuation, out, info ); - NifStream( quadraticAttenuation, out, info ); -} - -std::string NiPointLight::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiLight::asString(); - out << " Constant Attenuation: " << constantAttenuation << endl; - out << " Linear Attenuation: " << linearAttenuation << endl; - out << " Quadratic Attenuation: " << quadraticAttenuation << endl; - return out.str(); -} - -void NiPointLight::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiLight::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPointLight::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiLight::GetRefs(); - return refs; -} - -void NiPosData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::Read( in, link_stack, info ); - NifStream( data.numKeys, in, info ); - if ( (data.numKeys != 0) ) { - NifStream( data.interpolation, in, info ); - }; - data.keys.resize(data.numKeys); - for (unsigned int i1 = 0; i1 < data.keys.size(); i1++) { - NifStream( data.keys[i1], in, info, data.interpolation ); - }; -} - -void NiPosData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - data.numKeys = (unsigned int)(data.keys.size()); - NifStream( data.numKeys, out, info ); - if ( (data.numKeys != 0) ) { - NifStream( data.interpolation, out, info ); - }; - for (unsigned int i1 = 0; i1 < data.keys.size(); i1++) { - NifStream( data.keys[i1], out, info, data.interpolation ); - }; -} - -std::string NiPosData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - data.numKeys = (unsigned int)(data.keys.size()); - out << " Num Keys: " << data.numKeys << endl; - if ( (data.numKeys != 0) ) { - out << " Interpolation: " << data.interpolation << endl; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < data.keys.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Keys[" << i1 << "]: " << data.keys[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiPosData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPosData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -void NiPSysAgeDeathModifier::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiPSysModifier::Read( in, link_stack, info ); - NifStream( spawnOnDeath, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiPSysAgeDeathModifier::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifier::Write( out, link_map, info ); - NifStream( spawnOnDeath, out, info ); - if ( spawnModifier != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(spawnModifier) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiPSysAgeDeathModifier::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifier::asString(); - out << " Spawn on Death: " << spawnOnDeath << endl; - out << " Spawn Modifier: " << spawnModifier << endl; - return out.str(); -} - -void NiPSysAgeDeathModifier::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::FixLinks( objects, link_stack, info ); - spawnModifier = FixLink<NiPSysSpawnModifier>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysAgeDeathModifier::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifier::GetRefs(); - if ( spawnModifier != NULL ) - refs.push_back(StaticCast<NiObject>(spawnModifier)); - return refs; -} - -void NiPSysBombModifier::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiPSysModifier::Read( in, link_stack, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - for (unsigned int i1 = 0; i1 < 2; i1++) { - NifStream( unknownInts1[i1], in, info ); - }; - for (unsigned int i1 = 0; i1 < 3; i1++) { - NifStream( unknownFloats[i1], in, info ); - }; - for (unsigned int i1 = 0; i1 < 2; i1++) { - NifStream( unknownInts2[i1], in, info ); - }; -} - -void NiPSysBombModifier::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifier::Write( out, link_map, info ); - if ( unknownLink != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(unknownLink) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - for (unsigned int i1 = 0; i1 < 2; i1++) { - NifStream( unknownInts1[i1], out, info ); - }; - for (unsigned int i1 = 0; i1 < 3; i1++) { - NifStream( unknownFloats[i1], out, info ); - }; - for (unsigned int i1 = 0; i1 < 2; i1++) { - NifStream( unknownInts2[i1], out, info ); - }; -} - -std::string NiPSysBombModifier::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifier::asString(); - out << " Unknown Link: " << unknownLink << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 2; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Ints 1[" << i1 << "]: " << unknownInts1[i1] << endl; - array_output_count++; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 3; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Floats[" << i1 << "]: " << unknownFloats[i1] << endl; - array_output_count++; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 2; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Ints 2[" << i1 << "]: " << unknownInts2[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiPSysBombModifier::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::FixLinks( objects, link_stack, info ); - unknownLink = FixLink<NiNode>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysBombModifier::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifier::GetRefs(); - return refs; -} - -void NiPSysBoundUpdateModifier::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::Read( in, link_stack, info ); - NifStream( updateSkip, in, info ); -} - -void NiPSysBoundUpdateModifier::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifier::Write( out, link_map, info ); - NifStream( updateSkip, out, info ); -} - -std::string NiPSysBoundUpdateModifier::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifier::asString(); - out << " Update Skip: " << updateSkip << endl; - return out.str(); -} - -void NiPSysBoundUpdateModifier::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysBoundUpdateModifier::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifier::GetRefs(); - return refs; -} - -void NiPSysBoxEmitter::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysVolumeEmitter::Read( in, link_stack, info ); - NifStream( width, in, info ); - NifStream( height, in, info ); - NifStream( depth, in, info ); -} - -void NiPSysBoxEmitter::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysVolumeEmitter::Write( out, link_map, info ); - NifStream( width, out, info ); - NifStream( height, out, info ); - NifStream( depth, out, info ); -} - -std::string NiPSysBoxEmitter::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysVolumeEmitter::asString(); - out << " Width: " << width << endl; - out << " Height: " << height << endl; - out << " Depth: " << depth << endl; - return out.str(); -} - -void NiPSysBoxEmitter::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysVolumeEmitter::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysBoxEmitter::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysVolumeEmitter::GetRefs(); - return refs; -} - -void NiPSysColliderManager::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiPSysModifier::Read( in, link_stack, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiPSysColliderManager::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifier::Write( out, link_map, info ); - if ( collider != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(collider) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiPSysColliderManager::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifier::asString(); - out << " Collider: " << collider << endl; - return out.str(); -} - -void NiPSysColliderManager::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::FixLinks( objects, link_stack, info ); - collider = FixLink<NiPSysPlanarCollider>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysColliderManager::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifier::GetRefs(); - if ( collider != NULL ) - refs.push_back(StaticCast<NiObject>(collider)); - return refs; -} - -void NiPSysColorModifier::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiPSysModifier::Read( in, link_stack, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiPSysColorModifier::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifier::Write( out, link_map, info ); - if ( data != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiPSysColorModifier::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifier::asString(); - out << " Data: " << data << endl; - return out.str(); -} - -void NiPSysColorModifier::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::FixLinks( objects, link_stack, info ); - data = FixLink<NiColorData>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysColorModifier::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifier::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - return refs; -} - -void NiPSysCylinderEmitter::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysVolumeEmitter::Read( in, link_stack, info ); - NifStream( radius, in, info ); - NifStream( height, in, info ); -} - -void NiPSysCylinderEmitter::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysVolumeEmitter::Write( out, link_map, info ); - NifStream( radius, out, info ); - NifStream( height, out, info ); -} - -std::string NiPSysCylinderEmitter::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysVolumeEmitter::asString(); - out << " Radius: " << radius << endl; - out << " Height: " << height << endl; - return out.str(); -} - -void NiPSysCylinderEmitter::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysVolumeEmitter::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysCylinderEmitter::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysVolumeEmitter::GetRefs(); - return refs; -} - -void NiPSysDragModifier::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiPSysModifier::Read( in, link_stack, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( dragAxis, in, info ); - NifStream( percentage, in, info ); - NifStream( range, in, info ); - NifStream( rangeFalloff, in, info ); -} - -void NiPSysDragModifier::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifier::Write( out, link_map, info ); - if ( parent != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(parent) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( dragAxis, out, info ); - NifStream( percentage, out, info ); - NifStream( range, out, info ); - NifStream( rangeFalloff, out, info ); -} - -std::string NiPSysDragModifier::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifier::asString(); - out << " Parent: " << parent << endl; - out << " Drag Axis: " << dragAxis << endl; - out << " Percentage: " << percentage << endl; - out << " Range: " << range << endl; - out << " Range Falloff: " << rangeFalloff << endl; - return out.str(); -} - -void NiPSysDragModifier::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::FixLinks( objects, link_stack, info ); - parent = FixLink<NiObject>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysDragModifier::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifier::GetRefs(); - return refs; -} - -void NiPSysEmitterCtlrData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::Read( in, link_stack, info ); - NifStream( floatKeys_.numKeys, in, info ); - if ( (floatKeys_.numKeys != 0) ) { - NifStream( floatKeys_.interpolation, in, info ); - }; - floatKeys_.keys.resize(floatKeys_.numKeys); - for (unsigned int i1 = 0; i1 < floatKeys_.keys.size(); i1++) { - NifStream( floatKeys_.keys[i1], in, info, floatKeys_.interpolation ); - }; - NifStream( numVisibilityKeys_, in, info ); - visibilityKeys_.resize(numVisibilityKeys_); - for (unsigned int i1 = 0; i1 < visibilityKeys_.size(); i1++) { - NifStream( visibilityKeys_[i1], in, info, 1 ); - }; -} - -void NiPSysEmitterCtlrData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - numVisibilityKeys_ = (unsigned int)(visibilityKeys_.size()); - floatKeys_.numKeys = (unsigned int)(floatKeys_.keys.size()); - NifStream( floatKeys_.numKeys, out, info ); - if ( (floatKeys_.numKeys != 0) ) { - NifStream( floatKeys_.interpolation, out, info ); - }; - for (unsigned int i1 = 0; i1 < floatKeys_.keys.size(); i1++) { - NifStream( floatKeys_.keys[i1], out, info, floatKeys_.interpolation ); - }; - NifStream( numVisibilityKeys_, out, info ); - for (unsigned int i1 = 0; i1 < visibilityKeys_.size(); i1++) { - NifStream( visibilityKeys_[i1], out, info, 1 ); - }; -} - -std::string NiPSysEmitterCtlrData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - numVisibilityKeys_ = (unsigned int)(visibilityKeys_.size()); - floatKeys_.numKeys = (unsigned int)(floatKeys_.keys.size()); - out << " Num Keys: " << floatKeys_.numKeys << endl; - if ( (floatKeys_.numKeys != 0) ) { - out << " Interpolation: " << floatKeys_.interpolation << endl; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < floatKeys_.keys.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Keys[" << i1 << "]: " << floatKeys_.keys[i1] << endl; - array_output_count++; - }; - out << " Num Visibility Keys?: " << numVisibilityKeys_ << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < visibilityKeys_.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Visibility Keys?[" << i1 << "]: " << visibilityKeys_[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiPSysEmitterCtlrData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysEmitterCtlrData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -void NiPSysGravityModifier::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiPSysModifier::Read( in, link_stack, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( gravityAxis, in, info ); - NifStream( decay, in, info ); - NifStream( strength, in, info ); - NifStream( forceType, in, info ); - NifStream( turbulence, in, info ); - NifStream( turbulenceScale, in, info ); -} - -void NiPSysGravityModifier::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifier::Write( out, link_map, info ); - if ( gravityObject != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(gravityObject) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( gravityAxis, out, info ); - NifStream( decay, out, info ); - NifStream( strength, out, info ); - NifStream( forceType, out, info ); - NifStream( turbulence, out, info ); - NifStream( turbulenceScale, out, info ); -} - -std::string NiPSysGravityModifier::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifier::asString(); - out << " Gravity Object: " << gravityObject << endl; - out << " Gravity Axis: " << gravityAxis << endl; - out << " Decay: " << decay << endl; - out << " Strength: " << strength << endl; - out << " Force Type: " << forceType << endl; - out << " Turbulence: " << turbulence << endl; - out << " Turbulence Scale: " << turbulenceScale << endl; - return out.str(); -} - -void NiPSysGravityModifier::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::FixLinks( objects, link_stack, info ); - gravityObject = FixLink<NiNode>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysGravityModifier::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifier::GetRefs(); - return refs; -} - -void NiPSysGrowFadeModifier::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::Read( in, link_stack, info ); - NifStream( growTime, in, info ); - NifStream( growGeneration, in, info ); - NifStream( fadeTime, in, info ); - NifStream( fadeGeneration, in, info ); -} - -void NiPSysGrowFadeModifier::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifier::Write( out, link_map, info ); - NifStream( growTime, out, info ); - NifStream( growGeneration, out, info ); - NifStream( fadeTime, out, info ); - NifStream( fadeGeneration, out, info ); -} - -std::string NiPSysGrowFadeModifier::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifier::asString(); - out << " Grow Time: " << growTime << endl; - out << " Grow Generation: " << growGeneration << endl; - out << " Fade Time: " << fadeTime << endl; - out << " Fade Generation: " << fadeGeneration << endl; - return out.str(); -} - -void NiPSysGrowFadeModifier::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysGrowFadeModifier::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifier::GetRefs(); - return refs; -} - -void NiPSysMeshEmitter::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiPSysEmitter::Read( in, link_stack, info ); - NifStream( numEmitterMeshes, in, info ); - emitterMeshes.resize(numEmitterMeshes); - for (unsigned int i1 = 0; i1 < emitterMeshes.size(); i1++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - NifStream( initialVelocityType, in, info ); - NifStream( emissionType, in, info ); - NifStream( emissionAxis, in, info ); -} - -void NiPSysMeshEmitter::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysEmitter::Write( out, link_map, info ); - numEmitterMeshes = (unsigned int)(emitterMeshes.size()); - NifStream( numEmitterMeshes, out, info ); - for (unsigned int i1 = 0; i1 < emitterMeshes.size(); i1++) { - if ( emitterMeshes[i1] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(emitterMeshes[i1]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - NifStream( initialVelocityType, out, info ); - NifStream( emissionType, out, info ); - NifStream( emissionAxis, out, info ); -} - -std::string NiPSysMeshEmitter::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysEmitter::asString(); - numEmitterMeshes = (unsigned int)(emitterMeshes.size()); - out << " Num Emitter Meshes: " << numEmitterMeshes << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < emitterMeshes.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Emitter Meshes[" << i1 << "]: " << emitterMeshes[i1] << endl; - array_output_count++; - }; - out << " Initial Velocity Type: " << initialVelocityType << endl; - out << " Emission Type: " << emissionType << endl; - out << " Emission Axis: " << emissionAxis << endl; - return out.str(); -} - -void NiPSysMeshEmitter::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysEmitter::FixLinks( objects, link_stack, info ); - for (unsigned int i1 = 0; i1 < emitterMeshes.size(); i1++) { - emitterMeshes[i1] = FixLink<NiTriBasedGeom>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiPSysMeshEmitter::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysEmitter::GetRefs(); - for (unsigned int i1 = 0; i1 < emitterMeshes.size(); i1++) { - if ( emitterMeshes[i1] != NULL ) - refs.push_back(StaticCast<NiObject>(emitterMeshes[i1])); - }; - return refs; -} - -void NiPSysMeshUpdateModifier::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiPSysModifier::Read( in, link_stack, info ); - NifStream( numMeshes, in, info ); - meshes.resize(numMeshes); - for (unsigned int i1 = 0; i1 < meshes.size(); i1++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiPSysMeshUpdateModifier::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifier::Write( out, link_map, info ); - numMeshes = (unsigned int)(meshes.size()); - NifStream( numMeshes, out, info ); - for (unsigned int i1 = 0; i1 < meshes.size(); i1++) { - if ( meshes[i1] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(meshes[i1]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiPSysMeshUpdateModifier::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifier::asString(); - numMeshes = (unsigned int)(meshes.size()); - out << " Num Meshes: " << numMeshes << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < meshes.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Meshes[" << i1 << "]: " << meshes[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiPSysMeshUpdateModifier::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::FixLinks( objects, link_stack, info ); - for (unsigned int i1 = 0; i1 < meshes.size(); i1++) { - meshes[i1] = FixLink<NiNode>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiPSysMeshUpdateModifier::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifier::GetRefs(); - for (unsigned int i1 = 0; i1 < meshes.size(); i1++) { - if ( meshes[i1] != NULL ) - refs.push_back(StaticCast<NiObject>(meshes[i1])); - }; - return refs; -} - -void NiPSysPlanarCollider::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysCollider::Read( in, link_stack, info ); - NifStream( width, in, info ); - NifStream( height, in, info ); - NifStream( xAxis, in, info ); - NifStream( yAxis, in, info ); -} - -void NiPSysPlanarCollider::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysCollider::Write( out, link_map, info ); - NifStream( width, out, info ); - NifStream( height, out, info ); - NifStream( xAxis, out, info ); - NifStream( yAxis, out, info ); -} - -std::string NiPSysPlanarCollider::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysCollider::asString(); - out << " Width: " << width << endl; - out << " Height: " << height << endl; - out << " X Axis: " << xAxis << endl; - out << " Y Axis: " << yAxis << endl; - return out.str(); -} - -void NiPSysPlanarCollider::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysCollider::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysPlanarCollider::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysCollider::GetRefs(); - return refs; -} - -void NiPSysSphericalCollider::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysCollider::Read( in, link_stack, info ); - NifStream( radius, in, info ); -} - -void NiPSysSphericalCollider::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysCollider::Write( out, link_map, info ); - NifStream( radius, out, info ); -} - -std::string NiPSysSphericalCollider::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysCollider::asString(); - out << " Radius: " << radius << endl; - return out.str(); -} - -void NiPSysSphericalCollider::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysCollider::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysSphericalCollider::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysCollider::GetRefs(); - return refs; -} - -void NiPSysPositionModifier::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::Read( in, link_stack, info ); -} - -void NiPSysPositionModifier::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifier::Write( out, link_map, info ); -} - -std::string NiPSysPositionModifier::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifier::asString(); - return out.str(); -} - -void NiPSysPositionModifier::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysPositionModifier::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifier::GetRefs(); - return refs; -} - -void NiPSysResetOnLoopCtlr::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTimeController::Read( in, link_stack, info ); -} - -void NiPSysResetOnLoopCtlr::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiTimeController::Write( out, link_map, info ); -} - -std::string NiPSysResetOnLoopCtlr::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiTimeController::asString(); - return out.str(); -} - -void NiPSysResetOnLoopCtlr::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTimeController::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysResetOnLoopCtlr::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiTimeController::GetRefs(); - return refs; -} - -void NiPSysRotationModifier::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::Read( in, link_stack, info ); - NifStream( initialRotationSpeed, in, info ); - if ( info.version >= 0x14000004 ) { - NifStream( initialRotationSpeedVariation, in, info ); - NifStream( initialRotationAngle, in, info ); - NifStream( initialRotationAngleVariation, in, info ); - NifStream( randomRotSpeedSign, in, info ); - }; - NifStream( randomInitialAxis, in, info ); - NifStream( initialAxis, in, info ); -} - -void NiPSysRotationModifier::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifier::Write( out, link_map, info ); - NifStream( initialRotationSpeed, out, info ); - if ( info.version >= 0x14000004 ) { - NifStream( initialRotationSpeedVariation, out, info ); - NifStream( initialRotationAngle, out, info ); - NifStream( initialRotationAngleVariation, out, info ); - NifStream( randomRotSpeedSign, out, info ); - }; - NifStream( randomInitialAxis, out, info ); - NifStream( initialAxis, out, info ); -} - -std::string NiPSysRotationModifier::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifier::asString(); - out << " Initial Rotation Speed: " << initialRotationSpeed << endl; - out << " Initial Rotation Speed Variation: " << initialRotationSpeedVariation << endl; - out << " Initial Rotation Angle: " << initialRotationAngle << endl; - out << " Initial Rotation Angle Variation: " << initialRotationAngleVariation << endl; - out << " Random Rot Speed Sign: " << randomRotSpeedSign << endl; - out << " Random Initial Axis: " << randomInitialAxis << endl; - out << " Initial Axis: " << initialAxis << endl; - return out.str(); -} - -void NiPSysRotationModifier::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysRotationModifier::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifier::GetRefs(); - return refs; -} - -void NiPSysSpawnModifier::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::Read( in, link_stack, info ); - NifStream( numSpawnGenerations, in, info ); - NifStream( percentageSpawned, in, info ); - NifStream( minNumToSpawn, in, info ); - NifStream( maxNumToSpawn, in, info ); - NifStream( spawnSpeedChaos, in, info ); - NifStream( spawnDirChaos, in, info ); - NifStream( lifeSpan, in, info ); - NifStream( lifeSpanVariation, in, info ); -} - -void NiPSysSpawnModifier::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysModifier::Write( out, link_map, info ); - NifStream( numSpawnGenerations, out, info ); - NifStream( percentageSpawned, out, info ); - NifStream( minNumToSpawn, out, info ); - NifStream( maxNumToSpawn, out, info ); - NifStream( spawnSpeedChaos, out, info ); - NifStream( spawnDirChaos, out, info ); - NifStream( lifeSpan, out, info ); - NifStream( lifeSpanVariation, out, info ); -} - -std::string NiPSysSpawnModifier::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysModifier::asString(); - out << " Num Spawn Generations: " << numSpawnGenerations << endl; - out << " Percentage Spawned: " << percentageSpawned << endl; - out << " Min Num to Spawn: " << minNumToSpawn << endl; - out << " Max Num to Spawn: " << maxNumToSpawn << endl; - out << " Spawn Speed Chaos: " << spawnSpeedChaos << endl; - out << " Spawn Dir Chaos: " << spawnDirChaos << endl; - out << " Life Span: " << lifeSpan << endl; - out << " Life Span Variation: " << lifeSpanVariation << endl; - return out.str(); -} - -void NiPSysSpawnModifier::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysModifier::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysSpawnModifier::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysModifier::GetRefs(); - return refs; -} - -void NiPSysSphereEmitter::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysVolumeEmitter::Read( in, link_stack, info ); - NifStream( radius, in, info ); -} - -void NiPSysSphereEmitter::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPSysVolumeEmitter::Write( out, link_map, info ); - NifStream( radius, out, info ); -} - -std::string NiPSysSphereEmitter::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPSysVolumeEmitter::asString(); - out << " Radius: " << radius << endl; - return out.str(); -} - -void NiPSysSphereEmitter::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPSysVolumeEmitter::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysSphereEmitter::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPSysVolumeEmitter::GetRefs(); - return refs; -} - -void NiPSysUpdateCtlr::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTimeController::Read( in, link_stack, info ); -} - -void NiPSysUpdateCtlr::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiTimeController::Write( out, link_map, info ); -} - -std::string NiPSysUpdateCtlr::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiTimeController::asString(); - return out.str(); -} - -void NiPSysUpdateCtlr::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTimeController::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiPSysUpdateCtlr::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiTimeController::GetRefs(); - return refs; -} - -void NiLODData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::Read( in, link_stack, info ); -} - -void NiLODData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); -} - -std::string NiLODData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - return out.str(); -} - -void NiLODData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiLODData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -void NiRangeLODData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiLODData::Read( in, link_stack, info ); - NifStream( lodCenter, in, info ); - NifStream( numLodLevels, in, info ); - lodLevels.resize(numLodLevels); - for (unsigned int i1 = 0; i1 < lodLevels.size(); i1++) { - NifStream( lodLevels[i1].nearExtent, in, info ); - NifStream( lodLevels[i1].farExtent, in, info ); - if ( info.version <= 0x03010000 ) { - for (unsigned int i3 = 0; i3 < 3; i3++) { - NifStream( lodLevels[i1].unknownInts[i3], in, info ); - }; - }; - }; -} - -void NiRangeLODData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiLODData::Write( out, link_map, info ); - numLodLevels = (unsigned int)(lodLevels.size()); - NifStream( lodCenter, out, info ); - NifStream( numLodLevels, out, info ); - for (unsigned int i1 = 0; i1 < lodLevels.size(); i1++) { - NifStream( lodLevels[i1].nearExtent, out, info ); - NifStream( lodLevels[i1].farExtent, out, info ); - if ( info.version <= 0x03010000 ) { - for (unsigned int i3 = 0; i3 < 3; i3++) { - NifStream( lodLevels[i1].unknownInts[i3], out, info ); - }; - }; - }; -} - -std::string NiRangeLODData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiLODData::asString(); - numLodLevels = (unsigned int)(lodLevels.size()); - out << " LOD Center: " << lodCenter << endl; - out << " Num LOD Levels: " << numLodLevels << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < lodLevels.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - out << " Near Extent: " << lodLevels[i1].nearExtent << endl; - out << " Far Extent: " << lodLevels[i1].farExtent << endl; - array_output_count = 0; - for (unsigned int i2 = 0; i2 < 3; i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Ints[" << i2 << "]: " << lodLevels[i1].unknownInts[i2] << endl; - array_output_count++; - }; - }; - return out.str(); -} - -void NiRangeLODData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiLODData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiRangeLODData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiLODData::GetRefs(); - return refs; -} - -void NiScreenLODData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiLODData::Read( in, link_stack, info ); - NifStream( boundCenter, in, info ); - NifStream( boundRadius, in, info ); - NifStream( worldCenter, in, info ); - NifStream( worldRadius, in, info ); - NifStream( proportionCount, in, info ); - proportionLevels.resize(proportionCount); - for (unsigned int i1 = 0; i1 < proportionLevels.size(); i1++) { - NifStream( proportionLevels[i1], in, info ); - }; -} - -void NiScreenLODData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiLODData::Write( out, link_map, info ); - proportionCount = (unsigned int)(proportionLevels.size()); - NifStream( boundCenter, out, info ); - NifStream( boundRadius, out, info ); - NifStream( worldCenter, out, info ); - NifStream( worldRadius, out, info ); - NifStream( proportionCount, out, info ); - for (unsigned int i1 = 0; i1 < proportionLevels.size(); i1++) { - NifStream( proportionLevels[i1], out, info ); - }; -} - -std::string NiScreenLODData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiLODData::asString(); - proportionCount = (unsigned int)(proportionLevels.size()); - out << " Bound Center: " << boundCenter << endl; - out << " Bound Radius: " << boundRadius << endl; - out << " World Center: " << worldCenter << endl; - out << " World Radius: " << worldRadius << endl; - out << " Proportion Count: " << proportionCount << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < proportionLevels.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Proportion Levels[" << i1 << "]: " << proportionLevels[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiScreenLODData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiLODData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiScreenLODData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiLODData::GetRefs(); - return refs; -} - -void NiRotatingParticles::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiParticles::Read( in, link_stack, info ); -} - -void NiRotatingParticles::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiParticles::Write( out, link_map, info ); -} - -std::string NiRotatingParticles::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiParticles::asString(); - return out.str(); -} - -void NiRotatingParticles::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiParticles::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiRotatingParticles::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiParticles::GetRefs(); - return refs; -} - -void NiSequenceStreamHelper::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObjectNET::Read( in, link_stack, info ); -} - -void NiSequenceStreamHelper::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObjectNET::Write( out, link_map, info ); -} - -std::string NiSequenceStreamHelper::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObjectNET::asString(); - return out.str(); -} - -void NiSequenceStreamHelper::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObjectNET::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiSequenceStreamHelper::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObjectNET::GetRefs(); - return refs; -} - -void NiShadeProperty::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::Read( in, link_stack, info ); - NifStream( flags, in, info ); -} - -void NiShadeProperty::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiProperty::Write( out, link_map, info ); - NifStream( flags, out, info ); -} - -std::string NiShadeProperty::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiProperty::asString(); - out << " Flags: " << flags << endl; - return out.str(); -} - -void NiShadeProperty::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiShadeProperty::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiProperty::GetRefs(); - return refs; -} - -void NiSkinData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiObject::Read( in, link_stack, info ); - NifStream( rotation, in, info ); - NifStream( translation, in, info ); - NifStream( scale, in, info ); - NifStream( numBones, in, info ); - if ( info.version <= 0x0A010000 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - if ( info.version >= 0x04020100 ) { - NifStream( hasVertexWeights, in, info ); - }; - boneList.resize(numBones); - for (unsigned int i1 = 0; i1 < boneList.size(); i1++) { - NifStream( boneList[i1].rotation, in, info ); - NifStream( boneList[i1].translation, in, info ); - NifStream( boneList[i1].scale, in, info ); - NifStream( boneList[i1].boundingSphereOffset, in, info ); - NifStream( boneList[i1].boundingSphereRadius, in, info ); - NifStream( boneList[i1].numVertices, in, info ); - if ( info.version <= 0x04020100 ) { - boneList[i1].vertexWeights.resize(boneList[i1].numVertices); - for (unsigned int i3 = 0; i3 < boneList[i1].vertexWeights.size(); i3++) { - NifStream( boneList[i1].vertexWeights[i3].index, in, info ); - NifStream( boneList[i1].vertexWeights[i3].weight, in, info ); - }; - }; - if ( info.version >= 0x04020200 ) { - if ( (hasVertexWeights != 0) ) { - boneList[i1].vertexWeights.resize(boneList[i1].numVertices); - for (unsigned int i4 = 0; i4 < boneList[i1].vertexWeights.size(); i4++) { - NifStream( boneList[i1].vertexWeights[i4].index, in, info ); - NifStream( boneList[i1].vertexWeights[i4].weight, in, info ); - }; - }; - }; - }; -} - -void NiSkinData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - numBones = (unsigned int)(boneList.size()); - NifStream( rotation, out, info ); - NifStream( translation, out, info ); - NifStream( scale, out, info ); - NifStream( numBones, out, info ); - if ( info.version <= 0x0A010000 ) { - if ( skinPartition != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(skinPartition) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - if ( info.version >= 0x04020100 ) { - NifStream( hasVertexWeights, out, info ); - }; - for (unsigned int i1 = 0; i1 < boneList.size(); i1++) { - boneList[i1].numVertices = (unsigned short)(boneList[i1].vertexWeights.size()); - NifStream( boneList[i1].rotation, out, info ); - NifStream( boneList[i1].translation, out, info ); - NifStream( boneList[i1].scale, out, info ); - NifStream( boneList[i1].boundingSphereOffset, out, info ); - NifStream( boneList[i1].boundingSphereRadius, out, info ); - NifStream( boneList[i1].numVertices, out, info ); - if ( info.version <= 0x04020100 ) { - for (unsigned int i3 = 0; i3 < boneList[i1].vertexWeights.size(); i3++) { - NifStream( boneList[i1].vertexWeights[i3].index, out, info ); - NifStream( boneList[i1].vertexWeights[i3].weight, out, info ); - }; - }; - if ( info.version >= 0x04020200 ) { - if ( (hasVertexWeights != 0) ) { - for (unsigned int i4 = 0; i4 < boneList[i1].vertexWeights.size(); i4++) { - NifStream( boneList[i1].vertexWeights[i4].index, out, info ); - NifStream( boneList[i1].vertexWeights[i4].weight, out, info ); - }; - }; - }; - }; -} - -std::string NiSkinData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - numBones = (unsigned int)(boneList.size()); - out << " Rotation: " << rotation << endl; - out << " Translation: " << translation << endl; - out << " Scale: " << scale << endl; - out << " Num Bones: " << numBones << endl; - out << " Skin Partition: " << skinPartition << endl; - out << " Has Vertex Weights: " << hasVertexWeights << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < boneList.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - boneList[i1].numVertices = (unsigned short)(boneList[i1].vertexWeights.size()); - out << " Rotation: " << boneList[i1].rotation << endl; - out << " Translation: " << boneList[i1].translation << endl; - out << " Scale: " << boneList[i1].scale << endl; - out << " Bounding Sphere Offset: " << boneList[i1].boundingSphereOffset << endl; - out << " Bounding Sphere Radius: " << boneList[i1].boundingSphereRadius << endl; - out << " Num Vertices: " << boneList[i1].numVertices << endl; - array_output_count = 0; - for (unsigned int i2 = 0; i2 < boneList[i1].vertexWeights.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - out << " Index: " << boneList[i1].vertexWeights[i2].index << endl; - out << " Weight: " << boneList[i1].vertexWeights[i2].weight << endl; - }; - }; - return out.str(); -} - -void NiSkinData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); - if ( info.version <= 0x0A010000 ) { - skinPartition = FixLink<NiSkinPartition>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiSkinData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - if ( skinPartition != NULL ) - refs.push_back(StaticCast<NiObject>(skinPartition)); - return refs; -} - -void NiSkinInstance::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiObject::Read( in, link_stack, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - if ( info.version >= 0x0A020000 ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( numBones, in, info ); - bones.resize(numBones); - for (unsigned int i1 = 0; i1 < bones.size(); i1++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; -} - -void NiSkinInstance::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - numBones = (unsigned int)(bones.size()); - if ( data != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - if ( info.version >= 0x0A020000 ) { - if ( skinPartition != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(skinPartition) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - if ( skeletonRoot != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(skeletonRoot) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( numBones, out, info ); - for (unsigned int i1 = 0; i1 < bones.size(); i1++) { - if ( bones[i1] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(bones[i1]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; -} - -std::string NiSkinInstance::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - numBones = (unsigned int)(bones.size()); - out << " Data: " << data << endl; - out << " Skin Partition: " << skinPartition << endl; - out << " Skeleton Root: " << skeletonRoot << endl; - out << " Num Bones: " << numBones << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < bones.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Bones[" << i1 << "]: " << bones[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiSkinInstance::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); - data = FixLink<NiSkinData>( objects, link_stack, info ); - if ( info.version >= 0x0A020000 ) { - skinPartition = FixLink<NiSkinPartition>( objects, link_stack, info ); - }; - skeletonRoot = FixLink<NiNode>( objects, link_stack, info ); - for (unsigned int i1 = 0; i1 < bones.size(); i1++) { - bones[i1] = FixLink<NiNode>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiSkinInstance::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - if ( skinPartition != NULL ) - refs.push_back(StaticCast<NiObject>(skinPartition)); - for (unsigned int i1 = 0; i1 < bones.size(); i1++) { - }; - return refs; -} - -void NiTriShapeSkinController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiTimeController::Read( in, link_stack, info ); - NifStream( numBones, in, info ); - vertexCounts.resize(numBones); - for (unsigned int i1 = 0; i1 < vertexCounts.size(); i1++) { - NifStream( vertexCounts[i1], in, info ); - }; - bones.resize(numBones); - for (unsigned int i1 = 0; i1 < bones.size(); i1++) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - boneData.resize(numBones); - for (unsigned int i1 = 0; i1 < boneData.size(); i1++) { - boneData[i1].resize(vertexCounts[i1]); - for (unsigned int i2 = 0; i2 < vertexCounts[i1]; i2++) { - NifStream( boneData[i1][i2].vertexWeight, in, info ); - NifStream( boneData[i1][i2].vertexIndex, in, info ); - NifStream( boneData[i1][i2].unknownVector, in, info ); - }; - }; -} - -void NiTriShapeSkinController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiTimeController::Write( out, link_map, info ); - for (unsigned int i1 = 0; i1 < boneData.size(); i1++) - vertexCounts[i1] = (unsigned int)(boneData[i1].size()); - numBones = (unsigned int)(vertexCounts.size()); - NifStream( numBones, out, info ); - for (unsigned int i1 = 0; i1 < vertexCounts.size(); i1++) { - NifStream( vertexCounts[i1], out, info ); - }; - for (unsigned int i1 = 0; i1 < bones.size(); i1++) { - if ( bones[i1] != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(bones[i1]) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - for (unsigned int i1 = 0; i1 < boneData.size(); i1++) { - for (unsigned int i2 = 0; i2 < vertexCounts[i1]; i2++) { - NifStream( boneData[i1][i2].vertexWeight, out, info ); - NifStream( boneData[i1][i2].vertexIndex, out, info ); - NifStream( boneData[i1][i2].unknownVector, out, info ); - }; - }; -} - -std::string NiTriShapeSkinController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiTimeController::asString(); - for (unsigned int i1 = 0; i1 < boneData.size(); i1++) - vertexCounts[i1] = (unsigned int)(boneData[i1].size()); - numBones = (unsigned int)(vertexCounts.size()); - out << " Num Bones: " << numBones << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < vertexCounts.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Vertex Counts[" << i1 << "]: " << vertexCounts[i1] << endl; - array_output_count++; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < bones.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Bones[" << i1 << "]: " << bones[i1] << endl; - array_output_count++; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < boneData.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - for (unsigned int i2 = 0; i2 < vertexCounts[i1]; i2++) { - out << " Vertex Weight: " << boneData[i1][i2].vertexWeight << endl; - out << " Vertex Index: " << boneData[i1][i2].vertexIndex << endl; - out << " Unknown Vector: " << boneData[i1][i2].unknownVector << endl; - }; - }; - return out.str(); -} - -void NiTriShapeSkinController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTimeController::FixLinks( objects, link_stack, info ); - for (unsigned int i1 = 0; i1 < bones.size(); i1++) { - bones[i1] = FixLink<NiBone>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiTriShapeSkinController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiTimeController::GetRefs(); - for (unsigned int i1 = 0; i1 < bones.size(); i1++) { - }; - return refs; -} - -void NiClodSkinInstance::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiSkinInstance::Read( in, link_stack, info ); -} - -void NiClodSkinInstance::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiSkinInstance::Write( out, link_map, info ); -} - -std::string NiClodSkinInstance::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiSkinInstance::asString(); - return out.str(); -} - -void NiClodSkinInstance::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiSkinInstance::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiClodSkinInstance::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiSkinInstance::GetRefs(); - return refs; -} - -void NiSkinPartition::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::Read( in, link_stack, info ); - NifStream( numSkinPartitionBlocks, in, info ); - skinPartitionBlocks.resize(numSkinPartitionBlocks); - for (unsigned int i1 = 0; i1 < skinPartitionBlocks.size(); i1++) { - NifStream( skinPartitionBlocks[i1].numVertices, in, info ); - NifStream( skinPartitionBlocks[i1].numTriangles, in, info ); - NifStream( skinPartitionBlocks[i1].numBones, in, info ); - NifStream( skinPartitionBlocks[i1].numStrips, in, info ); - NifStream( skinPartitionBlocks[i1].numWeightsPerVertex, in, info ); - skinPartitionBlocks[i1].bones.resize(skinPartitionBlocks[i1].numBones); - for (unsigned int i2 = 0; i2 < skinPartitionBlocks[i1].bones.size(); i2++) { - NifStream( skinPartitionBlocks[i1].bones[i2], in, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( skinPartitionBlocks[i1].hasVertexMap, in, info ); - }; - if ( info.version <= 0x0A000102 ) { - skinPartitionBlocks[i1].vertexMap.resize(skinPartitionBlocks[i1].numVertices); - for (unsigned int i3 = 0; i3 < skinPartitionBlocks[i1].vertexMap.size(); i3++) { - NifStream( skinPartitionBlocks[i1].vertexMap[i3], in, info ); - }; - }; - if ( info.version >= 0x0A010000 ) { - if ( (skinPartitionBlocks[i1].hasVertexMap != 0) ) { - skinPartitionBlocks[i1].vertexMap.resize(skinPartitionBlocks[i1].numVertices); - for (unsigned int i4 = 0; i4 < skinPartitionBlocks[i1].vertexMap.size(); i4++) { - NifStream( skinPartitionBlocks[i1].vertexMap[i4], in, info ); - }; - }; - NifStream( skinPartitionBlocks[i1].hasVertexWeights, in, info ); - }; - if ( info.version <= 0x0A000102 ) { - skinPartitionBlocks[i1].vertexWeights.resize(skinPartitionBlocks[i1].numVertices); - for (unsigned int i3 = 0; i3 < skinPartitionBlocks[i1].vertexWeights.size(); i3++) { - skinPartitionBlocks[i1].vertexWeights[i3].resize(skinPartitionBlocks[i1].numWeightsPerVertex); - for (unsigned int i4 = 0; i4 < skinPartitionBlocks[i1].vertexWeights[i3].size(); i4++) { - NifStream( skinPartitionBlocks[i1].vertexWeights[i3][i4], in, info ); - }; - }; - }; - if ( info.version >= 0x0A010000 ) { - if ( (skinPartitionBlocks[i1].hasVertexWeights != 0) ) { - skinPartitionBlocks[i1].vertexWeights.resize(skinPartitionBlocks[i1].numVertices); - for (unsigned int i4 = 0; i4 < skinPartitionBlocks[i1].vertexWeights.size(); i4++) { - skinPartitionBlocks[i1].vertexWeights[i4].resize(skinPartitionBlocks[i1].numWeightsPerVertex); - for (unsigned int i5 = 0; i5 < skinPartitionBlocks[i1].vertexWeights[i4].size(); i5++) { - NifStream( skinPartitionBlocks[i1].vertexWeights[i4][i5], in, info ); - }; - }; - }; - }; - skinPartitionBlocks[i1].stripLengths.resize(skinPartitionBlocks[i1].numStrips); - for (unsigned int i2 = 0; i2 < skinPartitionBlocks[i1].stripLengths.size(); i2++) { - NifStream( skinPartitionBlocks[i1].stripLengths[i2], in, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( skinPartitionBlocks[i1].hasStrips, in, info ); - }; - if ( info.version <= 0x0A000102 ) { - skinPartitionBlocks[i1].strips.resize(skinPartitionBlocks[i1].numStrips); - for (unsigned int i3 = 0; i3 < skinPartitionBlocks[i1].strips.size(); i3++) { - skinPartitionBlocks[i1].strips[i3].resize(skinPartitionBlocks[i1].stripLengths[i3]); - for (unsigned int i4 = 0; i4 < skinPartitionBlocks[i1].stripLengths[i3]; i4++) { - NifStream( skinPartitionBlocks[i1].strips[i3][i4], in, info ); - }; - }; - }; - if ( info.version >= 0x0A010000 ) { - if ( (skinPartitionBlocks[i1].hasStrips != 0) ) { - skinPartitionBlocks[i1].strips.resize(skinPartitionBlocks[i1].numStrips); - for (unsigned int i4 = 0; i4 < skinPartitionBlocks[i1].strips.size(); i4++) { - skinPartitionBlocks[i1].strips[i4].resize(skinPartitionBlocks[i1].stripLengths[i4]); - for (unsigned int i5 = 0; i5 < skinPartitionBlocks[i1].stripLengths[i4]; i5++) { - NifStream( skinPartitionBlocks[i1].strips[i4][i5], in, info ); - }; - }; - }; - }; - if ( (skinPartitionBlocks[i1].numStrips == 0) ) { - skinPartitionBlocks[i1].triangles.resize(skinPartitionBlocks[i1].numTriangles); - for (unsigned int i3 = 0; i3 < skinPartitionBlocks[i1].triangles.size(); i3++) { - NifStream( skinPartitionBlocks[i1].triangles[i3], in, info ); - }; - }; - NifStream( skinPartitionBlocks[i1].hasBoneIndices, in, info ); - if ( (skinPartitionBlocks[i1].hasBoneIndices != 0) ) { - skinPartitionBlocks[i1].boneIndices.resize(skinPartitionBlocks[i1].numVertices); - for (unsigned int i3 = 0; i3 < skinPartitionBlocks[i1].boneIndices.size(); i3++) { - skinPartitionBlocks[i1].boneIndices[i3].resize(skinPartitionBlocks[i1].numWeightsPerVertex); - for (unsigned int i4 = 0; i4 < skinPartitionBlocks[i1].boneIndices[i3].size(); i4++) { - NifStream( skinPartitionBlocks[i1].boneIndices[i3][i4], in, info ); - }; - }; - }; - }; -} - -void NiSkinPartition::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - numSkinPartitionBlocks = (unsigned int)(skinPartitionBlocks.size()); - NifStream( numSkinPartitionBlocks, out, info ); - for (unsigned int i1 = 0; i1 < skinPartitionBlocks.size(); i1++) { - for (unsigned int i2 = 0; i2 < skinPartitionBlocks[i1].strips.size(); i2++) - skinPartitionBlocks[i1].stripLengths[i2] = (unsigned short)(skinPartitionBlocks[i1].strips[i2].size()); - skinPartitionBlocks[i1].numWeightsPerVertex = (unsigned short)((skinPartitionBlocks[i1].vertexWeights.size() > 0) ? skinPartitionBlocks[i1].vertexWeights[0].size() : 0); - skinPartitionBlocks[i1].numStrips = (unsigned short)(skinPartitionBlocks[i1].stripLengths.size()); - skinPartitionBlocks[i1].numBones = (unsigned short)(skinPartitionBlocks[i1].bones.size()); - skinPartitionBlocks[i1].numTriangles = (unsigned short)(skinPartitionBlocks[i1].triangles.size()); - skinPartitionBlocks[i1].numVertices = (unsigned short)(skinPartitionBlocks[i1].vertexMap.size()); - NifStream( skinPartitionBlocks[i1].numVertices, out, info ); - NifStream( skinPartitionBlocks[i1].numTriangles, out, info ); - NifStream( skinPartitionBlocks[i1].numBones, out, info ); - NifStream( skinPartitionBlocks[i1].numStrips, out, info ); - NifStream( skinPartitionBlocks[i1].numWeightsPerVertex, out, info ); - for (unsigned int i2 = 0; i2 < skinPartitionBlocks[i1].bones.size(); i2++) { - NifStream( skinPartitionBlocks[i1].bones[i2], out, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( skinPartitionBlocks[i1].hasVertexMap, out, info ); - }; - if ( info.version <= 0x0A000102 ) { - for (unsigned int i3 = 0; i3 < skinPartitionBlocks[i1].vertexMap.size(); i3++) { - NifStream( skinPartitionBlocks[i1].vertexMap[i3], out, info ); - }; - }; - if ( info.version >= 0x0A010000 ) { - if ( (skinPartitionBlocks[i1].hasVertexMap != 0) ) { - for (unsigned int i4 = 0; i4 < skinPartitionBlocks[i1].vertexMap.size(); i4++) { - NifStream( skinPartitionBlocks[i1].vertexMap[i4], out, info ); - }; - }; - NifStream( skinPartitionBlocks[i1].hasVertexWeights, out, info ); - }; - if ( info.version <= 0x0A000102 ) { - for (unsigned int i3 = 0; i3 < skinPartitionBlocks[i1].vertexWeights.size(); i3++) { - for (unsigned int i4 = 0; i4 < skinPartitionBlocks[i1].vertexWeights[i3].size(); i4++) { - NifStream( skinPartitionBlocks[i1].vertexWeights[i3][i4], out, info ); - }; - }; - }; - if ( info.version >= 0x0A010000 ) { - if ( (skinPartitionBlocks[i1].hasVertexWeights != 0) ) { - for (unsigned int i4 = 0; i4 < skinPartitionBlocks[i1].vertexWeights.size(); i4++) { - for (unsigned int i5 = 0; i5 < skinPartitionBlocks[i1].vertexWeights[i4].size(); i5++) { - NifStream( skinPartitionBlocks[i1].vertexWeights[i4][i5], out, info ); - }; - }; - }; - }; - for (unsigned int i2 = 0; i2 < skinPartitionBlocks[i1].stripLengths.size(); i2++) { - NifStream( skinPartitionBlocks[i1].stripLengths[i2], out, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( skinPartitionBlocks[i1].hasStrips, out, info ); - }; - if ( info.version <= 0x0A000102 ) { - for (unsigned int i3 = 0; i3 < skinPartitionBlocks[i1].strips.size(); i3++) { - for (unsigned int i4 = 0; i4 < skinPartitionBlocks[i1].stripLengths[i3]; i4++) { - NifStream( skinPartitionBlocks[i1].strips[i3][i4], out, info ); - }; - }; - }; - if ( info.version >= 0x0A010000 ) { - if ( (skinPartitionBlocks[i1].hasStrips != 0) ) { - for (unsigned int i4 = 0; i4 < skinPartitionBlocks[i1].strips.size(); i4++) { - for (unsigned int i5 = 0; i5 < skinPartitionBlocks[i1].stripLengths[i4]; i5++) { - NifStream( skinPartitionBlocks[i1].strips[i4][i5], out, info ); - }; - }; - }; - }; - if ( (skinPartitionBlocks[i1].numStrips == 0) ) { - for (unsigned int i3 = 0; i3 < skinPartitionBlocks[i1].triangles.size(); i3++) { - NifStream( skinPartitionBlocks[i1].triangles[i3], out, info ); - }; - }; - NifStream( skinPartitionBlocks[i1].hasBoneIndices, out, info ); - if ( (skinPartitionBlocks[i1].hasBoneIndices != 0) ) { - for (unsigned int i3 = 0; i3 < skinPartitionBlocks[i1].boneIndices.size(); i3++) { - for (unsigned int i4 = 0; i4 < skinPartitionBlocks[i1].boneIndices[i3].size(); i4++) { - NifStream( skinPartitionBlocks[i1].boneIndices[i3][i4], out, info ); - }; - }; - }; - }; -} - -std::string NiSkinPartition::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - numSkinPartitionBlocks = (unsigned int)(skinPartitionBlocks.size()); - out << " Num Skin Partition Blocks: " << numSkinPartitionBlocks << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < skinPartitionBlocks.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - for (unsigned int i2 = 0; i2 < skinPartitionBlocks[i1].strips.size(); i2++) - skinPartitionBlocks[i1].stripLengths[i2] = (unsigned short)(skinPartitionBlocks[i1].strips[i2].size()); - skinPartitionBlocks[i1].numWeightsPerVertex = (unsigned short)((skinPartitionBlocks[i1].vertexWeights.size() > 0) ? skinPartitionBlocks[i1].vertexWeights[0].size() : 0); - skinPartitionBlocks[i1].numStrips = (unsigned short)(skinPartitionBlocks[i1].stripLengths.size()); - skinPartitionBlocks[i1].numBones = (unsigned short)(skinPartitionBlocks[i1].bones.size()); - skinPartitionBlocks[i1].numTriangles = (unsigned short)(skinPartitionBlocks[i1].triangles.size()); - skinPartitionBlocks[i1].numVertices = (unsigned short)(skinPartitionBlocks[i1].vertexMap.size()); - out << " Num Vertices: " << skinPartitionBlocks[i1].numVertices << endl; - out << " Num Triangles: " << skinPartitionBlocks[i1].numTriangles << endl; - out << " Num Bones: " << skinPartitionBlocks[i1].numBones << endl; - out << " Num Strips: " << skinPartitionBlocks[i1].numStrips << endl; - out << " Num Weights Per Vertex: " << skinPartitionBlocks[i1].numWeightsPerVertex << endl; - array_output_count = 0; - for (unsigned int i2 = 0; i2 < skinPartitionBlocks[i1].bones.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Bones[" << i2 << "]: " << skinPartitionBlocks[i1].bones[i2] << endl; - array_output_count++; - }; - out << " Has Vertex Map: " << skinPartitionBlocks[i1].hasVertexMap << endl; - array_output_count = 0; - for (unsigned int i2 = 0; i2 < skinPartitionBlocks[i1].vertexMap.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Vertex Map[" << i2 << "]: " << skinPartitionBlocks[i1].vertexMap[i2] << endl; - array_output_count++; - }; - out << " Has Vertex Weights: " << skinPartitionBlocks[i1].hasVertexWeights << endl; - array_output_count = 0; - for (unsigned int i2 = 0; i2 < skinPartitionBlocks[i1].vertexWeights.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - for (unsigned int i3 = 0; i3 < skinPartitionBlocks[i1].vertexWeights[i2].size(); i3++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Vertex Weights[" << i3 << "]: " << skinPartitionBlocks[i1].vertexWeights[i2][i3] << endl; - array_output_count++; - }; - }; - array_output_count = 0; - for (unsigned int i2 = 0; i2 < skinPartitionBlocks[i1].stripLengths.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Strip Lengths[" << i2 << "]: " << skinPartitionBlocks[i1].stripLengths[i2] << endl; - array_output_count++; - }; - out << " Has Strips: " << skinPartitionBlocks[i1].hasStrips << endl; - array_output_count = 0; - for (unsigned int i2 = 0; i2 < skinPartitionBlocks[i1].strips.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - for (unsigned int i3 = 0; i3 < skinPartitionBlocks[i1].stripLengths[i2]; i3++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Strips[" << i3 << "]: " << skinPartitionBlocks[i1].strips[i2][i3] << endl; - array_output_count++; - }; - }; - if ( (skinPartitionBlocks[i1].numStrips == 0) ) { - array_output_count = 0; - for (unsigned int i3 = 0; i3 < skinPartitionBlocks[i1].triangles.size(); i3++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Triangles[" << i3 << "]: " << skinPartitionBlocks[i1].triangles[i3] << endl; - array_output_count++; - }; - }; - out << " Has Bone Indices: " << skinPartitionBlocks[i1].hasBoneIndices << endl; - if ( (skinPartitionBlocks[i1].hasBoneIndices != 0) ) { - array_output_count = 0; - for (unsigned int i3 = 0; i3 < skinPartitionBlocks[i1].boneIndices.size(); i3++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - for (unsigned int i4 = 0; i4 < skinPartitionBlocks[i1].boneIndices[i3].size(); i4++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Bone Indices[" << i4 << "]: " << skinPartitionBlocks[i1].boneIndices[i3][i4] << endl; - array_output_count++; - }; - }; - }; - }; - return out.str(); -} - -void NiSkinPartition::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiSkinPartition::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -void NiTexture::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObjectNET::Read( in, link_stack, info ); -} - -void NiTexture::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObjectNET::Write( out, link_map, info ); -} - -std::string NiTexture::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObjectNET::asString(); - return out.str(); -} - -void NiTexture::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObjectNET::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiTexture::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObjectNET::GetRefs(); - return refs; -} - -void NiSourceTexture::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiTexture::Read( in, link_stack, info ); - NifStream( useExternal, in, info ); - if ( (useExternal == 1) ) { - NifStream( fileName, in, info ); - }; - if ( info.version >= 0x0A010000 ) { - if ( (useExternal == 1) ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - }; - if ( info.version <= 0x0A000100 ) { - if ( (useExternal == 0) ) { - NifStream( unknownByte, in, info ); - }; - }; - if ( info.version >= 0x0A010000 ) { - if ( (useExternal == 0) ) { - NifStream( originalFileName_, in, info ); - }; - }; - if ( (useExternal == 0) ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - NifStream( pixelLayout, in, info ); - NifStream( useMipmaps, in, info ); - NifStream( alphaFormat, in, info ); - NifStream( unknownByte, in, info ); - if ( info.version >= 0x0A01006A ) { - NifStream( unknownByte2, in, info ); - }; -} - -void NiSourceTexture::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiTexture::Write( out, link_map, info ); - NifStream( useExternal, out, info ); - if ( (useExternal == 1) ) { - NifStream( fileName, out, info ); - }; - if ( info.version >= 0x0A010000 ) { - if ( (useExternal == 1) ) { - if ( unknownLink != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(unknownLink) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - }; - if ( info.version <= 0x0A000100 ) { - if ( (useExternal == 0) ) { - NifStream( unknownByte, out, info ); - }; - }; - if ( info.version >= 0x0A010000 ) { - if ( (useExternal == 0) ) { - NifStream( originalFileName_, out, info ); - }; - }; - if ( (useExternal == 0) ) { - if ( pixelData != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(pixelData) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - NifStream( pixelLayout, out, info ); - NifStream( useMipmaps, out, info ); - NifStream( alphaFormat, out, info ); - NifStream( unknownByte, out, info ); - if ( info.version >= 0x0A01006A ) { - NifStream( unknownByte2, out, info ); - }; -} - -std::string NiSourceTexture::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiTexture::asString(); - out << " Use External: " << useExternal << endl; - if ( (useExternal == 1) ) { - out << " File Name: " << fileName << endl; - out << " Unknown Link: " << unknownLink << endl; - }; - if ( (useExternal == 0) ) { - out << " Unknown Byte: " << unknownByte << endl; - out << " Original File Name?: " << originalFileName_ << endl; - out << " Pixel Data: " << pixelData << endl; - }; - out << " Pixel Layout: " << pixelLayout << endl; - out << " Use Mipmaps: " << useMipmaps << endl; - out << " Alpha Format: " << alphaFormat << endl; - out << " Unknown Byte 2: " << unknownByte2 << endl; - return out.str(); -} - -void NiSourceTexture::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTexture::FixLinks( objects, link_stack, info ); - if ( info.version >= 0x0A010000 ) { - if ( (useExternal == 1) ) { - unknownLink = FixLink<NiObject>( objects, link_stack, info ); - }; - }; - if ( (useExternal == 0) ) { - pixelData = FixLink<NiPixelData>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiSourceTexture::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiTexture::GetRefs(); - if ( unknownLink != NULL ) - refs.push_back(StaticCast<NiObject>(unknownLink)); - if ( pixelData != NULL ) - refs.push_back(StaticCast<NiObject>(pixelData)); - return refs; -} - -void NiSpecularProperty::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::Read( in, link_stack, info ); - NifStream( flags, in, info ); -} - -void NiSpecularProperty::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiProperty::Write( out, link_map, info ); - NifStream( flags, out, info ); -} - -std::string NiSpecularProperty::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiProperty::asString(); - out << " Flags: " << flags << endl; - return out.str(); -} - -void NiSpecularProperty::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiSpecularProperty::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiProperty::GetRefs(); - return refs; -} - -void NiSphericalCollider::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - AParticleModifier::Read( in, link_stack, info ); - NifStream( unknownFloat1, in, info ); - NifStream( unknownShort1, in, info ); - NifStream( unknownFloat2, in, info ); - if ( info.version <= 0x04020002 ) { - NifStream( unknownShort2, in, info ); - }; - if ( info.version >= 0x04020100 ) { - NifStream( unknownFloat3, in, info ); - }; - NifStream( unknownFloat4, in, info ); - NifStream( unknownFloat5, in, info ); -} - -void NiSphericalCollider::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - AParticleModifier::Write( out, link_map, info ); - NifStream( unknownFloat1, out, info ); - NifStream( unknownShort1, out, info ); - NifStream( unknownFloat2, out, info ); - if ( info.version <= 0x04020002 ) { - NifStream( unknownShort2, out, info ); - }; - if ( info.version >= 0x04020100 ) { - NifStream( unknownFloat3, out, info ); - }; - NifStream( unknownFloat4, out, info ); - NifStream( unknownFloat5, out, info ); -} - -std::string NiSphericalCollider::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << AParticleModifier::asString(); - out << " Unknown Float 1: " << unknownFloat1 << endl; - out << " Unknown Short 1: " << unknownShort1 << endl; - out << " Unknown Float 2: " << unknownFloat2 << endl; - out << " Unknown Short 2: " << unknownShort2 << endl; - out << " Unknown Float 3: " << unknownFloat3 << endl; - out << " Unknown Float 4: " << unknownFloat4 << endl; - out << " Unknown Float 5: " << unknownFloat5 << endl; - return out.str(); -} - -void NiSphericalCollider::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - AParticleModifier::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiSphericalCollider::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = AParticleModifier::GetRefs(); - return refs; -} - -void NiSpotLight::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPointLight::Read( in, link_stack, info ); - NifStream( cutoffAngle, in, info ); - NifStream( exponent, in, info ); -} - -void NiSpotLight::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiPointLight::Write( out, link_map, info ); - NifStream( cutoffAngle, out, info ); - NifStream( exponent, out, info ); -} - -std::string NiSpotLight::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiPointLight::asString(); - out << " Cutoff Angle: " << cutoffAngle << endl; - out << " Exponent: " << exponent << endl; - return out.str(); -} - -void NiSpotLight::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiPointLight::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiSpotLight::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiPointLight::GetRefs(); - return refs; -} - -void NiStencilProperty::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::Read( in, link_stack, info ); - if ( info.version <= 0x0A000102 ) { - NifStream( flags, in, info ); - }; - NifStream( stencilEnabled, in, info ); - NifStream( stencilFunction, in, info ); - NifStream( stencilRef, in, info ); - NifStream( stencilMask, in, info ); - NifStream( failAction, in, info ); - NifStream( zFailAction, in, info ); - NifStream( passAction, in, info ); - NifStream( drawMode, in, info ); -} - -void NiStencilProperty::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiProperty::Write( out, link_map, info ); - if ( info.version <= 0x0A000102 ) { - NifStream( flags, out, info ); - }; - NifStream( stencilEnabled, out, info ); - NifStream( stencilFunction, out, info ); - NifStream( stencilRef, out, info ); - NifStream( stencilMask, out, info ); - NifStream( failAction, out, info ); - NifStream( zFailAction, out, info ); - NifStream( passAction, out, info ); - NifStream( drawMode, out, info ); -} - -std::string NiStencilProperty::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiProperty::asString(); - out << " Flags: " << flags << endl; - out << " Stencil Enabled: " << stencilEnabled << endl; - out << " Stencil Function: " << stencilFunction << endl; - out << " Stencil Ref: " << stencilRef << endl; - out << " Stencil Mask: " << stencilMask << endl; - out << " Fail Action: " << failAction << endl; - out << " Z Fail Action: " << zFailAction << endl; - out << " Pass Action: " << passAction << endl; - out << " Draw Mode: " << drawMode << endl; - return out.str(); -} - -void NiStencilProperty::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiStencilProperty::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiProperty::GetRefs(); - return refs; -} - -void NiStringExtraData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::Read( in, link_stack, info ); - if ( info.version <= 0x04020200 ) { - NifStream( bytesRemaining, in, info ); - }; - NifStream( stringData, in, info ); -} - -void NiStringExtraData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiExtraData::Write( out, link_map, info ); - if ( info.version <= 0x04020200 ) { - NifStream( bytesRemaining, out, info ); - }; - NifStream( stringData, out, info ); -} - -std::string NiStringExtraData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiExtraData::asString(); - out << " Bytes Remaining: " << bytesRemaining << endl; - out << " String Data: " << stringData << endl; - return out.str(); -} - -void NiStringExtraData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiStringExtraData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiExtraData::GetRefs(); - return refs; -} - -void NiStringPalette::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::Read( in, link_stack, info ); - NifStream( palette.palette, in, info ); - NifStream( palette.length, in, info ); -} - -void NiStringPalette::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - NifStream( palette.palette, out, info ); - NifStream( palette.length, out, info ); -} - -std::string NiStringPalette::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - out << " Palette: " << palette.palette << endl; - out << " Length: " << palette.length << endl; - return out.str(); -} - -void NiStringPalette::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiStringPalette::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -void NiStringsExtraData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::Read( in, link_stack, info ); - NifStream( numStrings, in, info ); - data.resize(numStrings); - for (unsigned int i1 = 0; i1 < data.size(); i1++) { - NifStream( data[i1], in, info ); - }; -} - -void NiStringsExtraData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiExtraData::Write( out, link_map, info ); - numStrings = (unsigned int)(data.size()); - NifStream( numStrings, out, info ); - for (unsigned int i1 = 0; i1 < data.size(); i1++) { - NifStream( data[i1], out, info ); - }; -} - -std::string NiStringsExtraData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiExtraData::asString(); - numStrings = (unsigned int)(data.size()); - out << " Num Strings: " << numStrings << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < data.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Data[" << i1 << "]: " << data[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiStringsExtraData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiStringsExtraData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiExtraData::GetRefs(); - return refs; -} - -void NiTextKeyExtraData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::Read( in, link_stack, info ); - if ( info.version <= 0x04020200 ) { - NifStream( unknownInt1, in, info ); - }; - NifStream( numTextKeys, in, info ); - textKeys.resize(numTextKeys); - for (unsigned int i1 = 0; i1 < textKeys.size(); i1++) { - NifStream( textKeys[i1], in, info, 1 ); - }; -} - -void NiTextKeyExtraData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiExtraData::Write( out, link_map, info ); - numTextKeys = (unsigned int)(textKeys.size()); - if ( info.version <= 0x04020200 ) { - NifStream( unknownInt1, out, info ); - }; - NifStream( numTextKeys, out, info ); - for (unsigned int i1 = 0; i1 < textKeys.size(); i1++) { - NifStream( textKeys[i1], out, info, 1 ); - }; -} - -std::string NiTextKeyExtraData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiExtraData::asString(); - numTextKeys = (unsigned int)(textKeys.size()); - out << " Unknown Int 1: " << unknownInt1 << endl; - out << " Num Text Keys: " << numTextKeys << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < textKeys.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Text Keys[" << i1 << "]: " << textKeys[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiTextKeyExtraData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiTextKeyExtraData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiExtraData::GetRefs(); - return refs; -} - -void NiTextureEffect::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiDynamicEffect::Read( in, link_stack, info ); - NifStream( modelProjectionMatrix, in, info ); - NifStream( modelProjectionTransform, in, info ); - NifStream( textureFiltering, in, info ); - NifStream( textureClamping, in, info ); - NifStream( textureType, in, info ); - NifStream( coordinateGenerationType, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( clippingPlane, in, info ); - NifStream( unknownVector, in, info ); - NifStream( unknownFloat, in, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( ps2L, in, info ); - NifStream( ps2K, in, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( unknownShort, in, info ); - }; -} - -void NiTextureEffect::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiDynamicEffect::Write( out, link_map, info ); - NifStream( modelProjectionMatrix, out, info ); - NifStream( modelProjectionTransform, out, info ); - NifStream( textureFiltering, out, info ); - NifStream( textureClamping, out, info ); - NifStream( textureType, out, info ); - NifStream( coordinateGenerationType, out, info ); - if ( sourceTexture != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(sourceTexture) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( clippingPlane, out, info ); - NifStream( unknownVector, out, info ); - NifStream( unknownFloat, out, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( ps2L, out, info ); - NifStream( ps2K, out, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( unknownShort, out, info ); - }; -} - -std::string NiTextureEffect::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiDynamicEffect::asString(); - out << " Model Projection Matrix: " << modelProjectionMatrix << endl; - out << " Model Projection Transform: " << modelProjectionTransform << endl; - out << " Texture Filtering: " << textureFiltering << endl; - out << " Texture Clamping: " << textureClamping << endl; - out << " Texture Type: " << textureType << endl; - out << " Coordinate Generation Type: " << coordinateGenerationType << endl; - out << " Source Texture: " << sourceTexture << endl; - out << " Clipping Plane: " << clippingPlane << endl; - out << " Unknown Vector: " << unknownVector << endl; - out << " Unknown Float: " << unknownFloat << endl; - out << " PS2 L: " << ps2L << endl; - out << " PS2 K: " << ps2K << endl; - out << " Unknown Short: " << unknownShort << endl; - return out.str(); -} - -void NiTextureEffect::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiDynamicEffect::FixLinks( objects, link_stack, info ); - sourceTexture = FixLink<NiSourceTexture>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiTextureEffect::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiDynamicEffect::GetRefs(); - if ( sourceTexture != NULL ) - refs.push_back(StaticCast<NiObject>(sourceTexture)); - return refs; -} - -void NiTextureModeProperty::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::Read( in, link_stack, info ); - NifStream( unknownShort, in, info ); - if ( info.version >= 0x03010000 ) { - for (unsigned int i2 = 0; i2 < 2; i2++) { - NifStream( unknown2Shorts[i2], in, info ); - }; - }; -} - -void NiTextureModeProperty::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiProperty::Write( out, link_map, info ); - NifStream( unknownShort, out, info ); - if ( info.version >= 0x03010000 ) { - for (unsigned int i2 = 0; i2 < 2; i2++) { - NifStream( unknown2Shorts[i2], out, info ); - }; - }; -} - -std::string NiTextureModeProperty::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiProperty::asString(); - out << " Unknown Short: " << unknownShort << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 2; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown 2 Shorts[" << i1 << "]: " << unknown2Shorts[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiTextureModeProperty::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiTextureModeProperty::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiProperty::GetRefs(); - return refs; -} - -void NiImage::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiObject::Read( in, link_stack, info ); - NifStream( external, in, info ); - if ( (external != 0) ) { - NifStream( fileName, in, info ); - }; - if ( (external == 0) ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - }; - NifStream( unknownInt1, in, info ); - if ( info.version >= 0x03010000 ) { - NifStream( unknownInt2, in, info ); - }; -} - -void NiImage::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - NifStream( external, out, info ); - if ( (external != 0) ) { - NifStream( fileName, out, info ); - }; - if ( (external == 0) ) { - if ( imageData != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(imageData) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - }; - NifStream( unknownInt1, out, info ); - if ( info.version >= 0x03010000 ) { - NifStream( unknownInt2, out, info ); - }; -} - -std::string NiImage::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - out << " External: " << external << endl; - if ( (external != 0) ) { - out << " File Name: " << fileName << endl; - }; - if ( (external == 0) ) { - out << " Image Data: " << imageData << endl; - }; - out << " Unknown Int 1: " << unknownInt1 << endl; - out << " Unknown Int 2: " << unknownInt2 << endl; - return out.str(); -} - -void NiImage::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); - if ( (external == 0) ) { - imageData = FixLink<NiRawImageData>( objects, link_stack, info ); - }; -} - -std::list<NiObjectRef> NiImage::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - if ( imageData != NULL ) - refs.push_back(StaticCast<NiObject>(imageData)); - return refs; -} - -void NiTextureProperty::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiProperty::Read( in, link_stack, info ); - NifStream( flags, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - if ( info.version <= 0x03000300 ) { - NifStream( unknownInt1, in, info ); - NifStream( unknownInt2, in, info ); - }; -} - -void NiTextureProperty::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiProperty::Write( out, link_map, info ); - NifStream( flags, out, info ); - if ( image != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(image) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - if ( info.version <= 0x03000300 ) { - NifStream( unknownInt1, out, info ); - NifStream( unknownInt2, out, info ); - }; -} - -std::string NiTextureProperty::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiProperty::asString(); - out << " Flags: " << flags << endl; - out << " Image: " << image << endl; - out << " Unknown Int 1: " << unknownInt1 << endl; - out << " Unknown Int 2: " << unknownInt2 << endl; - return out.str(); -} - -void NiTextureProperty::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::FixLinks( objects, link_stack, info ); - image = FixLink<NiImage>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiTextureProperty::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiProperty::GetRefs(); - if ( image != NULL ) - refs.push_back(StaticCast<NiObject>(image)); - return refs; -} - -void NiMultiTextureProperty::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiProperty::Read( in, link_stack, info ); - NifStream( flags, in, info ); - NifStream( unknownInt, in, info ); - for (unsigned int i1 = 0; i1 < 5; i1++) { - NifStream( textureElements[i1].hasImage, in, info ); - if ( textureElements[i1].hasImage ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( textureElements[i1].unknownInt1, in, info ); - NifStream( textureElements[i1].unknownInt2, in, info ); - NifStream( textureElements[i1].unknownInt3, in, info ); - NifStream( textureElements[i1].unknownShort1, in, info ); - NifStream( textureElements[i1].unknownShort2, in, info ); - NifStream( textureElements[i1].unknownShort3, in, info ); - }; - }; -} - -void NiMultiTextureProperty::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiProperty::Write( out, link_map, info ); - NifStream( flags, out, info ); - NifStream( unknownInt, out, info ); - for (unsigned int i1 = 0; i1 < 5; i1++) { - NifStream( textureElements[i1].hasImage, out, info ); - if ( textureElements[i1].hasImage ) { - if ( textureElements[i1].image != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(textureElements[i1].image) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( textureElements[i1].unknownInt1, out, info ); - NifStream( textureElements[i1].unknownInt2, out, info ); - NifStream( textureElements[i1].unknownInt3, out, info ); - NifStream( textureElements[i1].unknownShort1, out, info ); - NifStream( textureElements[i1].unknownShort2, out, info ); - NifStream( textureElements[i1].unknownShort3, out, info ); - }; - }; -} - -std::string NiMultiTextureProperty::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiProperty::asString(); - out << " Flags: " << flags << endl; - out << " Unknown Int: " << unknownInt << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 5; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - out << " Has Image: " << textureElements[i1].hasImage << endl; - if ( textureElements[i1].hasImage ) { - out << " Image: " << textureElements[i1].image << endl; - out << " Unknown Int 1: " << textureElements[i1].unknownInt1 << endl; - out << " Unknown Int 2: " << textureElements[i1].unknownInt2 << endl; - out << " Unknown Int 3: " << textureElements[i1].unknownInt3 << endl; - out << " Unknown Short 1: " << textureElements[i1].unknownShort1 << endl; - out << " Unknown Short 2: " << textureElements[i1].unknownShort2 << endl; - out << " Unknown Short 3: " << textureElements[i1].unknownShort3 << endl; - }; - }; - return out.str(); -} - -void NiMultiTextureProperty::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::FixLinks( objects, link_stack, info ); - for (unsigned int i1 = 0; i1 < 5; i1++) { - if ( textureElements[i1].hasImage ) { - textureElements[i1].image = FixLink<NiImage>( objects, link_stack, info ); - }; - }; -} - -std::list<NiObjectRef> NiMultiTextureProperty::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiProperty::GetRefs(); - for (unsigned int i1 = 0; i1 < 5; i1++) { - if ( textureElements[i1].image != NULL ) - refs.push_back(StaticCast<NiObject>(textureElements[i1].image)); - }; - return refs; -} - -void NiTexturingProperty::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiProperty::Read( in, link_stack, info ); - if ( info.version <= 0x0A000102 ) { - NifStream( flags, in, info ); - }; - NifStream( applyMode, in, info ); - NifStream( textureCount, in, info ); - NifStream( hasBaseTexture, in, info ); - if ( (hasBaseTexture != 0) ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( baseTexture.clampMode, in, info ); - NifStream( baseTexture.filterMode, in, info ); - NifStream( baseTexture.uvSet, in, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( baseTexture.ps2L, in, info ); - NifStream( baseTexture.ps2K, in, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( baseTexture.unknown1, in, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( baseTexture.hasTextureTransform, in, info ); - if ( (baseTexture.hasTextureTransform != 0) ) { - NifStream( baseTexture.translation, in, info ); - NifStream( baseTexture.tiling, in, info ); - NifStream( baseTexture.wRotation, in, info ); - NifStream( baseTexture.transformType_, in, info ); - NifStream( baseTexture.centerOffset, in, info ); - }; - }; - }; - NifStream( hasDarkTexture, in, info ); - if ( (hasDarkTexture != 0) ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( darkTexture.clampMode, in, info ); - NifStream( darkTexture.filterMode, in, info ); - NifStream( darkTexture.uvSet, in, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( darkTexture.ps2L, in, info ); - NifStream( darkTexture.ps2K, in, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( darkTexture.unknown1, in, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( darkTexture.hasTextureTransform, in, info ); - if ( (darkTexture.hasTextureTransform != 0) ) { - NifStream( darkTexture.translation, in, info ); - NifStream( darkTexture.tiling, in, info ); - NifStream( darkTexture.wRotation, in, info ); - NifStream( darkTexture.transformType_, in, info ); - NifStream( darkTexture.centerOffset, in, info ); - }; - }; - }; - NifStream( hasDetailTexture, in, info ); - if ( (hasDetailTexture != 0) ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( detailTexture.clampMode, in, info ); - NifStream( detailTexture.filterMode, in, info ); - NifStream( detailTexture.uvSet, in, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( detailTexture.ps2L, in, info ); - NifStream( detailTexture.ps2K, in, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( detailTexture.unknown1, in, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( detailTexture.hasTextureTransform, in, info ); - if ( (detailTexture.hasTextureTransform != 0) ) { - NifStream( detailTexture.translation, in, info ); - NifStream( detailTexture.tiling, in, info ); - NifStream( detailTexture.wRotation, in, info ); - NifStream( detailTexture.transformType_, in, info ); - NifStream( detailTexture.centerOffset, in, info ); - }; - }; - }; - NifStream( hasGlossTexture, in, info ); - if ( (hasGlossTexture != 0) ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( glossTexture.clampMode, in, info ); - NifStream( glossTexture.filterMode, in, info ); - NifStream( glossTexture.uvSet, in, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( glossTexture.ps2L, in, info ); - NifStream( glossTexture.ps2K, in, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( glossTexture.unknown1, in, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( glossTexture.hasTextureTransform, in, info ); - if ( (glossTexture.hasTextureTransform != 0) ) { - NifStream( glossTexture.translation, in, info ); - NifStream( glossTexture.tiling, in, info ); - NifStream( glossTexture.wRotation, in, info ); - NifStream( glossTexture.transformType_, in, info ); - NifStream( glossTexture.centerOffset, in, info ); - }; - }; - }; - NifStream( hasGlowTexture, in, info ); - if ( (hasGlowTexture != 0) ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( glowTexture.clampMode, in, info ); - NifStream( glowTexture.filterMode, in, info ); - NifStream( glowTexture.uvSet, in, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( glowTexture.ps2L, in, info ); - NifStream( glowTexture.ps2K, in, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( glowTexture.unknown1, in, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( glowTexture.hasTextureTransform, in, info ); - if ( (glowTexture.hasTextureTransform != 0) ) { - NifStream( glowTexture.translation, in, info ); - NifStream( glowTexture.tiling, in, info ); - NifStream( glowTexture.wRotation, in, info ); - NifStream( glowTexture.transformType_, in, info ); - NifStream( glowTexture.centerOffset, in, info ); - }; - }; - }; - NifStream( hasBumpMapTexture, in, info ); - if ( (hasBumpMapTexture != 0) ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( bumpMapTexture.clampMode, in, info ); - NifStream( bumpMapTexture.filterMode, in, info ); - NifStream( bumpMapTexture.uvSet, in, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( bumpMapTexture.ps2L, in, info ); - NifStream( bumpMapTexture.ps2K, in, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( bumpMapTexture.unknown1, in, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( bumpMapTexture.hasTextureTransform, in, info ); - if ( (bumpMapTexture.hasTextureTransform != 0) ) { - NifStream( bumpMapTexture.translation, in, info ); - NifStream( bumpMapTexture.tiling, in, info ); - NifStream( bumpMapTexture.wRotation, in, info ); - NifStream( bumpMapTexture.transformType_, in, info ); - NifStream( bumpMapTexture.centerOffset, in, info ); - }; - }; - NifStream( bumpMapLumaScale, in, info ); - NifStream( bumpMapLumaOffset, in, info ); - NifStream( bumpMapMatrix, in, info ); - }; - NifStream( hasDecal0Texture, in, info ); - if ( (hasDecal0Texture != 0) ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( decal0Texture.clampMode, in, info ); - NifStream( decal0Texture.filterMode, in, info ); - NifStream( decal0Texture.uvSet, in, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( decal0Texture.ps2L, in, info ); - NifStream( decal0Texture.ps2K, in, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( decal0Texture.unknown1, in, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( decal0Texture.hasTextureTransform, in, info ); - if ( (decal0Texture.hasTextureTransform != 0) ) { - NifStream( decal0Texture.translation, in, info ); - NifStream( decal0Texture.tiling, in, info ); - NifStream( decal0Texture.wRotation, in, info ); - NifStream( decal0Texture.transformType_, in, info ); - NifStream( decal0Texture.centerOffset, in, info ); - }; - }; - }; - if ( (textureCount >= 8) ) { - NifStream( hasDecal1Texture, in, info ); - }; - if ( (((textureCount >= 8)) && ((hasDecal1Texture != 0))) ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( decal1Texture.clampMode, in, info ); - NifStream( decal1Texture.filterMode, in, info ); - NifStream( decal1Texture.uvSet, in, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( decal1Texture.ps2L, in, info ); - NifStream( decal1Texture.ps2K, in, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( decal1Texture.unknown1, in, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( decal1Texture.hasTextureTransform, in, info ); - if ( (decal1Texture.hasTextureTransform != 0) ) { - NifStream( decal1Texture.translation, in, info ); - NifStream( decal1Texture.tiling, in, info ); - NifStream( decal1Texture.wRotation, in, info ); - NifStream( decal1Texture.transformType_, in, info ); - NifStream( decal1Texture.centerOffset, in, info ); - }; - }; - }; - if ( (textureCount >= 9) ) { - NifStream( hasDecal2Texture, in, info ); - }; - if ( (((textureCount >= 9)) && ((hasDecal2Texture != 0))) ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( decal2Texture.clampMode, in, info ); - NifStream( decal2Texture.filterMode, in, info ); - NifStream( decal2Texture.uvSet, in, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( decal2Texture.ps2L, in, info ); - NifStream( decal2Texture.ps2K, in, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( decal2Texture.unknown1, in, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( decal2Texture.hasTextureTransform, in, info ); - if ( (decal2Texture.hasTextureTransform != 0) ) { - NifStream( decal2Texture.translation, in, info ); - NifStream( decal2Texture.tiling, in, info ); - NifStream( decal2Texture.wRotation, in, info ); - NifStream( decal2Texture.transformType_, in, info ); - NifStream( decal2Texture.centerOffset, in, info ); - }; - }; - }; - if ( (textureCount >= 10) ) { - NifStream( hasDecal3Texture, in, info ); - }; - if ( (((textureCount >= 10)) && ((hasDecal3Texture != 0))) ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( decal3Texture.clampMode, in, info ); - NifStream( decal3Texture.filterMode, in, info ); - NifStream( decal3Texture.uvSet, in, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( decal3Texture.ps2L, in, info ); - NifStream( decal3Texture.ps2K, in, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( decal3Texture.unknown1, in, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( decal3Texture.hasTextureTransform, in, info ); - if ( (decal3Texture.hasTextureTransform != 0) ) { - NifStream( decal3Texture.translation, in, info ); - NifStream( decal3Texture.tiling, in, info ); - NifStream( decal3Texture.wRotation, in, info ); - NifStream( decal3Texture.transformType_, in, info ); - NifStream( decal3Texture.centerOffset, in, info ); - }; - }; - }; - if ( info.version >= 0x0A000100 ) { - NifStream( numShaderTextures, in, info ); - shaderTextures.resize(numShaderTextures); - for (unsigned int i2 = 0; i2 < shaderTextures.size(); i2++) { - NifStream( shaderTextures[i2].isUsed, in, info ); - if ( (shaderTextures[i2].isUsed != 0) ) { - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); - NifStream( shaderTextures[i2].textureData.clampMode, in, info ); - NifStream( shaderTextures[i2].textureData.filterMode, in, info ); - NifStream( shaderTextures[i2].textureData.uvSet, in, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( shaderTextures[i2].textureData.ps2L, in, info ); - NifStream( shaderTextures[i2].textureData.ps2K, in, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( shaderTextures[i2].textureData.unknown1, in, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( shaderTextures[i2].textureData.hasTextureTransform, in, info ); - if ( (shaderTextures[i2].textureData.hasTextureTransform != 0) ) { - NifStream( shaderTextures[i2].textureData.translation, in, info ); - NifStream( shaderTextures[i2].textureData.tiling, in, info ); - NifStream( shaderTextures[i2].textureData.wRotation, in, info ); - NifStream( shaderTextures[i2].textureData.transformType_, in, info ); - NifStream( shaderTextures[i2].textureData.centerOffset, in, info ); - }; - }; - NifStream( shaderTextures[i2].unknownInt, in, info ); - }; - }; - }; -} - -void NiTexturingProperty::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiProperty::Write( out, link_map, info ); - numShaderTextures = (unsigned int)(shaderTextures.size()); - if ( info.version <= 0x0A000102 ) { - NifStream( flags, out, info ); - }; - NifStream( applyMode, out, info ); - NifStream( textureCount, out, info ); - NifStream( hasBaseTexture, out, info ); - if ( (hasBaseTexture != 0) ) { - if ( baseTexture.source != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(baseTexture.source) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( baseTexture.clampMode, out, info ); - NifStream( baseTexture.filterMode, out, info ); - NifStream( baseTexture.uvSet, out, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( baseTexture.ps2L, out, info ); - NifStream( baseTexture.ps2K, out, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( baseTexture.unknown1, out, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( baseTexture.hasTextureTransform, out, info ); - if ( (baseTexture.hasTextureTransform != 0) ) { - NifStream( baseTexture.translation, out, info ); - NifStream( baseTexture.tiling, out, info ); - NifStream( baseTexture.wRotation, out, info ); - NifStream( baseTexture.transformType_, out, info ); - NifStream( baseTexture.centerOffset, out, info ); - }; - }; - }; - NifStream( hasDarkTexture, out, info ); - if ( (hasDarkTexture != 0) ) { - if ( darkTexture.source != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(darkTexture.source) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( darkTexture.clampMode, out, info ); - NifStream( darkTexture.filterMode, out, info ); - NifStream( darkTexture.uvSet, out, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( darkTexture.ps2L, out, info ); - NifStream( darkTexture.ps2K, out, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( darkTexture.unknown1, out, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( darkTexture.hasTextureTransform, out, info ); - if ( (darkTexture.hasTextureTransform != 0) ) { - NifStream( darkTexture.translation, out, info ); - NifStream( darkTexture.tiling, out, info ); - NifStream( darkTexture.wRotation, out, info ); - NifStream( darkTexture.transformType_, out, info ); - NifStream( darkTexture.centerOffset, out, info ); - }; - }; - }; - NifStream( hasDetailTexture, out, info ); - if ( (hasDetailTexture != 0) ) { - if ( detailTexture.source != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(detailTexture.source) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( detailTexture.clampMode, out, info ); - NifStream( detailTexture.filterMode, out, info ); - NifStream( detailTexture.uvSet, out, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( detailTexture.ps2L, out, info ); - NifStream( detailTexture.ps2K, out, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( detailTexture.unknown1, out, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( detailTexture.hasTextureTransform, out, info ); - if ( (detailTexture.hasTextureTransform != 0) ) { - NifStream( detailTexture.translation, out, info ); - NifStream( detailTexture.tiling, out, info ); - NifStream( detailTexture.wRotation, out, info ); - NifStream( detailTexture.transformType_, out, info ); - NifStream( detailTexture.centerOffset, out, info ); - }; - }; - }; - NifStream( hasGlossTexture, out, info ); - if ( (hasGlossTexture != 0) ) { - if ( glossTexture.source != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(glossTexture.source) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( glossTexture.clampMode, out, info ); - NifStream( glossTexture.filterMode, out, info ); - NifStream( glossTexture.uvSet, out, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( glossTexture.ps2L, out, info ); - NifStream( glossTexture.ps2K, out, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( glossTexture.unknown1, out, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( glossTexture.hasTextureTransform, out, info ); - if ( (glossTexture.hasTextureTransform != 0) ) { - NifStream( glossTexture.translation, out, info ); - NifStream( glossTexture.tiling, out, info ); - NifStream( glossTexture.wRotation, out, info ); - NifStream( glossTexture.transformType_, out, info ); - NifStream( glossTexture.centerOffset, out, info ); - }; - }; - }; - NifStream( hasGlowTexture, out, info ); - if ( (hasGlowTexture != 0) ) { - if ( glowTexture.source != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(glowTexture.source) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( glowTexture.clampMode, out, info ); - NifStream( glowTexture.filterMode, out, info ); - NifStream( glowTexture.uvSet, out, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( glowTexture.ps2L, out, info ); - NifStream( glowTexture.ps2K, out, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( glowTexture.unknown1, out, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( glowTexture.hasTextureTransform, out, info ); - if ( (glowTexture.hasTextureTransform != 0) ) { - NifStream( glowTexture.translation, out, info ); - NifStream( glowTexture.tiling, out, info ); - NifStream( glowTexture.wRotation, out, info ); - NifStream( glowTexture.transformType_, out, info ); - NifStream( glowTexture.centerOffset, out, info ); - }; - }; - }; - NifStream( hasBumpMapTexture, out, info ); - if ( (hasBumpMapTexture != 0) ) { - if ( bumpMapTexture.source != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(bumpMapTexture.source) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( bumpMapTexture.clampMode, out, info ); - NifStream( bumpMapTexture.filterMode, out, info ); - NifStream( bumpMapTexture.uvSet, out, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( bumpMapTexture.ps2L, out, info ); - NifStream( bumpMapTexture.ps2K, out, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( bumpMapTexture.unknown1, out, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( bumpMapTexture.hasTextureTransform, out, info ); - if ( (bumpMapTexture.hasTextureTransform != 0) ) { - NifStream( bumpMapTexture.translation, out, info ); - NifStream( bumpMapTexture.tiling, out, info ); - NifStream( bumpMapTexture.wRotation, out, info ); - NifStream( bumpMapTexture.transformType_, out, info ); - NifStream( bumpMapTexture.centerOffset, out, info ); - }; - }; - NifStream( bumpMapLumaScale, out, info ); - NifStream( bumpMapLumaOffset, out, info ); - NifStream( bumpMapMatrix, out, info ); - }; - NifStream( hasDecal0Texture, out, info ); - if ( (hasDecal0Texture != 0) ) { - if ( decal0Texture.source != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(decal0Texture.source) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( decal0Texture.clampMode, out, info ); - NifStream( decal0Texture.filterMode, out, info ); - NifStream( decal0Texture.uvSet, out, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( decal0Texture.ps2L, out, info ); - NifStream( decal0Texture.ps2K, out, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( decal0Texture.unknown1, out, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( decal0Texture.hasTextureTransform, out, info ); - if ( (decal0Texture.hasTextureTransform != 0) ) { - NifStream( decal0Texture.translation, out, info ); - NifStream( decal0Texture.tiling, out, info ); - NifStream( decal0Texture.wRotation, out, info ); - NifStream( decal0Texture.transformType_, out, info ); - NifStream( decal0Texture.centerOffset, out, info ); - }; - }; - }; - if ( (textureCount >= 8) ) { - NifStream( hasDecal1Texture, out, info ); - }; - if ( (((textureCount >= 8)) && ((hasDecal1Texture != 0))) ) { - if ( decal1Texture.source != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(decal1Texture.source) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( decal1Texture.clampMode, out, info ); - NifStream( decal1Texture.filterMode, out, info ); - NifStream( decal1Texture.uvSet, out, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( decal1Texture.ps2L, out, info ); - NifStream( decal1Texture.ps2K, out, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( decal1Texture.unknown1, out, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( decal1Texture.hasTextureTransform, out, info ); - if ( (decal1Texture.hasTextureTransform != 0) ) { - NifStream( decal1Texture.translation, out, info ); - NifStream( decal1Texture.tiling, out, info ); - NifStream( decal1Texture.wRotation, out, info ); - NifStream( decal1Texture.transformType_, out, info ); - NifStream( decal1Texture.centerOffset, out, info ); - }; - }; - }; - if ( (textureCount >= 9) ) { - NifStream( hasDecal2Texture, out, info ); - }; - if ( (((textureCount >= 9)) && ((hasDecal2Texture != 0))) ) { - if ( decal2Texture.source != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(decal2Texture.source) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( decal2Texture.clampMode, out, info ); - NifStream( decal2Texture.filterMode, out, info ); - NifStream( decal2Texture.uvSet, out, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( decal2Texture.ps2L, out, info ); - NifStream( decal2Texture.ps2K, out, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( decal2Texture.unknown1, out, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( decal2Texture.hasTextureTransform, out, info ); - if ( (decal2Texture.hasTextureTransform != 0) ) { - NifStream( decal2Texture.translation, out, info ); - NifStream( decal2Texture.tiling, out, info ); - NifStream( decal2Texture.wRotation, out, info ); - NifStream( decal2Texture.transformType_, out, info ); - NifStream( decal2Texture.centerOffset, out, info ); - }; - }; - }; - if ( (textureCount >= 10) ) { - NifStream( hasDecal3Texture, out, info ); - }; - if ( (((textureCount >= 10)) && ((hasDecal3Texture != 0))) ) { - if ( decal3Texture.source != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(decal3Texture.source) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( decal3Texture.clampMode, out, info ); - NifStream( decal3Texture.filterMode, out, info ); - NifStream( decal3Texture.uvSet, out, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( decal3Texture.ps2L, out, info ); - NifStream( decal3Texture.ps2K, out, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( decal3Texture.unknown1, out, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( decal3Texture.hasTextureTransform, out, info ); - if ( (decal3Texture.hasTextureTransform != 0) ) { - NifStream( decal3Texture.translation, out, info ); - NifStream( decal3Texture.tiling, out, info ); - NifStream( decal3Texture.wRotation, out, info ); - NifStream( decal3Texture.transformType_, out, info ); - NifStream( decal3Texture.centerOffset, out, info ); - }; - }; - }; - if ( info.version >= 0x0A000100 ) { - NifStream( numShaderTextures, out, info ); - for (unsigned int i2 = 0; i2 < shaderTextures.size(); i2++) { - NifStream( shaderTextures[i2].isUsed, out, info ); - if ( (shaderTextures[i2].isUsed != 0) ) { - if ( shaderTextures[i2].textureData.source != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(shaderTextures[i2].textureData.source) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); - NifStream( shaderTextures[i2].textureData.clampMode, out, info ); - NifStream( shaderTextures[i2].textureData.filterMode, out, info ); - NifStream( shaderTextures[i2].textureData.uvSet, out, info ); - if ( info.version <= 0x0A020000 ) { - NifStream( shaderTextures[i2].textureData.ps2L, out, info ); - NifStream( shaderTextures[i2].textureData.ps2K, out, info ); - }; - if ( info.version <= 0x0401000C ) { - NifStream( shaderTextures[i2].textureData.unknown1, out, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( shaderTextures[i2].textureData.hasTextureTransform, out, info ); - if ( (shaderTextures[i2].textureData.hasTextureTransform != 0) ) { - NifStream( shaderTextures[i2].textureData.translation, out, info ); - NifStream( shaderTextures[i2].textureData.tiling, out, info ); - NifStream( shaderTextures[i2].textureData.wRotation, out, info ); - NifStream( shaderTextures[i2].textureData.transformType_, out, info ); - NifStream( shaderTextures[i2].textureData.centerOffset, out, info ); - }; - }; - NifStream( shaderTextures[i2].unknownInt, out, info ); - }; - }; - }; -} - -std::string NiTexturingProperty::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiProperty::asString(); - numShaderTextures = (unsigned int)(shaderTextures.size()); - out << " Flags: " << flags << endl; - out << " Apply Mode: " << applyMode << endl; - out << " Texture Count: " << textureCount << endl; - out << " Has Base Texture: " << hasBaseTexture << endl; - if ( (hasBaseTexture != 0) ) { - out << " Source: " << baseTexture.source << endl; - out << " Clamp Mode: " << baseTexture.clampMode << endl; - out << " Filter Mode: " << baseTexture.filterMode << endl; - out << " UV Set: " << baseTexture.uvSet << endl; - out << " PS2 L: " << baseTexture.ps2L << endl; - out << " PS2 K: " << baseTexture.ps2K << endl; - out << " Unknown1: " << baseTexture.unknown1 << endl; - out << " Has Texture Transform: " << baseTexture.hasTextureTransform << endl; - if ( (baseTexture.hasTextureTransform != 0) ) { - out << " Translation: " << baseTexture.translation << endl; - out << " Tiling: " << baseTexture.tiling << endl; - out << " W Rotation: " << baseTexture.wRotation << endl; - out << " Transform Type?: " << baseTexture.transformType_ << endl; - out << " Center Offset: " << baseTexture.centerOffset << endl; - }; - }; - out << " Has Dark Texture: " << hasDarkTexture << endl; - if ( (hasDarkTexture != 0) ) { - out << " Source: " << darkTexture.source << endl; - out << " Clamp Mode: " << darkTexture.clampMode << endl; - out << " Filter Mode: " << darkTexture.filterMode << endl; - out << " UV Set: " << darkTexture.uvSet << endl; - out << " PS2 L: " << darkTexture.ps2L << endl; - out << " PS2 K: " << darkTexture.ps2K << endl; - out << " Unknown1: " << darkTexture.unknown1 << endl; - out << " Has Texture Transform: " << darkTexture.hasTextureTransform << endl; - if ( (darkTexture.hasTextureTransform != 0) ) { - out << " Translation: " << darkTexture.translation << endl; - out << " Tiling: " << darkTexture.tiling << endl; - out << " W Rotation: " << darkTexture.wRotation << endl; - out << " Transform Type?: " << darkTexture.transformType_ << endl; - out << " Center Offset: " << darkTexture.centerOffset << endl; - }; - }; - out << " Has Detail Texture: " << hasDetailTexture << endl; - if ( (hasDetailTexture != 0) ) { - out << " Source: " << detailTexture.source << endl; - out << " Clamp Mode: " << detailTexture.clampMode << endl; - out << " Filter Mode: " << detailTexture.filterMode << endl; - out << " UV Set: " << detailTexture.uvSet << endl; - out << " PS2 L: " << detailTexture.ps2L << endl; - out << " PS2 K: " << detailTexture.ps2K << endl; - out << " Unknown1: " << detailTexture.unknown1 << endl; - out << " Has Texture Transform: " << detailTexture.hasTextureTransform << endl; - if ( (detailTexture.hasTextureTransform != 0) ) { - out << " Translation: " << detailTexture.translation << endl; - out << " Tiling: " << detailTexture.tiling << endl; - out << " W Rotation: " << detailTexture.wRotation << endl; - out << " Transform Type?: " << detailTexture.transformType_ << endl; - out << " Center Offset: " << detailTexture.centerOffset << endl; - }; - }; - out << " Has Gloss Texture: " << hasGlossTexture << endl; - if ( (hasGlossTexture != 0) ) { - out << " Source: " << glossTexture.source << endl; - out << " Clamp Mode: " << glossTexture.clampMode << endl; - out << " Filter Mode: " << glossTexture.filterMode << endl; - out << " UV Set: " << glossTexture.uvSet << endl; - out << " PS2 L: " << glossTexture.ps2L << endl; - out << " PS2 K: " << glossTexture.ps2K << endl; - out << " Unknown1: " << glossTexture.unknown1 << endl; - out << " Has Texture Transform: " << glossTexture.hasTextureTransform << endl; - if ( (glossTexture.hasTextureTransform != 0) ) { - out << " Translation: " << glossTexture.translation << endl; - out << " Tiling: " << glossTexture.tiling << endl; - out << " W Rotation: " << glossTexture.wRotation << endl; - out << " Transform Type?: " << glossTexture.transformType_ << endl; - out << " Center Offset: " << glossTexture.centerOffset << endl; - }; - }; - out << " Has Glow Texture: " << hasGlowTexture << endl; - if ( (hasGlowTexture != 0) ) { - out << " Source: " << glowTexture.source << endl; - out << " Clamp Mode: " << glowTexture.clampMode << endl; - out << " Filter Mode: " << glowTexture.filterMode << endl; - out << " UV Set: " << glowTexture.uvSet << endl; - out << " PS2 L: " << glowTexture.ps2L << endl; - out << " PS2 K: " << glowTexture.ps2K << endl; - out << " Unknown1: " << glowTexture.unknown1 << endl; - out << " Has Texture Transform: " << glowTexture.hasTextureTransform << endl; - if ( (glowTexture.hasTextureTransform != 0) ) { - out << " Translation: " << glowTexture.translation << endl; - out << " Tiling: " << glowTexture.tiling << endl; - out << " W Rotation: " << glowTexture.wRotation << endl; - out << " Transform Type?: " << glowTexture.transformType_ << endl; - out << " Center Offset: " << glowTexture.centerOffset << endl; - }; - }; - out << " Has Bump Map Texture: " << hasBumpMapTexture << endl; - if ( (hasBumpMapTexture != 0) ) { - out << " Source: " << bumpMapTexture.source << endl; - out << " Clamp Mode: " << bumpMapTexture.clampMode << endl; - out << " Filter Mode: " << bumpMapTexture.filterMode << endl; - out << " UV Set: " << bumpMapTexture.uvSet << endl; - out << " PS2 L: " << bumpMapTexture.ps2L << endl; - out << " PS2 K: " << bumpMapTexture.ps2K << endl; - out << " Unknown1: " << bumpMapTexture.unknown1 << endl; - out << " Has Texture Transform: " << bumpMapTexture.hasTextureTransform << endl; - if ( (bumpMapTexture.hasTextureTransform != 0) ) { - out << " Translation: " << bumpMapTexture.translation << endl; - out << " Tiling: " << bumpMapTexture.tiling << endl; - out << " W Rotation: " << bumpMapTexture.wRotation << endl; - out << " Transform Type?: " << bumpMapTexture.transformType_ << endl; - out << " Center Offset: " << bumpMapTexture.centerOffset << endl; - }; - out << " Bump Map Luma Scale: " << bumpMapLumaScale << endl; - out << " Bump Map Luma Offset: " << bumpMapLumaOffset << endl; - out << " Bump Map Matrix: " << bumpMapMatrix << endl; - }; - out << " Has Decal 0 Texture: " << hasDecal0Texture << endl; - if ( (hasDecal0Texture != 0) ) { - out << " Source: " << decal0Texture.source << endl; - out << " Clamp Mode: " << decal0Texture.clampMode << endl; - out << " Filter Mode: " << decal0Texture.filterMode << endl; - out << " UV Set: " << decal0Texture.uvSet << endl; - out << " PS2 L: " << decal0Texture.ps2L << endl; - out << " PS2 K: " << decal0Texture.ps2K << endl; - out << " Unknown1: " << decal0Texture.unknown1 << endl; - out << " Has Texture Transform: " << decal0Texture.hasTextureTransform << endl; - if ( (decal0Texture.hasTextureTransform != 0) ) { - out << " Translation: " << decal0Texture.translation << endl; - out << " Tiling: " << decal0Texture.tiling << endl; - out << " W Rotation: " << decal0Texture.wRotation << endl; - out << " Transform Type?: " << decal0Texture.transformType_ << endl; - out << " Center Offset: " << decal0Texture.centerOffset << endl; - }; - }; - if ( (textureCount >= 8) ) { - out << " Has Decal 1 Texture: " << hasDecal1Texture << endl; - }; - if ( (((textureCount >= 8)) && ((hasDecal1Texture != 0))) ) { - out << " Source: " << decal1Texture.source << endl; - out << " Clamp Mode: " << decal1Texture.clampMode << endl; - out << " Filter Mode: " << decal1Texture.filterMode << endl; - out << " UV Set: " << decal1Texture.uvSet << endl; - out << " PS2 L: " << decal1Texture.ps2L << endl; - out << " PS2 K: " << decal1Texture.ps2K << endl; - out << " Unknown1: " << decal1Texture.unknown1 << endl; - out << " Has Texture Transform: " << decal1Texture.hasTextureTransform << endl; - if ( (decal1Texture.hasTextureTransform != 0) ) { - out << " Translation: " << decal1Texture.translation << endl; - out << " Tiling: " << decal1Texture.tiling << endl; - out << " W Rotation: " << decal1Texture.wRotation << endl; - out << " Transform Type?: " << decal1Texture.transformType_ << endl; - out << " Center Offset: " << decal1Texture.centerOffset << endl; - }; - }; - if ( (textureCount >= 9) ) { - out << " Has Decal 2 Texture: " << hasDecal2Texture << endl; - }; - if ( (((textureCount >= 9)) && ((hasDecal2Texture != 0))) ) { - out << " Source: " << decal2Texture.source << endl; - out << " Clamp Mode: " << decal2Texture.clampMode << endl; - out << " Filter Mode: " << decal2Texture.filterMode << endl; - out << " UV Set: " << decal2Texture.uvSet << endl; - out << " PS2 L: " << decal2Texture.ps2L << endl; - out << " PS2 K: " << decal2Texture.ps2K << endl; - out << " Unknown1: " << decal2Texture.unknown1 << endl; - out << " Has Texture Transform: " << decal2Texture.hasTextureTransform << endl; - if ( (decal2Texture.hasTextureTransform != 0) ) { - out << " Translation: " << decal2Texture.translation << endl; - out << " Tiling: " << decal2Texture.tiling << endl; - out << " W Rotation: " << decal2Texture.wRotation << endl; - out << " Transform Type?: " << decal2Texture.transformType_ << endl; - out << " Center Offset: " << decal2Texture.centerOffset << endl; - }; - }; - if ( (textureCount >= 10) ) { - out << " Has Decal 3 Texture: " << hasDecal3Texture << endl; - }; - if ( (((textureCount >= 10)) && ((hasDecal3Texture != 0))) ) { - out << " Source: " << decal3Texture.source << endl; - out << " Clamp Mode: " << decal3Texture.clampMode << endl; - out << " Filter Mode: " << decal3Texture.filterMode << endl; - out << " UV Set: " << decal3Texture.uvSet << endl; - out << " PS2 L: " << decal3Texture.ps2L << endl; - out << " PS2 K: " << decal3Texture.ps2K << endl; - out << " Unknown1: " << decal3Texture.unknown1 << endl; - out << " Has Texture Transform: " << decal3Texture.hasTextureTransform << endl; - if ( (decal3Texture.hasTextureTransform != 0) ) { - out << " Translation: " << decal3Texture.translation << endl; - out << " Tiling: " << decal3Texture.tiling << endl; - out << " W Rotation: " << decal3Texture.wRotation << endl; - out << " Transform Type?: " << decal3Texture.transformType_ << endl; - out << " Center Offset: " << decal3Texture.centerOffset << endl; - }; - }; - out << " Num Shader Textures: " << numShaderTextures << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < shaderTextures.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - out << " Is Used: " << shaderTextures[i1].isUsed << endl; - if ( (shaderTextures[i1].isUsed != 0) ) { - out << " Source: " << shaderTextures[i1].textureData.source << endl; - out << " Clamp Mode: " << shaderTextures[i1].textureData.clampMode << endl; - out << " Filter Mode: " << shaderTextures[i1].textureData.filterMode << endl; - out << " UV Set: " << shaderTextures[i1].textureData.uvSet << endl; - out << " PS2 L: " << shaderTextures[i1].textureData.ps2L << endl; - out << " PS2 K: " << shaderTextures[i1].textureData.ps2K << endl; - out << " Unknown1: " << shaderTextures[i1].textureData.unknown1 << endl; - out << " Has Texture Transform: " << shaderTextures[i1].textureData.hasTextureTransform << endl; - if ( (shaderTextures[i1].textureData.hasTextureTransform != 0) ) { - out << " Translation: " << shaderTextures[i1].textureData.translation << endl; - out << " Tiling: " << shaderTextures[i1].textureData.tiling << endl; - out << " W Rotation: " << shaderTextures[i1].textureData.wRotation << endl; - out << " Transform Type?: " << shaderTextures[i1].textureData.transformType_ << endl; - out << " Center Offset: " << shaderTextures[i1].textureData.centerOffset << endl; - }; - out << " Unknown Int: " << shaderTextures[i1].unknownInt << endl; - }; - }; - return out.str(); -} - -void NiTexturingProperty::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::FixLinks( objects, link_stack, info ); - if ( (hasBaseTexture != 0) ) { - baseTexture.source = FixLink<NiSourceTexture>( objects, link_stack, info ); - }; - if ( (hasDarkTexture != 0) ) { - darkTexture.source = FixLink<NiSourceTexture>( objects, link_stack, info ); - }; - if ( (hasDetailTexture != 0) ) { - detailTexture.source = FixLink<NiSourceTexture>( objects, link_stack, info ); - }; - if ( (hasGlossTexture != 0) ) { - glossTexture.source = FixLink<NiSourceTexture>( objects, link_stack, info ); - }; - if ( (hasGlowTexture != 0) ) { - glowTexture.source = FixLink<NiSourceTexture>( objects, link_stack, info ); - }; - if ( (hasBumpMapTexture != 0) ) { - bumpMapTexture.source = FixLink<NiSourceTexture>( objects, link_stack, info ); - }; - if ( (hasDecal0Texture != 0) ) { - decal0Texture.source = FixLink<NiSourceTexture>( objects, link_stack, info ); - }; - if ( (((textureCount >= 8)) && ((hasDecal1Texture != 0))) ) { - decal1Texture.source = FixLink<NiSourceTexture>( objects, link_stack, info ); - }; - if ( (((textureCount >= 9)) && ((hasDecal2Texture != 0))) ) { - decal2Texture.source = FixLink<NiSourceTexture>( objects, link_stack, info ); - }; - if ( (((textureCount >= 10)) && ((hasDecal3Texture != 0))) ) { - decal3Texture.source = FixLink<NiSourceTexture>( objects, link_stack, info ); - }; - if ( info.version >= 0x0A000100 ) { - for (unsigned int i2 = 0; i2 < shaderTextures.size(); i2++) { - if ( (shaderTextures[i2].isUsed != 0) ) { - shaderTextures[i2].textureData.source = FixLink<NiSourceTexture>( objects, link_stack, info ); - }; - }; - }; -} - -std::list<NiObjectRef> NiTexturingProperty::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiProperty::GetRefs(); - if ( baseTexture.source != NULL ) - refs.push_back(StaticCast<NiObject>(baseTexture.source)); - if ( darkTexture.source != NULL ) - refs.push_back(StaticCast<NiObject>(darkTexture.source)); - if ( detailTexture.source != NULL ) - refs.push_back(StaticCast<NiObject>(detailTexture.source)); - if ( glossTexture.source != NULL ) - refs.push_back(StaticCast<NiObject>(glossTexture.source)); - if ( glowTexture.source != NULL ) - refs.push_back(StaticCast<NiObject>(glowTexture.source)); - if ( bumpMapTexture.source != NULL ) - refs.push_back(StaticCast<NiObject>(bumpMapTexture.source)); - if ( decal0Texture.source != NULL ) - refs.push_back(StaticCast<NiObject>(decal0Texture.source)); - if ( decal1Texture.source != NULL ) - refs.push_back(StaticCast<NiObject>(decal1Texture.source)); - if ( decal2Texture.source != NULL ) - refs.push_back(StaticCast<NiObject>(decal2Texture.source)); - if ( decal3Texture.source != NULL ) - refs.push_back(StaticCast<NiObject>(decal3Texture.source)); - for (unsigned int i1 = 0; i1 < shaderTextures.size(); i1++) { - if ( shaderTextures[i1].textureData.source != NULL ) - refs.push_back(StaticCast<NiObject>(shaderTextures[i1].textureData.source)); - }; - return refs; -} - -void NiTransformData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiKeyframeData::Read( in, link_stack, info ); -} - -void NiTransformData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiKeyframeData::Write( out, link_map, info ); -} - -std::string NiTransformData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiKeyframeData::asString(); - return out.str(); -} - -void NiTransformData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiKeyframeData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiTransformData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiKeyframeData::GetRefs(); - return refs; -} - -void NiTriShape::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTriBasedGeom::Read( in, link_stack, info ); -} - -void NiTriShape::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiTriBasedGeom::Write( out, link_map, info ); -} - -std::string NiTriShape::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiTriBasedGeom::asString(); - return out.str(); -} - -void NiTriShape::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTriBasedGeom::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiTriShape::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiTriBasedGeom::GetRefs(); - return refs; -} - -void NiTriShapeData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTriBasedGeomData::Read( in, link_stack, info ); - NifStream( numTrianglePoints, in, info ); - if ( info.version >= 0x0A010000 ) { - NifStream( hasTriangles, in, info ); - }; - if ( info.version <= 0x0A000102 ) { - triangles.resize(numTriangles); - for (unsigned int i2 = 0; i2 < triangles.size(); i2++) { - NifStream( triangles[i2], in, info ); - }; - }; - if ( info.version >= 0x0A010000 ) { - if ( (hasTriangles != 0) ) { - triangles.resize(numTriangles); - for (unsigned int i3 = 0; i3 < triangles.size(); i3++) { - NifStream( triangles[i3], in, info ); - }; - }; - }; - if ( info.version >= 0x03010000 ) { - NifStream( numMatchGroups, in, info ); - matchGroups.resize(numMatchGroups); - for (unsigned int i2 = 0; i2 < matchGroups.size(); i2++) { - NifStream( matchGroups[i2].numVertices, in, info ); - matchGroups[i2].vertexIndices.resize(matchGroups[i2].numVertices); - for (unsigned int i3 = 0; i3 < matchGroups[i2].vertexIndices.size(); i3++) { - NifStream( matchGroups[i2].vertexIndices[i3], in, info ); - }; - }; - }; -} - -void NiTriShapeData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiTriBasedGeomData::Write( out, link_map, info ); - numMatchGroups = (unsigned short)(matchGroups.size()); - NifStream( numTrianglePoints, out, info ); - if ( info.version >= 0x0A010000 ) { - NifStream( hasTriangles, out, info ); - }; - if ( info.version <= 0x0A000102 ) { - for (unsigned int i2 = 0; i2 < triangles.size(); i2++) { - NifStream( triangles[i2], out, info ); - }; - }; - if ( info.version >= 0x0A010000 ) { - if ( (hasTriangles != 0) ) { - for (unsigned int i3 = 0; i3 < triangles.size(); i3++) { - NifStream( triangles[i3], out, info ); - }; - }; - }; - if ( info.version >= 0x03010000 ) { - NifStream( numMatchGroups, out, info ); - for (unsigned int i2 = 0; i2 < matchGroups.size(); i2++) { - matchGroups[i2].numVertices = (unsigned short)(matchGroups[i2].vertexIndices.size()); - NifStream( matchGroups[i2].numVertices, out, info ); - for (unsigned int i3 = 0; i3 < matchGroups[i2].vertexIndices.size(); i3++) { - NifStream( matchGroups[i2].vertexIndices[i3], out, info ); - }; - }; - }; -} - -std::string NiTriShapeData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiTriBasedGeomData::asString(); - numMatchGroups = (unsigned short)(matchGroups.size()); - out << " Num Triangle Points: " << numTrianglePoints << endl; - out << " Has Triangles: " << hasTriangles << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < triangles.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Triangles[" << i1 << "]: " << triangles[i1] << endl; - array_output_count++; - }; - out << " Num Match Groups: " << numMatchGroups << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < matchGroups.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - matchGroups[i1].numVertices = (unsigned short)(matchGroups[i1].vertexIndices.size()); - out << " Num Vertices: " << matchGroups[i1].numVertices << endl; - array_output_count = 0; - for (unsigned int i2 = 0; i2 < matchGroups[i1].vertexIndices.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Vertex Indices[" << i2 << "]: " << matchGroups[i1].vertexIndices[i2] << endl; - array_output_count++; - }; - }; - return out.str(); -} - -void NiTriShapeData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTriBasedGeomData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiTriShapeData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiTriBasedGeomData::GetRefs(); - return refs; -} - -void NiTriStrips::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTriBasedGeom::Read( in, link_stack, info ); -} - -void NiTriStrips::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiTriBasedGeom::Write( out, link_map, info ); -} - -std::string NiTriStrips::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiTriBasedGeom::asString(); - return out.str(); -} - -void NiTriStrips::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTriBasedGeom::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiTriStrips::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiTriBasedGeom::GetRefs(); - return refs; -} - -void NiTriStripsData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTriBasedGeomData::Read( in, link_stack, info ); - NifStream( numStrips, in, info ); - stripLengths.resize(numStrips); - for (unsigned int i1 = 0; i1 < stripLengths.size(); i1++) { - NifStream( stripLengths[i1], in, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( hasPoints, in, info ); - }; - if ( info.version <= 0x0A000102 ) { - points.resize(numStrips); - for (unsigned int i2 = 0; i2 < points.size(); i2++) { - points[i2].resize(stripLengths[i2]); - for (unsigned int i3 = 0; i3 < stripLengths[i2]; i3++) { - NifStream( points[i2][i3], in, info ); - }; - }; - }; - if ( info.version >= 0x0A010000 ) { - if ( (hasPoints != 0) ) { - points.resize(numStrips); - for (unsigned int i3 = 0; i3 < points.size(); i3++) { - points[i3].resize(stripLengths[i3]); - for (unsigned int i4 = 0; i4 < stripLengths[i3]; i4++) { - NifStream( points[i3][i4], in, info ); - }; - }; - }; - }; -} - -void NiTriStripsData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiTriBasedGeomData::Write( out, link_map, info ); - for (unsigned int i1 = 0; i1 < points.size(); i1++) - stripLengths[i1] = (unsigned short)(points[i1].size()); - numStrips = (unsigned short)(stripLengths.size()); - NifStream( numStrips, out, info ); - for (unsigned int i1 = 0; i1 < stripLengths.size(); i1++) { - NifStream( stripLengths[i1], out, info ); - }; - if ( info.version >= 0x0A010000 ) { - NifStream( hasPoints, out, info ); - }; - if ( info.version <= 0x0A000102 ) { - for (unsigned int i2 = 0; i2 < points.size(); i2++) { - for (unsigned int i3 = 0; i3 < stripLengths[i2]; i3++) { - NifStream( points[i2][i3], out, info ); - }; - }; - }; - if ( info.version >= 0x0A010000 ) { - if ( (hasPoints != 0) ) { - for (unsigned int i3 = 0; i3 < points.size(); i3++) { - for (unsigned int i4 = 0; i4 < stripLengths[i3]; i4++) { - NifStream( points[i3][i4], out, info ); - }; - }; - }; - }; -} - -std::string NiTriStripsData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiTriBasedGeomData::asString(); - for (unsigned int i1 = 0; i1 < points.size(); i1++) - stripLengths[i1] = (unsigned short)(points[i1].size()); - numStrips = (unsigned short)(stripLengths.size()); - out << " Num Strips: " << numStrips << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < stripLengths.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Strip Lengths[" << i1 << "]: " << stripLengths[i1] << endl; - array_output_count++; - }; - out << " Has Points: " << hasPoints << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < points.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - for (unsigned int i2 = 0; i2 < stripLengths[i1]; i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Points[" << i2 << "]: " << points[i1][i2] << endl; - array_output_count++; - }; - }; - return out.str(); -} - -void NiTriStripsData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTriBasedGeomData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiTriStripsData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiTriBasedGeomData::GetRefs(); - return refs; -} - -void NiClod::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTriBasedGeom::Read( in, link_stack, info ); -} - -void NiClod::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiTriBasedGeom::Write( out, link_map, info ); -} - -std::string NiClod::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiTriBasedGeom::asString(); - return out.str(); -} - -void NiClod::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTriBasedGeom::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiClod::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiTriBasedGeom::GetRefs(); - return refs; -} - -void NiClodData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTriBasedGeomData::Read( in, link_stack, info ); - NifStream( unknownShorts, in, info ); - NifStream( unknownCount1, in, info ); - NifStream( unknownCount2, in, info ); - NifStream( unknownCount3, in, info ); - NifStream( unknownFloat, in, info ); - NifStream( unknownShort, in, info ); - unknownClodShorts1.resize(unknownCount1); - for (unsigned int i1 = 0; i1 < unknownClodShorts1.size(); i1++) { - for (unsigned int i2 = 0; i2 < 6; i2++) { - NifStream( unknownClodShorts1[i1][i2], in, info ); - }; - }; - unknownClodShorts2.resize(unknownCount2); - for (unsigned int i1 = 0; i1 < unknownClodShorts2.size(); i1++) { - NifStream( unknownClodShorts2[i1], in, info ); - }; - unknownClodShorts3.resize(unknownCount3); - for (unsigned int i1 = 0; i1 < unknownClodShorts3.size(); i1++) { - for (unsigned int i2 = 0; i2 < 6; i2++) { - NifStream( unknownClodShorts3[i1][i2], in, info ); - }; - }; -} - -void NiClodData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiTriBasedGeomData::Write( out, link_map, info ); - unknownCount3 = (unsigned short)(unknownClodShorts3.size()); - unknownCount2 = (unsigned short)(unknownClodShorts2.size()); - unknownCount1 = (unsigned short)(unknownClodShorts1.size()); - NifStream( unknownShorts, out, info ); - NifStream( unknownCount1, out, info ); - NifStream( unknownCount2, out, info ); - NifStream( unknownCount3, out, info ); - NifStream( unknownFloat, out, info ); - NifStream( unknownShort, out, info ); - for (unsigned int i1 = 0; i1 < unknownClodShorts1.size(); i1++) { - for (unsigned int i2 = 0; i2 < 6; i2++) { - NifStream( unknownClodShorts1[i1][i2], out, info ); - }; - }; - for (unsigned int i1 = 0; i1 < unknownClodShorts2.size(); i1++) { - NifStream( unknownClodShorts2[i1], out, info ); - }; - for (unsigned int i1 = 0; i1 < unknownClodShorts3.size(); i1++) { - for (unsigned int i2 = 0; i2 < 6; i2++) { - NifStream( unknownClodShorts3[i1][i2], out, info ); - }; - }; -} - -std::string NiClodData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiTriBasedGeomData::asString(); - unknownCount3 = (unsigned short)(unknownClodShorts3.size()); - unknownCount2 = (unsigned short)(unknownClodShorts2.size()); - unknownCount1 = (unsigned short)(unknownClodShorts1.size()); - out << " Unknown Shorts: " << unknownShorts << endl; - out << " Unknown Count 1: " << unknownCount1 << endl; - out << " Unknown Count 2: " << unknownCount2 << endl; - out << " Unknown Count 3: " << unknownCount3 << endl; - out << " Unknown Float: " << unknownFloat << endl; - out << " Unknown Short: " << unknownShort << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < unknownClodShorts1.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - for (unsigned int i2 = 0; i2 < 6; i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Clod Shorts 1[" << i2 << "]: " << unknownClodShorts1[i1][i2] << endl; - array_output_count++; - }; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < unknownClodShorts2.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Clod Shorts 2[" << i1 << "]: " << unknownClodShorts2[i1] << endl; - array_output_count++; - }; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < unknownClodShorts3.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - for (unsigned int i2 = 0; i2 < 6; i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Unknown Clod Shorts 3[" << i2 << "]: " << unknownClodShorts3[i1][i2] << endl; - array_output_count++; - }; - }; - return out.str(); -} - -void NiClodData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTriBasedGeomData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiClodData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiTriBasedGeomData::GetRefs(); - return refs; -} - -void NiUVController::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - unsigned int block_num; - NiTimeController::Read( in, link_stack, info ); - NifStream( unknownShort, in, info ); - NifStream( block_num, in, info ); - link_stack.push_back( block_num ); -} - -void NiUVController::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiTimeController::Write( out, link_map, info ); - NifStream( unknownShort, out, info ); - if ( data != NULL ) - NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); - else - NifStream( 0xffffffff, out, info ); -} - -std::string NiUVController::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiTimeController::asString(); - out << " Unknown Short: " << unknownShort << endl; - out << " Data: " << data << endl; - return out.str(); -} - -void NiUVController::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiTimeController::FixLinks( objects, link_stack, info ); - data = FixLink<NiUVData>( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiUVController::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiTimeController::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - return refs; -} - -void NiUVData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::Read( in, link_stack, info ); - for (unsigned int i1 = 0; i1 < 4; i1++) { - NifStream( uvGroups[i1].numKeys, in, info ); - if ( (uvGroups[i1].numKeys != 0) ) { - NifStream( uvGroups[i1].interpolation, in, info ); - }; - uvGroups[i1].keys.resize(uvGroups[i1].numKeys); - for (unsigned int i2 = 0; i2 < uvGroups[i1].keys.size(); i2++) { - NifStream( uvGroups[i1].keys[i2], in, info, uvGroups[i1].interpolation ); - }; - }; -} - -void NiUVData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - for (unsigned int i1 = 0; i1 < 4; i1++) { - uvGroups[i1].numKeys = (unsigned int)(uvGroups[i1].keys.size()); - NifStream( uvGroups[i1].numKeys, out, info ); - if ( (uvGroups[i1].numKeys != 0) ) { - NifStream( uvGroups[i1].interpolation, out, info ); - }; - for (unsigned int i2 = 0; i2 < uvGroups[i1].keys.size(); i2++) { - NifStream( uvGroups[i1].keys[i2], out, info, uvGroups[i1].interpolation ); - }; - }; -} - -std::string NiUVData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - array_output_count = 0; - for (unsigned int i1 = 0; i1 < 4; i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - uvGroups[i1].numKeys = (unsigned int)(uvGroups[i1].keys.size()); - out << " Num Keys: " << uvGroups[i1].numKeys << endl; - if ( (uvGroups[i1].numKeys != 0) ) { - out << " Interpolation: " << uvGroups[i1].interpolation << endl; - }; - array_output_count = 0; - for (unsigned int i2 = 0; i2 < uvGroups[i1].keys.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Keys[" << i2 << "]: " << uvGroups[i1].keys[i2] << endl; - array_output_count++; - }; - }; - return out.str(); -} - -void NiUVData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiUVData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -void NiVectorExtraData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::Read( in, link_stack, info ); - NifStream( vectorData, in, info ); - NifStream( unknownFloat, in, info ); -} - -void NiVectorExtraData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiExtraData::Write( out, link_map, info ); - NifStream( vectorData, out, info ); - NifStream( unknownFloat, out, info ); -} - -std::string NiVectorExtraData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiExtraData::asString(); - out << " Vector Data: " << vectorData << endl; - out << " Unknown Float: " << unknownFloat << endl; - return out.str(); -} - -void NiVectorExtraData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiVectorExtraData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiExtraData::GetRefs(); - return refs; -} - -void NiVertexColorProperty::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::Read( in, link_stack, info ); - NifStream( flags, in, info ); - NifStream( vertexMode, in, info ); - NifStream( lightingMode, in, info ); -} - -void NiVertexColorProperty::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiProperty::Write( out, link_map, info ); - NifStream( flags, out, info ); - NifStream( vertexMode, out, info ); - NifStream( lightingMode, out, info ); -} - -std::string NiVertexColorProperty::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiProperty::asString(); - out << " Flags: " << flags << endl; - out << " Vertex Mode: " << vertexMode << endl; - out << " Lighting Mode: " << lightingMode << endl; - return out.str(); -} - -void NiVertexColorProperty::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiVertexColorProperty::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiProperty::GetRefs(); - return refs; -} - -void NiVertWeightsExtraData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::Read( in, link_stack, info ); - NifStream( numBytes, in, info ); - NifStream( numVertices, in, info ); - weight.resize(numVertices); - for (unsigned int i1 = 0; i1 < weight.size(); i1++) { - NifStream( weight[i1], in, info ); - }; -} - -void NiVertWeightsExtraData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiExtraData::Write( out, link_map, info ); - numVertices = (unsigned short)(weight.size()); - NifStream( numBytes, out, info ); - NifStream( numVertices, out, info ); - for (unsigned int i1 = 0; i1 < weight.size(); i1++) { - NifStream( weight[i1], out, info ); - }; -} - -std::string NiVertWeightsExtraData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiExtraData::asString(); - numVertices = (unsigned short)(weight.size()); - out << " Num Bytes: " << numBytes << endl; - out << " Num Vertices: " << numVertices << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < weight.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Weight[" << i1 << "]: " << weight[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiVertWeightsExtraData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiExtraData::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiVertWeightsExtraData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiExtraData::GetRefs(); - return refs; -} - -void NiVisData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::Read( in, link_stack, info ); - NifStream( numVisKeys, in, info ); - visKeys.resize(numVisKeys); - for (unsigned int i1 = 0; i1 < visKeys.size(); i1++) { - NifStream( visKeys[i1], in, info, 1 ); - }; -} - -void NiVisData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - numVisKeys = (unsigned int)(visKeys.size()); - NifStream( numVisKeys, out, info ); - for (unsigned int i1 = 0; i1 < visKeys.size(); i1++) { - NifStream( visKeys[i1], out, info, 1 ); - }; -} - -std::string NiVisData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - numVisKeys = (unsigned int)(visKeys.size()); - out << " Num Vis Keys: " << numVisKeys << endl; - array_output_count = 0; - for (unsigned int i1 = 0; i1 < visKeys.size(); i1++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - break; - }; - out << " Vis Keys[" << i1 << "]: " << visKeys[i1] << endl; - array_output_count++; - }; - return out.str(); -} - -void NiVisData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiVisData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -void NiWireframeProperty::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::Read( in, link_stack, info ); - NifStream( flags, in, info ); -} - -void NiWireframeProperty::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiProperty::Write( out, link_map, info ); - NifStream( flags, out, info ); -} - -std::string NiWireframeProperty::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiProperty::asString(); - out << " Flags: " << flags << endl; - return out.str(); -} - -void NiWireframeProperty::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiWireframeProperty::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiProperty::GetRefs(); - return refs; -} - -void NiZBufferProperty::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::Read( in, link_stack, info ); - NifStream( flags, in, info ); - if ( info.version >= 0x0401000C ) { - NifStream( function, in, info ); - }; -} - -void NiZBufferProperty::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiProperty::Write( out, link_map, info ); - NifStream( flags, out, info ); - if ( info.version >= 0x0401000C ) { - NifStream( function, out, info ); - }; -} - -std::string NiZBufferProperty::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiProperty::asString(); - out << " Flags: " << flags << endl; - out << " Function: " << function << endl; - return out.str(); -} - -void NiZBufferProperty::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiProperty::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiZBufferProperty::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiProperty::GetRefs(); - return refs; -} - -void RootCollisionNode::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiNode::Read( in, link_stack, info ); -} - -void RootCollisionNode::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiNode::Write( out, link_map, info ); -} - -std::string RootCollisionNode::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiNode::asString(); - return out.str(); -} - -void RootCollisionNode::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiNode::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> RootCollisionNode::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiNode::GetRefs(); - return refs; -} - -void NiRawImageData::InternalRead( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::Read( in, link_stack, info ); - NifStream( width, in, info ); - NifStream( height, in, info ); - NifStream( imageType, in, info ); - if ( (imageType == 1) ) { - rgbImageData.resize(width); - for (unsigned int i2 = 0; i2 < rgbImageData.size(); i2++) { - rgbImageData[i2].resize(height); - for (unsigned int i3 = 0; i3 < rgbImageData[i2].size(); i3++) { - NifStream( rgbImageData[i2][i3].r, in, info ); - NifStream( rgbImageData[i2][i3].g, in, info ); - NifStream( rgbImageData[i2][i3].b, in, info ); - }; - }; - }; - if ( (imageType == 2) ) { - rgbaImageData.resize(width); - for (unsigned int i2 = 0; i2 < rgbaImageData.size(); i2++) { - rgbaImageData[i2].resize(height); - for (unsigned int i3 = 0; i3 < rgbaImageData[i2].size(); i3++) { - NifStream( rgbaImageData[i2][i3].r, in, info ); - NifStream( rgbaImageData[i2][i3].g, in, info ); - NifStream( rgbaImageData[i2][i3].b, in, info ); - NifStream( rgbaImageData[i2][i3].a, in, info ); - }; - }; - }; -} - -void NiRawImageData::InternalWrite( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { - NiObject::Write( out, link_map, info ); - height = (unsigned int)((rgbImageData.size() > 0) ? rgbImageData[0].size() : 0); - width = (unsigned int)(rgbImageData.size()); - NifStream( width, out, info ); - NifStream( height, out, info ); - NifStream( imageType, out, info ); - if ( (imageType == 1) ) { - for (unsigned int i2 = 0; i2 < rgbImageData.size(); i2++) { - for (unsigned int i3 = 0; i3 < rgbImageData[i2].size(); i3++) { - NifStream( rgbImageData[i2][i3].r, out, info ); - NifStream( rgbImageData[i2][i3].g, out, info ); - NifStream( rgbImageData[i2][i3].b, out, info ); - }; - }; - }; - if ( (imageType == 2) ) { - for (unsigned int i2 = 0; i2 < rgbaImageData.size(); i2++) { - for (unsigned int i3 = 0; i3 < rgbaImageData[i2].size(); i3++) { - NifStream( rgbaImageData[i2][i3].r, out, info ); - NifStream( rgbaImageData[i2][i3].g, out, info ); - NifStream( rgbaImageData[i2][i3].b, out, info ); - NifStream( rgbaImageData[i2][i3].a, out, info ); - }; - }; - }; -} - -std::string NiRawImageData::InternalAsString( bool verbose ) const { - stringstream out; - unsigned int array_output_count = 0; - out << NiObject::asString(); - height = (unsigned int)((rgbImageData.size() > 0) ? rgbImageData[0].size() : 0); - width = (unsigned int)(rgbImageData.size()); - out << " Width: " << width << endl; - out << " Height: " << height << endl; - out << " Image Type: " << imageType << endl; - if ( (imageType == 1) ) { - array_output_count = 0; - for (unsigned int i2 = 0; i2 < rgbImageData.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - for (unsigned int i3 = 0; i3 < rgbImageData[i2].size(); i3++) { - out << " r: " << rgbImageData[i2][i3].r << endl; - out << " g: " << rgbImageData[i2][i3].g << endl; - out << " b: " << rgbImageData[i2][i3].b << endl; - }; - }; - }; - if ( (imageType == 2) ) { - array_output_count = 0; - for (unsigned int i2 = 0; i2 < rgbaImageData.size(); i2++) { - if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - for (unsigned int i3 = 0; i3 < rgbaImageData[i2].size(); i3++) { - out << " r: " << rgbaImageData[i2][i3].r << endl; - out << " g: " << rgbaImageData[i2][i3].g << endl; - out << " b: " << rgbaImageData[i2][i3].b << endl; - out << " a: " << rgbaImageData[i2][i3].a << endl; - }; - }; - }; - return out.str(); -} - -void NiRawImageData::InternalFixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { - NiObject::FixLinks( objects, link_stack, info ); -} - -std::list<NiObjectRef> NiRawImageData::InternalGetRefs() const { - list<Ref<NiObject> > refs; - refs = NiObject::GetRefs(); - return refs; -} - -- GitLab