From e4e54cffe0d33f8c8cb0cb7ca0eaf0e87364c526 Mon Sep 17 00:00:00 2001 From: Tazpn <tazpn@users.sourceforge.net> Date: Sun, 16 Nov 2008 16:42:05 +0000 Subject: [PATCH] niflib: Update to Fallout version of xml --- Makefile | 100 +++- include/gen/AVObject.h | 2 +- include/gen/AdditionalDataBlock.h | 43 ++ include/gen/AdditionalDataInfo.h | 43 ++ include/gen/BSSegmentedTriangle.h | 35 ++ include/gen/BSTreadTransfInfo.h | 35 ++ include/gen/BSTreadTransfSubInfo.h | 45 ++ include/gen/BodyPartList.h | 33 ++ include/gen/DecalVectorArray.h | 35 ++ include/gen/HingeDescriptor.h | 68 +++ include/gen/LimitedHingeDescriptor.h | 6 + include/gen/RagdollDescriptor.h | 14 + include/gen/ShaderTexDesc.h | 4 +- include/gen/enums.h | 8 +- include/nif_versions.h | 1 + include/obj/BSAnimNotes.h | 78 +++ include/obj/BSBlastNode.h | 80 +++ include/obj/BSDamageStage.h | 80 +++ include/obj/BSDebrisNode.h | 80 +++ include/obj/BSDecalPlacementVectorExtraData.h | 85 ++++ include/obj/BSDismemberSkinInstance.h | 83 ++++ include/obj/BSDistantTreeShaderProperty.h | 75 +++ include/obj/BSFadeNode.h | 75 +++ include/obj/BSFrustumFOVController.h | 78 +++ include/obj/BSMasterParticleSystem.h | 87 ++++ .../obj/BSMaterialEmittanceMultController.h | 75 +++ include/obj/BSMultiBound.h | 78 +++ include/obj/BSMultiBoundAABB.h | 78 +++ include/obj/BSMultiBoundNode.h | 78 +++ include/obj/BSMultiBoundSphere.h | 84 ++++ include/obj/BSOrderedNode.h | 80 +++ include/obj/BSPSysMultiTargetEmitterCtlr.h | 90 ++++ include/obj/BSPSysSimpleColorModifier.h | 90 ++++ include/obj/BSPSysStripUpdateModifier.h | 78 +++ .../obj/BSRefractionFirePeriodController.h | 75 +++ include/obj/BSRefractionStrengthController.h | 75 +++ include/obj/BSSegmentedTriShape.h | 83 ++++ include/obj/BSShaderLightingProperty.h | 98 ++++ include/obj/BSShaderNoLightingProperty.h | 98 ++++ include/obj/BSShaderPPLightingProperty.h | 101 ++++ include/obj/BSShaderProperty.h | 75 +++ include/obj/BSShaderTextureSet.h | 80 +++ include/obj/BSStripPSysData.h | 84 ++++ include/obj/BSStripParticleSystem.h | 75 +++ include/obj/BSTreadTransfInterpolator.h | 85 ++++ include/obj/BSValueNode.h | 80 +++ include/obj/BSWArray.h | 80 +++ include/obj/DistantLODShaderProperty.h | 75 +++ include/obj/HairShaderProperty.h | 75 +++ include/obj/Lighting30ShaderProperty.h | 96 ++++ include/obj/NiAVObject.h | 2 + include/obj/NiAdditionalGeometryData.h | 90 ++++ include/obj/NiControllerSequence.h | 35 +- include/obj/NiGeometry.h | 5 +- include/obj/NiGeometryData.h | 4 +- include/obj/NiMaterialProperty.h | 2 + include/obj/NiPSysCollider.h | 2 +- include/obj/NiPSysGravityModifier.h | 2 + include/obj/NiPSysGrowFadeModifier.h | 2 + include/obj/NiParticlesData.h | 118 ++++- include/obj/NiTimeController.h | 8 +- include/obj/SkyShaderProperty.h | 94 ++++ include/obj/TallGrassShaderProperty.h | 86 ++++ include/obj/TileShaderProperty.h | 88 ++++ include/obj/VolumetricFogShaderProperty.h | 75 +++ include/obj/WaterShaderProperty.h | 88 ++++ include/obj/bhkAabbPhantom.h | 78 +++ include/obj/bhkBreakableConstraint.h | 80 +++ include/obj/bhkConvexListShape.h | 102 ++++ include/obj/bhkHingeConstraint.h | 19 +- include/obj/bhkLimitedHingeConstraint.h | 18 + include/obj/bhkLiquidAction.h | 90 ++++ include/obj/bhkMalleableConstraint.h | 5 + include/obj/bhkOrientHingedBodyAction.h | 78 +++ include/obj/bhkPrismaticConstraint.h | 2 + include/obj/bhkRagdollConstraint.h | 18 + include/obj/bhkRigidBody.h | 4 +- include/obj/hkPackedNiTriStripsData.h | 7 + niflib.vcproj | 436 ++++++++++++++++- niflib_VC2008.vcproj | 432 ++++++++++++++++ src/gen/AdditionalDataBlock.cpp | 32 ++ src/gen/AdditionalDataInfo.cpp | 32 ++ src/gen/BSSegmentedTriangle.cpp | 28 ++ src/gen/BSTreadTransfInfo.cpp | 28 ++ src/gen/BSTreadTransfSubInfo.cpp | 33 ++ src/gen/BodyPartList.cpp | 27 + src/gen/DecalVectorArray.cpp | 28 ++ src/gen/Header.cpp | 33 +- src/gen/HingeDescriptor.cpp | 43 ++ src/gen/LimitedHingeDescriptor.cpp | 5 +- src/gen/RagdollDescriptor.cpp | 9 +- src/gen/ShaderTexDesc.cpp | 4 +- src/gen/register.cpp | 92 ++++ src/niflib.cpp | 1 + src/obj/BSAnimNotes.cpp | 105 ++++ src/obj/BSBlastNode.cpp | 108 ++++ src/obj/BSDamageStage.cpp | 108 ++++ src/obj/BSDebrisNode.cpp | 108 ++++ src/obj/BSDecalPlacementVectorExtraData.cpp | 166 +++++++ src/obj/BSDismemberSkinInstance.cpp | 126 +++++ src/obj/BSDistantTreeShaderProperty.cpp | 102 ++++ src/obj/BSFadeNode.cpp | 102 ++++ src/obj/BSFrustumFOVController.cpp | 105 ++++ src/obj/BSMasterParticleSystem.cpp | 147 ++++++ src/obj/BSMaterialEmittanceMultController.cpp | 102 ++++ src/obj/BSMultiBound.cpp | 105 ++++ src/obj/BSMultiBoundAABB.cpp | 120 +++++ src/obj/BSMultiBoundNode.cpp | 105 ++++ src/obj/BSMultiBoundSphere.cpp | 114 +++++ src/obj/BSOrderedNode.cpp | 108 ++++ src/obj/BSPSysMultiTargetEmitterCtlr.cpp | 153 ++++++ src/obj/BSPSysSimpleColorModifier.cpp | 138 ++++++ src/obj/BSPSysStripUpdateModifier.cpp | 105 ++++ src/obj/BSRefractionFirePeriodController.cpp | 102 ++++ src/obj/BSRefractionStrengthController.cpp | 102 ++++ src/obj/BSSegmentedTriShape.cpp | 129 +++++ src/obj/BSShaderLightingProperty.cpp | 135 +++++ src/obj/BSShaderNoLightingProperty.cpp | 139 ++++++ src/obj/BSShaderPPLightingProperty.cpp | 150 ++++++ src/obj/BSShaderProperty.cpp | 102 ++++ src/obj/BSShaderTextureSet.cpp | 126 +++++ src/obj/BSStripPSysData.cpp | 114 +++++ src/obj/BSStripParticleSystem.cpp | 102 ++++ src/obj/BSTreadTransfInterpolator.cpp | 162 ++++++ src/obj/BSValueNode.cpp | 108 ++++ src/obj/BSWArray.cpp | 126 +++++ src/obj/DistantLODShaderProperty.cpp | 102 ++++ src/obj/HairShaderProperty.cpp | 102 ++++ src/obj/Lighting30ShaderProperty.cpp | 132 +++++ src/obj/Ni3dsAnimationNode.cpp | 8 - src/obj/NiAVObject.cpp | 9 +- src/obj/NiAdditionalGeometryData.cpp | 250 ++++++++++ src/obj/NiBoneLODController.cpp | 6 +- src/obj/NiControllerSequence.cpp | 33 +- src/obj/NiGeomMorpherController.cpp | 17 +- src/obj/NiGeometry.cpp | 6 +- src/obj/NiGeometryData.cpp | 54 +- src/obj/NiMaterialProperty.cpp | 21 +- src/obj/NiMorphData.cpp | 4 +- src/obj/NiPSysCollider.cpp | 2 - src/obj/NiPSysData.cpp | 58 ++- src/obj/NiPSysGravityModifier.cpp | 9 +- src/obj/NiPSysGrowFadeModifier.cpp | 9 +- src/obj/NiParticlesData.cpp | 460 +++++++++++++++--- src/obj/NiSequence.cpp | 10 +- src/obj/NiTexturingProperty.cpp | 6 +- src/obj/SkyShaderProperty.cpp | 129 +++++ src/obj/TallGrassShaderProperty.cpp | 117 +++++ src/obj/TileShaderProperty.cpp | 120 +++++ src/obj/VolumetricFogShaderProperty.cpp | 102 ++++ src/obj/WaterShaderProperty.cpp | 120 +++++ src/obj/bhkAabbPhantom.cpp | 120 +++++ src/obj/bhkBreakableConstraint.cpp | 123 +++++ src/obj/bhkConvexListShape.cpp | 171 +++++++ src/obj/bhkHingeConstraint.cpp | 86 +++- src/obj/bhkLimitedHingeConstraint.cpp | 52 +- src/obj/bhkLiquidAction.cpp | 123 +++++ src/obj/bhkMalleableConstraint.cpp | 112 ++++- src/obj/bhkOrientHingedBodyAction.cpp | 120 +++++ src/obj/bhkPackedNiTriStripsShape.cpp | 34 +- src/obj/bhkPrismaticConstraint.cpp | 9 +- src/obj/bhkRagdollConstraint.cpp | 64 ++- src/obj/bhkRigidBody.cpp | 4 +- src/obj/hkPackedNiTriStripsData.cpp | 54 +- 164 files changed, 12265 insertions(+), 321 deletions(-) create mode 100644 include/gen/AdditionalDataBlock.h create mode 100644 include/gen/AdditionalDataInfo.h create mode 100644 include/gen/BSSegmentedTriangle.h create mode 100644 include/gen/BSTreadTransfInfo.h create mode 100644 include/gen/BSTreadTransfSubInfo.h create mode 100644 include/gen/BodyPartList.h create mode 100644 include/gen/DecalVectorArray.h create mode 100644 include/gen/HingeDescriptor.h create mode 100644 include/obj/BSAnimNotes.h create mode 100644 include/obj/BSBlastNode.h create mode 100644 include/obj/BSDamageStage.h create mode 100644 include/obj/BSDebrisNode.h create mode 100644 include/obj/BSDecalPlacementVectorExtraData.h create mode 100644 include/obj/BSDismemberSkinInstance.h create mode 100644 include/obj/BSDistantTreeShaderProperty.h create mode 100644 include/obj/BSFadeNode.h create mode 100644 include/obj/BSFrustumFOVController.h create mode 100644 include/obj/BSMasterParticleSystem.h create mode 100644 include/obj/BSMaterialEmittanceMultController.h create mode 100644 include/obj/BSMultiBound.h create mode 100644 include/obj/BSMultiBoundAABB.h create mode 100644 include/obj/BSMultiBoundNode.h create mode 100644 include/obj/BSMultiBoundSphere.h create mode 100644 include/obj/BSOrderedNode.h create mode 100644 include/obj/BSPSysMultiTargetEmitterCtlr.h create mode 100644 include/obj/BSPSysSimpleColorModifier.h create mode 100644 include/obj/BSPSysStripUpdateModifier.h create mode 100644 include/obj/BSRefractionFirePeriodController.h create mode 100644 include/obj/BSRefractionStrengthController.h create mode 100644 include/obj/BSSegmentedTriShape.h create mode 100644 include/obj/BSShaderLightingProperty.h create mode 100644 include/obj/BSShaderNoLightingProperty.h create mode 100644 include/obj/BSShaderPPLightingProperty.h create mode 100644 include/obj/BSShaderProperty.h create mode 100644 include/obj/BSShaderTextureSet.h create mode 100644 include/obj/BSStripPSysData.h create mode 100644 include/obj/BSStripParticleSystem.h create mode 100644 include/obj/BSTreadTransfInterpolator.h create mode 100644 include/obj/BSValueNode.h create mode 100644 include/obj/BSWArray.h create mode 100644 include/obj/DistantLODShaderProperty.h create mode 100644 include/obj/HairShaderProperty.h create mode 100644 include/obj/Lighting30ShaderProperty.h create mode 100644 include/obj/NiAdditionalGeometryData.h create mode 100644 include/obj/SkyShaderProperty.h create mode 100644 include/obj/TallGrassShaderProperty.h create mode 100644 include/obj/TileShaderProperty.h create mode 100644 include/obj/VolumetricFogShaderProperty.h create mode 100644 include/obj/WaterShaderProperty.h create mode 100644 include/obj/bhkAabbPhantom.h create mode 100644 include/obj/bhkBreakableConstraint.h create mode 100644 include/obj/bhkConvexListShape.h create mode 100644 include/obj/bhkLiquidAction.h create mode 100644 include/obj/bhkOrientHingedBodyAction.h create mode 100644 src/gen/AdditionalDataBlock.cpp create mode 100644 src/gen/AdditionalDataInfo.cpp create mode 100644 src/gen/BSSegmentedTriangle.cpp create mode 100644 src/gen/BSTreadTransfInfo.cpp create mode 100644 src/gen/BSTreadTransfSubInfo.cpp create mode 100644 src/gen/BodyPartList.cpp create mode 100644 src/gen/DecalVectorArray.cpp create mode 100644 src/gen/HingeDescriptor.cpp create mode 100644 src/obj/BSAnimNotes.cpp create mode 100644 src/obj/BSBlastNode.cpp create mode 100644 src/obj/BSDamageStage.cpp create mode 100644 src/obj/BSDebrisNode.cpp create mode 100644 src/obj/BSDecalPlacementVectorExtraData.cpp create mode 100644 src/obj/BSDismemberSkinInstance.cpp create mode 100644 src/obj/BSDistantTreeShaderProperty.cpp create mode 100644 src/obj/BSFadeNode.cpp create mode 100644 src/obj/BSFrustumFOVController.cpp create mode 100644 src/obj/BSMasterParticleSystem.cpp create mode 100644 src/obj/BSMaterialEmittanceMultController.cpp create mode 100644 src/obj/BSMultiBound.cpp create mode 100644 src/obj/BSMultiBoundAABB.cpp create mode 100644 src/obj/BSMultiBoundNode.cpp create mode 100644 src/obj/BSMultiBoundSphere.cpp create mode 100644 src/obj/BSOrderedNode.cpp create mode 100644 src/obj/BSPSysMultiTargetEmitterCtlr.cpp create mode 100644 src/obj/BSPSysSimpleColorModifier.cpp create mode 100644 src/obj/BSPSysStripUpdateModifier.cpp create mode 100644 src/obj/BSRefractionFirePeriodController.cpp create mode 100644 src/obj/BSRefractionStrengthController.cpp create mode 100644 src/obj/BSSegmentedTriShape.cpp create mode 100644 src/obj/BSShaderLightingProperty.cpp create mode 100644 src/obj/BSShaderNoLightingProperty.cpp create mode 100644 src/obj/BSShaderPPLightingProperty.cpp create mode 100644 src/obj/BSShaderProperty.cpp create mode 100644 src/obj/BSShaderTextureSet.cpp create mode 100644 src/obj/BSStripPSysData.cpp create mode 100644 src/obj/BSStripParticleSystem.cpp create mode 100644 src/obj/BSTreadTransfInterpolator.cpp create mode 100644 src/obj/BSValueNode.cpp create mode 100644 src/obj/BSWArray.cpp create mode 100644 src/obj/DistantLODShaderProperty.cpp create mode 100644 src/obj/HairShaderProperty.cpp create mode 100644 src/obj/Lighting30ShaderProperty.cpp create mode 100644 src/obj/NiAdditionalGeometryData.cpp create mode 100644 src/obj/SkyShaderProperty.cpp create mode 100644 src/obj/TallGrassShaderProperty.cpp create mode 100644 src/obj/TileShaderProperty.cpp create mode 100644 src/obj/VolumetricFogShaderProperty.cpp create mode 100644 src/obj/WaterShaderProperty.cpp create mode 100644 src/obj/bhkAabbPhantom.cpp create mode 100644 src/obj/bhkBreakableConstraint.cpp create mode 100644 src/obj/bhkConvexListShape.cpp create mode 100644 src/obj/bhkLiquidAction.cpp create mode 100644 src/obj/bhkOrientHingedBodyAction.cpp diff --git a/Makefile b/Makefile index 21218d0a..5d07ef54 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,8 @@ DEBUGGING = # Example: -march=k8 would generate enhancements for the k8 family (opterons and some athlons).or -march=pentium4 for a pentium4 # For more info read this: http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/i386-and-x86_002d64-Options.html#i386-and-x86_002d64-Options # -CFLAGS = -O2 -Wall -fPIC $(DEBUGGING) -fpermissive -Iinclude -D BUILDING_NIFLIB_DLL +#CFLAGS = -fPIC +CFLAGS = -O2 -Wall $(DEBUGGING) -fpermissive -Iinclude -D BUILDING_NIFLIB_DLL CXXFLAGS = $(CFLAGS) #IT should find the libs used, but if it doesn't specify here. Ex: -lm for libm.so.<whatever> LIBS = @@ -48,11 +49,28 @@ OBJ_FILES = \ NvTriStrip/NvTriStripObjects.o \ NvTriStrip/VertexCache.o \ src/ComplexShape.o \ + src/Inertia.o \ + src/kfm.o \ + src/MatTexCollection.o \ + src/niflib.o \ + src/nifqhull.o \ + src/NIF_IO.o \ + src/nif_math.o \ + src/ObjectRegistry.o \ + src/pch.o \ + src/RefObject.o \ + src/Type.o \ + src/gen/AdditionalDataBlock.o \ + src/gen/AdditionalDataInfo.o \ src/gen/ArkTexture.o \ src/gen/AVObject.o \ + src/gen/BodyPartList.o \ src/gen/BoundingBox.o \ src/gen/BoundingVolume.o \ src/gen/BoxBV.o \ + src/gen/BSSegmentedTriangle.o \ + src/gen/BSTreadTransfInfo.o \ + src/gen/BSTreadTransfSubInfo.o \ src/gen/ByteArray.o \ src/gen/ByteColor3.o \ src/gen/ByteColor4.o \ @@ -60,12 +78,14 @@ OBJ_FILES = \ src/gen/CapsuleBV.o \ src/gen/ChannelData.o \ src/gen/ControllerLink.o \ + src/gen/DecalVectorArray.o \ src/gen/enums.o \ src/gen/ExportInfo.o \ src/gen/Footer.o \ src/gen/FurniturePosition.o \ src/gen/HalfSpaceBV.o \ src/gen/Header.o \ + src/gen/HingeDescriptor.o \ src/gen/hkTriangle.o \ src/gen/LimitedHingeDescriptor.o \ src/gen/LODRange.o \ @@ -97,35 +117,32 @@ OBJ_FILES = \ src/gen/TexDesc.o \ src/gen/TexSource.o \ src/gen/UnionBV.o \ - src/Inertia.o \ - src/kfm.o \ - src/MatTexCollection.o \ - src/niflib.o \ - src/nifqhull.o \ - src/NIF_IO.o \ - src/nif_math.o \ - src/ObjectRegistry.o \ src/obj/ATextureRenderData.o \ src/obj/AvoidNode.o \ + src/obj/bhkAabbPhantom.o \ src/obj/bhkBlendCollisionObject.o \ src/obj/bhkBlendController.o \ src/obj/bhkBoxShape.o \ + src/obj/bhkBreakableConstraint.o \ src/obj/bhkBvTreeShape.o \ src/obj/bhkCapsuleShape.o \ src/obj/bhkCollisionObject.o \ src/obj/bhkConstraint.o \ + src/obj/bhkConvexListShape.o \ src/obj/bhkConvexShape.o \ src/obj/bhkConvexTransformShape.o \ src/obj/bhkConvexVerticesShape.o \ src/obj/bhkEntity.o \ src/obj/bhkHingeConstraint.o \ src/obj/bhkLimitedHingeConstraint.o \ + src/obj/bhkLiquidAction.o \ src/obj/bhkListShape.o \ src/obj/bhkMalleableConstraint.o \ src/obj/bhkMoppBvTreeShape.o \ src/obj/bhkMultiSphereShape.o \ src/obj/bhkNiCollisionObject.o \ src/obj/bhkNiTriStripsShape.o \ + src/obj/bhkOrientHingedBodyAction.o \ src/obj/bhkPackedNiTriStripsShape.o \ src/obj/bhkPCollisionObject.o \ src/obj/bhkPhantom.o \ @@ -145,23 +162,59 @@ OBJ_FILES = \ src/obj/bhkStiffSpringConstraint.o \ src/obj/bhkTransformShape.o \ src/obj/bhkWorldObject.o \ + src/obj/BSAnimNotes.o \ + src/obj/BSBlastNode.o \ src/obj/BSBound.o \ + src/obj/BSDamageStage.o \ + src/obj/BSDebrisNode.o \ + src/obj/BSDecalPlacementVectorExtraData.o \ + src/obj/BSDismemberSkinInstance.o \ + src/obj/BSDistantTreeShaderProperty.o \ + src/obj/BSFadeNode.o \ + src/obj/BSFrustumFOVController.o \ src/obj/BSFurnitureMarker.o \ src/obj/BSKeyframeController.o \ + src/obj/BSMasterParticleSystem.o \ + src/obj/BSMaterialEmittanceMultController.o \ + src/obj/BSMultiBound.o \ + src/obj/BSMultiBoundAABB.o \ + src/obj/BSMultiBoundNode.o \ + src/obj/BSMultiBoundSphere.o \ + src/obj/BSOrderedNode.o \ src/obj/BSParentVelocityModifier.o \ src/obj/BSPSysArrayEmitter.o \ + src/obj/BSPSysMultiTargetEmitterCtlr.o \ + src/obj/BSPSysSimpleColorModifier.o \ + src/obj/BSPSysStripUpdateModifier.o \ + src/obj/BSRefractionFirePeriodController.o \ + src/obj/BSRefractionStrengthController.o \ + src/obj/BSSegmentedTriShape.o \ + src/obj/BSShaderLightingProperty.o \ + src/obj/BSShaderNoLightingProperty.o \ + src/obj/BSShaderPPLightingProperty.o \ + src/obj/BSShaderProperty.o \ + src/obj/BSShaderTextureSet.o \ + src/obj/BSStripParticleSystem.o \ + src/obj/BSStripPSysData.o \ + src/obj/BSTreadTransfInterpolator.o \ + src/obj/BSValueNode.o \ + src/obj/BSWArray.o \ src/obj/BSWindModifier.o \ src/obj/BSXFlags.o \ + src/obj/DistantLODShaderProperty.o \ src/obj/FxButton.o \ src/obj/FxRadioButton.o \ src/obj/FxWidget.o \ + src/obj/HairShaderProperty.o \ src/obj/hkPackedNiTriStripsData.o \ + src/obj/Lighting30ShaderProperty.o \ src/obj/Ni3dsAlphaAnimator.o \ src/obj/Ni3dsAnimationNode.o \ src/obj/Ni3dsColorAnimator.o \ src/obj/Ni3dsMorphShape.o \ src/obj/Ni3dsParticleSystem.o \ src/obj/Ni3dsPathController.o \ + src/obj/NiAdditionalGeometryData.o \ src/obj/NiAlphaController.o \ src/obj/NiAlphaProperty.o \ src/obj/NiAmbientLight.o \ @@ -246,6 +299,7 @@ OBJ_FILES = \ src/obj/NiLight.o \ src/obj/NiLightColorController.o \ src/obj/NiLightDimmerController.o \ + src/obj/NiLightIntensityController.o \ src/obj/NiLines.o \ src/obj/NiLinesData.o \ src/obj/NiLODData.o \ @@ -295,9 +349,11 @@ OBJ_FILES = \ src/obj/NiPoint3InterpController.o \ src/obj/NiPoint3Interpolator.o \ src/obj/NiPointLight.o \ + src/obj/NiPortal.o \ src/obj/NiPosData.o \ src/obj/NiProperty.o \ src/obj/NiPSysAgeDeathModifier.o \ + src/obj/NiPSysAirFieldModifier.o \ src/obj/NiPSysBombModifier.o \ src/obj/NiPSysBoundUpdateModifier.o \ src/obj/NiPSysBoxEmitter.o \ @@ -306,6 +362,7 @@ OBJ_FILES = \ src/obj/NiPSysColorModifier.o \ src/obj/NiPSysCylinderEmitter.o \ src/obj/NiPSysData.o \ + src/obj/NiPSysDragFieldModifier.o \ src/obj/NiPSysDragModifier.o \ src/obj/NiPSysEmitter.o \ src/obj/NiPSysEmitterCtlr.o \ @@ -315,6 +372,9 @@ OBJ_FILES = \ src/obj/NiPSysEmitterInitialRadiusCtlr.o \ src/obj/NiPSysEmitterLifeSpanCtlr.o \ src/obj/NiPSysEmitterSpeedCtlr.o \ + src/obj/NiPSysFieldMagnitudeCtlr.o \ + src/obj/NiPSysFieldModifier.o \ + src/obj/NiPSysGravityFieldModifier.o \ src/obj/NiPSysGravityModifier.o \ src/obj/NiPSysGravityStrengthCtlr.o \ src/obj/NiPSysGrowFadeModifier.o \ @@ -332,11 +392,15 @@ OBJ_FILES = \ src/obj/NiPSysSpawnModifier.o \ src/obj/NiPSysSphereEmitter.o \ src/obj/NiPSysSphericalCollider.o \ + src/obj/NiPSysTurbulenceFieldModifier.o \ src/obj/NiPSysUpdateCtlr.o \ src/obj/NiPSysVolumeEmitter.o \ + src/obj/NiPSysVortexFieldModifier.o \ src/obj/NiRangeLODData.o \ src/obj/NiRawImageData.o \ src/obj/NiRollController.o \ + src/obj/NiRoom.o \ + src/obj/NiRoomGroup.o \ src/obj/NiRotatingParticles.o \ src/obj/NiRotatingParticlesData.o \ src/obj/NiScreenElements.o \ @@ -389,19 +453,11 @@ OBJ_FILES = \ src/obj/NiWireframeProperty.o \ src/obj/NiZBufferProperty.o \ src/obj/RootCollisionNode.o \ - src/obj/NiLightIntensityController.o \ - src/obj/NiPortal.o \ - src/obj/NiPSysAirFieldModifier.o \ - src/obj/NiPSysDragFieldModifier.o \ - src/obj/NiPSysFieldMagnitudeCtlr.o \ - src/obj/NiPSysFieldModifier.o \ - src/obj/NiPSysGravityFieldModifier.o \ - src/obj/NiPSysTurbulenceFieldModifier.o \ - src/obj/NiPSysVortexFieldModifier.o \ - src/obj/NiRoom.o \ - src/obj/NiRoomGroup.o \ - src/RefObject.o \ - src/Type.o \ + src/obj/SkyShaderProperty.o \ + src/obj/TallGrassShaderProperty.o \ + src/obj/TileShaderProperty.o \ + src/obj/VolumetricFogShaderProperty.o \ + src/obj/WaterShaderProperty.o \ TriStripper/connectivity_graph.o \ TriStripper/policy.o \ TriStripper/tri_stripper.o \ diff --git a/include/gen/AVObject.h b/include/gen/AVObject.h index c78d5f8a..42f2a102 100644 --- a/include/gen/AVObject.h +++ b/include/gen/AVObject.h @@ -26,7 +26,7 @@ struct AVObject { /*! Copy Operator */ NIFLIB_API AVObject & operator=( const AVObject & src ); /*! Object name. */ - IndexString name; + string name; /*! Object reference. */ NiAVObject * avObject; }; diff --git a/include/gen/AdditionalDataBlock.h b/include/gen/AdditionalDataBlock.h new file mode 100644 index 00000000..1fc369b0 --- /dev/null +++ b/include/gen/AdditionalDataBlock.h @@ -0,0 +1,43 @@ +/* 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/gen_niflib.py Python script. + +#ifndef _ADDITIONALDATABLOCK_H_ +#define _ADDITIONALDATABLOCK_H_ + +#include "../NIF_IO.h" + +namespace Niflib { + + +/*! */ +struct AdditionalDataBlock { + /*! Default Constructor */ + NIFLIB_API AdditionalDataBlock(); + /*! Default Destructor */ + NIFLIB_API ~AdditionalDataBlock(); + /*! Copy Constructor */ + NIFLIB_API AdditionalDataBlock( const AdditionalDataBlock & src ); + /*! Copy Operator */ + NIFLIB_API AdditionalDataBlock & operator=( const AdditionalDataBlock & src ); + /*! Has data */ + bool hasData; + /*! Size of Block */ + mutable int blockSize; + /*! Unknown */ + mutable int numBlocks; + /*! Unknown */ + vector<int > blockOffsets; + /*! Unknown */ + mutable int numData; + /*! Unknown */ + vector<int > dataSizes; + /*! Unknown */ + vector< vector<byte > > data; +}; + +} +#endif diff --git a/include/gen/AdditionalDataInfo.h b/include/gen/AdditionalDataInfo.h new file mode 100644 index 00000000..590bbddf --- /dev/null +++ b/include/gen/AdditionalDataInfo.h @@ -0,0 +1,43 @@ +/* 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/gen_niflib.py Python script. + +#ifndef _ADDITIONALDATAINFO_H_ +#define _ADDITIONALDATAINFO_H_ + +#include "../NIF_IO.h" + +namespace Niflib { + + +/*! */ +struct AdditionalDataInfo { + /*! Default Constructor */ + NIFLIB_API AdditionalDataInfo(); + /*! Default Destructor */ + NIFLIB_API ~AdditionalDataInfo(); + /*! Copy Constructor */ + NIFLIB_API AdditionalDataInfo( const AdditionalDataInfo & src ); + /*! Copy Operator */ + NIFLIB_API AdditionalDataInfo & operator=( const AdditionalDataInfo & src ); + /*! Type of data */ + int dataType; + /*! Size of Block */ + int blockSize; + /*! Unknown */ + int numBlocks; + /*! Unknown */ + int blockSize2; + /*! Unknown */ + int blockIndex; + /*! Unknown */ + int unknownInt1; + /*! Unknown */ + byte unknownByte1; +}; + +} +#endif diff --git a/include/gen/BSSegmentedTriangle.h b/include/gen/BSSegmentedTriangle.h new file mode 100644 index 00000000..2032c64a --- /dev/null +++ b/include/gen/BSSegmentedTriangle.h @@ -0,0 +1,35 @@ +/* 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/gen_niflib.py Python script. + +#ifndef _BSSEGMENTEDTRIANGLE_H_ +#define _BSSEGMENTEDTRIANGLE_H_ + +#include "../NIF_IO.h" + +namespace Niflib { + + +/*! Bethesda-specific node. */ +struct BSSegmentedTriangle { + /*! Default Constructor */ + NIFLIB_API BSSegmentedTriangle(); + /*! Default Destructor */ + NIFLIB_API ~BSSegmentedTriangle(); + /*! Copy Constructor */ + NIFLIB_API BSSegmentedTriangle( const BSSegmentedTriangle & src ); + /*! Copy Operator */ + NIFLIB_API BSSegmentedTriangle & operator=( const BSSegmentedTriangle & src ); + /*! Unknown */ + int unknownInt1; + /*! Unknown */ + int unknownInt2; + /*! Unknown */ + byte unknownByte1; +}; + +} +#endif diff --git a/include/gen/BSTreadTransfInfo.h b/include/gen/BSTreadTransfInfo.h new file mode 100644 index 00000000..a2a26596 --- /dev/null +++ b/include/gen/BSTreadTransfInfo.h @@ -0,0 +1,35 @@ +/* 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/gen_niflib.py Python script. + +#ifndef _BSTREADTRANSFINFO_H_ +#define _BSTREADTRANSFINFO_H_ + +#include "../NIF_IO.h" + +// Include structures +#include "BSTreadTransfSubInfo.h" +namespace Niflib { + + +/*! Bethesda-specific node. */ +struct BSTreadTransfInfo { + /*! Default Constructor */ + NIFLIB_API BSTreadTransfInfo(); + /*! Default Destructor */ + NIFLIB_API ~BSTreadTransfInfo(); + /*! Copy Constructor */ + NIFLIB_API BSTreadTransfInfo( const BSTreadTransfInfo & src ); + /*! Copy Operator */ + NIFLIB_API BSTreadTransfInfo & operator=( const BSTreadTransfInfo & src ); + /*! Unknown Flag */ + float unknownFloat1; + /*! Data */ + array<2,BSTreadTransfSubInfo > data; +}; + +} +#endif diff --git a/include/gen/BSTreadTransfSubInfo.h b/include/gen/BSTreadTransfSubInfo.h new file mode 100644 index 00000000..929be7d8 --- /dev/null +++ b/include/gen/BSTreadTransfSubInfo.h @@ -0,0 +1,45 @@ +/* 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/gen_niflib.py Python script. + +#ifndef _BSTREADTRANSFSUBINFO_H_ +#define _BSTREADTRANSFSUBINFO_H_ + +#include "../NIF_IO.h" + +namespace Niflib { + + +/*! Bethesda-specific node. */ +struct BSTreadTransfSubInfo { + /*! Default Constructor */ + NIFLIB_API BSTreadTransfSubInfo(); + /*! Default Destructor */ + NIFLIB_API ~BSTreadTransfSubInfo(); + /*! Copy Constructor */ + NIFLIB_API BSTreadTransfSubInfo( const BSTreadTransfSubInfo & src ); + /*! Copy Operator */ + NIFLIB_API BSTreadTransfSubInfo & operator=( const BSTreadTransfSubInfo & src ); + /*! Unknown */ + int unknownInt1; + /*! Unknown */ + int unknownInt2; + /*! Unknown */ + int unknownInt3; + /*! Unknown */ + int unknownInt4; + /*! Unknown */ + int unknownInt5; + /*! Unknown */ + int unknownInt6; + /*! Unknown */ + int unknownInt7; + /*! Unknown */ + int unknownInt8; +}; + +} +#endif diff --git a/include/gen/BodyPartList.h b/include/gen/BodyPartList.h new file mode 100644 index 00000000..05efcc81 --- /dev/null +++ b/include/gen/BodyPartList.h @@ -0,0 +1,33 @@ +/* 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/gen_niflib.py Python script. + +#ifndef _BODYPARTLIST_H_ +#define _BODYPARTLIST_H_ + +#include "../NIF_IO.h" + +namespace Niflib { + + +/*! Body part list for DismemberSkinInstance */ +struct BodyPartList { + /*! Default Constructor */ + NIFLIB_API BodyPartList(); + /*! Default Destructor */ + NIFLIB_API ~BodyPartList(); + /*! Copy Constructor */ + NIFLIB_API BodyPartList( const BodyPartList & src ); + /*! Copy Operator */ + NIFLIB_API BodyPartList & operator=( const BodyPartList & src ); + /*! Unknown */ + short unknownShort; + /*! Unknown */ + short bodyPart; +}; + +} +#endif diff --git a/include/gen/DecalVectorArray.h b/include/gen/DecalVectorArray.h new file mode 100644 index 00000000..bdeb9a56 --- /dev/null +++ b/include/gen/DecalVectorArray.h @@ -0,0 +1,35 @@ +/* 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/gen_niflib.py Python script. + +#ifndef _DECALVECTORARRAY_H_ +#define _DECALVECTORARRAY_H_ + +#include "../NIF_IO.h" + +namespace Niflib { + + +/*! Array of Vectors for Decal placement in BSDecalPlacementVectorExtraData. */ +struct DecalVectorArray { + /*! Default Constructor */ + NIFLIB_API DecalVectorArray(); + /*! Default Destructor */ + NIFLIB_API ~DecalVectorArray(); + /*! Copy Constructor */ + NIFLIB_API DecalVectorArray( const DecalVectorArray & src ); + /*! Copy Operator */ + NIFLIB_API DecalVectorArray & operator=( const DecalVectorArray & src ); + /*! Number of sets */ + mutable short numVectors; + /*! Vector XYZ coords */ + vector<Vector3 > points; + /*! Vector Normals */ + vector<Vector3 > normals; +}; + +} +#endif diff --git a/include/gen/HingeDescriptor.h b/include/gen/HingeDescriptor.h new file mode 100644 index 00000000..d9e1adaa --- /dev/null +++ b/include/gen/HingeDescriptor.h @@ -0,0 +1,68 @@ +/* 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/gen_niflib.py Python script. + +#ifndef _HINGEDESCRIPTOR_H_ +#define _HINGEDESCRIPTOR_H_ + +#include "../NIF_IO.h" + +namespace Niflib { + + +/*! */ +struct HingeDescriptor { + /*! Default Constructor */ + NIFLIB_API HingeDescriptor(); + /*! Default Destructor */ + NIFLIB_API ~HingeDescriptor(); + /*! Copy Constructor */ + NIFLIB_API HingeDescriptor( const HingeDescriptor & src ); + /*! Copy Operator */ + NIFLIB_API HingeDescriptor & operator=( const HingeDescriptor & src ); + /*! Pivot point around which the object will rotate. */ + Vector4 pivotA; + /*! Vector in the rotation plane which defines the zero angle. */ + Vector4 perp2AxleInA1; + /*! + * Vector in the rotation plane, orthogonal on the previous one, which defines the + * positive direction of rotation. + */ + Vector4 perp2AxleInA2; + /*! Pivot A in second entity coordinate system. */ + Vector4 pivotB; + /*! Axle A (vector orthogonal on Perp2 Axles) in second entity coordinate system. */ + Vector4 axleB; + /*! Unknown */ + float unknownFloat1; + /*! Unknown */ + float unknownInt2; + /*! Unknown */ + float unknownInt3; + /*! Unknown */ + float unknownInt4; + /*! Unknown */ + float unknownInt5; + /*! Unknown */ + float unknownInt6; + /*! Unknown */ + float unknownInt7; + /*! Unknown */ + float unknownInt8; + /*! Unknown */ + float unknownInt9; + /*! Unknown */ + float unknownInt10; + /*! Unknown */ + byte unknownByte1; + /*! Unknown */ + byte unknownByte2; + /*! Unknown */ + byte unknownByte3; +}; + +} +#endif diff --git a/include/gen/LimitedHingeDescriptor.h b/include/gen/LimitedHingeDescriptor.h index db07bada..624a8d16 100644 --- a/include/gen/LimitedHingeDescriptor.h +++ b/include/gen/LimitedHingeDescriptor.h @@ -47,6 +47,12 @@ struct LimitedHingeDescriptor { float maxAngle; /*! Maximum friction, typically either 0 or 10. */ float maxFriction; + /*! Unknown */ + float unknownFloat1; + /*! Unknown */ + float unknownFloat2; + /*! Unknown */ + float unknownFloat3; }; } diff --git a/include/gen/RagdollDescriptor.h b/include/gen/RagdollDescriptor.h index 61556806..630943b7 100644 --- a/include/gen/RagdollDescriptor.h +++ b/include/gen/RagdollDescriptor.h @@ -60,6 +60,20 @@ struct RagdollDescriptor { float twistMaxAngle; /*! Maximum friction, typically 0 or 10. */ float maxFriction; + /*! Unknown */ + float unknownFloat1; + /*! Unknown */ + float unknownFloat2; + /*! Unknown */ + float unknownFloat3; + /*! Unknown */ + float unknownFloat4; + /*! Unknown */ + float unknownFloat5; + /*! Unknown */ + float unknownFloat6; + /*! Unknown */ + float unknownFloat7; }; } diff --git a/include/gen/ShaderTexDesc.h b/include/gen/ShaderTexDesc.h index ef72b458..aa396bc1 100644 --- a/include/gen/ShaderTexDesc.h +++ b/include/gen/ShaderTexDesc.h @@ -29,8 +29,8 @@ struct ShaderTexDesc { bool isUsed; /*! The texture data. */ TexDesc textureData; - /*! Unknown. */ - unsigned int unknownInt; + /*! Map Index */ + unsigned int mapIndex; }; } diff --git a/include/gen/enums.h b/include/gen/enums.h index 4fae7d0f..462f1299 100644 --- a/include/gen/enums.h +++ b/include/gen/enums.h @@ -262,11 +262,9 @@ ostream & operator<<( ostream & out, OblivionLayer const & val ); /*! * A list of possible solver deactivation settings. This value defines how the - * solver deactivates objects. The solver works on a per object - * basis. - * Note: Solver deactivation does not save CPU, but reduces - * creeping of - * movable objects in a pile quite dramatically. + * solver deactivates objects. The solver works on a per object basis. + * Note: Solver deactivation does not save CPU, but reduces creeping of + * movable objects in a pile quite dramatically. */ enum SolverDeactivation { SOLVER_DEACTIVATION_INVALID = 0, /*!< Invalid */ diff --git a/include/nif_versions.h b/include/nif_versions.h index d26ef02a..b491ba9c 100644 --- a/include/nif_versions.h +++ b/include/nif_versions.h @@ -26,6 +26,7 @@ const unsigned VER_10_2_0_0 = 0x0A020000; /*!< NIF Version 10.2.0.0 */ const unsigned VER_20_0_0_4 = 0x14000004; /*!< NIF Version 20.0.0.4 */ const unsigned VER_20_0_0_5 = 0x14000005; /*!< NIF Version 20.0.0.4 */ const unsigned VER_20_1_0_3 = 0x14010003; /*!< NIF Version 20.1.0.3 */ +const unsigned VER_20_2_0_7 = 0x14010007; /*!< NIF Version 20.2.0.7 */ const unsigned VER_20_3_0_3 = 0x14030003; /*!< NIF Version 20.3.0.3 */ const unsigned VER_20_3_0_6 = 0x14030006; /*!< NIF Version 20.3.0.6 */ const unsigned VER_UNSUPPORTED = 0xFFFFFFFF; /*!< Unsupported NIF Version */ diff --git a/include/obj/BSAnimNotes.h b/include/obj/BSAnimNotes.h new file mode 100644 index 00000000..47c7cb13 --- /dev/null +++ b/include/obj/BSAnimNotes.h @@ -0,0 +1,78 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSANIMNOTES_H_ +#define _BSANIMNOTES_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiObject.h" +namespace Niflib { + +class BSAnimNotes; +typedef Ref<BSAnimNotes> BSAnimNotesRef; + +/*! Bethesda-specific node. */ +class BSAnimNotes : public NiObject { +public: + /*! Constructor */ + NIFLIB_API BSAnimNotes(); + + /*! Destructor */ + NIFLIB_API virtual ~BSAnimNotes(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + short unknownShort1; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSBlastNode.h b/include/obj/BSBlastNode.h new file mode 100644 index 00000000..0093ef84 --- /dev/null +++ b/include/obj/BSBlastNode.h @@ -0,0 +1,80 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSBLASTNODE_H_ +#define _BSBLASTNODE_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiNode.h" +namespace Niflib { + +class BSBlastNode; +typedef Ref<BSBlastNode> BSBlastNodeRef; + +/*! Bethesda-Specific node. */ +class BSBlastNode : public NiNode { +public: + /*! Constructor */ + NIFLIB_API BSBlastNode(); + + /*! Destructor */ + NIFLIB_API virtual ~BSBlastNode(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + byte unknownByte1; + /*! Unknown */ + short unknownShort1; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSDamageStage.h b/include/obj/BSDamageStage.h new file mode 100644 index 00000000..2ded8256 --- /dev/null +++ b/include/obj/BSDamageStage.h @@ -0,0 +1,80 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSDAMAGESTAGE_H_ +#define _BSDAMAGESTAGE_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiNode.h" +namespace Niflib { + +class BSDamageStage; +typedef Ref<BSDamageStage> BSDamageStageRef; + +/*! Bethesda-Specific node. */ +class BSDamageStage : public NiNode { +public: + /*! Constructor */ + NIFLIB_API BSDamageStage(); + + /*! Destructor */ + NIFLIB_API virtual ~BSDamageStage(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + byte unknownByte1; + /*! Unknown */ + short unknownShort1; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSDebrisNode.h b/include/obj/BSDebrisNode.h new file mode 100644 index 00000000..149c92a0 --- /dev/null +++ b/include/obj/BSDebrisNode.h @@ -0,0 +1,80 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSDEBRISNODE_H_ +#define _BSDEBRISNODE_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiNode.h" +namespace Niflib { + +class BSDebrisNode; +typedef Ref<BSDebrisNode> BSDebrisNodeRef; + +/*! Bethesda-Specific node. */ +class BSDebrisNode : public NiNode { +public: + /*! Constructor */ + NIFLIB_API BSDebrisNode(); + + /*! Destructor */ + NIFLIB_API virtual ~BSDebrisNode(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + byte unknownByte1; + /*! Unknown */ + short unknownShort1; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSDecalPlacementVectorExtraData.h b/include/obj/BSDecalPlacementVectorExtraData.h new file mode 100644 index 00000000..786e88ba --- /dev/null +++ b/include/obj/BSDecalPlacementVectorExtraData.h @@ -0,0 +1,85 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSDECALPLACEMENTVECTOREXTRADATA_H_ +#define _BSDECALPLACEMENTVECTOREXTRADATA_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiExtraData.h" + +// Include structures +#include "../gen/DecalVectorArray.h" +namespace Niflib { + +class BSDecalPlacementVectorExtraData; +typedef Ref<BSDecalPlacementVectorExtraData> BSDecalPlacementVectorExtraDataRef; + +/*! Bethesda-specific node. (for dynamic decal projection?) */ +class BSDecalPlacementVectorExtraData : public NiExtraData { +public: + /*! Constructor */ + NIFLIB_API BSDecalPlacementVectorExtraData(); + + /*! Destructor */ + NIFLIB_API virtual ~BSDecalPlacementVectorExtraData(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + float unknownFloat1; + /*! Number of groups */ + mutable short numVectorBlocks; + /*! Number of Blocks */ + vector<DecalVectorArray > vectorBlocks; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSDismemberSkinInstance.h b/include/obj/BSDismemberSkinInstance.h new file mode 100644 index 00000000..d53859a7 --- /dev/null +++ b/include/obj/BSDismemberSkinInstance.h @@ -0,0 +1,83 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSDISMEMBERSKININSTANCE_H_ +#define _BSDISMEMBERSKININSTANCE_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiSkinInstance.h" + +// Include structures +#include "../gen/BodyPartList.h" +namespace Niflib { + +class BSDismemberSkinInstance; +typedef Ref<BSDismemberSkinInstance> BSDismemberSkinInstanceRef; + +/*! Bethesda-specific node. */ +class BSDismemberSkinInstance : public NiSkinInstance { +public: + /*! Constructor */ + NIFLIB_API BSDismemberSkinInstance(); + + /*! Destructor */ + NIFLIB_API virtual ~BSDismemberSkinInstance(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + mutable int numPartitions; + /*! Unknown */ + vector<BodyPartList > partitions; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSDistantTreeShaderProperty.h b/include/obj/BSDistantTreeShaderProperty.h new file mode 100644 index 00000000..7c9a27c3 --- /dev/null +++ b/include/obj/BSDistantTreeShaderProperty.h @@ -0,0 +1,75 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSDISTANTTREESHADERPROPERTY_H_ +#define _BSDISTANTTREESHADERPROPERTY_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiShadeProperty.h" +namespace Niflib { + +class BSDistantTreeShaderProperty; +typedef Ref<BSDistantTreeShaderProperty> BSDistantTreeShaderPropertyRef; + +/*! Bethesda-specific node. */ +class BSDistantTreeShaderProperty : public NiShadeProperty { +public: + /*! Constructor */ + NIFLIB_API BSDistantTreeShaderProperty(); + + /*! Destructor */ + NIFLIB_API virtual ~BSDistantTreeShaderProperty(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSFadeNode.h b/include/obj/BSFadeNode.h new file mode 100644 index 00000000..07f30af1 --- /dev/null +++ b/include/obj/BSFadeNode.h @@ -0,0 +1,75 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSFADENODE_H_ +#define _BSFADENODE_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiNode.h" +namespace Niflib { + +class BSFadeNode; +typedef Ref<BSFadeNode> BSFadeNodeRef; + +/*! Bethesda-specific fade node. */ +class BSFadeNode : public NiNode { +public: + /*! Constructor */ + NIFLIB_API BSFadeNode(); + + /*! Destructor */ + NIFLIB_API virtual ~BSFadeNode(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSFrustumFOVController.h b/include/obj/BSFrustumFOVController.h new file mode 100644 index 00000000..86665302 --- /dev/null +++ b/include/obj/BSFrustumFOVController.h @@ -0,0 +1,78 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSFRUSTUMFOVCONTROLLER_H_ +#define _BSFRUSTUMFOVCONTROLLER_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiTimeController.h" +namespace Niflib { + +class BSFrustumFOVController; +typedef Ref<BSFrustumFOVController> BSFrustumFOVControllerRef; + +/*! Bethesda-specific node. */ +class BSFrustumFOVController : public NiTimeController { +public: + /*! Constructor */ + NIFLIB_API BSFrustumFOVController(); + + /*! Destructor */ + NIFLIB_API virtual ~BSFrustumFOVController(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + int unknownInt1; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSMasterParticleSystem.h b/include/obj/BSMasterParticleSystem.h new file mode 100644 index 00000000..67b3a348 --- /dev/null +++ b/include/obj/BSMasterParticleSystem.h @@ -0,0 +1,87 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSMASTERPARTICLESYSTEM_H_ +#define _BSMASTERPARTICLESYSTEM_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiNode.h" + +// Include structures +#include "../Ref.h" +namespace Niflib { + +// Forward define of referenced NIF objects +class NiAVObject; +class BSMasterParticleSystem; +typedef Ref<BSMasterParticleSystem> BSMasterParticleSystemRef; + +/*! Bethesda-Specific node. */ +class BSMasterParticleSystem : public NiNode { +public: + /*! Constructor */ + NIFLIB_API BSMasterParticleSystem(); + + /*! Destructor */ + NIFLIB_API virtual ~BSMasterParticleSystem(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + unsigned short maxEmitterObjects; + /*! Unknown */ + mutable int numParticleSystems; + /*! Unknown */ + vector<Ref<NiAVObject > > particleSystems; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSMaterialEmittanceMultController.h b/include/obj/BSMaterialEmittanceMultController.h new file mode 100644 index 00000000..d87bfa56 --- /dev/null +++ b/include/obj/BSMaterialEmittanceMultController.h @@ -0,0 +1,75 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSMATERIALEMITTANCEMULTCONTROLLER_H_ +#define _BSMATERIALEMITTANCEMULTCONTROLLER_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiFloatInterpController.h" +namespace Niflib { + +class BSMaterialEmittanceMultController; +typedef Ref<BSMaterialEmittanceMultController> BSMaterialEmittanceMultControllerRef; + +/*! Bethesda-Specific node. */ +class BSMaterialEmittanceMultController : public NiFloatInterpController { +public: + /*! Constructor */ + NIFLIB_API BSMaterialEmittanceMultController(); + + /*! Destructor */ + NIFLIB_API virtual ~BSMaterialEmittanceMultController(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSMultiBound.h b/include/obj/BSMultiBound.h new file mode 100644 index 00000000..6424e605 --- /dev/null +++ b/include/obj/BSMultiBound.h @@ -0,0 +1,78 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSMULTIBOUND_H_ +#define _BSMULTIBOUND_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiObject.h" +namespace Niflib { + +class BSMultiBound; +typedef Ref<BSMultiBound> BSMultiBoundRef; + +/*! Bethesda-specific node. */ +class BSMultiBound : public NiObject { +public: + /*! Constructor */ + NIFLIB_API BSMultiBound(); + + /*! Destructor */ + NIFLIB_API virtual ~BSMultiBound(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown Flag */ + int unknownInt1; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSMultiBoundAABB.h b/include/obj/BSMultiBoundAABB.h new file mode 100644 index 00000000..db0e3b33 --- /dev/null +++ b/include/obj/BSMultiBoundAABB.h @@ -0,0 +1,78 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSMULTIBOUNDAABB_H_ +#define _BSMULTIBOUNDAABB_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiObject.h" +namespace Niflib { + +class BSMultiBoundAABB; +typedef Ref<BSMultiBoundAABB> BSMultiBoundAABBRef; + +/*! Bethesda-specific node. */ +class BSMultiBoundAABB : public NiObject { +public: + /*! Constructor */ + NIFLIB_API BSMultiBoundAABB(); + + /*! Destructor */ + NIFLIB_API virtual ~BSMultiBoundAABB(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + array<6,float > unknownFloats1; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSMultiBoundNode.h b/include/obj/BSMultiBoundNode.h new file mode 100644 index 00000000..0c4d338b --- /dev/null +++ b/include/obj/BSMultiBoundNode.h @@ -0,0 +1,78 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSMULTIBOUNDNODE_H_ +#define _BSMULTIBOUNDNODE_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiNode.h" +namespace Niflib { + +class BSMultiBoundNode; +typedef Ref<BSMultiBoundNode> BSMultiBoundNodeRef; + +/*! Bethesda-specific node. */ +class BSMultiBoundNode : public NiNode { +public: + /*! Constructor */ + NIFLIB_API BSMultiBoundNode(); + + /*! Destructor */ + NIFLIB_API virtual ~BSMultiBoundNode(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown Flag */ + int unknownInt1; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSMultiBoundSphere.h b/include/obj/BSMultiBoundSphere.h new file mode 100644 index 00000000..e918d24e --- /dev/null +++ b/include/obj/BSMultiBoundSphere.h @@ -0,0 +1,84 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSMULTIBOUNDSPHERE_H_ +#define _BSMULTIBOUNDSPHERE_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiObject.h" +namespace Niflib { + +class BSMultiBoundSphere; +typedef Ref<BSMultiBoundSphere> BSMultiBoundSphereRef; + +/*! Bethesda-specific node. */ +class BSMultiBoundSphere : public NiObject { +public: + /*! Constructor */ + NIFLIB_API BSMultiBoundSphere(); + + /*! Destructor */ + NIFLIB_API virtual ~BSMultiBoundSphere(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown Flag */ + int unknownInt1; + /*! Unknown Flag */ + int unknownInt2; + /*! Unknown Flag */ + int unknownInt3; + /*! Radius */ + float radius; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSOrderedNode.h b/include/obj/BSOrderedNode.h new file mode 100644 index 00000000..b8d87663 --- /dev/null +++ b/include/obj/BSOrderedNode.h @@ -0,0 +1,80 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSORDEREDNODE_H_ +#define _BSORDEREDNODE_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiNode.h" +namespace Niflib { + +class BSOrderedNode; +typedef Ref<BSOrderedNode> BSOrderedNodeRef; + +/*! Bethesda-Specific node. */ +class BSOrderedNode : public NiNode { +public: + /*! Constructor */ + NIFLIB_API BSOrderedNode(); + + /*! Destructor */ + NIFLIB_API virtual ~BSOrderedNode(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + Vector4 alphaSortBound; + /*! Unknown */ + byte isStaticBound; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSPSysMultiTargetEmitterCtlr.h b/include/obj/BSPSysMultiTargetEmitterCtlr.h new file mode 100644 index 00000000..16258ab7 --- /dev/null +++ b/include/obj/BSPSysMultiTargetEmitterCtlr.h @@ -0,0 +1,90 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSPSYSMULTITARGETEMITTERCTLR_H_ +#define _BSPSYSMULTITARGETEMITTERCTLR_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiPSysModifierCtlr.h" + +// Include structures +#include "../Ref.h" +namespace Niflib { + +// Forward define of referenced NIF objects +class NiPSysEmitterCtlrData; +class NiInterpolator; +class BSPSysMultiTargetEmitterCtlr; +typedef Ref<BSPSysMultiTargetEmitterCtlr> BSPSysMultiTargetEmitterCtlrRef; + +/*! Particle system (multi?) emitter controller. */ +class BSPSysMultiTargetEmitterCtlr : public NiPSysModifierCtlr { +public: + /*! Constructor */ + NIFLIB_API BSPSysMultiTargetEmitterCtlr(); + + /*! Destructor */ + NIFLIB_API virtual ~BSPSysMultiTargetEmitterCtlr(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! This controller's data */ + Ref<NiPSysEmitterCtlrData > data; + /*! Links to a bool interpolator. Controls emitter's visibility status? */ + Ref<NiInterpolator > visibilityInterpolator; + /*! Unknown */ + short unknownShort1; + /*! Unknown */ + int unknownInt1; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSPSysSimpleColorModifier.h b/include/obj/BSPSysSimpleColorModifier.h new file mode 100644 index 00000000..3cc7ded6 --- /dev/null +++ b/include/obj/BSPSysSimpleColorModifier.h @@ -0,0 +1,90 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSPSYSSIMPLECOLORMODIFIER_H_ +#define _BSPSYSSIMPLECOLORMODIFIER_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiPSysModifier.h" +namespace Niflib { + +class BSPSysSimpleColorModifier; +typedef Ref<BSPSysSimpleColorModifier> BSPSysSimpleColorModifierRef; + +/*! Bethesda-Specific Particle node. */ +class BSPSysSimpleColorModifier : public NiPSysModifier { +public: + /*! Constructor */ + NIFLIB_API BSPSysSimpleColorModifier(); + + /*! Destructor */ + NIFLIB_API virtual ~BSPSysSimpleColorModifier(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + float fadeInPercent; + /*! Unknown */ + float fadeOutPercent; + /*! Unknown */ + int color1EndPercent; + /*! Unknown */ + int color1StartPercent; + /*! Unknown */ + int color2EndPercent; + /*! Unknown */ + int color2StartPercent; + /*! Colors */ + array<3,Color4 > colors; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSPSysStripUpdateModifier.h b/include/obj/BSPSysStripUpdateModifier.h new file mode 100644 index 00000000..44ec4c54 --- /dev/null +++ b/include/obj/BSPSysStripUpdateModifier.h @@ -0,0 +1,78 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSPSYSSTRIPUPDATEMODIFIER_H_ +#define _BSPSYSSTRIPUPDATEMODIFIER_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiPSysModifier.h" +namespace Niflib { + +class BSPSysStripUpdateModifier; +typedef Ref<BSPSysStripUpdateModifier> BSPSysStripUpdateModifierRef; + +/*! Bethesda-Specific (mesh?) Particle System Modifier. */ +class BSPSysStripUpdateModifier : public NiPSysModifier { +public: + /*! Constructor */ + NIFLIB_API BSPSysStripUpdateModifier(); + + /*! Destructor */ + NIFLIB_API virtual ~BSPSysStripUpdateModifier(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + float updateDeltaTime; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSRefractionFirePeriodController.h b/include/obj/BSRefractionFirePeriodController.h new file mode 100644 index 00000000..1fa900c2 --- /dev/null +++ b/include/obj/BSRefractionFirePeriodController.h @@ -0,0 +1,75 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSREFRACTIONFIREPERIODCONTROLLER_H_ +#define _BSREFRACTIONFIREPERIODCONTROLLER_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiTimeController.h" +namespace Niflib { + +class BSRefractionFirePeriodController; +typedef Ref<BSRefractionFirePeriodController> BSRefractionFirePeriodControllerRef; + +/*! Bethesda-specific node. */ +class BSRefractionFirePeriodController : public NiTimeController { +public: + /*! Constructor */ + NIFLIB_API BSRefractionFirePeriodController(); + + /*! Destructor */ + NIFLIB_API virtual ~BSRefractionFirePeriodController(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSRefractionStrengthController.h b/include/obj/BSRefractionStrengthController.h new file mode 100644 index 00000000..51022379 --- /dev/null +++ b/include/obj/BSRefractionStrengthController.h @@ -0,0 +1,75 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSREFRACTIONSTRENGTHCONTROLLER_H_ +#define _BSREFRACTIONSTRENGTHCONTROLLER_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiFloatInterpController.h" +namespace Niflib { + +class BSRefractionStrengthController; +typedef Ref<BSRefractionStrengthController> BSRefractionStrengthControllerRef; + +/*! Bethesda-Specific node. */ +class BSRefractionStrengthController : public NiFloatInterpController { +public: + /*! Constructor */ + NIFLIB_API BSRefractionStrengthController(); + + /*! Destructor */ + NIFLIB_API virtual ~BSRefractionStrengthController(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSSegmentedTriShape.h b/include/obj/BSSegmentedTriShape.h new file mode 100644 index 00000000..81e2632d --- /dev/null +++ b/include/obj/BSSegmentedTriShape.h @@ -0,0 +1,83 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSSEGMENTEDTRISHAPE_H_ +#define _BSSEGMENTEDTRISHAPE_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiTriShape.h" + +// Include structures +#include "../gen/BSSegmentedTriangle.h" +namespace Niflib { + +class BSSegmentedTriShape; +typedef Ref<BSSegmentedTriShape> BSSegmentedTriShapeRef; + +/*! Bethesda-specific node. */ +class BSSegmentedTriShape : public NiTriShape { +public: + /*! Constructor */ + NIFLIB_API BSSegmentedTriShape(); + + /*! Destructor */ + NIFLIB_API virtual ~BSSegmentedTriShape(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + mutable int numSegTriangles; + /*! Unknown */ + vector<BSSegmentedTriangle > segTriangles; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSShaderLightingProperty.h b/include/obj/BSShaderLightingProperty.h new file mode 100644 index 00000000..e051eb8a --- /dev/null +++ b/include/obj/BSShaderLightingProperty.h @@ -0,0 +1,98 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSSHADERLIGHTINGPROPERTY_H_ +#define _BSSHADERLIGHTINGPROPERTY_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiProperty.h" +namespace Niflib { + +class BSShaderLightingProperty; +typedef Ref<BSShaderLightingProperty> BSShaderLightingPropertyRef; + +/*! Bethesda-specific property. */ +class BSShaderLightingProperty : public NiProperty { +public: + /*! Constructor */ + NIFLIB_API BSShaderLightingProperty(); + + /*! Destructor */ + NIFLIB_API virtual ~BSShaderLightingProperty(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + unsigned short flags; + /*! Unknown */ + int unknownInt1; + /*! Unknown */ + int unknownInt2; + /*! Unknown */ + int unknownInt3; + /*! Unknown */ + float unknownFloat1; + /*! Unknown */ + int unknownInt5; + /*! The normal string. */ + string fileName; + /*! Unknown */ + int unknownInt6; + /*! Unknown */ + int unknownInt7; + /*! Unknown */ + int unknownInt8; + /*! Unknown */ + float unknownFloat2; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSShaderNoLightingProperty.h b/include/obj/BSShaderNoLightingProperty.h new file mode 100644 index 00000000..299dd9e2 --- /dev/null +++ b/include/obj/BSShaderNoLightingProperty.h @@ -0,0 +1,98 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSSHADERNOLIGHTINGPROPERTY_H_ +#define _BSSHADERNOLIGHTINGPROPERTY_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiProperty.h" +namespace Niflib { + +class BSShaderNoLightingProperty; +typedef Ref<BSShaderNoLightingProperty> BSShaderNoLightingPropertyRef; + +/*! Bethesda-specific property. */ +class BSShaderNoLightingProperty : public NiProperty { +public: + /*! Constructor */ + NIFLIB_API BSShaderNoLightingProperty(); + + /*! Destructor */ + NIFLIB_API virtual ~BSShaderNoLightingProperty(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + unsigned short flags; + /*! Unknown */ + int unknownInt1; + /*! Unknown */ + int unknownInt2; + /*! Unknown */ + int unknownInt3; + /*! Unknown */ + float unknownFloat1; + /*! Unknown */ + int unknownInt5; + /*! The normal string. */ + string fileName; + /*! Unknown */ + int unknownInt6; + /*! Unknown */ + int unknownInt7; + /*! Unknown */ + int unknownInt8; + /*! Unknown */ + float unknownFloat2; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSShaderPPLightingProperty.h b/include/obj/BSShaderPPLightingProperty.h new file mode 100644 index 00000000..e52d1b9a --- /dev/null +++ b/include/obj/BSShaderPPLightingProperty.h @@ -0,0 +1,101 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSSHADERPPLIGHTINGPROPERTY_H_ +#define _BSSHADERPPLIGHTINGPROPERTY_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiShadeProperty.h" + +// Include structures +#include "../Ref.h" +namespace Niflib { + +// Forward define of referenced NIF objects +class BSShaderTextureSet; +class BSShaderPPLightingProperty; +typedef Ref<BSShaderPPLightingProperty> BSShaderPPLightingPropertyRef; + +/*! Bethesda-specific Shade node. */ +class BSShaderPPLightingProperty : public NiShadeProperty { +public: + /*! Constructor */ + NIFLIB_API BSShaderPPLightingProperty(); + + /*! Destructor */ + NIFLIB_API virtual ~BSShaderPPLightingProperty(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + int unknownInt1; + /*! Unknown */ + int unknownInt2; + /*! Unknown */ + int unknownInt3; + /*! Unknown */ + int unknownInt4; + /*! Unknown */ + int unknownInt5; + /*! Texture Set */ + Ref<BSShaderTextureSet > textureSet; + /*! Unknown */ + int unknownInt6; + /*! Unknown */ + int unknownInt7; + /*! Unknown */ + int unknownInt8; + /*! Unknown */ + int unknownInt9; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSShaderProperty.h b/include/obj/BSShaderProperty.h new file mode 100644 index 00000000..e05e8cf3 --- /dev/null +++ b/include/obj/BSShaderProperty.h @@ -0,0 +1,75 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSSHADERPROPERTY_H_ +#define _BSSHADERPROPERTY_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiProperty.h" +namespace Niflib { + +class BSShaderProperty; +typedef Ref<BSShaderProperty> BSShaderPropertyRef; + +/*! Bethesda-specific Property node */ +class BSShaderProperty : public NiProperty { +public: + /*! Constructor */ + NIFLIB_API BSShaderProperty(); + + /*! Destructor */ + NIFLIB_API virtual ~BSShaderProperty(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSShaderTextureSet.h b/include/obj/BSShaderTextureSet.h new file mode 100644 index 00000000..93478fe8 --- /dev/null +++ b/include/obj/BSShaderTextureSet.h @@ -0,0 +1,80 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSSHADERTEXTURESET_H_ +#define _BSSHADERTEXTURESET_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiObject.h" +namespace Niflib { + +class BSShaderTextureSet; +typedef Ref<BSShaderTextureSet> BSShaderTextureSetRef; + +/*! Bethesda-specific node. */ +class BSShaderTextureSet : public NiObject { +public: + /*! Constructor */ + NIFLIB_API BSShaderTextureSet(); + + /*! Destructor */ + NIFLIB_API virtual ~BSShaderTextureSet(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Object name. */ + mutable int numTextures; + /*! Textures */ + vector<string > textures; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSStripPSysData.h b/include/obj/BSStripPSysData.h new file mode 100644 index 00000000..2b447828 --- /dev/null +++ b/include/obj/BSStripPSysData.h @@ -0,0 +1,84 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSSTRIPPSYSDATA_H_ +#define _BSSTRIPPSYSDATA_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiPSysData.h" +namespace Niflib { + +class BSStripPSysData; +typedef Ref<BSStripPSysData> BSStripPSysDataRef; + +/*! Bethesda-Specific (mesh?) Particle System Data. */ +class BSStripPSysData : public NiPSysData { +public: + /*! Constructor */ + NIFLIB_API BSStripPSysData(); + + /*! Destructor */ + NIFLIB_API virtual ~BSStripPSysData(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + short unknownShort1; + /*! Unknown */ + byte unknownByte1; + /*! Unknown */ + int unknownInt2; + /*! Unknown */ + int unknownInt3; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSStripParticleSystem.h b/include/obj/BSStripParticleSystem.h new file mode 100644 index 00000000..5ae360ea --- /dev/null +++ b/include/obj/BSStripParticleSystem.h @@ -0,0 +1,75 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSSTRIPPARTICLESYSTEM_H_ +#define _BSSTRIPPARTICLESYSTEM_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiParticleSystem.h" +namespace Niflib { + +class BSStripParticleSystem; +typedef Ref<BSStripParticleSystem> BSStripParticleSystemRef; + +/*! Bethesda-Specific (mesh?) Particle System. */ +class BSStripParticleSystem : public NiParticleSystem { +public: + /*! Constructor */ + NIFLIB_API BSStripParticleSystem(); + + /*! Destructor */ + NIFLIB_API virtual ~BSStripParticleSystem(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSTreadTransfInterpolator.h b/include/obj/BSTreadTransfInterpolator.h new file mode 100644 index 00000000..65c56f5a --- /dev/null +++ b/include/obj/BSTreadTransfInterpolator.h @@ -0,0 +1,85 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSTREADTRANSFINTERPOLATOR_H_ +#define _BSTREADTRANSFINTERPOLATOR_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiInterpolator.h" + +// Include structures +#include "../gen/BSTreadTransfInfo.h" +namespace Niflib { + +class BSTreadTransfInterpolator; +typedef Ref<BSTreadTransfInterpolator> BSTreadTransfInterpolatorRef; + +/*! Bethesda-specific node. */ +class BSTreadTransfInterpolator : public NiInterpolator { +public: + /*! Constructor */ + NIFLIB_API BSTreadTransfInterpolator(); + + /*! Destructor */ + NIFLIB_API virtual ~BSTreadTransfInterpolator(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + mutable int numTransfers; + /*! Unknown */ + vector<BSTreadTransfInfo > treadTransferInfo; + /*! Unknown */ + int unknownInt1; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSValueNode.h b/include/obj/BSValueNode.h new file mode 100644 index 00000000..97a0c5e5 --- /dev/null +++ b/include/obj/BSValueNode.h @@ -0,0 +1,80 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSVALUENODE_H_ +#define _BSVALUENODE_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiNode.h" +namespace Niflib { + +class BSValueNode; +typedef Ref<BSValueNode> BSValueNodeRef; + +/*! Bethesda-Specific node. Found on fxFire effects */ +class BSValueNode : public NiNode { +public: + /*! Constructor */ + NIFLIB_API BSValueNode(); + + /*! Destructor */ + NIFLIB_API virtual ~BSValueNode(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Value */ + int value; + /*! Unknown */ + byte unknownByte; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/BSWArray.h b/include/obj/BSWArray.h new file mode 100644 index 00000000..f7c280c4 --- /dev/null +++ b/include/obj/BSWArray.h @@ -0,0 +1,80 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BSWARRAY_H_ +#define _BSWARRAY_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiExtraData.h" +namespace Niflib { + +class BSWArray; +typedef Ref<BSWArray> BSWArrayRef; + +/*! Bethesda-specific node. */ +class BSWArray : public NiExtraData { +public: + /*! Constructor */ + NIFLIB_API BSWArray(); + + /*! Destructor */ + NIFLIB_API virtual ~BSWArray(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + mutable int numItems; + /*! Unknown */ + vector<int > items; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/DistantLODShaderProperty.h b/include/obj/DistantLODShaderProperty.h new file mode 100644 index 00000000..109bd9ef --- /dev/null +++ b/include/obj/DistantLODShaderProperty.h @@ -0,0 +1,75 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _DISTANTLODSHADERPROPERTY_H_ +#define _DISTANTLODSHADERPROPERTY_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiShadeProperty.h" +namespace Niflib { + +class DistantLODShaderProperty; +typedef Ref<DistantLODShaderProperty> DistantLODShaderPropertyRef; + +/*! Bethesda-specific node. */ +class DistantLODShaderProperty : public NiShadeProperty { +public: + /*! Constructor */ + NIFLIB_API DistantLODShaderProperty(); + + /*! Destructor */ + NIFLIB_API virtual ~DistantLODShaderProperty(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/HairShaderProperty.h b/include/obj/HairShaderProperty.h new file mode 100644 index 00000000..cefdb963 --- /dev/null +++ b/include/obj/HairShaderProperty.h @@ -0,0 +1,75 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _HAIRSHADERPROPERTY_H_ +#define _HAIRSHADERPROPERTY_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiShadeProperty.h" +namespace Niflib { + +class HairShaderProperty; +typedef Ref<HairShaderProperty> HairShaderPropertyRef; + +/*! Bethesda-specific node. */ +class HairShaderProperty : public NiShadeProperty { +public: + /*! Constructor */ + NIFLIB_API HairShaderProperty(); + + /*! Destructor */ + NIFLIB_API virtual ~HairShaderProperty(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/Lighting30ShaderProperty.h b/include/obj/Lighting30ShaderProperty.h new file mode 100644 index 00000000..f05b3795 --- /dev/null +++ b/include/obj/Lighting30ShaderProperty.h @@ -0,0 +1,96 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _LIGHTING30SHADERPROPERTY_H_ +#define _LIGHTING30SHADERPROPERTY_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiShadeProperty.h" +namespace Niflib { + +class Lighting30ShaderProperty; +typedef Ref<Lighting30ShaderProperty> Lighting30ShaderPropertyRef; + +/*! Bethesda-specific node. */ +class Lighting30ShaderProperty : public NiShadeProperty { +public: + /*! Constructor */ + NIFLIB_API Lighting30ShaderProperty(); + + /*! Destructor */ + NIFLIB_API virtual ~Lighting30ShaderProperty(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + int unknownInt1; + /*! Unknown */ + float unknownFloat1; + /*! Unknown */ + int unknownInt2; + /*! Unknown */ + float unknownFloat2; + /*! Unknown */ + int unknownInt3; + /*! Unknown */ + int unknownInt4; + /*! Unknown */ + int unknownInt5; + /*! Unknown */ + int unknownInt6; + /*! Unknown */ + float unknownFloat3; + /*! Unknown */ + float unknownFloat4; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/NiAVObject.h b/include/obj/NiAVObject.h index dabada9a..1f41efea 100644 --- a/include/obj/NiAVObject.h +++ b/include/obj/NiAVObject.h @@ -269,6 +269,8 @@ protected: protected: /*! Some flags; commonly 0x000C or 0x000A. */ unsigned short flags; + /*! Unknown Flag */ + unsigned short unknownShort1; /*! The translation vector. */ Vector3 translation; /*! The rotation part of the transformation matrix. */ diff --git a/include/obj/NiAdditionalGeometryData.h b/include/obj/NiAdditionalGeometryData.h new file mode 100644 index 00000000..ece4197d --- /dev/null +++ b/include/obj/NiAdditionalGeometryData.h @@ -0,0 +1,90 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _NIADDITIONALGEOMETRYDATA_H_ +#define _NIADDITIONALGEOMETRYDATA_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiObject.h" + +// Include structures +#include "../gen/AdditionalDataInfo.h" +#include "../gen/AdditionalDataBlock.h" +namespace Niflib { + +class NiAdditionalGeometryData; +typedef Ref<NiAdditionalGeometryData> NiAdditionalGeometryDataRef; + +/*! */ +class NiAdditionalGeometryData : public NiObject { +public: + /*! Constructor */ + NIFLIB_API NiAdditionalGeometryData(); + + /*! Destructor */ + NIFLIB_API virtual ~NiAdditionalGeometryData(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Number of vertices */ + unsigned short numVertices; + /*! Information about additional data blocks */ + mutable unsigned int numBlockInfos; + /*! Number of additional data blocks */ + vector<AdditionalDataInfo > blockInfos; + /*! Number of additional data blocks */ + mutable int numBlocks; + /*! Number of additional data blocks */ + vector<AdditionalDataBlock > blocks; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/NiControllerSequence.h b/include/obj/NiControllerSequence.h index c1aac068..993c656e 100644 --- a/include/obj/NiControllerSequence.h +++ b/include/obj/NiControllerSequence.h @@ -7,8 +7,8 @@ All rights reserved. Please see niflib.h for license. */ // the next update. // //-----------------------------------NOTICE----------------------------------// -#ifndef _NICONTROLLERSEQUENCE_H_ -#define _NICONTROLLERSEQUENCE_H_ +#ifndef _NiControllerSequence_H_ +#define _NiControllerSequence_H_ //--BEGIN FILE HEAD CUSTOM CODE--// namespace Niflib { @@ -94,14 +94,14 @@ public: /*! * Attatches a controler to this KF file for a KF file of version 10.2.0.0 or below. Versions above this use interpolators. * \param[in] obj A reference to the new NiTimeController to attach. - * \sa NiControllerSequence::ClearChildren, NiControllersequence::AddInterpolator + * \sa NiControllerSequence::ClearChildren, NiControllerSequence::AddInterpolator */ NIFLIB_API void AddController( NiTimeController * obj ); /*! * Attaches a controler to this KF file for a KF file of version 10.2.0.0 or below. Versions above this use interpolators. * \param[in] obj A reference to the new NiTimeController to attach. - * \sa NiControllerSequence::ClearChildren, NiControllersequence::AddInterpolator + * \sa NiControllerSequence::ClearChildren, NiControllerSequence::AddInterpolator */ NIFLIB_API void AddController( string const & targetName, NiTimeController * obj ); @@ -115,17 +115,24 @@ public: /*! * Removes all controllers and interpolators from this Kf file root object. - * \sa NiControllerSequence::AddController, NiControllersequence::AddInterpolator + * \sa NiControllerSequence::AddController, NiControllerSequence::AddInterpolator */ NIFLIB_API void ClearControllerData(); /*! * Retrieves the data for the controllers or interpolators which are attached to this controller sequence. * \return A vector containing the data for all controllers. - * \sa NiControllerSequence::AddController, NiControllersequence::AddInterpolator, ClearKfChildren + * \sa NiControllerSequence::AddController, NiControllerSequence::AddInterpolator, NiControllerSequence::SetContollerData */ NIFLIB_API vector<ControllerLink> GetControllerData() const; + /*! + * Retrieves the data for the controllers or interpolators which are attached to this controller sequence. + * \return A vector containing the data for all controllers. + * \sa NiControllerSequence::AddController, NiControllerSequence::AddInterpolator, NiControllerSequence::GetContollerData + */ + NIFLIB_API void SetControllerData(const vector<ControllerLink>& value); + /*! * Retrieves the text keys, which are tags associated with keyframe times that mark the start and stop of each sequence, among other things such as the triggering of sound effects. * \return The text key data. @@ -227,6 +234,18 @@ public: */ NIFLIB_API void SetTargetName( const string & value ); + /*! + * Gets the string palette for this controller. + * \return The string palette. + */ + NIFLIB_API Ref<NiStringPalette > GetStringPalette() const; + + /*! + * Sets the string palette for this controller. + * \param[in] value The string palette. + */ + NIFLIB_API void SetStringPalette( const Ref<NiStringPalette >& value ); + protected: friend class NiControllerManager; NiControllerManager * GetParent() const; @@ -261,6 +280,10 @@ protected: IndexString targetName; /*! Refers to NiStringPalette. */ Ref<NiStringPalette > stringPalette; + /*! Unknown */ + short unknownShort1; + /*! Unknown */ + short unknownShort2; public: /*! NIFLIB_HIDDEN function. For internal use only. */ NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); diff --git a/include/obj/NiGeometry.h b/include/obj/NiGeometry.h index c6fb7a7a..6edf969a 100644 --- a/include/obj/NiGeometry.h +++ b/include/obj/NiGeometry.h @@ -12,6 +12,7 @@ All rights reserved. Please see niflib.h for license. */ //--BEGIN FILE HEAD CUSTOM CODE--// #include "../gen/SkinWeight.h" +#include "../obj/NiGeometryData.h" //--END CUSTOM CODE--// #include "NiAVObject.h" @@ -21,7 +22,7 @@ All rights reserved. Please see niflib.h for license. */ namespace Niflib { // Forward define of referenced NIF objects -class NiGeometryData; +class NiObject; class NiSkinInstance; class NiGeometry; typedef Ref<NiGeometry> NiGeometryRef; @@ -148,7 +149,7 @@ public: //--END CUSTOM CODE--// protected: /*! Data index (NiTriShapeData/NiTriStripData). */ - Ref<NiGeometryData > data; + Ref<NiObject > data; /*! Skin instance index. */ Ref<NiSkinInstance > skinInstance; /*! Num Materials */ diff --git a/include/obj/NiGeometryData.h b/include/obj/NiGeometryData.h index d4eddadb..953a0d0d 100644 --- a/include/obj/NiGeometryData.h +++ b/include/obj/NiGeometryData.h @@ -20,7 +20,7 @@ All rights reserved. Please see niflib.h for license. */ namespace Niflib { // Forward define of referenced NIF objects -class NiObject; +class NiAdditionalGeometryData; class NiGeometryData; typedef Ref<NiGeometryData> NiGeometryDataRef; @@ -274,7 +274,7 @@ protected: /*! Consistency Flags */ ConsistencyType consistencyFlags; /*! Unknown. */ - Ref<NiObject > unknownLink1; + Ref<NiAdditionalGeometryData > additionalData; public: /*! NIFLIB_HIDDEN function. For internal use only. */ NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); diff --git a/include/obj/NiMaterialProperty.h b/include/obj/NiMaterialProperty.h index 5760b328..65a7f766 100644 --- a/include/obj/NiMaterialProperty.h +++ b/include/obj/NiMaterialProperty.h @@ -157,6 +157,8 @@ protected: * in this material's parent NiTriShape object, when alpha is not 1. */ float alpha; + /*! Unknown */ + float emitmulti; public: /*! NIFLIB_HIDDEN function. For internal use only. */ NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); diff --git a/include/obj/NiPSysCollider.h b/include/obj/NiPSysCollider.h index 04eb1455..04def741 100644 --- a/include/obj/NiPSysCollider.h +++ b/include/obj/NiPSysCollider.h @@ -78,7 +78,7 @@ protected: * Links to a NiNode that will define where in object space the collider is * located/oriented. */ - Ref<NiNode > colliderObject; + NiNode * colliderObject; public: /*! NIFLIB_HIDDEN function. For internal use only. */ NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); diff --git a/include/obj/NiPSysGravityModifier.h b/include/obj/NiPSysGravityModifier.h index b0d7a113..c4b957ca 100644 --- a/include/obj/NiPSysGravityModifier.h +++ b/include/obj/NiPSysGravityModifier.h @@ -74,6 +74,8 @@ protected: float turbulence; /*! Range for turbulence. */ float turbulenceScale; + /*! Unknown */ + byte unknownByte; public: /*! NIFLIB_HIDDEN function. For internal use only. */ NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); diff --git a/include/obj/NiPSysGrowFadeModifier.h b/include/obj/NiPSysGrowFadeModifier.h index 4f0701de..75f6706d 100644 --- a/include/obj/NiPSysGrowFadeModifier.h +++ b/include/obj/NiPSysGrowFadeModifier.h @@ -67,6 +67,8 @@ protected: float fadeTime; /*! Unknown. */ unsigned short fadeGeneration; + /*! Unknown */ + float baseScale; public: /*! NIFLIB_HIDDEN function. For internal use only. */ NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); diff --git a/include/obj/NiParticlesData.h b/include/obj/NiParticlesData.h index ef25dff0..fb8dc260 100644 --- a/include/obj/NiParticlesData.h +++ b/include/obj/NiParticlesData.h @@ -13,14 +13,19 @@ All rights reserved. Please see niflib.h for license. */ //--BEGIN FILE HEAD CUSTOM CODE--// //--END CUSTOM CODE--// -#include "NiGeometryData.h" +#include "NiObject.h" + +// Include structures +#include "../Ref.h" namespace Niflib { +// Forward define of referenced NIF objects +class NiAdditionalGeometryData; class NiParticlesData; typedef Ref<NiParticlesData> NiParticlesDataRef; /*! Generic rotating particles data object. */ -class NiParticlesData : public NiGeometryData { +class NiParticlesData : public NiObject { public: /*! Constructor */ NIFLIB_API NiParticlesData(); @@ -55,37 +60,114 @@ public: //--BEGIN MISC CUSTOM CODE--// //--END CUSTOM CODE--// protected: + /*! Name of this object. */ + IndexString name; + /*! + * Number of vertices. For NiPSysData this is max particles. (For Fallout 3 this is + * always zero) + */ + mutable unsigned short numVertices; + /*! Used with NiCollision objects when OBB or TRI is set. */ + byte keepFlags; + /*! Unknown. */ + byte compressFlags; + /*! Is the vertex array present? (Always non-zero.) */ + bool hasVertices; + /*! The mesh vertices. */ + vector<Vector3 > vertices; + /*! + * Methods for saving binormals and tangents saved in upper byte. Texture flags in + * lower byte. + */ + mutable unsigned short numUvSets; + /*! + * Do we have lighting normals? These are essential for proper lighting: if not + * present, the model will only be influenced by ambient light. + */ + bool hasNormals; + /*! The lighting normals. */ + vector<Vector3 > normals; + /*! + * Unknown. Binormal & tangents? has_normals must be set as well for this field to + * be present. + */ + vector<Vector3 > binormals; + /*! Unknown. Binormal & tangents? */ + vector<Vector3 > tangents; + /*! + * Center of the bounding box (smallest box that contains all vertices) of the + * mesh. + */ + Vector3 center; + /*! + * Radius of the mesh: maximal Euclidean distance between the center and all + * vertices. + */ + float radius; + /*! + * Do we have vertex colors? These are usually used to fine-tune the lighting of + * the model. + * + * Note: how vertex colors influence the model can be controlled by + * having a NiVertexColorProperty object as a property child of the root node. If + * this property object is not present, the vertex colors fine-tune lighting. + * + * Note 2: set to either 0 or 0xFFFFFFFF for NifTexture compatibility. + */ + bool hasVertexColors; + /*! The vertex colors. */ + vector<Color4 > vertexColors; + /*! + * Do we have UV coordinates? + * + * Note: for compatibility with NifTexture, set this value to either + * 0x00000000 or 0xFFFFFFFF. + */ + bool hasUv; + /*! + * The UV texture coordinates. They follow the OpenGL standard: some programs may + * require you to flip the second coordinate. + */ + vector< vector<TexCoord > > uvSets; + /*! Consistency Flags */ + ConsistencyType consistencyFlags; + /*! Unknown. */ + Ref<NiAdditionalGeometryData > additionalData; /*! The maximum number of particles (matches the number of vertices). */ unsigned short numParticles; - /*! The particles' size. */ - float size; + /*! Is the particle size array present? */ + bool hasRadii; + /*! The individual particel sizes. */ + vector<float > radii; /*! * The number of active particles at the time the system was saved. This is also * the number of valid entries in the following arrays. */ unsigned short numActive; - /*! Unknown. */ - unsigned short unknownShort; - /*! Is the particle size array present? */ - bool hasSizes; - /*! The individual particel sizes. */ - vector<float > sizes; /*! Unknown */ - bool hasUnknownFloats1; + int hasSizes1; + /*! Unknown */ + bool hasSizes; /*! Unknown */ - vector<float > unknownFloats1; + vector<float > sizes; /*! Is the particle rotation array present? */ bool hasRotations1; /*! The individual particle rotations. */ vector<Quaternion > rotations1; - /*! Unknown in Warhammer. Guess at version. */ - bool hasUnknownFloats2; + /*! Are the angles of rotation present? */ + bool hasRotationAngles; + /*! Angles of rotation */ + vector<float > rotationAngles; + /*! Are axes of rotation present? */ + bool hasRotationAxes; /*! Unknown */ - vector<float > unknownFloats2; - /*! Unknown. */ - bool hasUnknownVertices1; + vector<Vector3 > rotationAxes; + /*! Unknown ushort */ + bool hasUnknownStuff1; + /*! Unknown */ + mutable short numUnknownStuff1; /*! Unknown */ - vector<Vector3 > unknownVertices1; + vector<Vector4 > unknownStuff1; public: /*! NIFLIB_HIDDEN function. For internal use only. */ NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); diff --git a/include/obj/NiTimeController.h b/include/obj/NiTimeController.h index 391cfa3b..ac7f2d69 100644 --- a/include/obj/NiTimeController.h +++ b/include/obj/NiTimeController.h @@ -159,10 +159,10 @@ protected: Ref<NiTimeController > nextController; /*! * Controller flags (usually 0x000C). Probably controls loops. - * Bit 0 : Anim type, 0=APP_TIME 1=APP_INIT - * Bit 1-2 : Cycle type 00=Loop 01=Reverse 10=Loop - * Bit 3 : Active - * Bit 4 : Play backwards + * Bit 0 : Anim type, 0=APP_TIME 1=APP_INIT + * Bit 1-2 : Cycle type 00=Loop 01=Reverse 10=Loop + * Bit 3 : Active + * Bit 4 : Play backwards */ unsigned short flags; /*! Frequency (is usually 1.0). */ diff --git a/include/obj/SkyShaderProperty.h b/include/obj/SkyShaderProperty.h new file mode 100644 index 00000000..77e66c6a --- /dev/null +++ b/include/obj/SkyShaderProperty.h @@ -0,0 +1,94 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _SKYSHADERPROPERTY_H_ +#define _SKYSHADERPROPERTY_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiProperty.h" +namespace Niflib { + +class SkyShaderProperty; +typedef Ref<SkyShaderProperty> SkyShaderPropertyRef; + +/*! Bethesda-specific node? Found in Fallout3 */ +class SkyShaderProperty : public NiProperty { +public: + /*! Constructor */ + NIFLIB_API SkyShaderProperty(); + + /*! Destructor */ + NIFLIB_API virtual ~SkyShaderProperty(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + short unknownShort1; + /*! Unknown */ + short unknownShort2; + /*! Unknown */ + int unknownInt1; + /*! Unknown */ + int unknownInt2; + /*! Unknown */ + int unknownInt3; + /*! Unknown */ + int unknownInt4; + /*! Unknown */ + short unknownShort3; + /*! The normal string. */ + string fileName; + /*! Unknown */ + int unknownInt5; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/TallGrassShaderProperty.h b/include/obj/TallGrassShaderProperty.h new file mode 100644 index 00000000..a97a3691 --- /dev/null +++ b/include/obj/TallGrassShaderProperty.h @@ -0,0 +1,86 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _TALLGRASSSHADERPROPERTY_H_ +#define _TALLGRASSSHADERPROPERTY_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiShadeProperty.h" +namespace Niflib { + +class TallGrassShaderProperty; +typedef Ref<TallGrassShaderProperty> TallGrassShaderPropertyRef; + +/*! Bethesda-specific node. */ +class TallGrassShaderProperty : public NiShadeProperty { +public: + /*! Constructor */ + NIFLIB_API TallGrassShaderProperty(); + + /*! Destructor */ + NIFLIB_API virtual ~TallGrassShaderProperty(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + int unknownInt1; + /*! Unknown */ + int unknownInt2; + /*! Unknown */ + int unknownInt3; + /*! Unknown */ + int unknownFloat1; + /*! The normal string. */ + string fileName; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/TileShaderProperty.h b/include/obj/TileShaderProperty.h new file mode 100644 index 00000000..d0ff38f1 --- /dev/null +++ b/include/obj/TileShaderProperty.h @@ -0,0 +1,88 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _TILESHADERPROPERTY_H_ +#define _TILESHADERPROPERTY_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiShadeProperty.h" +namespace Niflib { + +class TileShaderProperty; +typedef Ref<TileShaderProperty> TileShaderPropertyRef; + +/*! Bethesda-specific node. */ +class TileShaderProperty : public NiShadeProperty { +public: + /*! Constructor */ + NIFLIB_API TileShaderProperty(); + + /*! Destructor */ + NIFLIB_API virtual ~TileShaderProperty(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + int unknownInt1; + /*! Unknown */ + int unknownInt2; + /*! Unknown */ + int unknownInt3; + /*! Unknown */ + float unknownFloat1; + /*! Unknown */ + int unknownInt5; + /*! The normal string. */ + string fileName; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/VolumetricFogShaderProperty.h b/include/obj/VolumetricFogShaderProperty.h new file mode 100644 index 00000000..765cb34d --- /dev/null +++ b/include/obj/VolumetricFogShaderProperty.h @@ -0,0 +1,75 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _VOLUMETRICFOGSHADERPROPERTY_H_ +#define _VOLUMETRICFOGSHADERPROPERTY_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiShadeProperty.h" +namespace Niflib { + +class VolumetricFogShaderProperty; +typedef Ref<VolumetricFogShaderProperty> VolumetricFogShaderPropertyRef; + +/*! Bethesda-specific node. */ +class VolumetricFogShaderProperty : public NiShadeProperty { +public: + /*! Constructor */ + NIFLIB_API VolumetricFogShaderProperty(); + + /*! Destructor */ + NIFLIB_API virtual ~VolumetricFogShaderProperty(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/WaterShaderProperty.h b/include/obj/WaterShaderProperty.h new file mode 100644 index 00000000..ef7da036 --- /dev/null +++ b/include/obj/WaterShaderProperty.h @@ -0,0 +1,88 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _WATERSHADERPROPERTY_H_ +#define _WATERSHADERPROPERTY_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "NiProperty.h" +namespace Niflib { + +class WaterShaderProperty; +typedef Ref<WaterShaderProperty> WaterShaderPropertyRef; + +/*! Bethesda-specific node? Found in Fallout3 */ +class WaterShaderProperty : public NiProperty { +public: + /*! Constructor */ + NIFLIB_API WaterShaderProperty(); + + /*! Destructor */ + NIFLIB_API virtual ~WaterShaderProperty(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown */ + short unknownShort1; + /*! Unknown */ + int unknownInt1; + /*! Unknown */ + short unknownShort2; + /*! Unknown */ + unsigned short unknownUshort1; + /*! Unknown */ + int unknownInt2; + /*! Unknown */ + float unknownFloat1; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/bhkAabbPhantom.h b/include/obj/bhkAabbPhantom.h new file mode 100644 index 00000000..6c23db3f --- /dev/null +++ b/include/obj/bhkAabbPhantom.h @@ -0,0 +1,78 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BHKAABBPHANTOM_H_ +#define _BHKAABBPHANTOM_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "bhkShapePhantom.h" +namespace Niflib { + +class bhkAabbPhantom; +typedef Ref<bhkAabbPhantom> bhkAabbPhantomRef; + +/*! Bethesda-specific node. */ +class bhkAabbPhantom : public bhkShapePhantom { +public: + /*! Constructor */ + NIFLIB_API bhkAabbPhantom(); + + /*! Destructor */ + NIFLIB_API virtual ~bhkAabbPhantom(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown. */ + array<15,int > unknownInts1; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/bhkBreakableConstraint.h b/include/obj/bhkBreakableConstraint.h new file mode 100644 index 00000000..742fa31d --- /dev/null +++ b/include/obj/bhkBreakableConstraint.h @@ -0,0 +1,80 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BHKBREAKABLECONSTRAINT_H_ +#define _BHKBREAKABLECONSTRAINT_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "bhkConstraint.h" +namespace Niflib { + +class bhkBreakableConstraint; +typedef Ref<bhkBreakableConstraint> bhkBreakableConstraintRef; + +/*! Bethesda-Specific node. */ +class bhkBreakableConstraint : public bhkConstraint { +public: + /*! Constructor */ + NIFLIB_API bhkBreakableConstraint(); + + /*! Destructor */ + NIFLIB_API virtual ~bhkBreakableConstraint(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown. */ + array<41,int > unknownInts1; + /*! Unknown */ + short unknownShort1; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/bhkConvexListShape.h b/include/obj/bhkConvexListShape.h new file mode 100644 index 00000000..291140dd --- /dev/null +++ b/include/obj/bhkConvexListShape.h @@ -0,0 +1,102 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BHKCONVEXLISTSHAPE_H_ +#define _BHKCONVEXLISTSHAPE_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "bhkShape.h" + +// Include structures +#include "../Ref.h" +namespace Niflib { + +// Forward define of referenced NIF objects +class bhkShape; +class bhkConvexListShape; +typedef Ref<bhkConvexListShape> bhkConvexListShapeRef; + +/*! + * A havok shape. + * A list of shapes. + * + * Do not put a bhkPackedNiTriStripsShape in the Sub Shapes. Use a + * separate collision nodes without a list shape for those. + * + * Also, shapes collected in a bhkListShape may not have the correct + * walking noise, so only use it for non-walkable objects. + */ +class bhkConvexListShape : public bhkShape { +public: + /*! Constructor */ + NIFLIB_API bhkConvexListShape(); + + /*! Destructor */ + NIFLIB_API virtual ~bhkConvexListShape(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! The number of sub shapes referenced. */ + mutable unsigned int numSubShapes; + /*! List of shapes. */ + vector<Ref<bhkShape > > subShapes; + /*! The shape's material. */ + HavokMaterial material; + /*! Unknown. Set to (0.0,0.0,-0.0,0.0,0.0,-0.0), where -0.0 is 0x80000000 in hex. */ + array<6,float > unknownFloats; + /*! Unknown Flag */ + byte unknownByte1; + /*! Unknown Flag */ + float unknownFloat1; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/bhkHingeConstraint.h b/include/obj/bhkHingeConstraint.h index 1ce5ab3b..23df035f 100644 --- a/include/obj/bhkHingeConstraint.h +++ b/include/obj/bhkHingeConstraint.h @@ -14,6 +14,9 @@ All rights reserved. Please see niflib.h for license. */ //--END CUSTOM CODE--// #include "bhkConstraint.h" + +// Include structures +#include "../gen/HingeDescriptor.h" namespace Niflib { class bhkHingeConstraint; @@ -55,16 +58,12 @@ public: //--BEGIN MISC CUSTOM CODE--// //--END CUSTOM CODE--// protected: - /*! Pivot A. */ - Vector4 pivotA; - /*! Unknown. */ - Vector4 perp2AxleInA1; - /*! Unknown. */ - Vector4 perp2AxleInA2; - /*! Pivot B. */ - Vector4 pivotB; - /*! Unknown. */ - Vector4 axleB; + /*! Hinge constraing. */ + HingeDescriptor hinge; + /*! Unknown */ + float unknownFloat1; + /*! Unknown */ + byte unknownByte1; public: /*! NIFLIB_HIDDEN function. For internal use only. */ NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); diff --git a/include/obj/bhkLimitedHingeConstraint.h b/include/obj/bhkLimitedHingeConstraint.h index 89fc1399..3a992c29 100644 --- a/include/obj/bhkLimitedHingeConstraint.h +++ b/include/obj/bhkLimitedHingeConstraint.h @@ -60,6 +60,24 @@ public: protected: /*! Describes a limited hinge constraint */ LimitedHingeDescriptor limitedHinge; + /*! Unknown */ + float unknownFloat1; + /*! Unknown */ + byte isDeathPose; + /*! Unknown */ + int unknownInt1; + /*! Unknown */ + int unknownInt2; + /*! Unknown */ + int unknownInt3; + /*! Unknown */ + int unknownInt4; + /*! Unknown */ + int unknownInt5; + /*! Unknown */ + int unknownInt6; + /*! Unknown */ + byte unknownByte1; public: /*! NIFLIB_HIDDEN function. For internal use only. */ NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); diff --git a/include/obj/bhkLiquidAction.h b/include/obj/bhkLiquidAction.h new file mode 100644 index 00000000..93f4f3b6 --- /dev/null +++ b/include/obj/bhkLiquidAction.h @@ -0,0 +1,90 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BHKLIQUIDACTION_H_ +#define _BHKLIQUIDACTION_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "bhkSerializable.h" +namespace Niflib { + +class bhkLiquidAction; +typedef Ref<bhkLiquidAction> bhkLiquidActionRef; + +/*! Bethesda-specific node. */ +class bhkLiquidAction : public bhkSerializable { +public: + /*! Constructor */ + NIFLIB_API bhkLiquidAction(); + + /*! Destructor */ + NIFLIB_API virtual ~bhkLiquidAction(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown Flag */ + int unknownInt1; + /*! Unknown Flag */ + int unknownInt2; + /*! Unknown Flag */ + int unknownInt3; + /*! Unknown Flag */ + float unknownFloat1; + /*! Unknown Flag */ + float unknownFloat2; + /*! Unknown Flag */ + float unknownFloat3; + /*! Unknown Flag */ + float unknownFloat4; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/bhkMalleableConstraint.h b/include/obj/bhkMalleableConstraint.h index 454415d8..1e45629b 100644 --- a/include/obj/bhkMalleableConstraint.h +++ b/include/obj/bhkMalleableConstraint.h @@ -17,6 +17,7 @@ All rights reserved. Please see niflib.h for license. */ // Include structures #include "../Ref.h" +#include "../gen/HingeDescriptor.h" #include "../gen/RagdollDescriptor.h" #include "../gen/LimitedHingeDescriptor.h" namespace Niflib { @@ -73,11 +74,15 @@ protected: /*! Unknown. 1? */ unsigned int unknownInt3; /*! Unknown. */ + HingeDescriptor hinge; + /*! Unknown. */ RagdollDescriptor ragdoll; /*! Unknown. */ LimitedHingeDescriptor limitedHinge; /*! Unknown. */ float tau; + /*! Unknown */ + byte unknownByte1; /*! Unknown. */ float damping; public: diff --git a/include/obj/bhkOrientHingedBodyAction.h b/include/obj/bhkOrientHingedBodyAction.h new file mode 100644 index 00000000..52be4a16 --- /dev/null +++ b/include/obj/bhkOrientHingedBodyAction.h @@ -0,0 +1,78 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +#ifndef _BHKORIENTHINGEDBODYACTION_H_ +#define _BHKORIENTHINGEDBODYACTION_H_ + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "bhkSerializable.h" +namespace Niflib { + +class bhkOrientHingedBodyAction; +typedef Ref<bhkOrientHingedBodyAction> bhkOrientHingedBodyActionRef; + +/*! Bethesda-Specific node. */ +class bhkOrientHingedBodyAction : public bhkSerializable { +public: + /*! Constructor */ + NIFLIB_API bhkOrientHingedBodyAction(); + + /*! Destructor */ + NIFLIB_API virtual ~bhkOrientHingedBodyAction(); + + /*! + * A constant value which uniquly identifies objects of this type. + */ + NIFLIB_API static const Type TYPE; + + /*! + * A factory function used during file reading to create an instance of this type of object. + * \return A pointer to a newly allocated instance of this type of object. + */ + NIFLIB_API static NiObject * Create(); + + /*! + * Summarizes the information contained in this object in English. + * \param[in] verbose Determines whether or not detailed information about large areas of data will be printed out. + * \return A string containing a summary of the information within the object in English. This is the function that Niflyze calls to generate its analysis, so the output is the same. + */ + NIFLIB_API virtual string asString( bool verbose = false ) const; + + /*! + * Used to determine the type of a particular instance of this object. + * \return The type constant for the actual type of the object. + */ + NIFLIB_API virtual const Type & GetType() const; + + //--BEGIN MISC CUSTOM CODE--// + + //--END CUSTOM CODE--// +protected: + /*! Unknown. */ + array<17,int > unknownInts1; +public: + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const; + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual void FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ); + /*! NIFLIB_HIDDEN function. For internal use only. */ + NIFLIB_HIDDEN virtual list<NiObjectRef> GetRefs() const; +}; + +//--BEGIN FILE FOOT CUSTOM CODE--// + +//--END CUSTOM CODE--// + +} //End Niflib namespace +#endif diff --git a/include/obj/bhkPrismaticConstraint.h b/include/obj/bhkPrismaticConstraint.h index 99d5d470..d46f4a71 100644 --- a/include/obj/bhkPrismaticConstraint.h +++ b/include/obj/bhkPrismaticConstraint.h @@ -71,6 +71,8 @@ protected: float maxDistance; /*! Friction. */ float friction; + /*! Unknown */ + byte unknownByte1; public: /*! NIFLIB_HIDDEN function. For internal use only. */ NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); diff --git a/include/obj/bhkRagdollConstraint.h b/include/obj/bhkRagdollConstraint.h index 6a77af85..ae6d330d 100644 --- a/include/obj/bhkRagdollConstraint.h +++ b/include/obj/bhkRagdollConstraint.h @@ -60,6 +60,24 @@ public: protected: /*! Ragdoll constraint. */ RagdollDescriptor ragdoll; + /*! Unknown */ + float unknownFloat1; + /*! Unknown */ + byte isDeathPose; + /*! Unknown */ + int unknownInt1; + /*! Unknown */ + int unknownInt2; + /*! Unknown */ + int unknownInt3; + /*! Unknown */ + int unknownInt4; + /*! Unknown */ + int unknownInt5; + /*! Unknown */ + int unknownInt6; + /*! Unknown */ + byte unknownByte1; public: /*! NIFLIB_HIDDEN function. For internal use only. */ NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); diff --git a/include/obj/bhkRigidBody.h b/include/obj/bhkRigidBody.h index 4e908871..fc5f46e9 100644 --- a/include/obj/bhkRigidBody.h +++ b/include/obj/bhkRigidBody.h @@ -21,7 +21,7 @@ All rights reserved. Please see niflib.h for license. */ namespace Niflib { // Forward define of referenced NIF objects -class bhkConstraint; +class bhkSerializable; class bhkRigidBody; typedef Ref<bhkRigidBody> bhkRigidBodyRef; @@ -401,7 +401,7 @@ protected: /*! The number of constraints this object is bound to. */ mutable unsigned int numConstraints; /*! Unknown. */ - vector<Ref<bhkConstraint > > constraints; + vector<Ref<bhkSerializable > > constraints; /*! 0 = do not respond to wind, 1 = respond to wind (?) */ unsigned int unknownInt9; public: diff --git a/include/obj/hkPackedNiTriStripsData.h b/include/obj/hkPackedNiTriStripsData.h index 99b04fc3..f1aa983c 100644 --- a/include/obj/hkPackedNiTriStripsData.h +++ b/include/obj/hkPackedNiTriStripsData.h @@ -17,6 +17,7 @@ All rights reserved. Please see niflib.h for license. */ // Include structures #include "../gen/hkTriangle.h" +#include "../gen/OblivionSubShape.h" namespace Niflib { class hkPackedNiTriStripsData; @@ -116,8 +117,14 @@ protected: vector<hkTriangle > triangles; /*! Number of vertices. */ mutable unsigned int numVertices; + /*! Unknown. */ + byte unknownByte1; /*! The vertices? */ vector<Vector3 > vertices; + /*! Number of subparts. */ + mutable unsigned short numSubShapes; + /*! The subparts. */ + vector<OblivionSubShape > subShapes; public: /*! NIFLIB_HIDDEN function. For internal use only. */ NIFLIB_HIDDEN virtual void Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ); diff --git a/niflib.vcproj b/niflib.vcproj index df6306a4..1ba98aa3 100644 --- a/niflib.vcproj +++ b/niflib.vcproj @@ -282,8 +282,8 @@ </Configuration> <Configuration Name="Release - DLL|Win32" - OutputDirectory="$(ProjectDir)obj\$(ConfigurationName)" - IntermediateDirectory="$(ProjectDir)obj\$(ConfigurationName)" + OutputDirectory="$(ProjectDir)obj\$(ConfigurationName)\" + IntermediateDirectory="$(ProjectDir)obj\$(ConfigurationName)\" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" CharacterSet="2" @@ -679,6 +679,10 @@ RelativePath=".\src\obj\AvoidNode.cpp" > </File> + <File + RelativePath=".\src\obj\bhkAabbPhantom.cpp" + > + </File> <File RelativePath=".\src\obj\bhkBlendCollisionObject.cpp" > @@ -691,6 +695,10 @@ RelativePath=".\src\obj\bhkBoxShape.cpp" > </File> + <File + RelativePath=".\src\obj\bhkBreakableConstraint.cpp" + > + </File> <File RelativePath=".\src\obj\bhkBvTreeShape.cpp" > @@ -707,6 +715,10 @@ RelativePath=".\src\obj\bhkConstraint.cpp" > </File> + <File + RelativePath=".\src\obj\bhkConvexListShape.cpp" + > + </File> <File RelativePath=".\src\obj\bhkConvexShape.cpp" > @@ -731,6 +743,10 @@ RelativePath=".\src\obj\bhkLimitedHingeConstraint.cpp" > </File> + <File + RelativePath=".\src\obj\bhkLiquidAction.cpp" + > + </File> <File RelativePath=".\src\obj\bhkListShape.cpp" > @@ -755,6 +771,10 @@ RelativePath=".\src\obj\bhkNiTriStripsShape.cpp" > </File> + <File + RelativePath=".\src\obj\bhkOrientHingedBodyAction.cpp" + > + </File> <File RelativePath=".\src\obj\bhkPackedNiTriStripsShape.cpp" > @@ -831,10 +851,46 @@ RelativePath=".\src\obj\bhkWorldObject.cpp" > </File> + <File + RelativePath=".\src\obj\BSAnimNotes.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSBlastNode.cpp" + > + </File> <File RelativePath=".\src\obj\BSBound.cpp" > </File> + <File + RelativePath=".\src\obj\BSDamageStage.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSDebrisNode.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSDecalPlacementVectorExtraData.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSDismemberSkinInstance.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSDistantTreeShaderProperty.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSFadeNode.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSFrustumFOVController.cpp" + > + </File> <File RelativePath=".\src\obj\BSFurnitureMarker.cpp" > @@ -843,6 +899,34 @@ RelativePath=".\src\obj\BSKeyframeController.cpp" > </File> + <File + RelativePath=".\src\obj\BSMasterParticleSystem.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSMaterialEmittanceMultController.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSMultiBound.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSMultiBoundAABB.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSMultiBoundNode.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSMultiBoundSphere.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSOrderedNode.cpp" + > + </File> <File RelativePath=".\src\obj\BSParentVelocityModifier.cpp" > @@ -851,6 +935,70 @@ RelativePath=".\src\obj\BSPSysArrayEmitter.cpp" > </File> + <File + RelativePath=".\src\obj\BSPSysMultiTargetEmitterCtlr.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSPSysSimpleColorModifier.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSPSysStripUpdateModifier.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSRefractionFirePeriodController.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSRefractionStrengthController.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSSegmentedTriShape.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSShaderLightingProperty.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSShaderNoLightingProperty.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSShaderPPLightingProperty.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSShaderProperty.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSShaderTextureSet.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSStripParticleSystem.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSStripPSysData.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSTreadTransfInterpolator.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSValueNode.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSWArray.cpp" + > + </File> <File RelativePath=".\src\obj\BSWindModifier.cpp" > @@ -859,6 +1007,10 @@ RelativePath=".\src\obj\BSXFlags.cpp" > </File> + <File + RelativePath=".\src\obj\DistantLODShaderProperty.cpp" + > + </File> <File RelativePath=".\src\obj\FxButton.cpp" > @@ -871,10 +1023,18 @@ RelativePath=".\src\obj\FxWidget.cpp" > </File> + <File + RelativePath=".\src\obj\HairShaderProperty.cpp" + > + </File> <File RelativePath=".\src\obj\hkPackedNiTriStripsData.cpp" > </File> + <File + RelativePath=".\src\obj\Lighting30ShaderProperty.cpp" + > + </File> <File RelativePath=".\src\obj\Ni3dsAlphaAnimator.cpp" > @@ -899,6 +1059,10 @@ RelativePath=".\src\obj\Ni3dsPathController.cpp" > </File> + <File + RelativePath=".\src\obj\NiAdditionalGeometryData.cpp" + > + </File> <File RelativePath=".\src\obj\NiAlphaController.cpp" > @@ -1851,10 +2015,38 @@ RelativePath=".\src\obj\RootCollisionNode.cpp" > </File> + <File + RelativePath=".\src\obj\SkyShaderProperty.cpp" + > + </File> + <File + RelativePath=".\src\obj\TallGrassShaderProperty.cpp" + > + </File> + <File + RelativePath=".\src\obj\TileShaderProperty.cpp" + > + </File> + <File + RelativePath=".\src\obj\VolumetricFogShaderProperty.cpp" + > + </File> + <File + RelativePath=".\src\obj\WaterShaderProperty.cpp" + > + </File> </Filter> <Filter Name="gen" > + <File + RelativePath=".\src\gen\AdditionalDataBlock.cpp" + > + </File> + <File + RelativePath=".\src\gen\AdditionalDataInfo.cpp" + > + </File> <File RelativePath=".\src\gen\ArkTexture.cpp" > @@ -1863,6 +2055,10 @@ RelativePath=".\src\gen\AVObject.cpp" > </File> + <File + RelativePath=".\src\gen\BodyPartList.cpp" + > + </File> <File RelativePath=".\src\gen\BoundingBox.cpp" > @@ -1875,6 +2071,18 @@ RelativePath=".\src\gen\BoxBV.cpp" > </File> + <File + RelativePath=".\src\gen\BSSegmentedTriangle.cpp" + > + </File> + <File + RelativePath=".\src\gen\BSTreadTransfInfo.cpp" + > + </File> + <File + RelativePath=".\src\gen\BSTreadTransfSubInfo.cpp" + > + </File> <File RelativePath=".\src\gen\ByteArray.cpp" > @@ -1907,6 +2115,10 @@ RelativePath=".\src\gen\ControllerLink.cpp" > </File> + <File + RelativePath=".\src\gen\DecalVectorArray.cpp" + > + </File> <File RelativePath=".\src\gen\enums.cpp" > @@ -1931,6 +2143,10 @@ RelativePath=".\src\gen\Header.cpp" > </File> + <File + RelativePath=".\src\gen\HingeDescriptor.cpp" + > + </File> <File RelativePath=".\src\gen\hkTriangle.cpp" > @@ -2173,6 +2389,10 @@ RelativePath=".\include\obj\AvoidNode.h" > </File> + <File + RelativePath=".\include\obj\bhkAabbPhantom.h" + > + </File> <File RelativePath=".\include\obj\bhkBlendCollisionObject.h" > @@ -2185,6 +2405,10 @@ RelativePath=".\include\obj\bhkBoxShape.h" > </File> + <File + RelativePath=".\include\obj\bhkBreakableConstraint.h" + > + </File> <File RelativePath=".\include\obj\bhkBvTreeShape.h" > @@ -2201,6 +2425,10 @@ RelativePath=".\include\obj\bhkConstraint.h" > </File> + <File + RelativePath=".\include\obj\bhkConvexListShape.h" + > + </File> <File RelativePath=".\include\obj\bhkConvexShape.h" > @@ -2225,6 +2453,10 @@ RelativePath=".\include\obj\bhkLimitedHingeConstraint.h" > </File> + <File + RelativePath=".\include\obj\bhkLiquidAction.h" + > + </File> <File RelativePath=".\include\obj\bhkListShape.h" > @@ -2249,6 +2481,10 @@ RelativePath=".\include\obj\bhkNiTriStripsShape.h" > </File> + <File + RelativePath=".\include\obj\bhkOrientHingedBodyAction.h" + > + </File> <File RelativePath=".\include\obj\bhkPackedNiTriStripsShape.h" > @@ -2325,10 +2561,46 @@ RelativePath=".\include\obj\bhkWorldObject.h" > </File> + <File + RelativePath=".\include\obj\BSAnimNotes.h" + > + </File> + <File + RelativePath=".\include\obj\BSBlastNode.h" + > + </File> <File RelativePath=".\include\obj\BSBound.h" > </File> + <File + RelativePath=".\include\obj\BSDamageStage.h" + > + </File> + <File + RelativePath=".\include\obj\BSDebrisNode.h" + > + </File> + <File + RelativePath=".\include\obj\BSDecalPlacementVectorExtraData.h" + > + </File> + <File + RelativePath=".\include\obj\BSDismemberSkinInstance.h" + > + </File> + <File + RelativePath=".\include\obj\BSDistantTreeShaderProperty.h" + > + </File> + <File + RelativePath=".\include\obj\BSFadeNode.h" + > + </File> + <File + RelativePath=".\include\obj\BSFrustumFOVController.h" + > + </File> <File RelativePath=".\include\obj\BSFurnitureMarker.h" > @@ -2337,6 +2609,34 @@ RelativePath=".\include\obj\BSKeyframeController.h" > </File> + <File + RelativePath=".\include\obj\BSMasterParticleSystem.h" + > + </File> + <File + RelativePath=".\include\obj\BSMaterialEmittanceMultController.h" + > + </File> + <File + RelativePath=".\include\obj\BSMultiBound.h" + > + </File> + <File + RelativePath=".\include\obj\BSMultiBoundAABB.h" + > + </File> + <File + RelativePath=".\include\obj\BSMultiBoundNode.h" + > + </File> + <File + RelativePath=".\include\obj\BSMultiBoundSphere.h" + > + </File> + <File + RelativePath=".\include\obj\BSOrderedNode.h" + > + </File> <File RelativePath=".\include\obj\BSParentVelocityModifier.h" > @@ -2345,6 +2645,70 @@ RelativePath=".\include\obj\BSPSysArrayEmitter.h" > </File> + <File + RelativePath=".\include\obj\BSPSysMultiTargetEmitterCtlr.h" + > + </File> + <File + RelativePath=".\include\obj\BSPSysSimpleColorModifier.h" + > + </File> + <File + RelativePath=".\include\obj\BSPSysStripUpdateModifier.h" + > + </File> + <File + RelativePath=".\include\obj\BSRefractionFirePeriodController.h" + > + </File> + <File + RelativePath=".\include\obj\BSRefractionStrengthController.h" + > + </File> + <File + RelativePath=".\include\obj\BSSegmentedTriShape.h" + > + </File> + <File + RelativePath=".\include\obj\BSShaderLightingProperty.h" + > + </File> + <File + RelativePath=".\include\obj\BSShaderNoLightingProperty.h" + > + </File> + <File + RelativePath=".\include\obj\BSShaderPPLightingProperty.h" + > + </File> + <File + RelativePath=".\include\obj\BSShaderProperty.h" + > + </File> + <File + RelativePath=".\include\obj\BSShaderTextureSet.h" + > + </File> + <File + RelativePath=".\include\obj\BSStripParticleSystem.h" + > + </File> + <File + RelativePath=".\include\obj\BSStripPSysData.h" + > + </File> + <File + RelativePath=".\include\obj\BSTreadTransfInterpolator.h" + > + </File> + <File + RelativePath=".\include\obj\BSValueNode.h" + > + </File> + <File + RelativePath=".\include\obj\BSWArray.h" + > + </File> <File RelativePath=".\include\obj\BSWindModifier.h" > @@ -2353,6 +2717,10 @@ RelativePath=".\include\obj\BSXFlags.h" > </File> + <File + RelativePath=".\include\obj\DistantLODShaderProperty.h" + > + </File> <File RelativePath=".\include\obj\FxButton.h" > @@ -2365,10 +2733,18 @@ RelativePath=".\include\obj\FxWidget.h" > </File> + <File + RelativePath=".\include\obj\HairShaderProperty.h" + > + </File> <File RelativePath=".\include\obj\hkPackedNiTriStripsData.h" > </File> + <File + RelativePath=".\include\obj\Lighting30ShaderProperty.h" + > + </File> <File RelativePath=".\include\obj\Ni3dsAlphaAnimator.h" > @@ -2393,6 +2769,10 @@ RelativePath=".\include\obj\Ni3dsPathController.h" > </File> + <File + RelativePath=".\include\obj\NiAdditionalGeometryData.h" + > + </File> <File RelativePath=".\include\obj\NiAlphaController.h" > @@ -3345,10 +3725,38 @@ RelativePath=".\include\obj\RootCollisionNode.h" > </File> + <File + RelativePath=".\include\obj\SkyShaderProperty.h" + > + </File> + <File + RelativePath=".\include\obj\TallGrassShaderProperty.h" + > + </File> + <File + RelativePath=".\include\obj\TileShaderProperty.h" + > + </File> + <File + RelativePath=".\include\obj\VolumetricFogShaderProperty.h" + > + </File> + <File + RelativePath=".\include\obj\WaterShaderProperty.h" + > + </File> </Filter> <Filter Name="gen" > + <File + RelativePath=".\include\gen\AdditionalDataBlock.h" + > + </File> + <File + RelativePath=".\include\gen\AdditionalDataInfo.h" + > + </File> <File RelativePath=".\include\gen\ArkTexture.h" > @@ -3357,6 +3765,10 @@ RelativePath=".\include\gen\AVObject.h" > </File> + <File + RelativePath=".\include\gen\BodyPartList.h" + > + </File> <File RelativePath=".\include\gen\BoundingBox.h" > @@ -3369,6 +3781,18 @@ RelativePath=".\include\gen\BoxBV.h" > </File> + <File + RelativePath=".\include\gen\BSSegmentedTriangle.h" + > + </File> + <File + RelativePath=".\include\gen\BSTreadTransfInfo.h" + > + </File> + <File + RelativePath=".\include\gen\BSTreadTransfSubInfo.h" + > + </File> <File RelativePath=".\include\gen\ByteArray.h" > @@ -3397,6 +3821,10 @@ RelativePath=".\include\gen\ControllerLink.h" > </File> + <File + RelativePath=".\include\gen\DecalVectorArray.h" + > + </File> <File RelativePath=".\include\gen\enums.h" > @@ -3425,6 +3853,10 @@ RelativePath=".\include\gen\Header.h" > </File> + <File + RelativePath=".\include\gen\HingeDescriptor.h" + > + </File> <File RelativePath=".\include\gen\hkTriangle.h" > diff --git a/niflib_VC2008.vcproj b/niflib_VC2008.vcproj index a5a8e7eb..cd16925b 100644 --- a/niflib_VC2008.vcproj +++ b/niflib_VC2008.vcproj @@ -676,6 +676,10 @@ RelativePath=".\src\obj\AvoidNode.cpp" > </File> + <File + RelativePath=".\src\obj\bhkAabbPhantom.cpp" + > + </File> <File RelativePath=".\src\obj\bhkBlendCollisionObject.cpp" > @@ -688,6 +692,10 @@ RelativePath=".\src\obj\bhkBoxShape.cpp" > </File> + <File + RelativePath=".\src\obj\bhkBreakableConstraint.cpp" + > + </File> <File RelativePath=".\src\obj\bhkBvTreeShape.cpp" > @@ -704,6 +712,10 @@ RelativePath=".\src\obj\bhkConstraint.cpp" > </File> + <File + RelativePath=".\src\obj\bhkConvexListShape.cpp" + > + </File> <File RelativePath=".\src\obj\bhkConvexShape.cpp" > @@ -728,6 +740,10 @@ RelativePath=".\src\obj\bhkLimitedHingeConstraint.cpp" > </File> + <File + RelativePath=".\src\obj\bhkLiquidAction.cpp" + > + </File> <File RelativePath=".\src\obj\bhkListShape.cpp" > @@ -752,6 +768,10 @@ RelativePath=".\src\obj\bhkNiTriStripsShape.cpp" > </File> + <File + RelativePath=".\src\obj\bhkOrientHingedBodyAction.cpp" + > + </File> <File RelativePath=".\src\obj\bhkPackedNiTriStripsShape.cpp" > @@ -828,10 +848,46 @@ RelativePath=".\src\obj\bhkWorldObject.cpp" > </File> + <File + RelativePath=".\src\obj\BSAnimNotes.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSBlastNode.cpp" + > + </File> <File RelativePath=".\src\obj\BSBound.cpp" > </File> + <File + RelativePath=".\src\obj\BSDamageStage.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSDebrisNode.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSDecalPlacementVectorExtraData.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSDismemberSkinInstance.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSDistantTreeShaderProperty.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSFadeNode.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSFrustumFOVController.cpp" + > + </File> <File RelativePath=".\src\obj\BSFurnitureMarker.cpp" > @@ -840,6 +896,34 @@ RelativePath=".\src\obj\BSKeyframeController.cpp" > </File> + <File + RelativePath=".\src\obj\BSMasterParticleSystem.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSMaterialEmittanceMultController.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSMultiBound.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSMultiBoundAABB.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSMultiBoundNode.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSMultiBoundSphere.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSOrderedNode.cpp" + > + </File> <File RelativePath=".\src\obj\BSParentVelocityModifier.cpp" > @@ -848,6 +932,70 @@ RelativePath=".\src\obj\BSPSysArrayEmitter.cpp" > </File> + <File + RelativePath=".\src\obj\BSPSysMultiTargetEmitterCtlr.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSPSysSimpleColorModifier.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSPSysStripUpdateModifier.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSRefractionFirePeriodController.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSRefractionStrengthController.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSSegmentedTriShape.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSShaderLightingProperty.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSShaderNoLightingProperty.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSShaderPPLightingProperty.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSShaderProperty.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSShaderTextureSet.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSStripParticleSystem.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSStripPSysData.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSTreadTransfInterpolator.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSValueNode.cpp" + > + </File> + <File + RelativePath=".\src\obj\BSWArray.cpp" + > + </File> <File RelativePath=".\src\obj\BSWindModifier.cpp" > @@ -856,6 +1004,10 @@ RelativePath=".\src\obj\BSXFlags.cpp" > </File> + <File + RelativePath=".\src\obj\DistantLODShaderProperty.cpp" + > + </File> <File RelativePath=".\src\obj\FxButton.cpp" > @@ -868,10 +1020,18 @@ RelativePath=".\src\obj\FxWidget.cpp" > </File> + <File + RelativePath=".\src\obj\HairShaderProperty.cpp" + > + </File> <File RelativePath=".\src\obj\hkPackedNiTriStripsData.cpp" > </File> + <File + RelativePath=".\src\obj\Lighting30ShaderProperty.cpp" + > + </File> <File RelativePath=".\src\obj\Ni3dsAlphaAnimator.cpp" > @@ -896,6 +1056,10 @@ RelativePath=".\src\obj\Ni3dsPathController.cpp" > </File> + <File + RelativePath=".\src\obj\NiAdditionalGeometryData.cpp" + > + </File> <File RelativePath=".\src\obj\NiAlphaController.cpp" > @@ -1848,10 +2012,38 @@ RelativePath=".\src\obj\RootCollisionNode.cpp" > </File> + <File + RelativePath=".\src\obj\SkyShaderProperty.cpp" + > + </File> + <File + RelativePath=".\src\obj\TallGrassShaderProperty.cpp" + > + </File> + <File + RelativePath=".\src\obj\TileShaderProperty.cpp" + > + </File> + <File + RelativePath=".\src\obj\VolumetricFogShaderProperty.cpp" + > + </File> + <File + RelativePath=".\src\obj\WaterShaderProperty.cpp" + > + </File> </Filter> <Filter Name="gen" > + <File + RelativePath=".\src\gen\AdditionalDataBlock.cpp" + > + </File> + <File + RelativePath=".\src\gen\AdditionalDataInfo.cpp" + > + </File> <File RelativePath=".\src\gen\ArkTexture.cpp" > @@ -1860,6 +2052,10 @@ RelativePath=".\src\gen\AVObject.cpp" > </File> + <File + RelativePath=".\src\gen\BodyPartList.cpp" + > + </File> <File RelativePath=".\src\gen\BoundingBox.cpp" > @@ -1872,6 +2068,18 @@ RelativePath=".\src\gen\BoxBV.cpp" > </File> + <File + RelativePath=".\src\gen\BSSegmentedTriangle.cpp" + > + </File> + <File + RelativePath=".\src\gen\BSTreadTransfInfo.cpp" + > + </File> + <File + RelativePath=".\src\gen\BSTreadTransfSubInfo.cpp" + > + </File> <File RelativePath=".\src\gen\ByteArray.cpp" > @@ -1904,6 +2112,10 @@ RelativePath=".\src\gen\ControllerLink.cpp" > </File> + <File + RelativePath=".\src\gen\DecalVectorArray.cpp" + > + </File> <File RelativePath=".\src\gen\enums.cpp" > @@ -1928,6 +2140,10 @@ RelativePath=".\src\gen\Header.cpp" > </File> + <File + RelativePath=".\src\gen\HingeDescriptor.cpp" + > + </File> <File RelativePath=".\src\gen\hkTriangle.cpp" > @@ -2170,6 +2386,10 @@ RelativePath=".\include\obj\AvoidNode.h" > </File> + <File + RelativePath=".\include\obj\bhkAabbPhantom.h" + > + </File> <File RelativePath=".\include\obj\bhkBlendCollisionObject.h" > @@ -2182,6 +2402,10 @@ RelativePath=".\include\obj\bhkBoxShape.h" > </File> + <File + RelativePath=".\include\obj\bhkBreakableConstraint.h" + > + </File> <File RelativePath=".\include\obj\bhkBvTreeShape.h" > @@ -2198,6 +2422,10 @@ RelativePath=".\include\obj\bhkConstraint.h" > </File> + <File + RelativePath=".\include\obj\bhkConvexListShape.h" + > + </File> <File RelativePath=".\include\obj\bhkConvexShape.h" > @@ -2222,6 +2450,10 @@ RelativePath=".\include\obj\bhkLimitedHingeConstraint.h" > </File> + <File + RelativePath=".\include\obj\bhkLiquidAction.h" + > + </File> <File RelativePath=".\include\obj\bhkListShape.h" > @@ -2246,6 +2478,10 @@ RelativePath=".\include\obj\bhkNiTriStripsShape.h" > </File> + <File + RelativePath=".\include\obj\bhkOrientHingedBodyAction.h" + > + </File> <File RelativePath=".\include\obj\bhkPackedNiTriStripsShape.h" > @@ -2322,10 +2558,46 @@ RelativePath=".\include\obj\bhkWorldObject.h" > </File> + <File + RelativePath=".\include\obj\BSAnimNotes.h" + > + </File> + <File + RelativePath=".\include\obj\BSBlastNode.h" + > + </File> <File RelativePath=".\include\obj\BSBound.h" > </File> + <File + RelativePath=".\include\obj\BSDamageStage.h" + > + </File> + <File + RelativePath=".\include\obj\BSDebrisNode.h" + > + </File> + <File + RelativePath=".\include\obj\BSDecalPlacementVectorExtraData.h" + > + </File> + <File + RelativePath=".\include\obj\BSDismemberSkinInstance.h" + > + </File> + <File + RelativePath=".\include\obj\BSDistantTreeShaderProperty.h" + > + </File> + <File + RelativePath=".\include\obj\BSFadeNode.h" + > + </File> + <File + RelativePath=".\include\obj\BSFrustumFOVController.h" + > + </File> <File RelativePath=".\include\obj\BSFurnitureMarker.h" > @@ -2334,6 +2606,34 @@ RelativePath=".\include\obj\BSKeyframeController.h" > </File> + <File + RelativePath=".\include\obj\BSMasterParticleSystem.h" + > + </File> + <File + RelativePath=".\include\obj\BSMaterialEmittanceMultController.h" + > + </File> + <File + RelativePath=".\include\obj\BSMultiBound.h" + > + </File> + <File + RelativePath=".\include\obj\BSMultiBoundAABB.h" + > + </File> + <File + RelativePath=".\include\obj\BSMultiBoundNode.h" + > + </File> + <File + RelativePath=".\include\obj\BSMultiBoundSphere.h" + > + </File> + <File + RelativePath=".\include\obj\BSOrderedNode.h" + > + </File> <File RelativePath=".\include\obj\BSParentVelocityModifier.h" > @@ -2342,6 +2642,70 @@ RelativePath=".\include\obj\BSPSysArrayEmitter.h" > </File> + <File + RelativePath=".\include\obj\BSPSysMultiTargetEmitterCtlr.h" + > + </File> + <File + RelativePath=".\include\obj\BSPSysSimpleColorModifier.h" + > + </File> + <File + RelativePath=".\include\obj\BSPSysStripUpdateModifier.h" + > + </File> + <File + RelativePath=".\include\obj\BSRefractionFirePeriodController.h" + > + </File> + <File + RelativePath=".\include\obj\BSRefractionStrengthController.h" + > + </File> + <File + RelativePath=".\include\obj\BSSegmentedTriShape.h" + > + </File> + <File + RelativePath=".\include\obj\BSShaderLightingProperty.h" + > + </File> + <File + RelativePath=".\include\obj\BSShaderNoLightingProperty.h" + > + </File> + <File + RelativePath=".\include\obj\BSShaderPPLightingProperty.h" + > + </File> + <File + RelativePath=".\include\obj\BSShaderProperty.h" + > + </File> + <File + RelativePath=".\include\obj\BSShaderTextureSet.h" + > + </File> + <File + RelativePath=".\include\obj\BSStripParticleSystem.h" + > + </File> + <File + RelativePath=".\include\obj\BSStripPSysData.h" + > + </File> + <File + RelativePath=".\include\obj\BSTreadTransfInterpolator.h" + > + </File> + <File + RelativePath=".\include\obj\BSValueNode.h" + > + </File> + <File + RelativePath=".\include\obj\BSWArray.h" + > + </File> <File RelativePath=".\include\obj\BSWindModifier.h" > @@ -2350,6 +2714,10 @@ RelativePath=".\include\obj\BSXFlags.h" > </File> + <File + RelativePath=".\include\obj\DistantLODShaderProperty.h" + > + </File> <File RelativePath=".\include\obj\FxButton.h" > @@ -2362,10 +2730,18 @@ RelativePath=".\include\obj\FxWidget.h" > </File> + <File + RelativePath=".\include\obj\HairShaderProperty.h" + > + </File> <File RelativePath=".\include\obj\hkPackedNiTriStripsData.h" > </File> + <File + RelativePath=".\include\obj\Lighting30ShaderProperty.h" + > + </File> <File RelativePath=".\include\obj\Ni3dsAlphaAnimator.h" > @@ -2390,6 +2766,10 @@ RelativePath=".\include\obj\Ni3dsPathController.h" > </File> + <File + RelativePath=".\include\obj\NiAdditionalGeometryData.h" + > + </File> <File RelativePath=".\include\obj\NiAlphaController.h" > @@ -3342,10 +3722,38 @@ RelativePath=".\include\obj\RootCollisionNode.h" > </File> + <File + RelativePath=".\include\obj\SkyShaderProperty.h" + > + </File> + <File + RelativePath=".\include\obj\TallGrassShaderProperty.h" + > + </File> + <File + RelativePath=".\include\obj\TileShaderProperty.h" + > + </File> + <File + RelativePath=".\include\obj\VolumetricFogShaderProperty.h" + > + </File> + <File + RelativePath=".\include\obj\WaterShaderProperty.h" + > + </File> </Filter> <Filter Name="gen" > + <File + RelativePath=".\include\gen\AdditionalDataBlock.h" + > + </File> + <File + RelativePath=".\include\gen\AdditionalDataInfo.h" + > + </File> <File RelativePath=".\include\gen\ArkTexture.h" > @@ -3354,6 +3762,10 @@ RelativePath=".\include\gen\AVObject.h" > </File> + <File + RelativePath=".\include\gen\BodyPartList.h" + > + </File> <File RelativePath=".\include\gen\BoundingBox.h" > @@ -3366,6 +3778,18 @@ RelativePath=".\include\gen\BoxBV.h" > </File> + <File + RelativePath=".\include\gen\BSSegmentedTriangle.h" + > + </File> + <File + RelativePath=".\include\gen\BSTreadTransfInfo.h" + > + </File> + <File + RelativePath=".\include\gen\BSTreadTransfSubInfo.h" + > + </File> <File RelativePath=".\include\gen\ByteArray.h" > @@ -3394,6 +3818,10 @@ RelativePath=".\include\gen\ControllerLink.h" > </File> + <File + RelativePath=".\include\gen\DecalVectorArray.h" + > + </File> <File RelativePath=".\include\gen\enums.h" > @@ -3422,6 +3850,10 @@ RelativePath=".\include\gen\Header.h" > </File> + <File + RelativePath=".\include\gen\HingeDescriptor.h" + > + </File> <File RelativePath=".\include\gen\hkTriangle.h" > diff --git a/src/gen/AdditionalDataBlock.cpp b/src/gen/AdditionalDataBlock.cpp new file mode 100644 index 00000000..1fcdf847 --- /dev/null +++ b/src/gen/AdditionalDataBlock.cpp @@ -0,0 +1,32 @@ +/* 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/gen_niflib.py Python script. + +#include "../../include/gen/AdditionalDataBlock.h" +using namespace Niflib; + +//Constructor +AdditionalDataBlock::AdditionalDataBlock() : hasData(false), blockSize((int)0), numBlocks((int)0), numData((int)0) {}; + +//Copy Constructor +AdditionalDataBlock::AdditionalDataBlock( const AdditionalDataBlock & src ) { + *this = src; +}; + +//Copy Operator +AdditionalDataBlock & AdditionalDataBlock::operator=( const AdditionalDataBlock & src ) { + this->hasData = src.hasData; + this->blockSize = src.blockSize; + this->numBlocks = src.numBlocks; + this->blockOffsets = src.blockOffsets; + this->numData = src.numData; + this->dataSizes = src.dataSizes; + this->data = src.data; + return *this; +}; + +//Destructor +AdditionalDataBlock::~AdditionalDataBlock() {}; diff --git a/src/gen/AdditionalDataInfo.cpp b/src/gen/AdditionalDataInfo.cpp new file mode 100644 index 00000000..646bbdee --- /dev/null +++ b/src/gen/AdditionalDataInfo.cpp @@ -0,0 +1,32 @@ +/* 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/gen_niflib.py Python script. + +#include "../../include/gen/AdditionalDataInfo.h" +using namespace Niflib; + +//Constructor +AdditionalDataInfo::AdditionalDataInfo() : dataType((int)0), blockSize((int)0), numBlocks((int)0), blockSize2((int)0), blockIndex((int)0), unknownInt1((int)0), unknownByte1((byte)0) {}; + +//Copy Constructor +AdditionalDataInfo::AdditionalDataInfo( const AdditionalDataInfo & src ) { + *this = src; +}; + +//Copy Operator +AdditionalDataInfo & AdditionalDataInfo::operator=( const AdditionalDataInfo & src ) { + this->dataType = src.dataType; + this->blockSize = src.blockSize; + this->numBlocks = src.numBlocks; + this->blockSize2 = src.blockSize2; + this->blockIndex = src.blockIndex; + this->unknownInt1 = src.unknownInt1; + this->unknownByte1 = src.unknownByte1; + return *this; +}; + +//Destructor +AdditionalDataInfo::~AdditionalDataInfo() {}; diff --git a/src/gen/BSSegmentedTriangle.cpp b/src/gen/BSSegmentedTriangle.cpp new file mode 100644 index 00000000..a3d2e6f9 --- /dev/null +++ b/src/gen/BSSegmentedTriangle.cpp @@ -0,0 +1,28 @@ +/* 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/gen_niflib.py Python script. + +#include "../../include/gen/BSSegmentedTriangle.h" +using namespace Niflib; + +//Constructor +BSSegmentedTriangle::BSSegmentedTriangle() : unknownInt1((int)0), unknownInt2((int)0), unknownByte1((byte)0) {}; + +//Copy Constructor +BSSegmentedTriangle::BSSegmentedTriangle( const BSSegmentedTriangle & src ) { + *this = src; +}; + +//Copy Operator +BSSegmentedTriangle & BSSegmentedTriangle::operator=( const BSSegmentedTriangle & src ) { + this->unknownInt1 = src.unknownInt1; + this->unknownInt2 = src.unknownInt2; + this->unknownByte1 = src.unknownByte1; + return *this; +}; + +//Destructor +BSSegmentedTriangle::~BSSegmentedTriangle() {}; diff --git a/src/gen/BSTreadTransfInfo.cpp b/src/gen/BSTreadTransfInfo.cpp new file mode 100644 index 00000000..09b2ee7d --- /dev/null +++ b/src/gen/BSTreadTransfInfo.cpp @@ -0,0 +1,28 @@ +/* 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/gen_niflib.py Python script. + +#include "../../include/gen/BSTreadTransfInfo.h" +#include "../../include/gen/BSTreadTransfSubInfo.h" +using namespace Niflib; + +//Constructor +BSTreadTransfInfo::BSTreadTransfInfo() : unknownFloat1(0.0f) {}; + +//Copy Constructor +BSTreadTransfInfo::BSTreadTransfInfo( const BSTreadTransfInfo & src ) { + *this = src; +}; + +//Copy Operator +BSTreadTransfInfo & BSTreadTransfInfo::operator=( const BSTreadTransfInfo & src ) { + this->unknownFloat1 = src.unknownFloat1; + this->data = src.data; + return *this; +}; + +//Destructor +BSTreadTransfInfo::~BSTreadTransfInfo() {}; diff --git a/src/gen/BSTreadTransfSubInfo.cpp b/src/gen/BSTreadTransfSubInfo.cpp new file mode 100644 index 00000000..5c4f8ec7 --- /dev/null +++ b/src/gen/BSTreadTransfSubInfo.cpp @@ -0,0 +1,33 @@ +/* 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/gen_niflib.py Python script. + +#include "../../include/gen/BSTreadTransfSubInfo.h" +using namespace Niflib; + +//Constructor +BSTreadTransfSubInfo::BSTreadTransfSubInfo() : unknownInt1((int)0), unknownInt2((int)0), unknownInt3((int)0), unknownInt4((int)0), unknownInt5((int)0), unknownInt6((int)0), unknownInt7((int)0), unknownInt8((int)0) {}; + +//Copy Constructor +BSTreadTransfSubInfo::BSTreadTransfSubInfo( const BSTreadTransfSubInfo & src ) { + *this = src; +}; + +//Copy Operator +BSTreadTransfSubInfo & BSTreadTransfSubInfo::operator=( const BSTreadTransfSubInfo & src ) { + this->unknownInt1 = src.unknownInt1; + this->unknownInt2 = src.unknownInt2; + this->unknownInt3 = src.unknownInt3; + this->unknownInt4 = src.unknownInt4; + this->unknownInt5 = src.unknownInt5; + this->unknownInt6 = src.unknownInt6; + this->unknownInt7 = src.unknownInt7; + this->unknownInt8 = src.unknownInt8; + return *this; +}; + +//Destructor +BSTreadTransfSubInfo::~BSTreadTransfSubInfo() {}; diff --git a/src/gen/BodyPartList.cpp b/src/gen/BodyPartList.cpp new file mode 100644 index 00000000..0f2f2cc5 --- /dev/null +++ b/src/gen/BodyPartList.cpp @@ -0,0 +1,27 @@ +/* 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/gen_niflib.py Python script. + +#include "../../include/gen/BodyPartList.h" +using namespace Niflib; + +//Constructor +BodyPartList::BodyPartList() : unknownShort((short)0), bodyPart((short)0) {}; + +//Copy Constructor +BodyPartList::BodyPartList( const BodyPartList & src ) { + *this = src; +}; + +//Copy Operator +BodyPartList & BodyPartList::operator=( const BodyPartList & src ) { + this->unknownShort = src.unknownShort; + this->bodyPart = src.bodyPart; + return *this; +}; + +//Destructor +BodyPartList::~BodyPartList() {}; diff --git a/src/gen/DecalVectorArray.cpp b/src/gen/DecalVectorArray.cpp new file mode 100644 index 00000000..1d6b952c --- /dev/null +++ b/src/gen/DecalVectorArray.cpp @@ -0,0 +1,28 @@ +/* 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/gen_niflib.py Python script. + +#include "../../include/gen/DecalVectorArray.h" +using namespace Niflib; + +//Constructor +DecalVectorArray::DecalVectorArray() : numVectors((short)0) {}; + +//Copy Constructor +DecalVectorArray::DecalVectorArray( const DecalVectorArray & src ) { + *this = src; +}; + +//Copy Operator +DecalVectorArray & DecalVectorArray::operator=( const DecalVectorArray & src ) { + this->numVectors = src.numVectors; + this->points = src.points; + this->normals = src.normals; + return *this; +}; + +//Destructor +DecalVectorArray::~DecalVectorArray() {}; diff --git a/src/gen/Header.cpp b/src/gen/Header.cpp index b55a94a2..92dced91 100644 --- a/src/gen/Header.cpp +++ b/src/gen/Header.cpp @@ -8,7 +8,6 @@ All rights reserved. Please see niflib.h for license. */ #include "../../include/gen/Header.h" #include "../../include/gen/ExportInfo.h" #include "../../include/gen/ExportInfo.h" -#include "../../include/gen/ExportInfo.h" using namespace Niflib; //Constructor @@ -65,10 +64,7 @@ NifInfo Header::Read( istream& in ) { NifStream( numBlocks, in, info ); }; if ( info.version >= 0x0A010000 ) { - if ( (userVersion == 10) ) { - NifStream( userVersion2, in, info ); - }; - if ( (userVersion == 11) ) { + if ( ((userVersion == 10) || (userVersion == 11)) ) { NifStream( userVersion2, in, info ); }; }; @@ -81,15 +77,7 @@ NifInfo Header::Read( istream& in ) { NifStream( exportInfo.exportInfo2, in, info ); }; if ( info.version >= 0x0A010000 ) { - if ( (userVersion == 10) ) { - if ( info.version <= 0x0A000102 ) { - NifStream( exportInfo.unknown, in, info ); - }; - NifStream( exportInfo.creator, in, info ); - NifStream( exportInfo.exportInfo1, in, info ); - NifStream( exportInfo.exportInfo2, in, info ); - }; - if ( (userVersion == 11) ) { + if ( ((userVersion == 10) || (userVersion == 11)) ) { if ( info.version <= 0x0A000102 ) { NifStream( exportInfo.unknown, in, info ); }; @@ -164,10 +152,7 @@ void Header::Write( ostream& out, const NifInfo & info ) const { NifStream( numBlocks, out, info ); }; if ( info.version >= 0x0A010000 ) { - if ( (userVersion == 10) ) { - NifStream( userVersion2, out, info ); - }; - if ( (userVersion == 11) ) { + if ( ((userVersion == 10) || (userVersion == 11)) ) { NifStream( userVersion2, out, info ); }; }; @@ -180,15 +165,7 @@ void Header::Write( ostream& out, const NifInfo & info ) const { NifStream( exportInfo.exportInfo2, out, info ); }; if ( info.version >= 0x0A010000 ) { - if ( (userVersion == 10) ) { - if ( info.version <= 0x0A000102 ) { - NifStream( exportInfo.unknown, out, info ); - }; - NifStream( exportInfo.creator, out, info ); - NifStream( exportInfo.exportInfo1, out, info ); - NifStream( exportInfo.exportInfo2, out, info ); - }; - if ( (userVersion == 11) ) { + if ( ((userVersion == 10) || (userVersion == 11)) ) { if ( info.version <= 0x0A000102 ) { NifStream( exportInfo.unknown, out, info ); }; @@ -246,7 +223,7 @@ string Header::asString( bool verbose ) const { out << " Endian Type: " << endianType << endl; out << " User Version: " << userVersion << endl; out << " Num Blocks: " << numBlocks << endl; - if ( (userVersion == 10) ) { + if ( ((userVersion == 10) || (userVersion == 11)) ) { out << " User Version 2: " << userVersion2 << endl; }; out << " Unknown: " << exportInfo.unknown << endl; diff --git a/src/gen/HingeDescriptor.cpp b/src/gen/HingeDescriptor.cpp new file mode 100644 index 00000000..617c8a10 --- /dev/null +++ b/src/gen/HingeDescriptor.cpp @@ -0,0 +1,43 @@ +/* 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/gen_niflib.py Python script. + +#include "../../include/gen/HingeDescriptor.h" +using namespace Niflib; + +//Constructor +HingeDescriptor::HingeDescriptor() : unknownFloat1(0.0f), unknownInt2(0.0f), unknownInt3(0.0f), unknownInt4(0.0f), unknownInt5(0.0f), unknownInt6(0.0f), unknownInt7(0.0f), unknownInt8(0.0f), unknownInt9(0.0f), unknownInt10(0.0f), unknownByte1((byte)0), unknownByte2((byte)0), unknownByte3((byte)0) {}; + +//Copy Constructor +HingeDescriptor::HingeDescriptor( const HingeDescriptor & src ) { + *this = src; +}; + +//Copy Operator +HingeDescriptor & HingeDescriptor::operator=( const HingeDescriptor & src ) { + this->pivotA = src.pivotA; + this->perp2AxleInA1 = src.perp2AxleInA1; + this->perp2AxleInA2 = src.perp2AxleInA2; + this->pivotB = src.pivotB; + this->axleB = src.axleB; + this->unknownFloat1 = src.unknownFloat1; + this->unknownInt2 = src.unknownInt2; + this->unknownInt3 = src.unknownInt3; + this->unknownInt4 = src.unknownInt4; + this->unknownInt5 = src.unknownInt5; + this->unknownInt6 = src.unknownInt6; + this->unknownInt7 = src.unknownInt7; + this->unknownInt8 = src.unknownInt8; + this->unknownInt9 = src.unknownInt9; + this->unknownInt10 = src.unknownInt10; + this->unknownByte1 = src.unknownByte1; + this->unknownByte2 = src.unknownByte2; + this->unknownByte3 = src.unknownByte3; + return *this; +}; + +//Destructor +HingeDescriptor::~HingeDescriptor() {}; diff --git a/src/gen/LimitedHingeDescriptor.cpp b/src/gen/LimitedHingeDescriptor.cpp index 1081461e..e42d646e 100644 --- a/src/gen/LimitedHingeDescriptor.cpp +++ b/src/gen/LimitedHingeDescriptor.cpp @@ -9,7 +9,7 @@ All rights reserved. Please see niflib.h for license. */ using namespace Niflib; //Constructor -LimitedHingeDescriptor::LimitedHingeDescriptor() : minAngle(0.0f), maxAngle(0.0f), maxFriction(0.0f) {}; +LimitedHingeDescriptor::LimitedHingeDescriptor() : minAngle(0.0f), maxAngle(0.0f), maxFriction(0.0f), unknownFloat1(0.0f), unknownFloat2(0.0f), unknownFloat3(0.0f) {}; //Copy Constructor LimitedHingeDescriptor::LimitedHingeDescriptor( const LimitedHingeDescriptor & src ) { @@ -28,6 +28,9 @@ LimitedHingeDescriptor & LimitedHingeDescriptor::operator=( const LimitedHingeDe this->minAngle = src.minAngle; this->maxAngle = src.maxAngle; this->maxFriction = src.maxFriction; + this->unknownFloat1 = src.unknownFloat1; + this->unknownFloat2 = src.unknownFloat2; + this->unknownFloat3 = src.unknownFloat3; return *this; }; diff --git a/src/gen/RagdollDescriptor.cpp b/src/gen/RagdollDescriptor.cpp index 456572e1..f9f56959 100644 --- a/src/gen/RagdollDescriptor.cpp +++ b/src/gen/RagdollDescriptor.cpp @@ -9,7 +9,7 @@ All rights reserved. Please see niflib.h for license. */ using namespace Niflib; //Constructor -RagdollDescriptor::RagdollDescriptor() : coneMaxAngle(0.0f), planeMinAngle(0.0f), planeMaxAngle(0.0f), twistMinAngle(0.0f), twistMaxAngle(0.0f), maxFriction(0.0f) {}; +RagdollDescriptor::RagdollDescriptor() : coneMaxAngle(0.0f), planeMinAngle(0.0f), planeMaxAngle(0.0f), twistMinAngle(0.0f), twistMaxAngle(0.0f), maxFriction(0.0f), unknownFloat1(0.0f), unknownFloat2(0.0f), unknownFloat3(0.0f), unknownFloat4(0.0f), unknownFloat5(0.0f), unknownFloat6(0.0f), unknownFloat7(0.0f) {}; //Copy Constructor RagdollDescriptor::RagdollDescriptor( const RagdollDescriptor & src ) { @@ -30,6 +30,13 @@ RagdollDescriptor & RagdollDescriptor::operator=( const RagdollDescriptor & src this->twistMinAngle = src.twistMinAngle; this->twistMaxAngle = src.twistMaxAngle; this->maxFriction = src.maxFriction; + this->unknownFloat1 = src.unknownFloat1; + this->unknownFloat2 = src.unknownFloat2; + this->unknownFloat3 = src.unknownFloat3; + this->unknownFloat4 = src.unknownFloat4; + this->unknownFloat5 = src.unknownFloat5; + this->unknownFloat6 = src.unknownFloat6; + this->unknownFloat7 = src.unknownFloat7; return *this; }; diff --git a/src/gen/ShaderTexDesc.cpp b/src/gen/ShaderTexDesc.cpp index 059eff1b..981f86ff 100644 --- a/src/gen/ShaderTexDesc.cpp +++ b/src/gen/ShaderTexDesc.cpp @@ -11,7 +11,7 @@ All rights reserved. Please see niflib.h for license. */ using namespace Niflib; //Constructor -ShaderTexDesc::ShaderTexDesc() : isUsed(false), unknownInt((unsigned int)0) {}; +ShaderTexDesc::ShaderTexDesc() : isUsed(false), mapIndex((unsigned int)0) {}; //Copy Constructor ShaderTexDesc::ShaderTexDesc( const ShaderTexDesc & src ) { @@ -22,7 +22,7 @@ ShaderTexDesc::ShaderTexDesc( const ShaderTexDesc & src ) { ShaderTexDesc & ShaderTexDesc::operator=( const ShaderTexDesc & src ) { this->isUsed = src.isUsed; this->textureData = src.textureData; - this->unknownInt = src.unknownInt; + this->mapIndex = src.mapIndex; return *this; }; diff --git a/src/gen/register.cpp b/src/gen/register.cpp index 727aa878..4aaa9fc2 100644 --- a/src/gen/register.cpp +++ b/src/gen/register.cpp @@ -301,6 +301,52 @@ All rights reserved. Please see niflib.h for license. */ #include "../../include/obj/NiRoomGroup.h" #include "../../include/obj/NiRoom.h" #include "../../include/obj/NiPortal.h" +#include "../../include/obj/BSFadeNode.h" +#include "../../include/obj/BSShaderLightingProperty.h" +#include "../../include/obj/BSShaderNoLightingProperty.h" +#include "../../include/obj/BSShaderPPLightingProperty.h" +#include "../../include/obj/BSShaderTextureSet.h" +#include "../../include/obj/BSDismemberSkinInstance.h" +#include "../../include/obj/BSDecalPlacementVectorExtraData.h" +#include "../../include/obj/WaterShaderProperty.h" +#include "../../include/obj/SkyShaderProperty.h" +#include "../../include/obj/BSPSysSimpleColorModifier.h" +#include "../../include/obj/BSValueNode.h" +#include "../../include/obj/BSStripParticleSystem.h" +#include "../../include/obj/BSStripPSysData.h" +#include "../../include/obj/BSPSysStripUpdateModifier.h" +#include "../../include/obj/BSMaterialEmittanceMultController.h" +#include "../../include/obj/BSMasterParticleSystem.h" +#include "../../include/obj/BSPSysMultiTargetEmitterCtlr.h" +#include "../../include/obj/BSRefractionStrengthController.h" +#include "../../include/obj/BSOrderedNode.h" +#include "../../include/obj/BSBlastNode.h" +#include "../../include/obj/BSDamageStage.h" +#include "../../include/obj/BSShaderProperty.h" +#include "../../include/obj/TileShaderProperty.h" +#include "../../include/obj/DistantLODShaderProperty.h" +#include "../../include/obj/BSDistantTreeShaderProperty.h" +#include "../../include/obj/TallGrassShaderProperty.h" +#include "../../include/obj/VolumetricFogShaderProperty.h" +#include "../../include/obj/HairShaderProperty.h" +#include "../../include/obj/Lighting30ShaderProperty.h" +#include "../../include/obj/BSRefractionFirePeriodController.h" +#include "../../include/obj/bhkConvexListShape.h" +#include "../../include/obj/BSTreadTransfInterpolator.h" +#include "../../include/obj/BSAnimNotes.h" +#include "../../include/obj/bhkLiquidAction.h" +#include "../../include/obj/BSMultiBoundNode.h" +#include "../../include/obj/BSMultiBound.h" +#include "../../include/obj/BSMultiBoundSphere.h" +#include "../../include/obj/BSSegmentedTriShape.h" +#include "../../include/obj/BSMultiBoundAABB.h" +#include "../../include/obj/NiAdditionalGeometryData.h" +#include "../../include/obj/BSWArray.h" +#include "../../include/obj/bhkAabbPhantom.h" +#include "../../include/obj/BSFrustumFOVController.h" +#include "../../include/obj/BSDebrisNode.h" +#include "../../include/obj/bhkBreakableConstraint.h" +#include "../../include/obj/bhkOrientHingedBodyAction.h" namespace Niflib { void RegisterObjects() { @@ -600,6 +646,52 @@ namespace Niflib { ObjectRegistry::RegisterObject( "NiRoomGroup", NiRoomGroup::Create ); ObjectRegistry::RegisterObject( "NiRoom", NiRoom::Create ); ObjectRegistry::RegisterObject( "NiPortal", NiPortal::Create ); + ObjectRegistry::RegisterObject( "BSFadeNode", BSFadeNode::Create ); + ObjectRegistry::RegisterObject( "BSShaderLightingProperty", BSShaderLightingProperty::Create ); + ObjectRegistry::RegisterObject( "BSShaderNoLightingProperty", BSShaderNoLightingProperty::Create ); + ObjectRegistry::RegisterObject( "BSShaderPPLightingProperty", BSShaderPPLightingProperty::Create ); + ObjectRegistry::RegisterObject( "BSShaderTextureSet", BSShaderTextureSet::Create ); + ObjectRegistry::RegisterObject( "BSDismemberSkinInstance", BSDismemberSkinInstance::Create ); + ObjectRegistry::RegisterObject( "BSDecalPlacementVectorExtraData", BSDecalPlacementVectorExtraData::Create ); + ObjectRegistry::RegisterObject( "WaterShaderProperty", WaterShaderProperty::Create ); + ObjectRegistry::RegisterObject( "SkyShaderProperty", SkyShaderProperty::Create ); + ObjectRegistry::RegisterObject( "BSPSysSimpleColorModifier", BSPSysSimpleColorModifier::Create ); + ObjectRegistry::RegisterObject( "BSValueNode", BSValueNode::Create ); + ObjectRegistry::RegisterObject( "BSStripParticleSystem", BSStripParticleSystem::Create ); + ObjectRegistry::RegisterObject( "BSStripPSysData", BSStripPSysData::Create ); + ObjectRegistry::RegisterObject( "BSPSysStripUpdateModifier", BSPSysStripUpdateModifier::Create ); + ObjectRegistry::RegisterObject( "BSMaterialEmittanceMultController", BSMaterialEmittanceMultController::Create ); + ObjectRegistry::RegisterObject( "BSMasterParticleSystem", BSMasterParticleSystem::Create ); + ObjectRegistry::RegisterObject( "BSPSysMultiTargetEmitterCtlr", BSPSysMultiTargetEmitterCtlr::Create ); + ObjectRegistry::RegisterObject( "BSRefractionStrengthController", BSRefractionStrengthController::Create ); + ObjectRegistry::RegisterObject( "BSOrderedNode", BSOrderedNode::Create ); + ObjectRegistry::RegisterObject( "BSBlastNode", BSBlastNode::Create ); + ObjectRegistry::RegisterObject( "BSDamageStage", BSDamageStage::Create ); + ObjectRegistry::RegisterObject( "BSShaderProperty", BSShaderProperty::Create ); + ObjectRegistry::RegisterObject( "TileShaderProperty", TileShaderProperty::Create ); + ObjectRegistry::RegisterObject( "DistantLODShaderProperty", DistantLODShaderProperty::Create ); + ObjectRegistry::RegisterObject( "BSDistantTreeShaderProperty", BSDistantTreeShaderProperty::Create ); + ObjectRegistry::RegisterObject( "TallGrassShaderProperty", TallGrassShaderProperty::Create ); + ObjectRegistry::RegisterObject( "VolumetricFogShaderProperty", VolumetricFogShaderProperty::Create ); + ObjectRegistry::RegisterObject( "HairShaderProperty", HairShaderProperty::Create ); + ObjectRegistry::RegisterObject( "Lighting30ShaderProperty", Lighting30ShaderProperty::Create ); + ObjectRegistry::RegisterObject( "BSRefractionFirePeriodController", BSRefractionFirePeriodController::Create ); + ObjectRegistry::RegisterObject( "bhkConvexListShape", bhkConvexListShape::Create ); + ObjectRegistry::RegisterObject( "BSTreadTransfInterpolator", BSTreadTransfInterpolator::Create ); + ObjectRegistry::RegisterObject( "BSAnimNotes", BSAnimNotes::Create ); + ObjectRegistry::RegisterObject( "bhkLiquidAction", bhkLiquidAction::Create ); + ObjectRegistry::RegisterObject( "BSMultiBoundNode", BSMultiBoundNode::Create ); + ObjectRegistry::RegisterObject( "BSMultiBound", BSMultiBound::Create ); + ObjectRegistry::RegisterObject( "BSMultiBoundSphere", BSMultiBoundSphere::Create ); + ObjectRegistry::RegisterObject( "BSSegmentedTriShape", BSSegmentedTriShape::Create ); + ObjectRegistry::RegisterObject( "BSMultiBoundAABB", BSMultiBoundAABB::Create ); + ObjectRegistry::RegisterObject( "NiAdditionalGeometryData", NiAdditionalGeometryData::Create ); + ObjectRegistry::RegisterObject( "BSWArray", BSWArray::Create ); + ObjectRegistry::RegisterObject( "bhkAabbPhantom", bhkAabbPhantom::Create ); + ObjectRegistry::RegisterObject( "BSFrustumFOVController", BSFrustumFOVController::Create ); + ObjectRegistry::RegisterObject( "BSDebrisNode", BSDebrisNode::Create ); + ObjectRegistry::RegisterObject( "bhkBreakableConstraint", bhkBreakableConstraint::Create ); + ObjectRegistry::RegisterObject( "bhkOrientHingedBodyAction", bhkOrientHingedBodyAction::Create ); } } diff --git a/src/niflib.cpp b/src/niflib.cpp index 3e8a2092..4153ff52 100644 --- a/src/niflib.cpp +++ b/src/niflib.cpp @@ -1092,6 +1092,7 @@ bool IsSupportedVersion( unsigned int version ) { case VER_20_0_0_4: case VER_20_0_0_5: case VER_20_1_0_3: + case VER_20_2_0_7: case VER_20_3_0_3: case VER_20_3_0_6: return true; diff --git a/src/obj/BSAnimNotes.cpp b/src/obj/BSAnimNotes.cpp new file mode 100644 index 00000000..cf0697df --- /dev/null +++ b/src/obj/BSAnimNotes.cpp @@ -0,0 +1,105 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSAnimNotes.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSAnimNotes::TYPE("BSAnimNotes", &NiObject::TYPE ); + +BSAnimNotes::BSAnimNotes() : unknownShort1((short)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSAnimNotes::~BSAnimNotes() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSAnimNotes::GetType() const { + return TYPE; +} + +NiObject * BSAnimNotes::Create() { + return new BSAnimNotes; +} + +void BSAnimNotes::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiObject::Read( in, link_stack, info ); + NifStream( unknownShort1, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSAnimNotes::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiObject::Write( out, link_map, info ); + NifStream( unknownShort1, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSAnimNotes::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiObject::asString(); + out << " Unknown Short 1: " << unknownShort1 << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSAnimNotes::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiObject::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSAnimNotes::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiObject::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSBlastNode.cpp b/src/obj/BSBlastNode.cpp new file mode 100644 index 00000000..cccc7271 --- /dev/null +++ b/src/obj/BSBlastNode.cpp @@ -0,0 +1,108 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSBlastNode.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSBlastNode::TYPE("BSBlastNode", &NiNode::TYPE ); + +BSBlastNode::BSBlastNode() : unknownByte1((byte)0), unknownShort1((short)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSBlastNode::~BSBlastNode() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSBlastNode::GetType() const { + return TYPE; +} + +NiObject * BSBlastNode::Create() { + return new BSBlastNode; +} + +void BSBlastNode::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::Read( in, link_stack, info ); + NifStream( unknownByte1, in, info ); + NifStream( unknownShort1, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSBlastNode::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::Write( out, link_map, info ); + NifStream( unknownByte1, out, info ); + NifStream( unknownShort1, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSBlastNode::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiNode::asString(); + out << " Unknown byte 1: " << unknownByte1 << endl; + out << " Unknown Short 1: " << unknownShort1 << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSBlastNode::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSBlastNode::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiNode::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSDamageStage.cpp b/src/obj/BSDamageStage.cpp new file mode 100644 index 00000000..03ce914d --- /dev/null +++ b/src/obj/BSDamageStage.cpp @@ -0,0 +1,108 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSDamageStage.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSDamageStage::TYPE("BSDamageStage", &NiNode::TYPE ); + +BSDamageStage::BSDamageStage() : unknownByte1((byte)0), unknownShort1((short)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSDamageStage::~BSDamageStage() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSDamageStage::GetType() const { + return TYPE; +} + +NiObject * BSDamageStage::Create() { + return new BSDamageStage; +} + +void BSDamageStage::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::Read( in, link_stack, info ); + NifStream( unknownByte1, in, info ); + NifStream( unknownShort1, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSDamageStage::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::Write( out, link_map, info ); + NifStream( unknownByte1, out, info ); + NifStream( unknownShort1, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSDamageStage::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiNode::asString(); + out << " Unknown byte 1: " << unknownByte1 << endl; + out << " Unknown Short 1: " << unknownShort1 << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSDamageStage::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSDamageStage::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiNode::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSDebrisNode.cpp b/src/obj/BSDebrisNode.cpp new file mode 100644 index 00000000..1c493fce --- /dev/null +++ b/src/obj/BSDebrisNode.cpp @@ -0,0 +1,108 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSDebrisNode.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSDebrisNode::TYPE("BSDebrisNode", &NiNode::TYPE ); + +BSDebrisNode::BSDebrisNode() : unknownByte1((byte)0), unknownShort1((short)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSDebrisNode::~BSDebrisNode() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSDebrisNode::GetType() const { + return TYPE; +} + +NiObject * BSDebrisNode::Create() { + return new BSDebrisNode; +} + +void BSDebrisNode::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::Read( in, link_stack, info ); + NifStream( unknownByte1, in, info ); + NifStream( unknownShort1, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSDebrisNode::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::Write( out, link_map, info ); + NifStream( unknownByte1, out, info ); + NifStream( unknownShort1, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSDebrisNode::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiNode::asString(); + out << " Unknown byte 1: " << unknownByte1 << endl; + out << " Unknown Short 1: " << unknownShort1 << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSDebrisNode::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSDebrisNode::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiNode::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSDecalPlacementVectorExtraData.cpp b/src/obj/BSDecalPlacementVectorExtraData.cpp new file mode 100644 index 00000000..04cd1297 --- /dev/null +++ b/src/obj/BSDecalPlacementVectorExtraData.cpp @@ -0,0 +1,166 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSDecalPlacementVectorExtraData.h" +#include "../../include/gen/DecalVectorArray.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSDecalPlacementVectorExtraData::TYPE("BSDecalPlacementVectorExtraData", &NiExtraData::TYPE ); + +BSDecalPlacementVectorExtraData::BSDecalPlacementVectorExtraData() : unknownFloat1(0.0f), numVectorBlocks((short)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSDecalPlacementVectorExtraData::~BSDecalPlacementVectorExtraData() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSDecalPlacementVectorExtraData::GetType() const { + return TYPE; +} + +NiObject * BSDecalPlacementVectorExtraData::Create() { + return new BSDecalPlacementVectorExtraData; +} + +void BSDecalPlacementVectorExtraData::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiExtraData::Read( in, link_stack, info ); + NifStream( unknownFloat1, in, info ); + NifStream( numVectorBlocks, in, info ); + vectorBlocks.resize(numVectorBlocks); + for (unsigned int i1 = 0; i1 < vectorBlocks.size(); i1++) { + NifStream( vectorBlocks[i1].numVectors, in, info ); + vectorBlocks[i1].points.resize(vectorBlocks[i1].numVectors); + for (unsigned int i2 = 0; i2 < vectorBlocks[i1].points.size(); i2++) { + NifStream( vectorBlocks[i1].points[i2], in, info ); + }; + vectorBlocks[i1].normals.resize(vectorBlocks[i1].numVectors); + for (unsigned int i2 = 0; i2 < vectorBlocks[i1].normals.size(); i2++) { + NifStream( vectorBlocks[i1].normals[i2], in, info ); + }; + }; + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSDecalPlacementVectorExtraData::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiExtraData::Write( out, link_map, info ); + numVectorBlocks = (short)(vectorBlocks.size()); + NifStream( unknownFloat1, out, info ); + NifStream( numVectorBlocks, out, info ); + for (unsigned int i1 = 0; i1 < vectorBlocks.size(); i1++) { + vectorBlocks[i1].numVectors = (short)(vectorBlocks[i1].points.size()); + NifStream( vectorBlocks[i1].numVectors, out, info ); + for (unsigned int i2 = 0; i2 < vectorBlocks[i1].points.size(); i2++) { + NifStream( vectorBlocks[i1].points[i2], out, info ); + }; + for (unsigned int i2 = 0; i2 < vectorBlocks[i1].normals.size(); i2++) { + NifStream( vectorBlocks[i1].normals[i2], out, info ); + }; + }; + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSDecalPlacementVectorExtraData::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiExtraData::asString(); + numVectorBlocks = (short)(vectorBlocks.size()); + out << " Unknown Float 1: " << unknownFloat1 << endl; + out << " Num Vector Blocks: " << numVectorBlocks << endl; + array_output_count = 0; + for (unsigned int i1 = 0; i1 < vectorBlocks.size(); i1++) { + if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { + out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; + break; + }; + vectorBlocks[i1].numVectors = (short)(vectorBlocks[i1].points.size()); + out << " Num Vectors: " << vectorBlocks[i1].numVectors << endl; + array_output_count = 0; + for (unsigned int i2 = 0; i2 < vectorBlocks[i1].points.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 << " Points[" << i2 << "]: " << vectorBlocks[i1].points[i2] << endl; + array_output_count++; + }; + array_output_count = 0; + for (unsigned int i2 = 0; i2 < vectorBlocks[i1].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 << "]: " << vectorBlocks[i1].normals[i2] << endl; + array_output_count++; + }; + }; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSDecalPlacementVectorExtraData::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiExtraData::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSDecalPlacementVectorExtraData::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiExtraData::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSDismemberSkinInstance.cpp b/src/obj/BSDismemberSkinInstance.cpp new file mode 100644 index 00000000..e1db1abd --- /dev/null +++ b/src/obj/BSDismemberSkinInstance.cpp @@ -0,0 +1,126 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSDismemberSkinInstance.h" +#include "../../include/gen/BodyPartList.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSDismemberSkinInstance::TYPE("BSDismemberSkinInstance", &NiSkinInstance::TYPE ); + +BSDismemberSkinInstance::BSDismemberSkinInstance() : numPartitions((int)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSDismemberSkinInstance::~BSDismemberSkinInstance() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSDismemberSkinInstance::GetType() const { + return TYPE; +} + +NiObject * BSDismemberSkinInstance::Create() { + return new BSDismemberSkinInstance; +} + +void BSDismemberSkinInstance::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiSkinInstance::Read( in, link_stack, info ); + NifStream( numPartitions, in, info ); + partitions.resize(numPartitions); + for (unsigned int i1 = 0; i1 < partitions.size(); i1++) { + NifStream( partitions[i1].unknownShort, in, info ); + NifStream( partitions[i1].bodyPart, in, info ); + }; + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSDismemberSkinInstance::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiSkinInstance::Write( out, link_map, info ); + numPartitions = (int)(partitions.size()); + NifStream( numPartitions, out, info ); + for (unsigned int i1 = 0; i1 < partitions.size(); i1++) { + NifStream( partitions[i1].unknownShort, out, info ); + NifStream( partitions[i1].bodyPart, out, info ); + }; + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSDismemberSkinInstance::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiSkinInstance::asString(); + numPartitions = (int)(partitions.size()); + out << " Num Partitions: " << numPartitions << endl; + array_output_count = 0; + for (unsigned int i1 = 0; i1 < partitions.size(); i1++) { + if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { + out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; + break; + }; + out << " Unknown Short: " << partitions[i1].unknownShort << endl; + out << " Body Part: " << partitions[i1].bodyPart << endl; + }; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSDismemberSkinInstance::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiSkinInstance::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSDismemberSkinInstance::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiSkinInstance::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSDistantTreeShaderProperty.cpp b/src/obj/BSDistantTreeShaderProperty.cpp new file mode 100644 index 00000000..53390547 --- /dev/null +++ b/src/obj/BSDistantTreeShaderProperty.cpp @@ -0,0 +1,102 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSDistantTreeShaderProperty.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSDistantTreeShaderProperty::TYPE("BSDistantTreeShaderProperty", &NiShadeProperty::TYPE ); + +BSDistantTreeShaderProperty::BSDistantTreeShaderProperty() { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSDistantTreeShaderProperty::~BSDistantTreeShaderProperty() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSDistantTreeShaderProperty::GetType() const { + return TYPE; +} + +NiObject * BSDistantTreeShaderProperty::Create() { + return new BSDistantTreeShaderProperty; +} + +void BSDistantTreeShaderProperty::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::Read( in, link_stack, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSDistantTreeShaderProperty::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::Write( out, link_map, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSDistantTreeShaderProperty::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiShadeProperty::asString(); + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSDistantTreeShaderProperty::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSDistantTreeShaderProperty::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiShadeProperty::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSFadeNode.cpp b/src/obj/BSFadeNode.cpp new file mode 100644 index 00000000..b4bc8cd3 --- /dev/null +++ b/src/obj/BSFadeNode.cpp @@ -0,0 +1,102 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSFadeNode.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSFadeNode::TYPE("BSFadeNode", &NiNode::TYPE ); + +BSFadeNode::BSFadeNode() { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSFadeNode::~BSFadeNode() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSFadeNode::GetType() const { + return TYPE; +} + +NiObject * BSFadeNode::Create() { + return new BSFadeNode; +} + +void BSFadeNode::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::Read( in, link_stack, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSFadeNode::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::Write( out, link_map, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSFadeNode::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiNode::asString(); + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSFadeNode::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSFadeNode::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiNode::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSFrustumFOVController.cpp b/src/obj/BSFrustumFOVController.cpp new file mode 100644 index 00000000..2375fa37 --- /dev/null +++ b/src/obj/BSFrustumFOVController.cpp @@ -0,0 +1,105 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSFrustumFOVController.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSFrustumFOVController::TYPE("BSFrustumFOVController", &NiTimeController::TYPE ); + +BSFrustumFOVController::BSFrustumFOVController() : unknownInt1((int)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSFrustumFOVController::~BSFrustumFOVController() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSFrustumFOVController::GetType() const { + return TYPE; +} + +NiObject * BSFrustumFOVController::Create() { + return new BSFrustumFOVController; +} + +void BSFrustumFOVController::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiTimeController::Read( in, link_stack, info ); + NifStream( unknownInt1, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSFrustumFOVController::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiTimeController::Write( out, link_map, info ); + NifStream( unknownInt1, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSFrustumFOVController::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiTimeController::asString(); + out << " Unknown Int 1: " << unknownInt1 << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSFrustumFOVController::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiTimeController::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSFrustumFOVController::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiTimeController::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSMasterParticleSystem.cpp b/src/obj/BSMasterParticleSystem.cpp new file mode 100644 index 00000000..a3781d9f --- /dev/null +++ b/src/obj/BSMasterParticleSystem.cpp @@ -0,0 +1,147 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSMasterParticleSystem.h" +#include "../../include/obj/NiAVObject.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSMasterParticleSystem::TYPE("BSMasterParticleSystem", &NiNode::TYPE ); + +BSMasterParticleSystem::BSMasterParticleSystem() : maxEmitterObjects((unsigned short)0), numParticleSystems((int)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSMasterParticleSystem::~BSMasterParticleSystem() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSMasterParticleSystem::GetType() const { + return TYPE; +} + +NiObject * BSMasterParticleSystem::Create() { + return new BSMasterParticleSystem; +} + +void BSMasterParticleSystem::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + unsigned int block_num; + NiNode::Read( in, link_stack, info ); + NifStream( maxEmitterObjects, in, info ); + NifStream( numParticleSystems, in, info ); + particleSystems.resize(numParticleSystems); + for (unsigned int i1 = 0; i1 < particleSystems.size(); i1++) { + NifStream( block_num, in, info ); + link_stack.push_back( block_num ); + }; + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSMasterParticleSystem::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::Write( out, link_map, info ); + numParticleSystems = (int)(particleSystems.size()); + NifStream( maxEmitterObjects, out, info ); + NifStream( numParticleSystems, out, info ); + for (unsigned int i1 = 0; i1 < particleSystems.size(); i1++) { + if ( info.version < VER_3_3_0_13 ) { + NifStream( (unsigned int)&(*particleSystems[i1]), out, info ); + } else { + if ( particleSystems[i1] != NULL ) { + NifStream( link_map.find( StaticCast<NiObject>(particleSystems[i1]) )->second, out, info ); + } else { + NifStream( 0xFFFFFFFF, out, info ); + } + } + }; + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSMasterParticleSystem::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiNode::asString(); + numParticleSystems = (int)(particleSystems.size()); + out << " Max Emitter Objects: " << maxEmitterObjects << endl; + out << " Num Particle Systems: " << numParticleSystems << endl; + array_output_count = 0; + for (unsigned int i1 = 0; i1 < particleSystems.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 Systems[" << i1 << "]: " << particleSystems[i1] << endl; + array_output_count++; + }; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSMasterParticleSystem::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::FixLinks( objects, link_stack, info ); + for (unsigned int i1 = 0; i1 < particleSystems.size(); i1++) { + particleSystems[i1] = FixLink<NiAVObject>( objects, link_stack, info ); + }; + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSMasterParticleSystem::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiNode::GetRefs(); + for (unsigned int i1 = 0; i1 < particleSystems.size(); i1++) { + if ( particleSystems[i1] != NULL ) + refs.push_back(StaticCast<NiObject>(particleSystems[i1])); + }; + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSMaterialEmittanceMultController.cpp b/src/obj/BSMaterialEmittanceMultController.cpp new file mode 100644 index 00000000..5c733eb2 --- /dev/null +++ b/src/obj/BSMaterialEmittanceMultController.cpp @@ -0,0 +1,102 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSMaterialEmittanceMultController.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSMaterialEmittanceMultController::TYPE("BSMaterialEmittanceMultController", &NiFloatInterpController::TYPE ); + +BSMaterialEmittanceMultController::BSMaterialEmittanceMultController() { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSMaterialEmittanceMultController::~BSMaterialEmittanceMultController() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSMaterialEmittanceMultController::GetType() const { + return TYPE; +} + +NiObject * BSMaterialEmittanceMultController::Create() { + return new BSMaterialEmittanceMultController; +} + +void BSMaterialEmittanceMultController::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiFloatInterpController::Read( in, link_stack, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSMaterialEmittanceMultController::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiFloatInterpController::Write( out, link_map, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSMaterialEmittanceMultController::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiFloatInterpController::asString(); + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSMaterialEmittanceMultController::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiFloatInterpController::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSMaterialEmittanceMultController::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiFloatInterpController::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSMultiBound.cpp b/src/obj/BSMultiBound.cpp new file mode 100644 index 00000000..5adfe0f6 --- /dev/null +++ b/src/obj/BSMultiBound.cpp @@ -0,0 +1,105 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSMultiBound.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSMultiBound::TYPE("BSMultiBound", &NiObject::TYPE ); + +BSMultiBound::BSMultiBound() : unknownInt1((int)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSMultiBound::~BSMultiBound() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSMultiBound::GetType() const { + return TYPE; +} + +NiObject * BSMultiBound::Create() { + return new BSMultiBound; +} + +void BSMultiBound::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiObject::Read( in, link_stack, info ); + NifStream( unknownInt1, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSMultiBound::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiObject::Write( out, link_map, info ); + NifStream( unknownInt1, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSMultiBound::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiObject::asString(); + out << " Unknown Int 1: " << unknownInt1 << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSMultiBound::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiObject::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSMultiBound::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiObject::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSMultiBoundAABB.cpp b/src/obj/BSMultiBoundAABB.cpp new file mode 100644 index 00000000..043cea04 --- /dev/null +++ b/src/obj/BSMultiBoundAABB.cpp @@ -0,0 +1,120 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSMultiBoundAABB.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSMultiBoundAABB::TYPE("BSMultiBoundAABB", &NiObject::TYPE ); + +BSMultiBoundAABB::BSMultiBoundAABB() { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSMultiBoundAABB::~BSMultiBoundAABB() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSMultiBoundAABB::GetType() const { + return TYPE; +} + +NiObject * BSMultiBoundAABB::Create() { + return new BSMultiBoundAABB; +} + +void BSMultiBoundAABB::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiObject::Read( in, link_stack, info ); + for (unsigned int i1 = 0; i1 < 6; i1++) { + NifStream( unknownFloats1[i1], in, info ); + }; + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSMultiBoundAABB::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiObject::Write( out, link_map, info ); + for (unsigned int i1 = 0; i1 < 6; i1++) { + NifStream( unknownFloats1[i1], out, info ); + }; + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSMultiBoundAABB::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiObject::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 1[" << i1 << "]: " << unknownFloats1[i1] << endl; + array_output_count++; + }; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSMultiBoundAABB::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiObject::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSMultiBoundAABB::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiObject::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSMultiBoundNode.cpp b/src/obj/BSMultiBoundNode.cpp new file mode 100644 index 00000000..51e88d73 --- /dev/null +++ b/src/obj/BSMultiBoundNode.cpp @@ -0,0 +1,105 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSMultiBoundNode.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSMultiBoundNode::TYPE("BSMultiBoundNode", &NiNode::TYPE ); + +BSMultiBoundNode::BSMultiBoundNode() : unknownInt1((int)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSMultiBoundNode::~BSMultiBoundNode() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSMultiBoundNode::GetType() const { + return TYPE; +} + +NiObject * BSMultiBoundNode::Create() { + return new BSMultiBoundNode; +} + +void BSMultiBoundNode::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::Read( in, link_stack, info ); + NifStream( unknownInt1, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSMultiBoundNode::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::Write( out, link_map, info ); + NifStream( unknownInt1, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSMultiBoundNode::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiNode::asString(); + out << " Unknown Int 1: " << unknownInt1 << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSMultiBoundNode::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSMultiBoundNode::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiNode::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSMultiBoundSphere.cpp b/src/obj/BSMultiBoundSphere.cpp new file mode 100644 index 00000000..0016636c --- /dev/null +++ b/src/obj/BSMultiBoundSphere.cpp @@ -0,0 +1,114 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSMultiBoundSphere.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSMultiBoundSphere::TYPE("BSMultiBoundSphere", &NiObject::TYPE ); + +BSMultiBoundSphere::BSMultiBoundSphere() : unknownInt1((int)0), unknownInt2((int)0), unknownInt3((int)0), radius(0.0f) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSMultiBoundSphere::~BSMultiBoundSphere() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSMultiBoundSphere::GetType() const { + return TYPE; +} + +NiObject * BSMultiBoundSphere::Create() { + return new BSMultiBoundSphere; +} + +void BSMultiBoundSphere::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiObject::Read( in, link_stack, info ); + NifStream( unknownInt1, in, info ); + NifStream( unknownInt2, in, info ); + NifStream( unknownInt3, in, info ); + NifStream( radius, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSMultiBoundSphere::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiObject::Write( out, link_map, info ); + NifStream( unknownInt1, out, info ); + NifStream( unknownInt2, out, info ); + NifStream( unknownInt3, out, info ); + NifStream( radius, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSMultiBoundSphere::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiObject::asString(); + out << " Unknown Int 1: " << unknownInt1 << endl; + out << " Unknown Int 2: " << unknownInt2 << endl; + out << " Unknown Int 3: " << unknownInt3 << endl; + out << " Radius: " << radius << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSMultiBoundSphere::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiObject::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSMultiBoundSphere::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiObject::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSOrderedNode.cpp b/src/obj/BSOrderedNode.cpp new file mode 100644 index 00000000..cc7ff015 --- /dev/null +++ b/src/obj/BSOrderedNode.cpp @@ -0,0 +1,108 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSOrderedNode.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSOrderedNode::TYPE("BSOrderedNode", &NiNode::TYPE ); + +BSOrderedNode::BSOrderedNode() : isStaticBound((byte)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSOrderedNode::~BSOrderedNode() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSOrderedNode::GetType() const { + return TYPE; +} + +NiObject * BSOrderedNode::Create() { + return new BSOrderedNode; +} + +void BSOrderedNode::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::Read( in, link_stack, info ); + NifStream( alphaSortBound, in, info ); + NifStream( isStaticBound, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSOrderedNode::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::Write( out, link_map, info ); + NifStream( alphaSortBound, out, info ); + NifStream( isStaticBound, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSOrderedNode::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiNode::asString(); + out << " Alpha Sort Bound: " << alphaSortBound << endl; + out << " Is Static Bound: " << isStaticBound << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSOrderedNode::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSOrderedNode::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiNode::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSPSysMultiTargetEmitterCtlr.cpp b/src/obj/BSPSysMultiTargetEmitterCtlr.cpp new file mode 100644 index 00000000..40960ca5 --- /dev/null +++ b/src/obj/BSPSysMultiTargetEmitterCtlr.cpp @@ -0,0 +1,153 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSPSysMultiTargetEmitterCtlr.h" +#include "../../include/obj/NiPSysEmitterCtlrData.h" +#include "../../include/obj/NiInterpolator.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSPSysMultiTargetEmitterCtlr::TYPE("BSPSysMultiTargetEmitterCtlr", &NiPSysModifierCtlr::TYPE ); + +BSPSysMultiTargetEmitterCtlr::BSPSysMultiTargetEmitterCtlr() : data(NULL), visibilityInterpolator(NULL), unknownShort1((short)0), unknownInt1((int)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSPSysMultiTargetEmitterCtlr::~BSPSysMultiTargetEmitterCtlr() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSPSysMultiTargetEmitterCtlr::GetType() const { + return TYPE; +} + +NiObject * BSPSysMultiTargetEmitterCtlr::Create() { + return new BSPSysMultiTargetEmitterCtlr; +} + +void BSPSysMultiTargetEmitterCtlr::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + 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 ); + }; + NifStream( unknownShort1, in, info ); + NifStream( unknownInt1, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSPSysMultiTargetEmitterCtlr::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiPSysModifierCtlr::Write( out, link_map, info ); + if ( info.version <= 0x0A010000 ) { + if ( info.version < VER_3_3_0_13 ) { + NifStream( (unsigned int)&(*data), out, info ); + } else { + if ( data != NULL ) { + NifStream( link_map.find( StaticCast<NiObject>(data) )->second, out, info ); + } else { + NifStream( 0xFFFFFFFF, out, info ); + } + } + }; + if ( info.version >= 0x0A020000 ) { + if ( info.version < VER_3_3_0_13 ) { + NifStream( (unsigned int)&(*visibilityInterpolator), out, info ); + } else { + if ( visibilityInterpolator != NULL ) { + NifStream( link_map.find( StaticCast<NiObject>(visibilityInterpolator) )->second, out, info ); + } else { + NifStream( 0xFFFFFFFF, out, info ); + } + } + }; + NifStream( unknownShort1, out, info ); + NifStream( unknownInt1, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSPSysMultiTargetEmitterCtlr::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiPSysModifierCtlr::asString(); + out << " Data: " << data << endl; + out << " Visibility Interpolator: " << visibilityInterpolator << endl; + out << " Unknown Short 1: " << unknownShort1 << endl; + out << " Unknown Int 1: " << unknownInt1 << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSPSysMultiTargetEmitterCtlr::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + 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 ); + }; + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSPSysMultiTargetEmitterCtlr::GetRefs() 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; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSPSysSimpleColorModifier.cpp b/src/obj/BSPSysSimpleColorModifier.cpp new file mode 100644 index 00000000..02c2f593 --- /dev/null +++ b/src/obj/BSPSysSimpleColorModifier.cpp @@ -0,0 +1,138 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSPSysSimpleColorModifier.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSPSysSimpleColorModifier::TYPE("BSPSysSimpleColorModifier", &NiPSysModifier::TYPE ); + +BSPSysSimpleColorModifier::BSPSysSimpleColorModifier() : fadeInPercent(0.0f), fadeOutPercent(0.0f), color1EndPercent((int)0), color1StartPercent((int)0), color2EndPercent((int)0), color2StartPercent((int)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSPSysSimpleColorModifier::~BSPSysSimpleColorModifier() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSPSysSimpleColorModifier::GetType() const { + return TYPE; +} + +NiObject * BSPSysSimpleColorModifier::Create() { + return new BSPSysSimpleColorModifier; +} + +void BSPSysSimpleColorModifier::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiPSysModifier::Read( in, link_stack, info ); + NifStream( fadeInPercent, in, info ); + NifStream( fadeOutPercent, in, info ); + NifStream( color1EndPercent, in, info ); + NifStream( color1StartPercent, in, info ); + NifStream( color2EndPercent, in, info ); + NifStream( color2StartPercent, in, info ); + for (unsigned int i1 = 0; i1 < 3; i1++) { + NifStream( colors[i1], in, info ); + }; + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSPSysSimpleColorModifier::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiPSysModifier::Write( out, link_map, info ); + NifStream( fadeInPercent, out, info ); + NifStream( fadeOutPercent, out, info ); + NifStream( color1EndPercent, out, info ); + NifStream( color1StartPercent, out, info ); + NifStream( color2EndPercent, out, info ); + NifStream( color2StartPercent, out, info ); + for (unsigned int i1 = 0; i1 < 3; i1++) { + NifStream( colors[i1], out, info ); + }; + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSPSysSimpleColorModifier::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiPSysModifier::asString(); + out << " Fade In Percent: " << fadeInPercent << endl; + out << " Fade out Percent: " << fadeOutPercent << endl; + out << " Color 1 End Percent: " << color1EndPercent << endl; + out << " Color 1 Start Percent: " << color1StartPercent << endl; + out << " Color 2 End Percent: " << color2EndPercent << endl; + out << " Color 2 Start Percent: " << color2StartPercent << 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 << " Colors[" << i1 << "]: " << colors[i1] << endl; + array_output_count++; + }; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSPSysSimpleColorModifier::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiPSysModifier::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSPSysSimpleColorModifier::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiPSysModifier::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSPSysStripUpdateModifier.cpp b/src/obj/BSPSysStripUpdateModifier.cpp new file mode 100644 index 00000000..cddbd480 --- /dev/null +++ b/src/obj/BSPSysStripUpdateModifier.cpp @@ -0,0 +1,105 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSPSysStripUpdateModifier.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSPSysStripUpdateModifier::TYPE("BSPSysStripUpdateModifier", &NiPSysModifier::TYPE ); + +BSPSysStripUpdateModifier::BSPSysStripUpdateModifier() : updateDeltaTime(0.0f) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSPSysStripUpdateModifier::~BSPSysStripUpdateModifier() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSPSysStripUpdateModifier::GetType() const { + return TYPE; +} + +NiObject * BSPSysStripUpdateModifier::Create() { + return new BSPSysStripUpdateModifier; +} + +void BSPSysStripUpdateModifier::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiPSysModifier::Read( in, link_stack, info ); + NifStream( updateDeltaTime, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSPSysStripUpdateModifier::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiPSysModifier::Write( out, link_map, info ); + NifStream( updateDeltaTime, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSPSysStripUpdateModifier::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiPSysModifier::asString(); + out << " Update Delta Time: " << updateDeltaTime << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSPSysStripUpdateModifier::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiPSysModifier::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSPSysStripUpdateModifier::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiPSysModifier::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSRefractionFirePeriodController.cpp b/src/obj/BSRefractionFirePeriodController.cpp new file mode 100644 index 00000000..4320044e --- /dev/null +++ b/src/obj/BSRefractionFirePeriodController.cpp @@ -0,0 +1,102 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSRefractionFirePeriodController.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSRefractionFirePeriodController::TYPE("BSRefractionFirePeriodController", &NiTimeController::TYPE ); + +BSRefractionFirePeriodController::BSRefractionFirePeriodController() { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSRefractionFirePeriodController::~BSRefractionFirePeriodController() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSRefractionFirePeriodController::GetType() const { + return TYPE; +} + +NiObject * BSRefractionFirePeriodController::Create() { + return new BSRefractionFirePeriodController; +} + +void BSRefractionFirePeriodController::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiTimeController::Read( in, link_stack, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSRefractionFirePeriodController::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiTimeController::Write( out, link_map, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSRefractionFirePeriodController::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiTimeController::asString(); + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSRefractionFirePeriodController::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiTimeController::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSRefractionFirePeriodController::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiTimeController::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSRefractionStrengthController.cpp b/src/obj/BSRefractionStrengthController.cpp new file mode 100644 index 00000000..3c4d5d40 --- /dev/null +++ b/src/obj/BSRefractionStrengthController.cpp @@ -0,0 +1,102 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSRefractionStrengthController.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSRefractionStrengthController::TYPE("BSRefractionStrengthController", &NiFloatInterpController::TYPE ); + +BSRefractionStrengthController::BSRefractionStrengthController() { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSRefractionStrengthController::~BSRefractionStrengthController() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSRefractionStrengthController::GetType() const { + return TYPE; +} + +NiObject * BSRefractionStrengthController::Create() { + return new BSRefractionStrengthController; +} + +void BSRefractionStrengthController::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiFloatInterpController::Read( in, link_stack, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSRefractionStrengthController::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiFloatInterpController::Write( out, link_map, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSRefractionStrengthController::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiFloatInterpController::asString(); + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSRefractionStrengthController::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiFloatInterpController::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSRefractionStrengthController::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiFloatInterpController::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSSegmentedTriShape.cpp b/src/obj/BSSegmentedTriShape.cpp new file mode 100644 index 00000000..c0d21fab --- /dev/null +++ b/src/obj/BSSegmentedTriShape.cpp @@ -0,0 +1,129 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSSegmentedTriShape.h" +#include "../../include/gen/BSSegmentedTriangle.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSSegmentedTriShape::TYPE("BSSegmentedTriShape", &NiTriShape::TYPE ); + +BSSegmentedTriShape::BSSegmentedTriShape() : numSegTriangles((int)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSSegmentedTriShape::~BSSegmentedTriShape() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSSegmentedTriShape::GetType() const { + return TYPE; +} + +NiObject * BSSegmentedTriShape::Create() { + return new BSSegmentedTriShape; +} + +void BSSegmentedTriShape::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiTriShape::Read( in, link_stack, info ); + NifStream( numSegTriangles, in, info ); + segTriangles.resize(numSegTriangles); + for (unsigned int i1 = 0; i1 < segTriangles.size(); i1++) { + NifStream( segTriangles[i1].unknownInt1, in, info ); + NifStream( segTriangles[i1].unknownInt2, in, info ); + NifStream( segTriangles[i1].unknownByte1, in, info ); + }; + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSSegmentedTriShape::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiTriShape::Write( out, link_map, info ); + numSegTriangles = (int)(segTriangles.size()); + NifStream( numSegTriangles, out, info ); + for (unsigned int i1 = 0; i1 < segTriangles.size(); i1++) { + NifStream( segTriangles[i1].unknownInt1, out, info ); + NifStream( segTriangles[i1].unknownInt2, out, info ); + NifStream( segTriangles[i1].unknownByte1, out, info ); + }; + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSSegmentedTriShape::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiTriShape::asString(); + numSegTriangles = (int)(segTriangles.size()); + out << " Num Seg Triangles: " << numSegTriangles << endl; + array_output_count = 0; + for (unsigned int i1 = 0; i1 < segTriangles.size(); i1++) { + if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { + out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; + break; + }; + out << " Unknown Int 1: " << segTriangles[i1].unknownInt1 << endl; + out << " Unknown Int 2: " << segTriangles[i1].unknownInt2 << endl; + out << " Unknown Byte 1: " << segTriangles[i1].unknownByte1 << endl; + }; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSSegmentedTriShape::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiTriShape::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSSegmentedTriShape::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiTriShape::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSShaderLightingProperty.cpp b/src/obj/BSShaderLightingProperty.cpp new file mode 100644 index 00000000..78eb0ef3 --- /dev/null +++ b/src/obj/BSShaderLightingProperty.cpp @@ -0,0 +1,135 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSShaderLightingProperty.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSShaderLightingProperty::TYPE("BSShaderLightingProperty", &NiProperty::TYPE ); + +BSShaderLightingProperty::BSShaderLightingProperty() : flags((unsigned short)0), unknownInt1((int)0), unknownInt2((int)0), unknownInt3((int)0), unknownFloat1(0.0f), unknownInt5((int)0), unknownInt6((int)0), unknownInt7((int)0), unknownInt8((int)0), unknownFloat2(0.0f) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSShaderLightingProperty::~BSShaderLightingProperty() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSShaderLightingProperty::GetType() const { + return TYPE; +} + +NiObject * BSShaderLightingProperty::Create() { + return new BSShaderLightingProperty; +} + +void BSShaderLightingProperty::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiProperty::Read( in, link_stack, info ); + NifStream( flags, in, info ); + NifStream( unknownInt1, in, info ); + NifStream( unknownInt2, in, info ); + NifStream( unknownInt3, in, info ); + NifStream( unknownFloat1, in, info ); + NifStream( unknownInt5, in, info ); + NifStream( fileName, in, info ); + NifStream( unknownInt6, in, info ); + NifStream( unknownInt7, in, info ); + NifStream( unknownInt8, in, info ); + NifStream( unknownFloat2, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSShaderLightingProperty::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiProperty::Write( out, link_map, info ); + NifStream( flags, out, info ); + NifStream( unknownInt1, out, info ); + NifStream( unknownInt2, out, info ); + NifStream( unknownInt3, out, info ); + NifStream( unknownFloat1, out, info ); + NifStream( unknownInt5, out, info ); + NifStream( fileName, out, info ); + NifStream( unknownInt6, out, info ); + NifStream( unknownInt7, out, info ); + NifStream( unknownInt8, out, info ); + NifStream( unknownFloat2, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSShaderLightingProperty::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiProperty::asString(); + out << " Flags: " << flags << endl; + out << " Unknown Int 1: " << unknownInt1 << endl; + out << " Unknown Int 2: " << unknownInt2 << endl; + out << " Unknown Int 3: " << unknownInt3 << endl; + out << " Unknown Float 1: " << unknownFloat1 << endl; + out << " Unknown Int 5: " << unknownInt5 << endl; + out << " File Name: " << fileName << endl; + out << " Unknown Int 6: " << unknownInt6 << endl; + out << " Unknown Int 7: " << unknownInt7 << endl; + out << " Unknown Int 8: " << unknownInt8 << endl; + out << " Unknown Float 2: " << unknownFloat2 << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSShaderLightingProperty::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiProperty::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSShaderLightingProperty::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiProperty::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSShaderNoLightingProperty.cpp b/src/obj/BSShaderNoLightingProperty.cpp new file mode 100644 index 00000000..bbda3709 --- /dev/null +++ b/src/obj/BSShaderNoLightingProperty.cpp @@ -0,0 +1,139 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSShaderNoLightingProperty.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSShaderNoLightingProperty::TYPE("BSShaderNoLightingProperty", &NiProperty::TYPE ); + +BSShaderNoLightingProperty::BSShaderNoLightingProperty() : flags((unsigned short)0), unknownInt1((int)0), unknownInt2((int)0), unknownInt3((int)0), unknownFloat1(0.0f), unknownInt5((int)0), unknownInt6((int)0), unknownInt7((int)0), unknownInt8((int)0), unknownFloat2(0.0f) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSShaderNoLightingProperty::~BSShaderNoLightingProperty() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSShaderNoLightingProperty::GetType() const { + return TYPE; +} + +NiObject * BSShaderNoLightingProperty::Create() { + return new BSShaderNoLightingProperty; +} + +void BSShaderNoLightingProperty::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiProperty::Read( in, link_stack, info ); + NifStream( flags, in, info ); + NifStream( unknownInt1, in, info ); + NifStream( unknownInt2, in, info ); + NifStream( unknownInt3, in, info ); + NifStream( unknownFloat1, in, info ); + NifStream( unknownInt5, in, info ); + NifStream( fileName, in, info ); + if ( ((info.userVersion == 11) && (info.userVersion2 > 26)) ) { + NifStream( unknownInt6, in, info ); + NifStream( unknownInt7, in, info ); + NifStream( unknownInt8, in, info ); + NifStream( unknownFloat2, in, info ); + }; + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSShaderNoLightingProperty::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiProperty::Write( out, link_map, info ); + NifStream( flags, out, info ); + NifStream( unknownInt1, out, info ); + NifStream( unknownInt2, out, info ); + NifStream( unknownInt3, out, info ); + NifStream( unknownFloat1, out, info ); + NifStream( unknownInt5, out, info ); + NifStream( fileName, out, info ); + if ( ((info.userVersion == 11) && (info.userVersion2 > 26)) ) { + NifStream( unknownInt6, out, info ); + NifStream( unknownInt7, out, info ); + NifStream( unknownInt8, out, info ); + NifStream( unknownFloat2, out, info ); + }; + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSShaderNoLightingProperty::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiProperty::asString(); + out << " Flags: " << flags << endl; + out << " Unknown Int 1: " << unknownInt1 << endl; + out << " Unknown Int 2: " << unknownInt2 << endl; + out << " Unknown Int 3: " << unknownInt3 << endl; + out << " Unknown Float 1: " << unknownFloat1 << endl; + out << " Unknown Int 5: " << unknownInt5 << endl; + out << " File Name: " << fileName << endl; + out << " Unknown Int 6: " << unknownInt6 << endl; + out << " Unknown Int 7: " << unknownInt7 << endl; + out << " Unknown Int 8: " << unknownInt8 << endl; + out << " Unknown Float 2: " << unknownFloat2 << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSShaderNoLightingProperty::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiProperty::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSShaderNoLightingProperty::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiProperty::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSShaderPPLightingProperty.cpp b/src/obj/BSShaderPPLightingProperty.cpp new file mode 100644 index 00000000..a6d3718c --- /dev/null +++ b/src/obj/BSShaderPPLightingProperty.cpp @@ -0,0 +1,150 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSShaderPPLightingProperty.h" +#include "../../include/obj/BSShaderTextureSet.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSShaderPPLightingProperty::TYPE("BSShaderPPLightingProperty", &NiShadeProperty::TYPE ); + +BSShaderPPLightingProperty::BSShaderPPLightingProperty() : unknownInt1((int)0), unknownInt2((int)0), unknownInt3((int)0), unknownInt4((int)0), unknownInt5((int)0), textureSet(NULL), unknownInt6((int)0), unknownInt7((int)0), unknownInt8((int)0), unknownInt9((int)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSShaderPPLightingProperty::~BSShaderPPLightingProperty() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSShaderPPLightingProperty::GetType() const { + return TYPE; +} + +NiObject * BSShaderPPLightingProperty::Create() { + return new BSShaderPPLightingProperty; +} + +void BSShaderPPLightingProperty::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + unsigned int block_num; + NiShadeProperty::Read( in, link_stack, info ); + NifStream( unknownInt1, in, info ); + NifStream( unknownInt2, in, info ); + NifStream( unknownInt3, in, info ); + NifStream( unknownInt4, in, info ); + NifStream( unknownInt5, in, info ); + NifStream( block_num, in, info ); + link_stack.push_back( block_num ); + if ( ((info.userVersion == 11) && (info.userVersion2 > 14)) ) { + NifStream( unknownInt6, in, info ); + NifStream( unknownInt7, in, info ); + NifStream( unknownInt8, in, info ); + NifStream( unknownInt9, in, info ); + }; + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSShaderPPLightingProperty::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::Write( out, link_map, info ); + NifStream( unknownInt1, out, info ); + NifStream( unknownInt2, out, info ); + NifStream( unknownInt3, out, info ); + NifStream( unknownInt4, out, info ); + NifStream( unknownInt5, out, info ); + if ( info.version < VER_3_3_0_13 ) { + NifStream( (unsigned int)&(*textureSet), out, info ); + } else { + if ( textureSet != NULL ) { + NifStream( link_map.find( StaticCast<NiObject>(textureSet) )->second, out, info ); + } else { + NifStream( 0xFFFFFFFF, out, info ); + } + } + if ( ((info.userVersion == 11) && (info.userVersion2 > 14)) ) { + NifStream( unknownInt6, out, info ); + NifStream( unknownInt7, out, info ); + NifStream( unknownInt8, out, info ); + NifStream( unknownInt9, out, info ); + }; + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSShaderPPLightingProperty::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiShadeProperty::asString(); + out << " Unknown Int 1: " << unknownInt1 << endl; + out << " Unknown Int 2: " << unknownInt2 << endl; + out << " Unknown Int 3: " << unknownInt3 << endl; + out << " Unknown Int 4: " << unknownInt4 << endl; + out << " Unknown Int 5: " << unknownInt5 << endl; + out << " Texture Set: " << textureSet << endl; + out << " Unknown Int 6: " << unknownInt6 << endl; + out << " Unknown Int 7: " << unknownInt7 << endl; + out << " Unknown Int 8: " << unknownInt8 << endl; + out << " Unknown Int 9: " << unknownInt9 << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSShaderPPLightingProperty::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::FixLinks( objects, link_stack, info ); + textureSet = FixLink<BSShaderTextureSet>( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSShaderPPLightingProperty::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiShadeProperty::GetRefs(); + if ( textureSet != NULL ) + refs.push_back(StaticCast<NiObject>(textureSet)); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSShaderProperty.cpp b/src/obj/BSShaderProperty.cpp new file mode 100644 index 00000000..6641c44e --- /dev/null +++ b/src/obj/BSShaderProperty.cpp @@ -0,0 +1,102 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSShaderProperty.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSShaderProperty::TYPE("BSShaderProperty", &NiProperty::TYPE ); + +BSShaderProperty::BSShaderProperty() { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSShaderProperty::~BSShaderProperty() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSShaderProperty::GetType() const { + return TYPE; +} + +NiObject * BSShaderProperty::Create() { + return new BSShaderProperty; +} + +void BSShaderProperty::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiProperty::Read( in, link_stack, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSShaderProperty::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiProperty::Write( out, link_map, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSShaderProperty::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiProperty::asString(); + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSShaderProperty::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiProperty::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSShaderProperty::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiProperty::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSShaderTextureSet.cpp b/src/obj/BSShaderTextureSet.cpp new file mode 100644 index 00000000..d25c77c5 --- /dev/null +++ b/src/obj/BSShaderTextureSet.cpp @@ -0,0 +1,126 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSShaderTextureSet.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSShaderTextureSet::TYPE("BSShaderTextureSet", &NiObject::TYPE ); + +BSShaderTextureSet::BSShaderTextureSet() : numTextures((int)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSShaderTextureSet::~BSShaderTextureSet() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSShaderTextureSet::GetType() const { + return TYPE; +} + +NiObject * BSShaderTextureSet::Create() { + return new BSShaderTextureSet; +} + +void BSShaderTextureSet::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiObject::Read( in, link_stack, info ); + NifStream( numTextures, in, info ); + textures.resize(numTextures); + for (unsigned int i1 = 0; i1 < textures.size(); i1++) { + NifStream( textures[i1], in, info ); + }; + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSShaderTextureSet::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiObject::Write( out, link_map, info ); + numTextures = (int)(textures.size()); + NifStream( numTextures, out, info ); + for (unsigned int i1 = 0; i1 < textures.size(); i1++) { + NifStream( textures[i1], out, info ); + }; + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSShaderTextureSet::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiObject::asString(); + numTextures = (int)(textures.size()); + out << " Num Textures: " << numTextures << endl; + array_output_count = 0; + for (unsigned int i1 = 0; i1 < textures.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 << " Textures[" << i1 << "]: " << textures[i1] << endl; + array_output_count++; + }; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSShaderTextureSet::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiObject::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSShaderTextureSet::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiObject::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSStripPSysData.cpp b/src/obj/BSStripPSysData.cpp new file mode 100644 index 00000000..21605dab --- /dev/null +++ b/src/obj/BSStripPSysData.cpp @@ -0,0 +1,114 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSStripPSysData.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSStripPSysData::TYPE("BSStripPSysData", &NiPSysData::TYPE ); + +BSStripPSysData::BSStripPSysData() : unknownShort1((short)0), unknownByte1((byte)0), unknownInt2((int)0), unknownInt3((int)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSStripPSysData::~BSStripPSysData() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSStripPSysData::GetType() const { + return TYPE; +} + +NiObject * BSStripPSysData::Create() { + return new BSStripPSysData; +} + +void BSStripPSysData::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiPSysData::Read( in, link_stack, info ); + NifStream( unknownShort1, in, info ); + NifStream( unknownByte1, in, info ); + NifStream( unknownInt2, in, info ); + NifStream( unknownInt3, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSStripPSysData::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiPSysData::Write( out, link_map, info ); + NifStream( unknownShort1, out, info ); + NifStream( unknownByte1, out, info ); + NifStream( unknownInt2, out, info ); + NifStream( unknownInt3, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSStripPSysData::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiPSysData::asString(); + out << " Unknown Short 1: " << unknownShort1 << endl; + out << " Unknown byte 1: " << unknownByte1 << endl; + out << " Unknown Int 2: " << unknownInt2 << endl; + out << " Unknown Int 3: " << unknownInt3 << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSStripPSysData::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiPSysData::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSStripPSysData::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiPSysData::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSStripParticleSystem.cpp b/src/obj/BSStripParticleSystem.cpp new file mode 100644 index 00000000..bd3c2fa9 --- /dev/null +++ b/src/obj/BSStripParticleSystem.cpp @@ -0,0 +1,102 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSStripParticleSystem.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSStripParticleSystem::TYPE("BSStripParticleSystem", &NiParticleSystem::TYPE ); + +BSStripParticleSystem::BSStripParticleSystem() { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSStripParticleSystem::~BSStripParticleSystem() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSStripParticleSystem::GetType() const { + return TYPE; +} + +NiObject * BSStripParticleSystem::Create() { + return new BSStripParticleSystem; +} + +void BSStripParticleSystem::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiParticleSystem::Read( in, link_stack, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSStripParticleSystem::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiParticleSystem::Write( out, link_map, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSStripParticleSystem::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiParticleSystem::asString(); + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSStripParticleSystem::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiParticleSystem::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSStripParticleSystem::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiParticleSystem::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSTreadTransfInterpolator.cpp b/src/obj/BSTreadTransfInterpolator.cpp new file mode 100644 index 00000000..0a8ba6be --- /dev/null +++ b/src/obj/BSTreadTransfInterpolator.cpp @@ -0,0 +1,162 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSTreadTransfInterpolator.h" +#include "../../include/gen/BSTreadTransfInfo.h" +#include "../../include/gen/BSTreadTransfSubInfo.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSTreadTransfInterpolator::TYPE("BSTreadTransfInterpolator", &NiInterpolator::TYPE ); + +BSTreadTransfInterpolator::BSTreadTransfInterpolator() : numTransfers((int)0), unknownInt1((int)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSTreadTransfInterpolator::~BSTreadTransfInterpolator() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSTreadTransfInterpolator::GetType() const { + return TYPE; +} + +NiObject * BSTreadTransfInterpolator::Create() { + return new BSTreadTransfInterpolator; +} + +void BSTreadTransfInterpolator::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiInterpolator::Read( in, link_stack, info ); + NifStream( numTransfers, in, info ); + treadTransferInfo.resize(numTransfers); + for (unsigned int i1 = 0; i1 < treadTransferInfo.size(); i1++) { + NifStream( treadTransferInfo[i1].unknownFloat1, in, info ); + for (unsigned int i2 = 0; i2 < 2; i2++) { + NifStream( treadTransferInfo[i1].data[i2].unknownInt1, in, info ); + NifStream( treadTransferInfo[i1].data[i2].unknownInt2, in, info ); + NifStream( treadTransferInfo[i1].data[i2].unknownInt3, in, info ); + NifStream( treadTransferInfo[i1].data[i2].unknownInt4, in, info ); + NifStream( treadTransferInfo[i1].data[i2].unknownInt5, in, info ); + NifStream( treadTransferInfo[i1].data[i2].unknownInt6, in, info ); + NifStream( treadTransferInfo[i1].data[i2].unknownInt7, in, info ); + NifStream( treadTransferInfo[i1].data[i2].unknownInt8, in, info ); + }; + }; + NifStream( unknownInt1, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSTreadTransfInterpolator::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiInterpolator::Write( out, link_map, info ); + numTransfers = (int)(treadTransferInfo.size()); + NifStream( numTransfers, out, info ); + for (unsigned int i1 = 0; i1 < treadTransferInfo.size(); i1++) { + NifStream( treadTransferInfo[i1].unknownFloat1, out, info ); + for (unsigned int i2 = 0; i2 < 2; i2++) { + NifStream( treadTransferInfo[i1].data[i2].unknownInt1, out, info ); + NifStream( treadTransferInfo[i1].data[i2].unknownInt2, out, info ); + NifStream( treadTransferInfo[i1].data[i2].unknownInt3, out, info ); + NifStream( treadTransferInfo[i1].data[i2].unknownInt4, out, info ); + NifStream( treadTransferInfo[i1].data[i2].unknownInt5, out, info ); + NifStream( treadTransferInfo[i1].data[i2].unknownInt6, out, info ); + NifStream( treadTransferInfo[i1].data[i2].unknownInt7, out, info ); + NifStream( treadTransferInfo[i1].data[i2].unknownInt8, out, info ); + }; + }; + NifStream( unknownInt1, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSTreadTransfInterpolator::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiInterpolator::asString(); + numTransfers = (int)(treadTransferInfo.size()); + out << " Num Transfers: " << numTransfers << endl; + array_output_count = 0; + for (unsigned int i1 = 0; i1 < treadTransferInfo.size(); i1++) { + if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { + out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; + break; + }; + out << " Unknown Float 1: " << treadTransferInfo[i1].unknownFloat1 << endl; + array_output_count = 0; + for (unsigned int i2 = 0; i2 < 2; i2++) { + if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { + out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; + break; + }; + out << " Unknown Int 1: " << treadTransferInfo[i1].data[i2].unknownInt1 << endl; + out << " Unknown Int 2: " << treadTransferInfo[i1].data[i2].unknownInt2 << endl; + out << " Unknown Int 3: " << treadTransferInfo[i1].data[i2].unknownInt3 << endl; + out << " Unknown Int 4: " << treadTransferInfo[i1].data[i2].unknownInt4 << endl; + out << " Unknown Int 5: " << treadTransferInfo[i1].data[i2].unknownInt5 << endl; + out << " Unknown Int 6: " << treadTransferInfo[i1].data[i2].unknownInt6 << endl; + out << " Unknown Int 7: " << treadTransferInfo[i1].data[i2].unknownInt7 << endl; + out << " Unknown Int 8: " << treadTransferInfo[i1].data[i2].unknownInt8 << endl; + }; + }; + out << " Unknown Int 1: " << unknownInt1 << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSTreadTransfInterpolator::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiInterpolator::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSTreadTransfInterpolator::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiInterpolator::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSValueNode.cpp b/src/obj/BSValueNode.cpp new file mode 100644 index 00000000..3433524e --- /dev/null +++ b/src/obj/BSValueNode.cpp @@ -0,0 +1,108 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSValueNode.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSValueNode::TYPE("BSValueNode", &NiNode::TYPE ); + +BSValueNode::BSValueNode() : value((int)0), unknownByte((byte)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSValueNode::~BSValueNode() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSValueNode::GetType() const { + return TYPE; +} + +NiObject * BSValueNode::Create() { + return new BSValueNode; +} + +void BSValueNode::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::Read( in, link_stack, info ); + NifStream( value, in, info ); + NifStream( unknownByte, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSValueNode::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::Write( out, link_map, info ); + NifStream( value, out, info ); + NifStream( unknownByte, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSValueNode::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiNode::asString(); + out << " Value: " << value << endl; + out << " Unknown byte: " << unknownByte << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSValueNode::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiNode::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSValueNode::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiNode::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/BSWArray.cpp b/src/obj/BSWArray.cpp new file mode 100644 index 00000000..4ec64c1c --- /dev/null +++ b/src/obj/BSWArray.cpp @@ -0,0 +1,126 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/BSWArray.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type BSWArray::TYPE("BSWArray", &NiExtraData::TYPE ); + +BSWArray::BSWArray() : numItems((int)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +BSWArray::~BSWArray() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & BSWArray::GetType() const { + return TYPE; +} + +NiObject * BSWArray::Create() { + return new BSWArray; +} + +void BSWArray::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiExtraData::Read( in, link_stack, info ); + NifStream( numItems, in, info ); + items.resize(numItems); + for (unsigned int i1 = 0; i1 < items.size(); i1++) { + NifStream( items[i1], in, info ); + }; + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSWArray::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiExtraData::Write( out, link_map, info ); + numItems = (int)(items.size()); + NifStream( numItems, out, info ); + for (unsigned int i1 = 0; i1 < items.size(); i1++) { + NifStream( items[i1], out, info ); + }; + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string BSWArray::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiExtraData::asString(); + numItems = (int)(items.size()); + out << " Num Items: " << numItems << endl; + array_output_count = 0; + for (unsigned int i1 = 0; i1 < items.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 << " Items[" << i1 << "]: " << items[i1] << endl; + array_output_count++; + }; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void BSWArray::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiExtraData::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> BSWArray::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiExtraData::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/DistantLODShaderProperty.cpp b/src/obj/DistantLODShaderProperty.cpp new file mode 100644 index 00000000..6f37d551 --- /dev/null +++ b/src/obj/DistantLODShaderProperty.cpp @@ -0,0 +1,102 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/DistantLODShaderProperty.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type DistantLODShaderProperty::TYPE("DistantLODShaderProperty", &NiShadeProperty::TYPE ); + +DistantLODShaderProperty::DistantLODShaderProperty() { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +DistantLODShaderProperty::~DistantLODShaderProperty() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & DistantLODShaderProperty::GetType() const { + return TYPE; +} + +NiObject * DistantLODShaderProperty::Create() { + return new DistantLODShaderProperty; +} + +void DistantLODShaderProperty::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::Read( in, link_stack, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void DistantLODShaderProperty::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::Write( out, link_map, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string DistantLODShaderProperty::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiShadeProperty::asString(); + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void DistantLODShaderProperty::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> DistantLODShaderProperty::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiShadeProperty::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/HairShaderProperty.cpp b/src/obj/HairShaderProperty.cpp new file mode 100644 index 00000000..efa1c9f4 --- /dev/null +++ b/src/obj/HairShaderProperty.cpp @@ -0,0 +1,102 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/HairShaderProperty.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type HairShaderProperty::TYPE("HairShaderProperty", &NiShadeProperty::TYPE ); + +HairShaderProperty::HairShaderProperty() { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +HairShaderProperty::~HairShaderProperty() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & HairShaderProperty::GetType() const { + return TYPE; +} + +NiObject * HairShaderProperty::Create() { + return new HairShaderProperty; +} + +void HairShaderProperty::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::Read( in, link_stack, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void HairShaderProperty::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::Write( out, link_map, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string HairShaderProperty::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiShadeProperty::asString(); + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void HairShaderProperty::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> HairShaderProperty::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiShadeProperty::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/Lighting30ShaderProperty.cpp b/src/obj/Lighting30ShaderProperty.cpp new file mode 100644 index 00000000..71baf838 --- /dev/null +++ b/src/obj/Lighting30ShaderProperty.cpp @@ -0,0 +1,132 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/Lighting30ShaderProperty.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type Lighting30ShaderProperty::TYPE("Lighting30ShaderProperty", &NiShadeProperty::TYPE ); + +Lighting30ShaderProperty::Lighting30ShaderProperty() : unknownInt1((int)0), unknownFloat1(0.0f), unknownInt2((int)0), unknownFloat2(0.0f), unknownInt3((int)0), unknownInt4((int)0), unknownInt5((int)0), unknownInt6((int)0), unknownFloat3(0.0f), unknownFloat4(0.0f) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +Lighting30ShaderProperty::~Lighting30ShaderProperty() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & Lighting30ShaderProperty::GetType() const { + return TYPE; +} + +NiObject * Lighting30ShaderProperty::Create() { + return new Lighting30ShaderProperty; +} + +void Lighting30ShaderProperty::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::Read( in, link_stack, info ); + NifStream( unknownInt1, in, info ); + NifStream( unknownFloat1, in, info ); + NifStream( unknownInt2, in, info ); + NifStream( unknownFloat2, in, info ); + NifStream( unknownInt3, in, info ); + NifStream( unknownInt4, in, info ); + NifStream( unknownInt5, in, info ); + NifStream( unknownInt6, in, info ); + NifStream( unknownFloat3, in, info ); + NifStream( unknownFloat4, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void Lighting30ShaderProperty::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::Write( out, link_map, info ); + NifStream( unknownInt1, out, info ); + NifStream( unknownFloat1, out, info ); + NifStream( unknownInt2, out, info ); + NifStream( unknownFloat2, out, info ); + NifStream( unknownInt3, out, info ); + NifStream( unknownInt4, out, info ); + NifStream( unknownInt5, out, info ); + NifStream( unknownInt6, out, info ); + NifStream( unknownFloat3, out, info ); + NifStream( unknownFloat4, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string Lighting30ShaderProperty::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiShadeProperty::asString(); + out << " Unknown Int 1: " << unknownInt1 << endl; + out << " Unknown Float 1: " << unknownFloat1 << endl; + out << " Unknown Int 2: " << unknownInt2 << endl; + out << " Unknown Float 2: " << unknownFloat2 << endl; + out << " Unknown Int 3: " << unknownInt3 << endl; + out << " Unknown Int 4: " << unknownInt4 << endl; + out << " Unknown Int 5: " << unknownInt5 << endl; + out << " Unknown Int 6: " << unknownInt6 << endl; + out << " Unknown Float 3: " << unknownFloat3 << endl; + out << " Unknown Float 4: " << unknownFloat4 << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void Lighting30ShaderProperty::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> Lighting30ShaderProperty::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiShadeProperty::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/Ni3dsAnimationNode.cpp b/src/obj/Ni3dsAnimationNode.cpp index 1c67c22f..2024d11b 100644 --- a/src/obj/Ni3dsAnimationNode.cpp +++ b/src/obj/Ni3dsAnimationNode.cpp @@ -70,13 +70,11 @@ void Ni3dsAnimationNode::Read( istream& in, list<unsigned int> & link_stack, con }; //--BEGIN POST-READ CUSTOM CODE--// - //--END CUSTOM CODE--// } void Ni3dsAnimationNode::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { //--BEGIN PRE-WRITE CUSTOM CODE--// - //--END CUSTOM CODE--// NiObject::Write( out, link_map, info ); @@ -109,13 +107,11 @@ void Ni3dsAnimationNode::Write( ostream& out, const map<NiObjectRef,unsigned int }; //--BEGIN POST-WRITE CUSTOM CODE--// - //--END CUSTOM CODE--// } std::string Ni3dsAnimationNode::asString( bool verbose ) const { //--BEGIN PRE-STRING CUSTOM CODE--// - //--END CUSTOM CODE--// stringstream out; @@ -170,13 +166,11 @@ std::string Ni3dsAnimationNode::asString( bool verbose ) const { return out.str(); //--BEGIN POST-STRING CUSTOM CODE--// - //--END CUSTOM CODE--// } void Ni3dsAnimationNode::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { //--BEGIN PRE-FIXLINKS CUSTOM CODE--// - //--END CUSTOM CODE--// NiObject::FixLinks( objects, link_stack, info ); @@ -185,7 +179,6 @@ void Ni3dsAnimationNode::FixLinks( const map<unsigned int,NiObjectRef> & objects }; //--BEGIN POST-FIXLINKS CUSTOM CODE--// - //--END CUSTOM CODE--// } @@ -198,5 +191,4 @@ std::list<NiObjectRef> Ni3dsAnimationNode::GetRefs() const { } //--BEGIN MISC CUSTOM CODE--// - //--END CUSTOM CODE--// diff --git a/src/obj/NiAVObject.cpp b/src/obj/NiAVObject.cpp index c5681137..f9570d2e 100644 --- a/src/obj/NiAVObject.cpp +++ b/src/obj/NiAVObject.cpp @@ -23,7 +23,7 @@ using namespace Niflib; //Definition of TYPE constant const Type NiAVObject::TYPE("NiAVObject", &NiObjectNET::TYPE ); -NiAVObject::NiAVObject() : flags((unsigned short)0), scale(1.0f), numProperties((unsigned int)0), unknown2((byte)0), hasBoundingBox(false), collisionObject(NULL) { +NiAVObject::NiAVObject() : flags((unsigned short)0), unknownShort1((unsigned short)0), scale(1.0f), numProperties((unsigned int)0), unknown2((byte)0), hasBoundingBox(false), collisionObject(NULL) { //--BEGIN CONSTRUCTOR CUSTOM CODE--// parent = NULL; @@ -62,6 +62,9 @@ void NiAVObject::Read( istream& in, list<unsigned int> & link_stack, const NifIn if ( info.version >= 0x03000000 ) { NifStream( flags, in, info ); }; + if ( ( info.version >= 0x14020007 ) && ( ((info.userVersion == 11) && (info.userVersion2 > 26)) ) ) { + NifStream( unknownShort1, in, info ); + }; NifStream( translation, in, info ); NifStream( rotation, in, info ); NifStream( scale, in, info ); @@ -107,6 +110,9 @@ void NiAVObject::Write( ostream& out, const map<NiObjectRef,unsigned int> & link if ( info.version >= 0x03000000 ) { NifStream( flags, out, info ); }; + if ( ( info.version >= 0x14020007 ) && ( ((info.userVersion == 11) && (info.userVersion2 > 26)) ) ) { + NifStream( unknownShort1, out, info ); + }; NifStream( translation, out, info ); NifStream( rotation, out, info ); NifStream( scale, out, info ); @@ -165,6 +171,7 @@ std::string NiAVObject::asString( bool verbose ) const { out << NiObjectNET::asString(); numProperties = (unsigned int)(properties.size()); out << " Flags: " << flags << endl; + out << " Unknown Short 1: " << unknownShort1 << endl; out << " Translation: " << translation << endl; out << " Rotation: " << rotation << endl; out << " Scale: " << scale << endl; diff --git a/src/obj/NiAdditionalGeometryData.cpp b/src/obj/NiAdditionalGeometryData.cpp new file mode 100644 index 00000000..19ad9c93 --- /dev/null +++ b/src/obj/NiAdditionalGeometryData.cpp @@ -0,0 +1,250 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/NiAdditionalGeometryData.h" +#include "../../include/gen/AdditionalDataInfo.h" +#include "../../include/gen/AdditionalDataBlock.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type NiAdditionalGeometryData::TYPE("NiAdditionalGeometryData", &NiObject::TYPE ); + +NiAdditionalGeometryData::NiAdditionalGeometryData() : numVertices((unsigned short)0), numBlockInfos((unsigned int)0), numBlocks((int)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +NiAdditionalGeometryData::~NiAdditionalGeometryData() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & NiAdditionalGeometryData::GetType() const { + return TYPE; +} + +NiObject * NiAdditionalGeometryData::Create() { + return new NiAdditionalGeometryData; +} + +void NiAdditionalGeometryData::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiObject::Read( in, link_stack, info ); + NifStream( numVertices, in, info ); + NifStream( numBlockInfos, in, info ); + blockInfos.resize(numBlockInfos); + for (unsigned int i1 = 0; i1 < blockInfos.size(); i1++) { + NifStream( blockInfos[i1].dataType, in, info ); + NifStream( blockInfos[i1].blockSize, in, info ); + NifStream( blockInfos[i1].numBlocks, in, info ); + NifStream( blockInfos[i1].blockSize2, in, info ); + NifStream( blockInfos[i1].blockIndex, in, info ); + NifStream( blockInfos[i1].unknownInt1, in, info ); + NifStream( blockInfos[i1].unknownByte1, in, info ); + }; + NifStream( numBlocks, in, info ); + blocks.resize(numBlocks); + for (unsigned int i1 = 0; i1 < blocks.size(); i1++) { + NifStream( blocks[i1].hasData, in, info ); + if ( blocks[i1].hasData ) { + NifStream( blocks[i1].blockSize, in, info ); + NifStream( blocks[i1].numBlocks, in, info ); + blocks[i1].blockOffsets.resize(blocks[i1].numBlocks); + for (unsigned int i3 = 0; i3 < blocks[i1].blockOffsets.size(); i3++) { + NifStream( blocks[i1].blockOffsets[i3], in, info ); + }; + NifStream( blocks[i1].numData, in, info ); + blocks[i1].dataSizes.resize(blocks[i1].numData); + for (unsigned int i3 = 0; i3 < blocks[i1].dataSizes.size(); i3++) { + NifStream( blocks[i1].dataSizes[i3], in, info ); + }; + blocks[i1].data.resize(blocks[i1].numData); + for (unsigned int i3 = 0; i3 < blocks[i1].data.size(); i3++) { + blocks[i1].data[i3].resize(blocks[i1].blockSize); + for (unsigned int i4 = 0; i4 < blocks[i1].data[i3].size(); i4++) { + NifStream( blocks[i1].data[i3][i4], in, info ); + }; + }; + }; + }; + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void NiAdditionalGeometryData::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiObject::Write( out, link_map, info ); + numBlocks = (int)(blocks.size()); + numBlockInfos = (unsigned int)(blockInfos.size()); + NifStream( numVertices, out, info ); + NifStream( numBlockInfos, out, info ); + for (unsigned int i1 = 0; i1 < blockInfos.size(); i1++) { + NifStream( blockInfos[i1].dataType, out, info ); + NifStream( blockInfos[i1].blockSize, out, info ); + NifStream( blockInfos[i1].numBlocks, out, info ); + NifStream( blockInfos[i1].blockSize2, out, info ); + NifStream( blockInfos[i1].blockIndex, out, info ); + NifStream( blockInfos[i1].unknownInt1, out, info ); + NifStream( blockInfos[i1].unknownByte1, out, info ); + }; + NifStream( numBlocks, out, info ); + for (unsigned int i1 = 0; i1 < blocks.size(); i1++) { + blocks[i1].numData = (int)(blocks[i1].dataSizes.size()); + blocks[i1].numBlocks = (int)(blocks[i1].blockOffsets.size()); + blocks[i1].blockSize = (int)((blocks[i1].data.size() > 0) ? blocks[i1].data[0].size() : 0); + NifStream( blocks[i1].hasData, out, info ); + if ( blocks[i1].hasData ) { + NifStream( blocks[i1].blockSize, out, info ); + NifStream( blocks[i1].numBlocks, out, info ); + for (unsigned int i3 = 0; i3 < blocks[i1].blockOffsets.size(); i3++) { + NifStream( blocks[i1].blockOffsets[i3], out, info ); + }; + NifStream( blocks[i1].numData, out, info ); + for (unsigned int i3 = 0; i3 < blocks[i1].dataSizes.size(); i3++) { + NifStream( blocks[i1].dataSizes[i3], out, info ); + }; + for (unsigned int i3 = 0; i3 < blocks[i1].data.size(); i3++) { + for (unsigned int i4 = 0; i4 < blocks[i1].data[i3].size(); i4++) { + NifStream( blocks[i1].data[i3][i4], out, info ); + }; + }; + }; + }; + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string NiAdditionalGeometryData::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiObject::asString(); + numBlocks = (int)(blocks.size()); + numBlockInfos = (unsigned int)(blockInfos.size()); + out << " Num Vertices: " << numVertices << endl; + out << " Num Block Infos: " << numBlockInfos << endl; + array_output_count = 0; + for (unsigned int i1 = 0; i1 < blockInfos.size(); i1++) { + if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { + out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; + break; + }; + out << " Data Type: " << blockInfos[i1].dataType << endl; + out << " Block Size: " << blockInfos[i1].blockSize << endl; + out << " Num Blocks: " << blockInfos[i1].numBlocks << endl; + out << " Block Size 2: " << blockInfos[i1].blockSize2 << endl; + out << " Block Index: " << blockInfos[i1].blockIndex << endl; + out << " Unknown Int 1: " << blockInfos[i1].unknownInt1 << endl; + out << " Unknown Byte 1: " << blockInfos[i1].unknownByte1 << endl; + }; + out << " Num Blocks: " << numBlocks << endl; + array_output_count = 0; + for (unsigned int i1 = 0; i1 < blocks.size(); i1++) { + if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { + out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; + break; + }; + blocks[i1].numData = (int)(blocks[i1].dataSizes.size()); + blocks[i1].numBlocks = (int)(blocks[i1].blockOffsets.size()); + blocks[i1].blockSize = (int)((blocks[i1].data.size() > 0) ? blocks[i1].data[0].size() : 0); + out << " Has Data: " << blocks[i1].hasData << endl; + if ( blocks[i1].hasData ) { + out << " Block Size: " << blocks[i1].blockSize << endl; + out << " Num Blocks: " << blocks[i1].numBlocks << endl; + array_output_count = 0; + for (unsigned int i3 = 0; i3 < blocks[i1].blockOffsets.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 << " Block Offsets[" << i3 << "]: " << blocks[i1].blockOffsets[i3] << endl; + array_output_count++; + }; + out << " Num Data: " << blocks[i1].numData << endl; + array_output_count = 0; + for (unsigned int i3 = 0; i3 < blocks[i1].dataSizes.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 << " Data Sizes[" << i3 << "]: " << blocks[i1].dataSizes[i3] << endl; + array_output_count++; + }; + array_output_count = 0; + for (unsigned int i3 = 0; i3 < blocks[i1].data.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 < blocks[i1].data[i3].size(); i4++) { + if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { + break; + }; + out << " Data[" << i4 << "]: " << blocks[i1].data[i3][i4] << endl; + array_output_count++; + }; + }; + }; + }; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void NiAdditionalGeometryData::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiObject::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> NiAdditionalGeometryData::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiObject::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/NiBoneLODController.cpp b/src/obj/NiBoneLODController.cpp index ec5f4bd6..2cf34d27 100644 --- a/src/obj/NiBoneLODController.cpp +++ b/src/obj/NiBoneLODController.cpp @@ -63,7 +63,7 @@ void NiBoneLODController::Read( istream& in, list<unsigned int> & link_stack, co link_stack.push_back( block_num ); }; }; - if ( ( info.version >= 0x04020200 ) && ( info.userVersion == 0 ) ) { + if ( info.version >= 0x04020200 ) { NifStream( numShapeGroups, in, info ); shapeGroups1.resize(numShapeGroups); for (unsigned int i2 = 0; i2 < shapeGroups1.size(); i2++) { @@ -114,7 +114,7 @@ void NiBoneLODController::Write( ostream& out, const map<NiObjectRef,unsigned in } }; }; - if ( ( info.version >= 0x04020200 ) && ( info.userVersion == 0 ) ) { + if ( info.version >= 0x04020200 ) { NifStream( numShapeGroups, out, info ); for (unsigned int i2 = 0; i2 < shapeGroups1.size(); i2++) { shapeGroups1[i2].numLinkPairs = (unsigned int)(shapeGroups1[i2].linkPairs.size()); @@ -240,7 +240,7 @@ void NiBoneLODController::FixLinks( const map<unsigned int,NiObjectRef> & object nodeGroups[i1].nodes[i2] = FixLink<NiNode>( objects, link_stack, info ); }; }; - if ( ( info.version >= 0x04020200 ) && ( info.userVersion == 0 ) ) { + if ( info.version >= 0x04020200 ) { 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<NiTriBasedGeom>( objects, link_stack, info ); diff --git a/src/obj/NiControllerSequence.cpp b/src/obj/NiControllerSequence.cpp index 4f6aebda..30c8501f 100644 --- a/src/obj/NiControllerSequence.cpp +++ b/src/obj/NiControllerSequence.cpp @@ -26,7 +26,7 @@ using namespace Niflib; //Definition of TYPE constant const Type NiControllerSequence::TYPE("NiControllerSequence", &NiSequence::TYPE ); -NiControllerSequence::NiControllerSequence() : 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) { +NiControllerSequence::NiControllerSequence() : 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), unknownShort1((short)0), unknownShort2((short)0) { //--BEGIN CONSTRUCTOR CUSTOM CODE--// //--END CUSTOM CODE--// } @@ -79,6 +79,12 @@ void NiControllerSequence::Read( istream& in, list<unsigned int> & link_stack, c NifStream( block_num, in, info ); link_stack.push_back( block_num ); }; + if ( ( info.version >= 0x14020007 ) && ( ((info.userVersion == 11) && (info.userVersion2 >= 24)) ) ) { + NifStream( unknownShort1, in, info ); + }; + if ( ( info.version >= 0x14020007 ) && ( ((info.userVersion == 11) && ((info.userVersion2 >= 24) && (info.userVersion2 <= 28))) ) ) { + NifStream( unknownShort2, in, info ); + }; //--BEGIN POST-READ CUSTOM CODE--// //--END CUSTOM CODE--// @@ -139,6 +145,12 @@ void NiControllerSequence::Write( ostream& out, const map<NiObjectRef,unsigned i } } }; + if ( ( info.version >= 0x14020007 ) && ( ((info.userVersion == 11) && (info.userVersion2 >= 24)) ) ) { + NifStream( unknownShort1, out, info ); + }; + if ( ( info.version >= 0x14020007 ) && ( ((info.userVersion == 11) && ((info.userVersion2 >= 24) && (info.userVersion2 <= 28))) ) ) { + NifStream( unknownShort2, out, info ); + }; //--BEGIN POST-WRITE CUSTOM CODE--// //--END CUSTOM CODE--// @@ -163,6 +175,8 @@ std::string NiControllerSequence::asString( bool verbose ) const { out << " Manager: " << manager << endl; out << " Target Name: " << targetName << endl; out << " String Palette: " << stringPalette << endl; + out << " Unknown Short 1: " << unknownShort1 << endl; + out << " Unknown Short 2: " << unknownShort2 << endl; return out.str(); //--BEGIN POST-STRING CUSTOM CODE--// @@ -300,7 +314,7 @@ void NiControllerSequence::AddInterpolator( NiSingleInterpController * obj, byte void NiControllerSequence::ClearControllerData() { - throw runtime_error("The AddInterpolator function cannot be implemented until prolems in the XML are solved."); + throw runtime_error("The AddInterpolator function cannot be implemented until problems in the XML are solved."); //Clear list controlledBlocks.clear(); @@ -310,6 +324,13 @@ vector<ControllerLink> NiControllerSequence::GetControllerData() const { return controlledBlocks; } +void NiControllerSequence::SetControllerData(const vector<ControllerLink>& value) { + if ( value.size() != controlledBlocks.size() ) + throw runtime_error("The SetControllerData requires the ControllerLink array size to match the existing array."); + controlledBlocks = value; +} + + Ref<NiTextKeyExtraData> NiControllerSequence::GetTextKeyExtraData() const { return textKeys; } @@ -392,4 +413,12 @@ void NiControllerSequence::SetWeight( const float value ) { weight = value; } + +Ref<NiStringPalette > Niflib::NiControllerSequence::GetStringPalette() const { + return stringPalette; +} + +void Niflib::NiControllerSequence::SetStringPalette( const Ref<NiStringPalette >& value ) { + stringPalette = value; +} //--END CUSTOM CODE--// diff --git a/src/obj/NiGeomMorpherController.cpp b/src/obj/NiGeomMorpherController.cpp index ed90a979..07a2dbe0 100644 --- a/src/obj/NiGeomMorpherController.cpp +++ b/src/obj/NiGeomMorpherController.cpp @@ -77,14 +77,7 @@ void NiGeomMorpherController::Read( istream& in, list<unsigned int> & link_stack NifStream( interpolatorWeights[i2].weight_, in, info ); }; }; - if ( ( info.version >= 0x14000004 ) && ( info.userVersion == 10 ) ) { - NifStream( numUnknownInts, in, info ); - unknownInts.resize(numUnknownInts); - for (unsigned int i2 = 0; i2 < unknownInts.size(); i2++) { - NifStream( unknownInts[i2], in, info ); - }; - }; - if ( ( info.version >= 0x14000004 ) && ( info.userVersion == 11 ) ) { + if ( ( info.version >= 0x14000004 ) && ( info.version <= 0x14000005 ) && ( ((info.userVersion == 10) || (info.userVersion == 11)) ) ) { NifStream( numUnknownInts, in, info ); unknownInts.resize(numUnknownInts); for (unsigned int i2 = 0; i2 < unknownInts.size(); i2++) { @@ -165,13 +158,7 @@ void NiGeomMorpherController::Write( ostream& out, const map<NiObjectRef,unsigne NifStream( interpolatorWeights[i2].weight_, out, info ); }; }; - if ( ( info.version >= 0x14000004 ) && ( info.userVersion == 10 ) ) { - NifStream( numUnknownInts, out, info ); - for (unsigned int i2 = 0; i2 < unknownInts.size(); i2++) { - NifStream( unknownInts[i2], out, info ); - }; - }; - if ( ( info.version >= 0x14000004 ) && ( info.userVersion == 11 ) ) { + if ( ( info.version >= 0x14000004 ) && ( info.version <= 0x14000005 ) && ( ((info.userVersion == 10) || (info.userVersion == 11)) ) ) { NifStream( numUnknownInts, out, info ); for (unsigned int i2 = 0; i2 < unknownInts.size(); i2++) { NifStream( unknownInts[i2], out, info ); diff --git a/src/obj/NiGeometry.cpp b/src/obj/NiGeometry.cpp index 378f9422..5d9411e3 100644 --- a/src/obj/NiGeometry.cpp +++ b/src/obj/NiGeometry.cpp @@ -17,7 +17,7 @@ All rights reserved. Please see niflib.h for license. */ #include "../../include/ObjectRegistry.h" #include "../../include/NIF_IO.h" #include "../../include/obj/NiGeometry.h" -#include "../../include/obj/NiGeometryData.h" +#include "../../include/obj/NiObject.h" #include "../../include/obj/NiSkinInstance.h" using namespace Niflib; @@ -200,7 +200,7 @@ void NiGeometry::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<u //--END CUSTOM CODE--// NiAVObject::FixLinks( objects, link_stack, info ); - data = FixLink<NiGeometryData>( objects, link_stack, info ); + data = FixLink<NiObject>( objects, link_stack, info ); if ( info.version >= 0x0303000D ) { skinInstance = FixLink<NiSkinInstance>( objects, link_stack, info ); }; @@ -222,7 +222,7 @@ std::list<NiObjectRef> NiGeometry::GetRefs() const { //--BEGIN MISC CUSTOM CODE--// Ref<NiGeometryData> NiGeometry::GetData() const { - return data; + return DynamicCast<NiGeometryData>(data); } void NiGeometry::SetData( NiGeometryData * n ) { diff --git a/src/obj/NiGeometryData.cpp b/src/obj/NiGeometryData.cpp index a81cd0d8..8aedcdb9 100644 --- a/src/obj/NiGeometryData.cpp +++ b/src/obj/NiGeometryData.cpp @@ -14,13 +14,13 @@ All rights reserved. Please see niflib.h for license. */ #include "../../include/ObjectRegistry.h" #include "../../include/NIF_IO.h" #include "../../include/obj/NiGeometryData.h" -#include "../../include/obj/NiObject.h" +#include "../../include/obj/NiAdditionalGeometryData.h" using namespace Niflib; //Definition of TYPE constant const Type NiGeometryData::TYPE("NiGeometryData", &NiObject::TYPE ); -NiGeometryData::NiGeometryData() : numVertices((unsigned short)0), keepFlags((byte)0), compressFlags((byte)0), hasVertices(1), numUvSets((unsigned short)0), hasNormals(false), radius(0.0f), hasVertexColors(false), hasUv(false), consistencyFlags((ConsistencyType)0), unknownLink1(NULL) { +NiGeometryData::NiGeometryData() : numVertices((unsigned short)0), keepFlags((byte)0), compressFlags((byte)0), hasVertices(1), numUvSets((unsigned short)0), hasNormals(false), radius(0.0f), hasVertexColors(false), hasUv(false), consistencyFlags((ConsistencyType)0), additionalData(NULL) { //--BEGIN CONSTRUCTOR CUSTOM CODE--// //--END CUSTOM CODE--// } @@ -96,11 +96,22 @@ void NiGeometryData::Read( istream& in, list<unsigned int> & link_stack, const N if ( info.version <= 0x04000002 ) { NifStream( hasUv, in, info ); }; - uvSets.resize((numUvSets & 63)); - for (unsigned int i1 = 0; i1 < uvSets.size(); i1++) { - uvSets[i1].resize(numVertices); - for (unsigned int i2 = 0; i2 < uvSets[i1].size(); i2++) { - NifStream( uvSets[i1][i2], in, info ); + if ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) { + uvSets.resize((numUvSets & 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 ); + }; + }; + }; + if ( ((info.version >= 0x14020007) && (info.userVersion == 11)) ) { + uvSets.resize((numUvSets & 1)); + 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 ) { @@ -169,9 +180,18 @@ void NiGeometryData::Write( ostream& out, const map<NiObjectRef,unsigned int> & if ( info.version <= 0x04000002 ) { NifStream( hasUv, out, info ); }; - for (unsigned int i1 = 0; i1 < uvSets.size(); i1++) { - for (unsigned int i2 = 0; i2 < uvSets[i1].size(); i2++) { - NifStream( uvSets[i1][i2], out, info ); + if ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) { + 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 >= 0x14020007) && (info.userVersion == 11)) ) { + 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 ) { @@ -179,10 +199,10 @@ void NiGeometryData::Write( ostream& out, const map<NiObjectRef,unsigned int> & }; if ( info.version >= 0x14000004 ) { if ( info.version < VER_3_3_0_13 ) { - NifStream( (unsigned int)&(*unknownLink1), out, info ); + NifStream( (unsigned int)&(*additionalData), out, info ); } else { - if ( unknownLink1 != NULL ) { - NifStream( link_map.find( StaticCast<NiObject>(unknownLink1) )->second, out, info ); + if ( additionalData != NULL ) { + NifStream( link_map.find( StaticCast<NiObject>(additionalData) )->second, out, info ); } else { NifStream( 0xFFFFFFFF, out, info ); } @@ -296,7 +316,7 @@ std::string NiGeometryData::asString( bool verbose ) const { }; }; out << " Consistency Flags: " << consistencyFlags << endl; - out << " Unknown Link 1: " << unknownLink1 << endl; + out << " Additional Data: " << additionalData << endl; return out.str(); //--BEGIN POST-STRING CUSTOM CODE--// @@ -309,7 +329,7 @@ void NiGeometryData::FixLinks( const map<unsigned int,NiObjectRef> & objects, li NiObject::FixLinks( objects, link_stack, info ); if ( info.version >= 0x14000004 ) { - unknownLink1 = FixLink<NiObject>( objects, link_stack, info ); + additionalData = FixLink<NiAdditionalGeometryData>( objects, link_stack, info ); }; //--BEGIN POST-FIXLINKS CUSTOM CODE--// @@ -319,8 +339,8 @@ void NiGeometryData::FixLinks( const map<unsigned int,NiObjectRef> & objects, li std::list<NiObjectRef> NiGeometryData::GetRefs() const { list<Ref<NiObject> > refs; refs = NiObject::GetRefs(); - if ( unknownLink1 != NULL ) - refs.push_back(StaticCast<NiObject>(unknownLink1)); + if ( additionalData != NULL ) + refs.push_back(StaticCast<NiObject>(additionalData)); return refs; } diff --git a/src/obj/NiMaterialProperty.cpp b/src/obj/NiMaterialProperty.cpp index d84acd9b..0e68cdac 100644 --- a/src/obj/NiMaterialProperty.cpp +++ b/src/obj/NiMaterialProperty.cpp @@ -19,7 +19,7 @@ using namespace Niflib; //Definition of TYPE constant const Type NiMaterialProperty::TYPE("NiMaterialProperty", &NiProperty::TYPE ); -NiMaterialProperty::NiMaterialProperty() : flags((unsigned short)0), glossiness(0.0f), alpha(0.0f) { +NiMaterialProperty::NiMaterialProperty() : flags((unsigned short)0), glossiness(0.0f), alpha(0.0f), emitmulti(0.0f) { //--BEGIN CONSTRUCTOR CUSTOM CODE--// //--END CUSTOM CODE--// } @@ -45,12 +45,17 @@ void NiMaterialProperty::Read( istream& in, list<unsigned int> & link_stack, con if ( info.version <= 0x0A000102 ) { NifStream( flags, in, info ); }; - NifStream( ambientColor, in, info ); - NifStream( diffuseColor, in, info ); + if ( (!((info.version == 0x14020007) && ((info.userVersion == 11) && (info.userVersion2 > 21)))) ) { + NifStream( ambientColor, in, info ); + NifStream( diffuseColor, in, info ); + }; NifStream( specularColor, in, info ); NifStream( emissiveColor, in, info ); NifStream( glossiness, in, info ); NifStream( alpha, in, info ); + if ( ((info.version == 0x14020007) && ((info.userVersion == 11) && (info.userVersion2 > 21))) ) { + NifStream( emitmulti, in, info ); + }; //--BEGIN POST-READ CUSTOM CODE--// //--END CUSTOM CODE--// @@ -64,12 +69,17 @@ void NiMaterialProperty::Write( ostream& out, const map<NiObjectRef,unsigned int if ( info.version <= 0x0A000102 ) { NifStream( flags, out, info ); }; - NifStream( ambientColor, out, info ); - NifStream( diffuseColor, out, info ); + if ( (!((info.version == 0x14020007) && ((info.userVersion == 11) && (info.userVersion2 > 21)))) ) { + NifStream( ambientColor, out, info ); + NifStream( diffuseColor, out, info ); + }; NifStream( specularColor, out, info ); NifStream( emissiveColor, out, info ); NifStream( glossiness, out, info ); NifStream( alpha, out, info ); + if ( ((info.version == 0x14020007) && ((info.userVersion == 11) && (info.userVersion2 > 21))) ) { + NifStream( emitmulti, out, info ); + }; //--BEGIN POST-WRITE CUSTOM CODE--// //--END CUSTOM CODE--// @@ -89,6 +99,7 @@ std::string NiMaterialProperty::asString( bool verbose ) const { out << " Emissive Color: " << emissiveColor << endl; out << " Glossiness: " << glossiness << endl; out << " Alpha: " << alpha << endl; + out << " EmitMulti: " << emitmulti << endl; return out.str(); //--BEGIN POST-STRING CUSTOM CODE--// diff --git a/src/obj/NiMorphData.cpp b/src/obj/NiMorphData.cpp index 09322294..29d794c6 100644 --- a/src/obj/NiMorphData.cpp +++ b/src/obj/NiMorphData.cpp @@ -62,7 +62,7 @@ void NiMorphData::Read( istream& in, list<unsigned int> & link_stack, const NifI if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A020000 ) ) { NifStream( morphs[i1].unknownInt, in, info ); }; - if ( ( info.version >= 0x14000004 ) && ( info.version <= 0x14010003 ) && ( info.userVersion == 0 ) ) { + if ( ( info.version >= 0x14000004 ) && ( info.version <= 0x14010003 ) ) { NifStream( morphs[i1].unknownInt, in, info ); }; morphs[i1].vectors.resize(numVertices); @@ -99,7 +99,7 @@ void NiMorphData::Write( ostream& out, const map<NiObjectRef,unsigned int> & lin if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A020000 ) ) { NifStream( morphs[i1].unknownInt, out, info ); }; - if ( ( info.version >= 0x14000004 ) && ( info.version <= 0x14010003 ) && ( info.userVersion == 0 ) ) { + if ( ( info.version >= 0x14000004 ) && ( info.version <= 0x14010003 ) ) { NifStream( morphs[i1].unknownInt, out, info ); }; for (unsigned int i2 = 0; i2 < morphs[i1].vectors.size(); i2++) { diff --git a/src/obj/NiPSysCollider.cpp b/src/obj/NiPSysCollider.cpp index 6b5cab3e..c8ee6096 100644 --- a/src/obj/NiPSysCollider.cpp +++ b/src/obj/NiPSysCollider.cpp @@ -152,8 +152,6 @@ std::list<NiObjectRef> NiPSysCollider::GetRefs() const { 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; } diff --git a/src/obj/NiPSysData.cpp b/src/obj/NiPSysData.cpp index dd0288d6..b60c1d7b 100644 --- a/src/obj/NiPSysData.cpp +++ b/src/obj/NiPSysData.cpp @@ -43,20 +43,22 @@ void NiPSysData::Read( istream& in, list<unsigned int> & link_stack, const NifIn //--END CUSTOM CODE--// NiRotatingParticlesData::Read( in, link_stack, info ); - particleDescriptions.resize(numVertices); - for (unsigned int i1 = 0; i1 < particleDescriptions.size(); i1++) { - NifStream( particleDescriptions[i1].translation, in, info ); - if ( info.version <= 0x0A020000 ) { - for (unsigned int i3 = 0; i3 < 3; i3++) { - NifStream( particleDescriptions[i1].unknownFloats1[i3], in, info ); + if ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) { + particleDescriptions.resize(numVertices); + for (unsigned int i2 = 0; i2 < particleDescriptions.size(); i2++) { + NifStream( particleDescriptions[i2].translation, in, info ); + if ( info.version <= 0x0A020000 ) { + for (unsigned int i4 = 0; i4 < 3; i4++) { + NifStream( particleDescriptions[i2].unknownFloats1[i4], in, info ); + }; }; + NifStream( particleDescriptions[i2].unknownFloat1, in, info ); + NifStream( particleDescriptions[i2].unknownFloat2, in, info ); + NifStream( particleDescriptions[i2].unknownFloat3, in, info ); + NifStream( particleDescriptions[i2].unknownInt1, in, info ); }; - NifStream( particleDescriptions[i1].unknownFloat1, in, info ); - NifStream( particleDescriptions[i1].unknownFloat2, in, info ); - NifStream( particleDescriptions[i1].unknownFloat3, in, info ); - NifStream( particleDescriptions[i1].unknownInt1, in, info ); }; - if ( info.version >= 0x14000004 ) { + if ( ( info.version >= 0x14000004 ) && ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) ) { NifStream( hasUnknownFloats3, in, info ); if ( (hasUnknownFloats3 != 0) ) { unknownFloats3.resize(numVertices); @@ -65,8 +67,10 @@ void NiPSysData::Read( istream& in, list<unsigned int> & link_stack, const NifIn }; }; }; - NifStream( unknownShort1, in, info ); - NifStream( unknownShort2, in, info ); + if ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) { + NifStream( unknownShort1, in, info ); + NifStream( unknownShort2, in, info ); + }; //--BEGIN POST-READ CUSTOM CODE--// //--END CUSTOM CODE--// @@ -77,19 +81,21 @@ void NiPSysData::Write( ostream& out, const map<NiObjectRef,unsigned int> & link //--END CUSTOM CODE--// NiRotatingParticlesData::Write( out, link_map, info ); - for (unsigned int i1 = 0; i1 < particleDescriptions.size(); i1++) { - NifStream( particleDescriptions[i1].translation, out, info ); - if ( info.version <= 0x0A020000 ) { - for (unsigned int i3 = 0; i3 < 3; i3++) { - NifStream( particleDescriptions[i1].unknownFloats1[i3], out, info ); + if ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) { + for (unsigned int i2 = 0; i2 < particleDescriptions.size(); i2++) { + NifStream( particleDescriptions[i2].translation, out, info ); + if ( info.version <= 0x0A020000 ) { + for (unsigned int i4 = 0; i4 < 3; i4++) { + NifStream( particleDescriptions[i2].unknownFloats1[i4], out, info ); + }; }; + NifStream( particleDescriptions[i2].unknownFloat1, out, info ); + NifStream( particleDescriptions[i2].unknownFloat2, out, info ); + NifStream( particleDescriptions[i2].unknownFloat3, out, info ); + NifStream( particleDescriptions[i2].unknownInt1, out, info ); }; - NifStream( particleDescriptions[i1].unknownFloat1, out, info ); - NifStream( particleDescriptions[i1].unknownFloat2, out, info ); - NifStream( particleDescriptions[i1].unknownFloat3, out, info ); - NifStream( particleDescriptions[i1].unknownInt1, out, info ); }; - if ( info.version >= 0x14000004 ) { + if ( ( info.version >= 0x14000004 ) && ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) ) { NifStream( hasUnknownFloats3, out, info ); if ( (hasUnknownFloats3 != 0) ) { for (unsigned int i3 = 0; i3 < unknownFloats3.size(); i3++) { @@ -97,8 +103,10 @@ void NiPSysData::Write( ostream& out, const map<NiObjectRef,unsigned int> & link }; }; }; - NifStream( unknownShort1, out, info ); - NifStream( unknownShort2, out, info ); + if ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) { + NifStream( unknownShort1, out, info ); + NifStream( unknownShort2, out, info ); + }; //--BEGIN POST-WRITE CUSTOM CODE--// //--END CUSTOM CODE--// diff --git a/src/obj/NiPSysGravityModifier.cpp b/src/obj/NiPSysGravityModifier.cpp index 4f86d85d..eedd0954 100644 --- a/src/obj/NiPSysGravityModifier.cpp +++ b/src/obj/NiPSysGravityModifier.cpp @@ -20,7 +20,7 @@ using namespace Niflib; //Definition of TYPE constant const Type NiPSysGravityModifier::TYPE("NiPSysGravityModifier", &NiPSysModifier::TYPE ); -NiPSysGravityModifier::NiPSysGravityModifier() : gravityObject(NULL), decay(0.0f), strength(0.0f), turbulence(0.0f), turbulenceScale(1.0f) { +NiPSysGravityModifier::NiPSysGravityModifier() : gravityObject(NULL), decay(0.0f), strength(0.0f), turbulence(0.0f), turbulenceScale(1.0f), unknownByte((byte)0) { //--BEGIN CONSTRUCTOR CUSTOM CODE--// //--END CUSTOM CODE--// } @@ -52,6 +52,9 @@ void NiPSysGravityModifier::Read( istream& in, list<unsigned int> & link_stack, NifStream( forceType, in, info ); NifStream( turbulence, in, info ); NifStream( turbulenceScale, in, info ); + if ( ( info.version >= 0x14020007 ) && ( info.userVersion == 11 ) ) { + NifStream( unknownByte, in, info ); + }; //--BEGIN POST-READ CUSTOM CODE--// //--END CUSTOM CODE--// @@ -77,6 +80,9 @@ void NiPSysGravityModifier::Write( ostream& out, const map<NiObjectRef,unsigned NifStream( forceType, out, info ); NifStream( turbulence, out, info ); NifStream( turbulenceScale, out, info ); + if ( ( info.version >= 0x14020007 ) && ( info.userVersion == 11 ) ) { + NifStream( unknownByte, out, info ); + }; //--BEGIN POST-WRITE CUSTOM CODE--// //--END CUSTOM CODE--// @@ -96,6 +102,7 @@ std::string NiPSysGravityModifier::asString( bool verbose ) const { out << " Force Type: " << forceType << endl; out << " Turbulence: " << turbulence << endl; out << " Turbulence Scale: " << turbulenceScale << endl; + out << " Unknown Byte: " << unknownByte << endl; return out.str(); //--BEGIN POST-STRING CUSTOM CODE--// diff --git a/src/obj/NiPSysGrowFadeModifier.cpp b/src/obj/NiPSysGrowFadeModifier.cpp index b9fd23da..79b325ca 100644 --- a/src/obj/NiPSysGrowFadeModifier.cpp +++ b/src/obj/NiPSysGrowFadeModifier.cpp @@ -19,7 +19,7 @@ using namespace Niflib; //Definition of TYPE constant const Type NiPSysGrowFadeModifier::TYPE("NiPSysGrowFadeModifier", &NiPSysModifier::TYPE ); -NiPSysGrowFadeModifier::NiPSysGrowFadeModifier() : growTime(0.0f), growGeneration((unsigned short)0), fadeTime(0.0f), fadeGeneration((unsigned short)0) { +NiPSysGrowFadeModifier::NiPSysGrowFadeModifier() : growTime(0.0f), growGeneration((unsigned short)0), fadeTime(0.0f), fadeGeneration((unsigned short)0), baseScale(0.0f) { //--BEGIN CONSTRUCTOR CUSTOM CODE--// //--END CUSTOM CODE--// } @@ -46,6 +46,9 @@ void NiPSysGrowFadeModifier::Read( istream& in, list<unsigned int> & link_stack, NifStream( growGeneration, in, info ); NifStream( fadeTime, in, info ); NifStream( fadeGeneration, in, info ); + if ( ( info.version >= 0x14020007 ) && ( info.userVersion == 11 ) ) { + NifStream( baseScale, in, info ); + }; //--BEGIN POST-READ CUSTOM CODE--// //--END CUSTOM CODE--// @@ -60,6 +63,9 @@ void NiPSysGrowFadeModifier::Write( ostream& out, const map<NiObjectRef,unsigned NifStream( growGeneration, out, info ); NifStream( fadeTime, out, info ); NifStream( fadeGeneration, out, info ); + if ( ( info.version >= 0x14020007 ) && ( info.userVersion == 11 ) ) { + NifStream( baseScale, out, info ); + }; //--BEGIN POST-WRITE CUSTOM CODE--// //--END CUSTOM CODE--// @@ -76,6 +82,7 @@ std::string NiPSysGrowFadeModifier::asString( bool verbose ) const { out << " Grow Generation: " << growGeneration << endl; out << " Fade Time: " << fadeTime << endl; out << " Fade Generation: " << fadeGeneration << endl; + out << " Base Scale: " << baseScale << endl; return out.str(); //--BEGIN POST-STRING CUSTOM CODE--// diff --git a/src/obj/NiParticlesData.cpp b/src/obj/NiParticlesData.cpp index dfa211f9..6ac81fea 100644 --- a/src/obj/NiParticlesData.cpp +++ b/src/obj/NiParticlesData.cpp @@ -14,12 +14,13 @@ All rights reserved. Please see niflib.h for license. */ #include "../../include/ObjectRegistry.h" #include "../../include/NIF_IO.h" #include "../../include/obj/NiParticlesData.h" +#include "../../include/obj/NiAdditionalGeometryData.h" using namespace Niflib; //Definition of TYPE constant -const Type NiParticlesData::TYPE("NiParticlesData", &NiGeometryData::TYPE ); +const Type NiParticlesData::TYPE("NiParticlesData", &NiObject::TYPE ); -NiParticlesData::NiParticlesData() : numParticles((unsigned short)0), size(0.0f), numActive((unsigned short)0), unknownShort((unsigned short)0), hasSizes(false), hasUnknownFloats1(false), hasRotations1(false), hasUnknownFloats2(false), hasUnknownVertices1(false) { +NiParticlesData::NiParticlesData() : numVertices((unsigned short)0), keepFlags((byte)0), compressFlags((byte)0), hasVertices(1), numUvSets((unsigned short)0), hasNormals(false), radius(0.0f), hasVertexColors(false), hasUv(false), consistencyFlags((ConsistencyType)0), additionalData(NULL), numParticles((unsigned short)0), hasRadii(false), numActive((unsigned short)0), hasSizes1((int)0), hasSizes(false), hasRotations1(false), hasRotationAngles(false), hasRotationAxes(false), hasUnknownStuff1(false), numUnknownStuff1((short)0) { //--BEGIN CONSTRUCTOR CUSTOM CODE--// //--END CUSTOM CODE--// } @@ -41,38 +42,118 @@ void NiParticlesData::Read( istream& in, list<unsigned int> & link_stack, const //--BEGIN PRE-READ CUSTOM CODE--// //--END CUSTOM CODE--// - NiGeometryData::Read( in, link_stack, 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( keepFlags, in, info ); + NifStream( compressFlags, in, info ); + }; + NifStream( hasVertices, in, info ); + if ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) { + if ( (hasVertices != 0) ) { + vertices.resize(numVertices); + for (unsigned int i3 = 0; i3 < vertices.size(); i3++) { + NifStream( vertices[i3], in, info ); + }; + }; + }; + if ( info.version >= 0x0A000100 ) { + NifStream( numUvSets, in, info ); + }; + NifStream( hasNormals, in, info ); + if ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) { + if ( (hasNormals != 0) ) { + normals.resize(numVertices); + for (unsigned int i3 = 0; i3 < normals.size(); i3++) { + NifStream( normals[i3], in, info ); + }; + }; + }; + if ( ( info.version >= 0x0A010000 ) && ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) ) { + if ( ((hasNormals != 0) && (numUvSets & 61440)) ) { + binormals.resize(numVertices); + for (unsigned int i3 = 0; i3 < binormals.size(); i3++) { + NifStream( binormals[i3], in, info ); + }; + tangents.resize(numVertices); + for (unsigned int i3 = 0; i3 < tangents.size(); i3++) { + NifStream( tangents[i3], in, info ); + }; + }; + }; + NifStream( center, in, info ); + NifStream( radius, in, info ); + NifStream( hasVertexColors, in, info ); + if ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) { + if ( (hasVertexColors != 0) ) { + vertexColors.resize(numVertices); + for (unsigned int i3 = 0; i3 < vertexColors.size(); i3++) { + NifStream( vertexColors[i3], in, info ); + }; + }; + }; + if ( info.version <= 0x04020200 ) { + NifStream( numUvSets, in, info ); + }; if ( info.version <= 0x04000002 ) { - NifStream( numParticles, in, info ); + NifStream( hasUv, in, info ); }; - if ( info.version <= 0x0A000100 ) { - NifStream( size, in, info ); + if ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) { + uvSets.resize((numUvSets & 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 ); + }; + }; + }; + if ( info.version >= 0x0A000100 ) { + NifStream( consistencyFlags, in, info ); + }; + if ( info.version >= 0x14000004 ) { + NifStream( block_num, in, info ); + link_stack.push_back( block_num ); }; if ( info.version <= 0x04000002 ) { - NifStream( numActive, in, info ); + NifStream( numParticles, in, info ); }; - if ( ( info.version >= 0x0401000C ) && ( info.version <= 0x0A000100 ) ) { - NifStream( unknownShort, in, info ); + if ( info.version <= 0x0A000100 ) { + NifStream( radius, 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( hasRadii, in, info ); + }; + if ( ( info.version >= 0x0A010000 ) && ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) ) { + if ( (hasRadii != 0) ) { + radii.resize(numVertices); + for (unsigned int i3 = 0; i3 < radii.size(); i3++) { + NifStream( radii[i3], in, info ); + }; }; }; + NifStream( numActive, in, info ); + if ( info.version <= 0x04000002 ) { + NifStream( hasSizes1, 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 ); + NifStream( hasSizes, in, info ); + }; + if ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) { + if ( ((hasSizes != 0) || (hasSizes1 != 0)) ) { + sizes.resize(numVertices); + for (unsigned int i3 = 0; i3 < sizes.size(); i3++) { + NifStream( sizes[i3], in, info ); }; }; }; if ( info.version >= 0x0A000100 ) { NifStream( hasRotations1, in, info ); + }; + if ( ( info.version >= 0x0A000100 ) && ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) ) { if ( (hasRotations1 != 0) ) { rotations1.resize(numVertices); for (unsigned int i3 = 0; i3 < rotations1.size(); i3++) { @@ -81,20 +162,34 @@ void NiParticlesData::Read( istream& in, list<unsigned int> & link_stack, const }; }; if ( info.version >= 0x14000004 ) { - NifStream( hasUnknownFloats2, in, info ); + NifStream( hasRotationAngles, in, info ); }; - if ( (hasUnknownFloats2 != 0) ) { - unknownFloats2.resize(numVertices); - for (unsigned int i2 = 0; i2 < unknownFloats2.size(); i2++) { - NifStream( unknownFloats2[i2], in, info ); + if ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) { + if ( (hasRotationAngles != 0) ) { + rotationAngles.resize(numVertices); + for (unsigned int i3 = 0; i3 < rotationAngles.size(); i3++) { + NifStream( rotationAngles[i3], in, info ); + }; }; }; if ( info.version >= 0x14000004 ) { - NifStream( hasUnknownVertices1, in, info ); - if ( (hasUnknownVertices1 != 0) ) { - unknownVertices1.resize(numVertices); - for (unsigned int i3 = 0; i3 < unknownVertices1.size(); i3++) { - NifStream( unknownVertices1[i3], in, info ); + NifStream( hasRotationAxes, in, info ); + }; + if ( ( info.version >= 0x14000004 ) && ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) ) { + if ( (hasRotationAxes != 0) ) { + rotationAxes.resize(numVertices); + for (unsigned int i3 = 0; i3 < rotationAxes.size(); i3++) { + NifStream( rotationAxes[i3], in, info ); + }; + }; + }; + if ( ((info.version >= 0x14020007) && (info.userVersion == 11)) ) { + NifStream( hasUnknownStuff1, in, info ); + NifStream( numUnknownStuff1, in, info ); + if ( (hasUnknownStuff1 >= 1) ) { + unknownStuff1.resize(numUnknownStuff1); + for (unsigned int i3 = 0; i3 < unknownStuff1.size(); i3++) { + NifStream( unknownStuff1[i3], in, info ); }; }; }; @@ -107,36 +202,118 @@ void NiParticlesData::Write( ostream& out, const map<NiObjectRef,unsigned int> & //--BEGIN PRE-WRITE CUSTOM CODE--// //--END CUSTOM CODE--// - NiGeometryData::Write( out, link_map, info ); + NiObject::Write( out, link_map, info ); + numUnknownStuff1 = (short)(unknownStuff1.size()); + numUvSets = (unsigned short)(uvSets.size()); + numVertices = (unsigned short)(vertices.size()); + if ( info.version >= 0x0A020000 ) { + NifStream( name, out, info ); + }; + NifStream( numVertices, out, info ); + if ( info.version >= 0x0A010000 ) { + NifStream( keepFlags, out, info ); + NifStream( compressFlags, out, info ); + }; + NifStream( hasVertices, out, info ); + if ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) { + if ( (hasVertices != 0) ) { + for (unsigned int i3 = 0; i3 < vertices.size(); i3++) { + NifStream( vertices[i3], out, info ); + }; + }; + }; + if ( info.version >= 0x0A000100 ) { + NifStream( numUvSets, out, info ); + }; + NifStream( hasNormals, out, info ); + if ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) { + if ( (hasNormals != 0) ) { + for (unsigned int i3 = 0; i3 < normals.size(); i3++) { + NifStream( normals[i3], out, info ); + }; + }; + }; + if ( ( info.version >= 0x0A010000 ) && ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) ) { + if ( ((hasNormals != 0) && (numUvSets & 61440)) ) { + for (unsigned int i3 = 0; i3 < binormals.size(); i3++) { + NifStream( binormals[i3], out, info ); + }; + for (unsigned int i3 = 0; i3 < tangents.size(); i3++) { + NifStream( tangents[i3], out, info ); + }; + }; + }; + NifStream( center, out, info ); + NifStream( radius, out, info ); + NifStream( hasVertexColors, out, info ); + if ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) { + if ( (hasVertexColors != 0) ) { + for (unsigned int i3 = 0; i3 < vertexColors.size(); i3++) { + NifStream( vertexColors[i3], out, info ); + }; + }; + }; + if ( info.version <= 0x04020200 ) { + NifStream( numUvSets, out, info ); + }; if ( info.version <= 0x04000002 ) { - NifStream( numParticles, out, info ); + NifStream( hasUv, out, info ); }; - if ( info.version <= 0x0A000100 ) { - NifStream( size, out, info ); + if ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) { + 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 ) { + NifStream( consistencyFlags, out, info ); + }; + if ( info.version >= 0x14000004 ) { + if ( info.version < VER_3_3_0_13 ) { + NifStream( (unsigned int)&(*additionalData), out, info ); + } else { + if ( additionalData != NULL ) { + NifStream( link_map.find( StaticCast<NiObject>(additionalData) )->second, out, info ); + } else { + NifStream( 0xFFFFFFFF, out, info ); + } + } }; if ( info.version <= 0x04000002 ) { - NifStream( numActive, out, info ); + NifStream( numParticles, out, info ); }; - if ( ( info.version >= 0x0401000C ) && ( info.version <= 0x0A000100 ) ) { - NifStream( unknownShort, out, info ); + if ( info.version <= 0x0A000100 ) { + NifStream( radius, 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( hasRadii, out, info ); + }; + if ( ( info.version >= 0x0A010000 ) && ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) ) { + if ( (hasRadii != 0) ) { + for (unsigned int i3 = 0; i3 < radii.size(); i3++) { + NifStream( radii[i3], out, info ); + }; }; }; + NifStream( numActive, out, info ); + if ( info.version <= 0x04000002 ) { + NifStream( hasSizes1, 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 ); + NifStream( hasSizes, out, info ); + }; + if ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) { + if ( ((hasSizes != 0) || (hasSizes1 != 0)) ) { + for (unsigned int i3 = 0; i3 < sizes.size(); i3++) { + NifStream( sizes[i3], out, info ); }; }; }; if ( info.version >= 0x0A000100 ) { NifStream( hasRotations1, out, info ); + }; + if ( ( info.version >= 0x0A000100 ) && ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) ) { if ( (hasRotations1 != 0) ) { for (unsigned int i3 = 0; i3 < rotations1.size(); i3++) { NifStream( rotations1[i3], out, info ); @@ -144,18 +321,31 @@ void NiParticlesData::Write( ostream& out, const map<NiObjectRef,unsigned int> & }; }; if ( info.version >= 0x14000004 ) { - NifStream( hasUnknownFloats2, out, info ); + NifStream( hasRotationAngles, out, info ); }; - if ( (hasUnknownFloats2 != 0) ) { - for (unsigned int i2 = 0; i2 < unknownFloats2.size(); i2++) { - NifStream( unknownFloats2[i2], out, info ); + if ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) { + if ( (hasRotationAngles != 0) ) { + for (unsigned int i3 = 0; i3 < rotationAngles.size(); i3++) { + NifStream( rotationAngles[i3], out, info ); + }; }; }; if ( info.version >= 0x14000004 ) { - NifStream( hasUnknownVertices1, out, info ); - if ( (hasUnknownVertices1 != 0) ) { - for (unsigned int i3 = 0; i3 < unknownVertices1.size(); i3++) { - NifStream( unknownVertices1[i3], out, info ); + NifStream( hasRotationAxes, out, info ); + }; + if ( ( info.version >= 0x14000004 ) && ( (!((info.version >= 0x14020007) && (info.userVersion == 11))) ) ) { + if ( (hasRotationAxes != 0) ) { + for (unsigned int i3 = 0; i3 < rotationAxes.size(); i3++) { + NifStream( rotationAxes[i3], out, info ); + }; + }; + }; + if ( ((info.version >= 0x14020007) && (info.userVersion == 11)) ) { + NifStream( hasUnknownStuff1, out, info ); + NifStream( numUnknownStuff1, out, info ); + if ( (hasUnknownStuff1 >= 1) ) { + for (unsigned int i3 = 0; i3 < unknownStuff1.size(); i3++) { + NifStream( unknownStuff1[i3], out, info ); }; }; }; @@ -170,15 +360,110 @@ std::string NiParticlesData::asString( bool verbose ) const { stringstream out; unsigned int array_output_count = 0; - out << NiGeometryData::asString(); + out << NiObject::asString(); + numUnknownStuff1 = (short)(unknownStuff1.size()); + numUvSets = (unsigned short)(uvSets.size()); + numVertices = (unsigned short)(vertices.size()); + out << " Name: " << name << endl; + out << " Num Vertices: " << numVertices << endl; + out << " Keep Flags: " << keepFlags << endl; + out << " Compress Flags: " << compressFlags << 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: " << numUvSets << 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) && (numUvSets & 61440)) ) { + array_output_count = 0; + for (unsigned int i2 = 0; i2 < binormals.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 << " Binormals[" << i2 << "]: " << binormals[i2] << endl; + array_output_count++; + }; + array_output_count = 0; + for (unsigned int i2 = 0; i2 < tangents.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 << " Tangents[" << i2 << "]: " << tangents[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 << " 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 << " Consistency Flags: " << consistencyFlags << endl; + out << " Additional Data: " << additionalData << endl; 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) ) { + out << " Has Radii: " << hasRadii << endl; + if ( (hasRadii != 0) ) { array_output_count = 0; - for (unsigned int i2 = 0; i2 < sizes.size(); i2++) { + for (unsigned int i2 = 0; i2 < radii.size(); i2++) { if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; break; @@ -186,14 +471,16 @@ std::string NiParticlesData::asString( bool verbose ) const { if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { break; }; - out << " Sizes[" << i2 << "]: " << sizes[i2] << endl; + out << " Radii[" << i2 << "]: " << radii[i2] << endl; array_output_count++; }; }; - out << " Has Unknown Floats 1: " << hasUnknownFloats1 << endl; - if ( (hasUnknownFloats1 != 0) ) { + out << " Num Active: " << numActive << endl; + out << " Has Sizes 1: " << hasSizes1 << endl; + out << " Has Sizes: " << hasSizes << endl; + if ( ((hasSizes != 0) || (hasSizes1 != 0)) ) { array_output_count = 0; - for (unsigned int i2 = 0; i2 < unknownFloats1.size(); i2++) { + 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; @@ -201,7 +488,7 @@ std::string NiParticlesData::asString( bool verbose ) const { if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { break; }; - out << " Unknown Floats 1[" << i2 << "]: " << unknownFloats1[i2] << endl; + out << " Sizes[" << i2 << "]: " << sizes[i2] << endl; array_output_count++; }; }; @@ -220,10 +507,25 @@ std::string NiParticlesData::asString( bool verbose ) const { array_output_count++; }; }; - out << " Has Unknown Floats 2: " << hasUnknownFloats2 << endl; - if ( (hasUnknownFloats2 != 0) ) { + out << " Has Rotation Angles: " << hasRotationAngles << endl; + if ( (hasRotationAngles != 0) ) { + array_output_count = 0; + for (unsigned int i2 = 0; i2 < rotationAngles.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 << " Rotation Angles[" << i2 << "]: " << rotationAngles[i2] << endl; + array_output_count++; + }; + }; + out << " Has Rotation Axes: " << hasRotationAxes << endl; + if ( (hasRotationAxes != 0) ) { array_output_count = 0; - for (unsigned int i2 = 0; i2 < unknownFloats2.size(); i2++) { + for (unsigned int i2 = 0; i2 < rotationAxes.size(); i2++) { if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; break; @@ -231,14 +533,15 @@ std::string NiParticlesData::asString( bool verbose ) const { if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { break; }; - out << " Unknown Floats 2[" << i2 << "]: " << unknownFloats2[i2] << endl; + out << " Rotation Axes[" << i2 << "]: " << rotationAxes[i2] << endl; array_output_count++; }; }; - out << " Has Unknown Vertices 1: " << hasUnknownVertices1 << endl; - if ( (hasUnknownVertices1 != 0) ) { + out << " Has Unknown Stuff 1: " << hasUnknownStuff1 << endl; + out << " Num Unknown Stuff 1: " << numUnknownStuff1 << endl; + if ( (hasUnknownStuff1 >= 1) ) { array_output_count = 0; - for (unsigned int i2 = 0; i2 < unknownVertices1.size(); i2++) { + for (unsigned int i2 = 0; i2 < unknownStuff1.size(); i2++) { if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; break; @@ -246,7 +549,7 @@ std::string NiParticlesData::asString( bool verbose ) const { if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { break; }; - out << " Unknown Vertices 1[" << i2 << "]: " << unknownVertices1[i2] << endl; + out << " Unknown Stuff 1[" << i2 << "]: " << unknownStuff1[i2] << endl; array_output_count++; }; }; @@ -260,7 +563,10 @@ void NiParticlesData::FixLinks( const map<unsigned int,NiObjectRef> & objects, l //--BEGIN PRE-FIXLINKS CUSTOM CODE--// //--END CUSTOM CODE--// - NiGeometryData::FixLinks( objects, link_stack, info ); + NiObject::FixLinks( objects, link_stack, info ); + if ( info.version >= 0x14000004 ) { + additionalData = FixLink<NiAdditionalGeometryData>( objects, link_stack, info ); + }; //--BEGIN POST-FIXLINKS CUSTOM CODE--// //--END CUSTOM CODE--// @@ -268,7 +574,9 @@ void NiParticlesData::FixLinks( const map<unsigned int,NiObjectRef> & objects, l std::list<NiObjectRef> NiParticlesData::GetRefs() const { list<Ref<NiObject> > refs; - refs = NiGeometryData::GetRefs(); + refs = NiObject::GetRefs(); + if ( additionalData != NULL ) + refs.push_back(StaticCast<NiObject>(additionalData)); return refs; } diff --git a/src/obj/NiSequence.cpp b/src/obj/NiSequence.cpp index 986a0098..d7a916b0 100644 --- a/src/obj/NiSequence.cpp +++ b/src/obj/NiSequence.cpp @@ -77,10 +77,7 @@ void NiSequence::Read( istream& in, list<unsigned int> & link_stack, const NifIn 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 ) ) { + if ( ( info.version >= 0x0A01006A ) && ( ((info.userVersion == 10) || (info.userVersion == 11)) ) ) { NifStream( controlledBlocks[i1].priority, in, info ); }; if ( ( info.version >= 0x0A020000 ) && ( info.version <= 0x14000005 ) ) { @@ -206,10 +203,7 @@ void NiSequence::Write( ostream& out, const map<NiObjectRef,unsigned int> & link } 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 ) ) { + if ( ( info.version >= 0x0A01006A ) && ( ((info.userVersion == 10) || (info.userVersion == 11)) ) ) { NifStream( controlledBlocks[i1].priority, out, info ); }; if ( ( info.version >= 0x0A020000 ) && ( info.version <= 0x14000005 ) ) { diff --git a/src/obj/NiTexturingProperty.cpp b/src/obj/NiTexturingProperty.cpp index fae86979..9a3f16c7 100644 --- a/src/obj/NiTexturingProperty.cpp +++ b/src/obj/NiTexturingProperty.cpp @@ -534,7 +534,7 @@ void NiTexturingProperty::Read( istream& in, list<unsigned int> & link_stack, co NifStream( shaderTextures[i2].textureData.centerOffset, in, info ); }; }; - NifStream( shaderTextures[i2].unknownInt, in, info ); + NifStream( shaderTextures[i2].mapIndex, in, info ); }; }; }; @@ -1103,7 +1103,7 @@ void NiTexturingProperty::Write( ostream& out, const map<NiObjectRef,unsigned in NifStream( shaderTextures[i2].textureData.centerOffset, out, info ); }; }; - NifStream( shaderTextures[i2].unknownInt, out, info ); + NifStream( shaderTextures[i2].mapIndex, out, info ); }; }; }; @@ -1386,7 +1386,7 @@ std::string NiTexturingProperty::asString( bool verbose ) const { out << " Transform Type?: " << shaderTextures[i1].textureData.transformType_ << endl; out << " Center Offset: " << shaderTextures[i1].textureData.centerOffset << endl; }; - out << " Unknown Int: " << shaderTextures[i1].unknownInt << endl; + out << " Map Index: " << shaderTextures[i1].mapIndex << endl; }; }; return out.str(); diff --git a/src/obj/SkyShaderProperty.cpp b/src/obj/SkyShaderProperty.cpp new file mode 100644 index 00000000..a09e180d --- /dev/null +++ b/src/obj/SkyShaderProperty.cpp @@ -0,0 +1,129 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/SkyShaderProperty.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type SkyShaderProperty::TYPE("SkyShaderProperty", &NiProperty::TYPE ); + +SkyShaderProperty::SkyShaderProperty() : unknownShort1((short)0), unknownShort2((short)0), unknownInt1((int)0), unknownInt2((int)0), unknownInt3((int)0), unknownInt4((int)0), unknownShort3((short)0), unknownInt5((int)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +SkyShaderProperty::~SkyShaderProperty() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & SkyShaderProperty::GetType() const { + return TYPE; +} + +NiObject * SkyShaderProperty::Create() { + return new SkyShaderProperty; +} + +void SkyShaderProperty::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiProperty::Read( in, link_stack, info ); + NifStream( unknownShort1, in, info ); + NifStream( unknownShort2, in, info ); + NifStream( unknownInt1, in, info ); + NifStream( unknownInt2, in, info ); + NifStream( unknownInt3, in, info ); + NifStream( unknownInt4, in, info ); + NifStream( unknownShort3, in, info ); + NifStream( fileName, in, info ); + NifStream( unknownInt5, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void SkyShaderProperty::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiProperty::Write( out, link_map, info ); + NifStream( unknownShort1, out, info ); + NifStream( unknownShort2, out, info ); + NifStream( unknownInt1, out, info ); + NifStream( unknownInt2, out, info ); + NifStream( unknownInt3, out, info ); + NifStream( unknownInt4, out, info ); + NifStream( unknownShort3, out, info ); + NifStream( fileName, out, info ); + NifStream( unknownInt5, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string SkyShaderProperty::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiProperty::asString(); + out << " Unknown Short 1: " << unknownShort1 << endl; + 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 Int 4: " << unknownInt4 << endl; + out << " Unknown Short 3: " << unknownShort3 << endl; + out << " File Name: " << fileName << endl; + out << " Unknown Int 5: " << unknownInt5 << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void SkyShaderProperty::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiProperty::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> SkyShaderProperty::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiProperty::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/TallGrassShaderProperty.cpp b/src/obj/TallGrassShaderProperty.cpp new file mode 100644 index 00000000..975dbf6d --- /dev/null +++ b/src/obj/TallGrassShaderProperty.cpp @@ -0,0 +1,117 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/TallGrassShaderProperty.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type TallGrassShaderProperty::TYPE("TallGrassShaderProperty", &NiShadeProperty::TYPE ); + +TallGrassShaderProperty::TallGrassShaderProperty() : unknownInt1((int)0), unknownInt2((int)0), unknownInt3((int)0), unknownFloat1((int)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +TallGrassShaderProperty::~TallGrassShaderProperty() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & TallGrassShaderProperty::GetType() const { + return TYPE; +} + +NiObject * TallGrassShaderProperty::Create() { + return new TallGrassShaderProperty; +} + +void TallGrassShaderProperty::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::Read( in, link_stack, info ); + NifStream( unknownInt1, in, info ); + NifStream( unknownInt2, in, info ); + NifStream( unknownInt3, in, info ); + NifStream( unknownFloat1, in, info ); + NifStream( fileName, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void TallGrassShaderProperty::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::Write( out, link_map, info ); + NifStream( unknownInt1, out, info ); + NifStream( unknownInt2, out, info ); + NifStream( unknownInt3, out, info ); + NifStream( unknownFloat1, out, info ); + NifStream( fileName, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string TallGrassShaderProperty::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiShadeProperty::asString(); + out << " Unknown Int 1: " << unknownInt1 << endl; + out << " Unknown Int 2: " << unknownInt2 << endl; + out << " Unknown Int 3: " << unknownInt3 << endl; + out << " Unknown Float 1: " << unknownFloat1 << endl; + out << " File Name: " << fileName << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void TallGrassShaderProperty::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> TallGrassShaderProperty::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiShadeProperty::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/TileShaderProperty.cpp b/src/obj/TileShaderProperty.cpp new file mode 100644 index 00000000..e42d9f55 --- /dev/null +++ b/src/obj/TileShaderProperty.cpp @@ -0,0 +1,120 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/TileShaderProperty.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type TileShaderProperty::TYPE("TileShaderProperty", &NiShadeProperty::TYPE ); + +TileShaderProperty::TileShaderProperty() : unknownInt1((int)0), unknownInt2((int)0), unknownInt3((int)0), unknownFloat1(0.0f), unknownInt5((int)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +TileShaderProperty::~TileShaderProperty() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & TileShaderProperty::GetType() const { + return TYPE; +} + +NiObject * TileShaderProperty::Create() { + return new TileShaderProperty; +} + +void TileShaderProperty::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::Read( in, link_stack, info ); + NifStream( unknownInt1, in, info ); + NifStream( unknownInt2, in, info ); + NifStream( unknownInt3, in, info ); + NifStream( unknownFloat1, in, info ); + NifStream( unknownInt5, in, info ); + NifStream( fileName, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void TileShaderProperty::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::Write( out, link_map, info ); + NifStream( unknownInt1, out, info ); + NifStream( unknownInt2, out, info ); + NifStream( unknownInt3, out, info ); + NifStream( unknownFloat1, out, info ); + NifStream( unknownInt5, out, info ); + NifStream( fileName, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string TileShaderProperty::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiShadeProperty::asString(); + out << " Unknown Int 1: " << unknownInt1 << endl; + out << " Unknown Int 2: " << unknownInt2 << endl; + out << " Unknown Int 3: " << unknownInt3 << endl; + out << " Unknown Float 1: " << unknownFloat1 << endl; + out << " Unknown Int 5: " << unknownInt5 << endl; + out << " File Name: " << fileName << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void TileShaderProperty::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> TileShaderProperty::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiShadeProperty::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/VolumetricFogShaderProperty.cpp b/src/obj/VolumetricFogShaderProperty.cpp new file mode 100644 index 00000000..e801073a --- /dev/null +++ b/src/obj/VolumetricFogShaderProperty.cpp @@ -0,0 +1,102 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/VolumetricFogShaderProperty.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type VolumetricFogShaderProperty::TYPE("VolumetricFogShaderProperty", &NiShadeProperty::TYPE ); + +VolumetricFogShaderProperty::VolumetricFogShaderProperty() { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +VolumetricFogShaderProperty::~VolumetricFogShaderProperty() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & VolumetricFogShaderProperty::GetType() const { + return TYPE; +} + +NiObject * VolumetricFogShaderProperty::Create() { + return new VolumetricFogShaderProperty; +} + +void VolumetricFogShaderProperty::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::Read( in, link_stack, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void VolumetricFogShaderProperty::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::Write( out, link_map, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string VolumetricFogShaderProperty::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiShadeProperty::asString(); + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void VolumetricFogShaderProperty::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiShadeProperty::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> VolumetricFogShaderProperty::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiShadeProperty::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/WaterShaderProperty.cpp b/src/obj/WaterShaderProperty.cpp new file mode 100644 index 00000000..c2bea898 --- /dev/null +++ b/src/obj/WaterShaderProperty.cpp @@ -0,0 +1,120 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/WaterShaderProperty.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type WaterShaderProperty::TYPE("WaterShaderProperty", &NiProperty::TYPE ); + +WaterShaderProperty::WaterShaderProperty() : unknownShort1((short)0), unknownInt1((int)0), unknownShort2((short)0), unknownUshort1((unsigned short)0), unknownInt2((int)0), unknownFloat1(0.0f) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +WaterShaderProperty::~WaterShaderProperty() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & WaterShaderProperty::GetType() const { + return TYPE; +} + +NiObject * WaterShaderProperty::Create() { + return new WaterShaderProperty; +} + +void WaterShaderProperty::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiProperty::Read( in, link_stack, info ); + NifStream( unknownShort1, in, info ); + NifStream( unknownInt1, in, info ); + NifStream( unknownShort2, in, info ); + NifStream( unknownUshort1, in, info ); + NifStream( unknownInt2, in, info ); + NifStream( unknownFloat1, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void WaterShaderProperty::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiProperty::Write( out, link_map, info ); + NifStream( unknownShort1, out, info ); + NifStream( unknownInt1, out, info ); + NifStream( unknownShort2, out, info ); + NifStream( unknownUshort1, out, info ); + NifStream( unknownInt2, out, info ); + NifStream( unknownFloat1, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string WaterShaderProperty::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << NiProperty::asString(); + out << " Unknown Short 1: " << unknownShort1 << endl; + out << " Unknown Int 1: " << unknownInt1 << endl; + out << " Unknown Short 2: " << unknownShort2 << endl; + out << " Unknown ushort 1: " << unknownUshort1 << endl; + out << " Unknown Int 2: " << unknownInt2 << endl; + out << " Unknown Float 1: " << unknownFloat1 << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void WaterShaderProperty::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + NiProperty::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> WaterShaderProperty::GetRefs() const { + list<Ref<NiObject> > refs; + refs = NiProperty::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/bhkAabbPhantom.cpp b/src/obj/bhkAabbPhantom.cpp new file mode 100644 index 00000000..ca4869b6 --- /dev/null +++ b/src/obj/bhkAabbPhantom.cpp @@ -0,0 +1,120 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/bhkAabbPhantom.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type bhkAabbPhantom::TYPE("bhkAabbPhantom", &bhkShapePhantom::TYPE ); + +bhkAabbPhantom::bhkAabbPhantom() { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +bhkAabbPhantom::~bhkAabbPhantom() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & bhkAabbPhantom::GetType() const { + return TYPE; +} + +NiObject * bhkAabbPhantom::Create() { + return new bhkAabbPhantom; +} + +void bhkAabbPhantom::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + bhkShapePhantom::Read( in, link_stack, info ); + for (unsigned int i1 = 0; i1 < 15; i1++) { + NifStream( unknownInts1[i1], in, info ); + }; + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void bhkAabbPhantom::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + bhkShapePhantom::Write( out, link_map, info ); + for (unsigned int i1 = 0; i1 < 15; i1++) { + NifStream( unknownInts1[i1], out, info ); + }; + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string bhkAabbPhantom::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << bhkShapePhantom::asString(); + array_output_count = 0; + for (unsigned int i1 = 0; i1 < 15; 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++; + }; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void bhkAabbPhantom::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + bhkShapePhantom::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> bhkAabbPhantom::GetRefs() const { + list<Ref<NiObject> > refs; + refs = bhkShapePhantom::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/bhkBreakableConstraint.cpp b/src/obj/bhkBreakableConstraint.cpp new file mode 100644 index 00000000..c9c81171 --- /dev/null +++ b/src/obj/bhkBreakableConstraint.cpp @@ -0,0 +1,123 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/bhkBreakableConstraint.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type bhkBreakableConstraint::TYPE("bhkBreakableConstraint", &bhkConstraint::TYPE ); + +bhkBreakableConstraint::bhkBreakableConstraint() : unknownShort1((short)0) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +bhkBreakableConstraint::~bhkBreakableConstraint() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & bhkBreakableConstraint::GetType() const { + return TYPE; +} + +NiObject * bhkBreakableConstraint::Create() { + return new bhkBreakableConstraint; +} + +void bhkBreakableConstraint::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + bhkConstraint::Read( in, link_stack, info ); + for (unsigned int i1 = 0; i1 < 41; i1++) { + NifStream( unknownInts1[i1], in, info ); + }; + NifStream( unknownShort1, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void bhkBreakableConstraint::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + bhkConstraint::Write( out, link_map, info ); + for (unsigned int i1 = 0; i1 < 41; i1++) { + NifStream( unknownInts1[i1], out, info ); + }; + NifStream( unknownShort1, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string bhkBreakableConstraint::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << bhkConstraint::asString(); + array_output_count = 0; + for (unsigned int i1 = 0; i1 < 41; 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 Short 1: " << unknownShort1 << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void bhkBreakableConstraint::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + bhkConstraint::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> bhkBreakableConstraint::GetRefs() const { + list<Ref<NiObject> > refs; + refs = bhkConstraint::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/bhkConvexListShape.cpp b/src/obj/bhkConvexListShape.cpp new file mode 100644 index 00000000..3215c6ff --- /dev/null +++ b/src/obj/bhkConvexListShape.cpp @@ -0,0 +1,171 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/bhkConvexListShape.h" +#include "../../include/obj/bhkShape.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type bhkConvexListShape::TYPE("bhkConvexListShape", &bhkShape::TYPE ); + +bhkConvexListShape::bhkConvexListShape() : numSubShapes((unsigned int)0), unknownByte1((byte)0), unknownFloat1(0.0f) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +bhkConvexListShape::~bhkConvexListShape() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & bhkConvexListShape::GetType() const { + return TYPE; +} + +NiObject * bhkConvexListShape::Create() { + return new bhkConvexListShape; +} + +void bhkConvexListShape::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + unsigned int block_num; + bhkShape::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( unknownByte1, in, info ); + NifStream( unknownFloat1, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void bhkConvexListShape::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + bhkShape::Write( out, link_map, info ); + numSubShapes = (unsigned int)(subShapes.size()); + NifStream( numSubShapes, out, info ); + for (unsigned int i1 = 0; i1 < subShapes.size(); i1++) { + if ( info.version < VER_3_3_0_13 ) { + NifStream( (unsigned int)&(*subShapes[i1]), out, info ); + } else { + 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( unknownByte1, out, info ); + NifStream( unknownFloat1, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string bhkConvexListShape::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << bhkShape::asString(); + 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 << " Unknown Byte 1: " << unknownByte1 << endl; + out << " Unknown Float 1: " << unknownFloat1 << endl; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void bhkConvexListShape::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + bhkShape::FixLinks( objects, link_stack, info ); + for (unsigned int i1 = 0; i1 < subShapes.size(); i1++) { + subShapes[i1] = FixLink<bhkShape>( objects, link_stack, info ); + }; + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> bhkConvexListShape::GetRefs() const { + list<Ref<NiObject> > refs; + refs = bhkShape::GetRefs(); + for (unsigned int i1 = 0; i1 < subShapes.size(); i1++) { + if ( subShapes[i1] != NULL ) + refs.push_back(StaticCast<NiObject>(subShapes[i1])); + }; + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/bhkHingeConstraint.cpp b/src/obj/bhkHingeConstraint.cpp index 37e4695d..dcf1f940 100644 --- a/src/obj/bhkHingeConstraint.cpp +++ b/src/obj/bhkHingeConstraint.cpp @@ -14,12 +14,13 @@ All rights reserved. Please see niflib.h for license. */ #include "../../include/ObjectRegistry.h" #include "../../include/NIF_IO.h" #include "../../include/obj/bhkHingeConstraint.h" +#include "../../include/gen/HingeDescriptor.h" using namespace Niflib; //Definition of TYPE constant const Type bhkHingeConstraint::TYPE("bhkHingeConstraint", &bhkConstraint::TYPE ); -bhkHingeConstraint::bhkHingeConstraint() { +bhkHingeConstraint::bhkHingeConstraint() : unknownFloat1(0.0f), unknownByte1((byte)0) { //--BEGIN CONSTRUCTOR CUSTOM CODE--// //--END CUSTOM CODE--// } @@ -42,11 +43,30 @@ void bhkHingeConstraint::Read( istream& in, list<unsigned int> & link_stack, con //--END CUSTOM CODE--// 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 ); + NifStream( hinge.pivotA, in, info ); + NifStream( hinge.perp2AxleInA1, in, info ); + NifStream( hinge.perp2AxleInA2, in, info ); + NifStream( hinge.pivotB, in, info ); + NifStream( hinge.axleB, in, info ); + if ( info.version >= 0x14020007 ) { + NifStream( hinge.unknownFloat1, in, info ); + NifStream( hinge.unknownInt2, in, info ); + NifStream( hinge.unknownInt3, in, info ); + NifStream( hinge.unknownInt4, in, info ); + NifStream( hinge.unknownInt5, in, info ); + NifStream( hinge.unknownInt6, in, info ); + NifStream( hinge.unknownInt7, in, info ); + NifStream( hinge.unknownInt8, in, info ); + NifStream( hinge.unknownInt9, in, info ); + NifStream( hinge.unknownInt10, in, info ); + NifStream( hinge.unknownByte1, in, info ); + NifStream( hinge.unknownByte2, in, info ); + NifStream( hinge.unknownByte3, in, info ); + }; + if ( info.version >= 0x14020007 ) { + NifStream( unknownFloat1, in, info ); + NifStream( unknownByte1, in, info ); + }; //--BEGIN POST-READ CUSTOM CODE--// //--END CUSTOM CODE--// @@ -57,11 +77,30 @@ void bhkHingeConstraint::Write( ostream& out, const map<NiObjectRef,unsigned int //--END CUSTOM CODE--// 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 ); + NifStream( hinge.pivotA, out, info ); + NifStream( hinge.perp2AxleInA1, out, info ); + NifStream( hinge.perp2AxleInA2, out, info ); + NifStream( hinge.pivotB, out, info ); + NifStream( hinge.axleB, out, info ); + if ( info.version >= 0x14020007 ) { + NifStream( hinge.unknownFloat1, out, info ); + NifStream( hinge.unknownInt2, out, info ); + NifStream( hinge.unknownInt3, out, info ); + NifStream( hinge.unknownInt4, out, info ); + NifStream( hinge.unknownInt5, out, info ); + NifStream( hinge.unknownInt6, out, info ); + NifStream( hinge.unknownInt7, out, info ); + NifStream( hinge.unknownInt8, out, info ); + NifStream( hinge.unknownInt9, out, info ); + NifStream( hinge.unknownInt10, out, info ); + NifStream( hinge.unknownByte1, out, info ); + NifStream( hinge.unknownByte2, out, info ); + NifStream( hinge.unknownByte3, out, info ); + }; + if ( info.version >= 0x14020007 ) { + NifStream( unknownFloat1, out, info ); + NifStream( unknownByte1, out, info ); + }; //--BEGIN POST-WRITE CUSTOM CODE--// //--END CUSTOM CODE--// @@ -74,11 +113,26 @@ std::string bhkHingeConstraint::asString( bool verbose ) const { stringstream out; unsigned int array_output_count = 0; out << bhkConstraint::asString(); - out << " Pivot A: " << pivotA << endl; - out << " Perp2 Axle In A1: " << perp2AxleInA1 << endl; - out << " Perp2 Axle In A2: " << perp2AxleInA2 << endl; - out << " Pivot B: " << pivotB << endl; - out << " Axle B: " << axleB << endl; + out << " Pivot A: " << hinge.pivotA << endl; + out << " Perp2 Axle In A1: " << hinge.perp2AxleInA1 << endl; + out << " Perp2 Axle In A2: " << hinge.perp2AxleInA2 << endl; + out << " Pivot B: " << hinge.pivotB << endl; + out << " Axle B: " << hinge.axleB << endl; + out << " Unknown Float 1: " << hinge.unknownFloat1 << endl; + out << " Unknown Int 2: " << hinge.unknownInt2 << endl; + out << " Unknown Int 3: " << hinge.unknownInt3 << endl; + out << " Unknown Int 4: " << hinge.unknownInt4 << endl; + out << " Unknown Int 5: " << hinge.unknownInt5 << endl; + out << " Unknown Int 6: " << hinge.unknownInt6 << endl; + out << " Unknown Int 7: " << hinge.unknownInt7 << endl; + out << " Unknown Int 8: " << hinge.unknownInt8 << endl; + out << " Unknown Int 9: " << hinge.unknownInt9 << endl; + out << " Unknown Int 10: " << hinge.unknownInt10 << endl; + out << " Unknown Byte 1: " << hinge.unknownByte1 << endl; + out << " Unknown Byte 2: " << hinge.unknownByte2 << endl; + out << " Unknown Byte 3: " << hinge.unknownByte3 << endl; + out << " Unknown Float 1: " << unknownFloat1 << endl; + out << " Unknown Byte 1: " << unknownByte1 << endl; return out.str(); //--BEGIN POST-STRING CUSTOM CODE--// diff --git a/src/obj/bhkLimitedHingeConstraint.cpp b/src/obj/bhkLimitedHingeConstraint.cpp index cbb10617..c251a27f 100644 --- a/src/obj/bhkLimitedHingeConstraint.cpp +++ b/src/obj/bhkLimitedHingeConstraint.cpp @@ -20,7 +20,7 @@ using namespace Niflib; //Definition of TYPE constant const Type bhkLimitedHingeConstraint::TYPE("bhkLimitedHingeConstraint", &bhkConstraint::TYPE ); -bhkLimitedHingeConstraint::bhkLimitedHingeConstraint() { +bhkLimitedHingeConstraint::bhkLimitedHingeConstraint() : unknownFloat1(0.0f), isDeathPose((byte)0), unknownInt1((int)0), unknownInt2((int)0), unknownInt3((int)0), unknownInt4((int)0), unknownInt5((int)0), unknownInt6((int)0), unknownByte1((byte)0) { //--BEGIN CONSTRUCTOR CUSTOM CODE--// //--END CUSTOM CODE--// } @@ -53,6 +53,24 @@ void bhkLimitedHingeConstraint::Read( istream& in, list<unsigned int> & link_sta NifStream( limitedHinge.minAngle, in, info ); NifStream( limitedHinge.maxAngle, in, info ); NifStream( limitedHinge.maxFriction, in, info ); + if ( info.version >= 0x14020007 ) { + NifStream( limitedHinge.unknownFloat1, in, info ); + NifStream( limitedHinge.unknownFloat2, in, info ); + NifStream( limitedHinge.unknownFloat3, in, info ); + }; + if ( info.version >= 0x14020007 ) { + NifStream( unknownFloat1, in, info ); + NifStream( isDeathPose, in, info ); + if ( isDeathPose ) { + NifStream( unknownInt1, in, info ); + NifStream( unknownInt2, in, info ); + NifStream( unknownInt3, in, info ); + NifStream( unknownInt4, in, info ); + NifStream( unknownInt5, in, info ); + NifStream( unknownInt6, in, info ); + NifStream( unknownByte1, in, info ); + }; + }; //--BEGIN POST-READ CUSTOM CODE--// //--END CUSTOM CODE--// @@ -73,6 +91,24 @@ void bhkLimitedHingeConstraint::Write( ostream& out, const map<NiObjectRef,unsig NifStream( limitedHinge.minAngle, out, info ); NifStream( limitedHinge.maxAngle, out, info ); NifStream( limitedHinge.maxFriction, out, info ); + if ( info.version >= 0x14020007 ) { + NifStream( limitedHinge.unknownFloat1, out, info ); + NifStream( limitedHinge.unknownFloat2, out, info ); + NifStream( limitedHinge.unknownFloat3, out, info ); + }; + if ( info.version >= 0x14020007 ) { + NifStream( unknownFloat1, out, info ); + NifStream( isDeathPose, out, info ); + if ( isDeathPose ) { + NifStream( unknownInt1, out, info ); + NifStream( unknownInt2, out, info ); + NifStream( unknownInt3, out, info ); + NifStream( unknownInt4, out, info ); + NifStream( unknownInt5, out, info ); + NifStream( unknownInt6, out, info ); + NifStream( unknownByte1, out, info ); + }; + }; //--BEGIN POST-WRITE CUSTOM CODE--// //--END CUSTOM CODE--// @@ -95,6 +131,20 @@ std::string bhkLimitedHingeConstraint::asString( bool verbose ) const { out << " Min Angle: " << limitedHinge.minAngle << endl; out << " Max Angle: " << limitedHinge.maxAngle << endl; out << " Max Friction: " << limitedHinge.maxFriction << endl; + out << " Unknown Float 1: " << limitedHinge.unknownFloat1 << endl; + out << " Unknown Float 2: " << limitedHinge.unknownFloat2 << endl; + out << " Unknown Float 3: " << limitedHinge.unknownFloat3 << endl; + out << " Unknown Float 1: " << unknownFloat1 << endl; + out << " Is Death Pose: " << isDeathPose << endl; + if ( isDeathPose ) { + out << " Unknown Int 1: " << unknownInt1 << endl; + out << " Unknown Int 2: " << unknownInt2 << endl; + out << " Unknown Int 3: " << unknownInt3 << endl; + out << " Unknown Int 4: " << unknownInt4 << endl; + out << " Unknown Int 5: " << unknownInt5 << endl; + out << " Unknown Int 6: " << unknownInt6 << endl; + out << " Unknown Byte 1: " << unknownByte1 << endl; + }; return out.str(); //--BEGIN POST-STRING CUSTOM CODE--// diff --git a/src/obj/bhkLiquidAction.cpp b/src/obj/bhkLiquidAction.cpp new file mode 100644 index 00000000..3bbc3832 --- /dev/null +++ b/src/obj/bhkLiquidAction.cpp @@ -0,0 +1,123 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/bhkLiquidAction.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type bhkLiquidAction::TYPE("bhkLiquidAction", &bhkSerializable::TYPE ); + +bhkLiquidAction::bhkLiquidAction() : unknownInt1((int)0), unknownInt2((int)0), unknownInt3((int)0), unknownFloat1(0.0f), unknownFloat2(0.0f), unknownFloat3(0.0f), unknownFloat4(0.0f) { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +bhkLiquidAction::~bhkLiquidAction() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & bhkLiquidAction::GetType() const { + return TYPE; +} + +NiObject * bhkLiquidAction::Create() { + return new bhkLiquidAction; +} + +void bhkLiquidAction::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + bhkSerializable::Read( in, link_stack, info ); + NifStream( unknownInt1, in, info ); + NifStream( unknownInt2, in, info ); + NifStream( unknownInt3, in, info ); + NifStream( unknownFloat1, in, info ); + NifStream( unknownFloat2, in, info ); + NifStream( unknownFloat3, in, info ); + NifStream( unknownFloat4, in, info ); + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void bhkLiquidAction::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + bhkSerializable::Write( out, link_map, info ); + NifStream( unknownInt1, out, info ); + NifStream( unknownInt2, out, info ); + NifStream( unknownInt3, out, info ); + NifStream( unknownFloat1, out, info ); + NifStream( unknownFloat2, out, info ); + NifStream( unknownFloat3, out, info ); + NifStream( unknownFloat4, out, info ); + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string bhkLiquidAction::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << bhkSerializable::asString(); + out << " Unknown Int 1: " << unknownInt1 << endl; + out << " Unknown Int 2: " << unknownInt2 << endl; + out << " Unknown Int 3: " << unknownInt3 << 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(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void bhkLiquidAction::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + bhkSerializable::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> bhkLiquidAction::GetRefs() const { + list<Ref<NiObject> > refs; + refs = bhkSerializable::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/bhkMalleableConstraint.cpp b/src/obj/bhkMalleableConstraint.cpp index 407be4a6..608ce26e 100644 --- a/src/obj/bhkMalleableConstraint.cpp +++ b/src/obj/bhkMalleableConstraint.cpp @@ -14,6 +14,7 @@ All rights reserved. Please see niflib.h for license. */ #include "../../include/ObjectRegistry.h" #include "../../include/NIF_IO.h" #include "../../include/obj/bhkMalleableConstraint.h" +#include "../../include/gen/HingeDescriptor.h" #include "../../include/gen/RagdollDescriptor.h" #include "../../include/gen/LimitedHingeDescriptor.h" #include "../../include/obj/NiObject.h" @@ -22,7 +23,7 @@ using namespace Niflib; //Definition of TYPE constant const Type bhkMalleableConstraint::TYPE("bhkMalleableConstraint", &bhkConstraint::TYPE ); -bhkMalleableConstraint::bhkMalleableConstraint() : type((unsigned int)0), unknownInt2((unsigned int)0), unknownLink1(NULL), unknownLink2(NULL), unknownInt3((unsigned int)0), tau(0.0f), damping(0.0f) { +bhkMalleableConstraint::bhkMalleableConstraint() : type((unsigned int)0), unknownInt2((unsigned int)0), unknownLink1(NULL), unknownLink2(NULL), unknownInt3((unsigned int)0), tau(0.0f), unknownByte1((byte)0), damping(0.0f) { //--BEGIN CONSTRUCTOR CUSTOM CODE--// //--END CUSTOM CODE--// } @@ -53,6 +54,28 @@ void bhkMalleableConstraint::Read( istream& in, list<unsigned int> & link_stack, NifStream( block_num, in, info ); link_stack.push_back( block_num ); NifStream( unknownInt3, in, info ); + if ( (type == 1) ) { + NifStream( hinge.pivotA, in, info ); + NifStream( hinge.perp2AxleInA1, in, info ); + NifStream( hinge.perp2AxleInA2, in, info ); + NifStream( hinge.pivotB, in, info ); + NifStream( hinge.axleB, in, info ); + if ( info.version >= 0x14020007 ) { + NifStream( hinge.unknownFloat1, in, info ); + NifStream( hinge.unknownInt2, in, info ); + NifStream( hinge.unknownInt3, in, info ); + NifStream( hinge.unknownInt4, in, info ); + NifStream( hinge.unknownInt5, in, info ); + NifStream( hinge.unknownInt6, in, info ); + NifStream( hinge.unknownInt7, in, info ); + NifStream( hinge.unknownInt8, in, info ); + NifStream( hinge.unknownInt9, in, info ); + NifStream( hinge.unknownInt10, in, info ); + NifStream( hinge.unknownByte1, in, info ); + NifStream( hinge.unknownByte2, in, info ); + NifStream( hinge.unknownByte3, in, info ); + }; + }; if ( (type == 7) ) { NifStream( ragdoll.pivotA, in, info ); NifStream( ragdoll.planeA, in, info ); @@ -66,6 +89,15 @@ void bhkMalleableConstraint::Read( istream& in, list<unsigned int> & link_stack, NifStream( ragdoll.twistMinAngle, in, info ); NifStream( ragdoll.twistMaxAngle, in, info ); NifStream( ragdoll.maxFriction, in, info ); + if ( info.version >= 0x14020007 ) { + NifStream( ragdoll.unknownFloat1, in, info ); + NifStream( ragdoll.unknownFloat2, in, info ); + NifStream( ragdoll.unknownFloat3, in, info ); + NifStream( ragdoll.unknownFloat4, in, info ); + NifStream( ragdoll.unknownFloat5, in, info ); + NifStream( ragdoll.unknownFloat6, in, info ); + NifStream( ragdoll.unknownFloat7, in, info ); + }; }; if ( (type == 2) ) { NifStream( limitedHinge.pivotA, in, info ); @@ -78,8 +110,16 @@ void bhkMalleableConstraint::Read( istream& in, list<unsigned int> & link_stack, NifStream( limitedHinge.minAngle, in, info ); NifStream( limitedHinge.maxAngle, in, info ); NifStream( limitedHinge.maxFriction, in, info ); + if ( info.version >= 0x14020007 ) { + NifStream( limitedHinge.unknownFloat1, in, info ); + NifStream( limitedHinge.unknownFloat2, in, info ); + NifStream( limitedHinge.unknownFloat3, in, info ); + }; }; NifStream( tau, in, info ); + if ( info.version >= 0x14020007 ) { + NifStream( unknownByte1, in, info ); + }; NifStream( damping, in, info ); //--BEGIN POST-READ CUSTOM CODE--// @@ -112,6 +152,28 @@ void bhkMalleableConstraint::Write( ostream& out, const map<NiObjectRef,unsigned } } NifStream( unknownInt3, out, info ); + if ( (type == 1) ) { + NifStream( hinge.pivotA, out, info ); + NifStream( hinge.perp2AxleInA1, out, info ); + NifStream( hinge.perp2AxleInA2, out, info ); + NifStream( hinge.pivotB, out, info ); + NifStream( hinge.axleB, out, info ); + if ( info.version >= 0x14020007 ) { + NifStream( hinge.unknownFloat1, out, info ); + NifStream( hinge.unknownInt2, out, info ); + NifStream( hinge.unknownInt3, out, info ); + NifStream( hinge.unknownInt4, out, info ); + NifStream( hinge.unknownInt5, out, info ); + NifStream( hinge.unknownInt6, out, info ); + NifStream( hinge.unknownInt7, out, info ); + NifStream( hinge.unknownInt8, out, info ); + NifStream( hinge.unknownInt9, out, info ); + NifStream( hinge.unknownInt10, out, info ); + NifStream( hinge.unknownByte1, out, info ); + NifStream( hinge.unknownByte2, out, info ); + NifStream( hinge.unknownByte3, out, info ); + }; + }; if ( (type == 7) ) { NifStream( ragdoll.pivotA, out, info ); NifStream( ragdoll.planeA, out, info ); @@ -125,6 +187,15 @@ void bhkMalleableConstraint::Write( ostream& out, const map<NiObjectRef,unsigned NifStream( ragdoll.twistMinAngle, out, info ); NifStream( ragdoll.twistMaxAngle, out, info ); NifStream( ragdoll.maxFriction, out, info ); + if ( info.version >= 0x14020007 ) { + NifStream( ragdoll.unknownFloat1, out, info ); + NifStream( ragdoll.unknownFloat2, out, info ); + NifStream( ragdoll.unknownFloat3, out, info ); + NifStream( ragdoll.unknownFloat4, out, info ); + NifStream( ragdoll.unknownFloat5, out, info ); + NifStream( ragdoll.unknownFloat6, out, info ); + NifStream( ragdoll.unknownFloat7, out, info ); + }; }; if ( (type == 2) ) { NifStream( limitedHinge.pivotA, out, info ); @@ -137,8 +208,16 @@ void bhkMalleableConstraint::Write( ostream& out, const map<NiObjectRef,unsigned NifStream( limitedHinge.minAngle, out, info ); NifStream( limitedHinge.maxAngle, out, info ); NifStream( limitedHinge.maxFriction, out, info ); + if ( info.version >= 0x14020007 ) { + NifStream( limitedHinge.unknownFloat1, out, info ); + NifStream( limitedHinge.unknownFloat2, out, info ); + NifStream( limitedHinge.unknownFloat3, out, info ); + }; }; NifStream( tau, out, info ); + if ( info.version >= 0x14020007 ) { + NifStream( unknownByte1, out, info ); + }; NifStream( damping, out, info ); //--BEGIN POST-WRITE CUSTOM CODE--// @@ -157,6 +236,26 @@ std::string bhkMalleableConstraint::asString( bool verbose ) const { out << " Unknown Link 1: " << unknownLink1 << endl; out << " Unknown Link 2: " << unknownLink2 << endl; out << " Unknown Int 3: " << unknownInt3 << endl; + if ( (type == 1) ) { + out << " Pivot A: " << hinge.pivotA << endl; + out << " Perp2 Axle In A1: " << hinge.perp2AxleInA1 << endl; + out << " Perp2 Axle In A2: " << hinge.perp2AxleInA2 << endl; + out << " Pivot B: " << hinge.pivotB << endl; + out << " Axle B: " << hinge.axleB << endl; + out << " Unknown Float 1: " << hinge.unknownFloat1 << endl; + out << " Unknown Int 2: " << hinge.unknownInt2 << endl; + out << " Unknown Int 3: " << hinge.unknownInt3 << endl; + out << " Unknown Int 4: " << hinge.unknownInt4 << endl; + out << " Unknown Int 5: " << hinge.unknownInt5 << endl; + out << " Unknown Int 6: " << hinge.unknownInt6 << endl; + out << " Unknown Int 7: " << hinge.unknownInt7 << endl; + out << " Unknown Int 8: " << hinge.unknownInt8 << endl; + out << " Unknown Int 9: " << hinge.unknownInt9 << endl; + out << " Unknown Int 10: " << hinge.unknownInt10 << endl; + out << " Unknown Byte 1: " << hinge.unknownByte1 << endl; + out << " Unknown Byte 2: " << hinge.unknownByte2 << endl; + out << " Unknown Byte 3: " << hinge.unknownByte3 << endl; + }; if ( (type == 7) ) { out << " Pivot A: " << ragdoll.pivotA << endl; out << " Plane A: " << ragdoll.planeA << endl; @@ -170,6 +269,13 @@ std::string bhkMalleableConstraint::asString( bool verbose ) const { out << " Twist Min Angle: " << ragdoll.twistMinAngle << endl; out << " Twist Max Angle: " << ragdoll.twistMaxAngle << endl; out << " Max Friction: " << ragdoll.maxFriction << endl; + out << " Unknown Float 1: " << ragdoll.unknownFloat1 << endl; + out << " Unknown Float 2: " << ragdoll.unknownFloat2 << endl; + out << " Unknown Float 3: " << ragdoll.unknownFloat3 << endl; + out << " Unknown Float 4: " << ragdoll.unknownFloat4 << endl; + out << " Unknown Float 5: " << ragdoll.unknownFloat5 << endl; + out << " Unknown Float 6: " << ragdoll.unknownFloat6 << endl; + out << " Unknown Float 7: " << ragdoll.unknownFloat7 << endl; }; if ( (type == 2) ) { out << " Pivot A: " << limitedHinge.pivotA << endl; @@ -182,8 +288,12 @@ std::string bhkMalleableConstraint::asString( bool verbose ) const { out << " Min Angle: " << limitedHinge.minAngle << endl; out << " Max Angle: " << limitedHinge.maxAngle << endl; out << " Max Friction: " << limitedHinge.maxFriction << endl; + out << " Unknown Float 1: " << limitedHinge.unknownFloat1 << endl; + out << " Unknown Float 2: " << limitedHinge.unknownFloat2 << endl; + out << " Unknown Float 3: " << limitedHinge.unknownFloat3 << endl; }; out << " Tau: " << tau << endl; + out << " Unknown Byte 1: " << unknownByte1 << endl; out << " Damping: " << damping << endl; return out.str(); diff --git a/src/obj/bhkOrientHingedBodyAction.cpp b/src/obj/bhkOrientHingedBodyAction.cpp new file mode 100644 index 00000000..2132ca0a --- /dev/null +++ b/src/obj/bhkOrientHingedBodyAction.cpp @@ -0,0 +1,120 @@ +/* Copyright (c) 2006, NIF File Format Library and Tools +All rights reserved. Please see niflib.h for license. */ + +//-----------------------------------NOTICE----------------------------------// +// Some of this file is automatically filled in by a Python script. Only // +// add custom code in the designated areas or it will be overwritten during // +// the next update. // +//-----------------------------------NOTICE----------------------------------// + +//--BEGIN FILE HEAD CUSTOM CODE--// + +//--END CUSTOM CODE--// + +#include "../../include/FixLink.h" +#include "../../include/ObjectRegistry.h" +#include "../../include/NIF_IO.h" +#include "../../include/obj/bhkOrientHingedBodyAction.h" +using namespace Niflib; + +//Definition of TYPE constant +const Type bhkOrientHingedBodyAction::TYPE("bhkOrientHingedBodyAction", &bhkSerializable::TYPE ); + +bhkOrientHingedBodyAction::bhkOrientHingedBodyAction() { + //--BEGIN CONSTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +bhkOrientHingedBodyAction::~bhkOrientHingedBodyAction() { + //--BEGIN DESTRUCTOR CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +const Type & bhkOrientHingedBodyAction::GetType() const { + return TYPE; +} + +NiObject * bhkOrientHingedBodyAction::Create() { + return new bhkOrientHingedBodyAction; +} + +void bhkOrientHingedBodyAction::Read( istream& in, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// + + bhkSerializable::Read( in, link_stack, info ); + for (unsigned int i1 = 0; i1 < 17; i1++) { + NifStream( unknownInts1[i1], in, info ); + }; + + //--BEGIN POST-READ CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void bhkOrientHingedBodyAction::Write( ostream& out, const map<NiObjectRef,unsigned int> & link_map, const NifInfo & info ) const { + //--BEGIN PRE-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// + + bhkSerializable::Write( out, link_map, info ); + for (unsigned int i1 = 0; i1 < 17; i1++) { + NifStream( unknownInts1[i1], out, info ); + }; + + //--BEGIN POST-WRITE CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::string bhkOrientHingedBodyAction::asString( bool verbose ) const { + //--BEGIN PRE-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// + + stringstream out; + unsigned int array_output_count = 0; + out << bhkSerializable::asString(); + array_output_count = 0; + for (unsigned int i1 = 0; i1 < 17; 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++; + }; + return out.str(); + + //--BEGIN POST-STRING CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +void bhkOrientHingedBodyAction::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsigned int> & link_stack, const NifInfo & info ) { + //--BEGIN PRE-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// + + bhkSerializable::FixLinks( objects, link_stack, info ); + + //--BEGIN POST-FIXLINKS CUSTOM CODE--// + + //--END CUSTOM CODE--// +} + +std::list<NiObjectRef> bhkOrientHingedBodyAction::GetRefs() const { + list<Ref<NiObject> > refs; + refs = bhkSerializable::GetRefs(); + return refs; +} + +//--BEGIN MISC CUSTOM CODE--// + +//--END CUSTOM CODE--// diff --git a/src/obj/bhkPackedNiTriStripsShape.cpp b/src/obj/bhkPackedNiTriStripsShape.cpp index 5c6fc614..ac27f6ce 100644 --- a/src/obj/bhkPackedNiTriStripsShape.cpp +++ b/src/obj/bhkPackedNiTriStripsShape.cpp @@ -46,14 +46,16 @@ void bhkPackedNiTriStripsShape::Read( istream& in, list<unsigned int> & link_sta 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].wieldingType_, in, info ); - NifStream( subShapes[i1].numVertices, in, info ); - NifStream( subShapes[i1].material, in, info ); + if ( info.version <= 0x14000005 ) { + NifStream( numSubShapes, in, info ); + subShapes.resize(numSubShapes); + for (unsigned int i2 = 0; i2 < subShapes.size(); i2++) { + NifStream( subShapes[i2].layer, in, info ); + NifStream( subShapes[i2].colFilter, in, info ); + NifStream( subShapes[i2].wieldingType_, in, info ); + NifStream( subShapes[i2].numVertices, in, info ); + NifStream( subShapes[i2].material, in, info ); + }; }; NifStream( unknownInt1, in, info ); NifStream( unknownInt2, in, info ); @@ -77,13 +79,15 @@ void bhkPackedNiTriStripsShape::Write( ostream& out, const map<NiObjectRef,unsig 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].wieldingType_, out, info ); - NifStream( subShapes[i1].numVertices, out, info ); - NifStream( subShapes[i1].material, out, info ); + if ( info.version <= 0x14000005 ) { + NifStream( numSubShapes, out, info ); + for (unsigned int i2 = 0; i2 < subShapes.size(); i2++) { + NifStream( subShapes[i2].layer, out, info ); + NifStream( subShapes[i2].colFilter, out, info ); + NifStream( subShapes[i2].wieldingType_, out, info ); + NifStream( subShapes[i2].numVertices, out, info ); + NifStream( subShapes[i2].material, out, info ); + }; }; NifStream( unknownInt1, out, info ); NifStream( unknownInt2, out, info ); diff --git a/src/obj/bhkPrismaticConstraint.cpp b/src/obj/bhkPrismaticConstraint.cpp index 8eb7430e..03d54284 100644 --- a/src/obj/bhkPrismaticConstraint.cpp +++ b/src/obj/bhkPrismaticConstraint.cpp @@ -19,7 +19,7 @@ using namespace Niflib; //Definition of TYPE constant const Type bhkPrismaticConstraint::TYPE("bhkPrismaticConstraint", &bhkConstraint::TYPE ); -bhkPrismaticConstraint::bhkPrismaticConstraint() : minDistance(0.0f), maxDistance(0.0f), friction(0.0f) { +bhkPrismaticConstraint::bhkPrismaticConstraint() : minDistance(0.0f), maxDistance(0.0f), friction(0.0f), unknownByte1((byte)0) { //--BEGIN CONSTRUCTOR CUSTOM CODE--// //--END CUSTOM CODE--// } @@ -52,6 +52,9 @@ void bhkPrismaticConstraint::Read( istream& in, list<unsigned int> & link_stack, NifStream( minDistance, in, info ); NifStream( maxDistance, in, info ); NifStream( friction, in, info ); + if ( info.version >= 0x14020007 ) { + NifStream( unknownByte1, in, info ); + }; //--BEGIN POST-READ CUSTOM CODE--// //--END CUSTOM CODE--// @@ -72,6 +75,9 @@ void bhkPrismaticConstraint::Write( ostream& out, const map<NiObjectRef,unsigned NifStream( minDistance, out, info ); NifStream( maxDistance, out, info ); NifStream( friction, out, info ); + if ( info.version >= 0x14020007 ) { + NifStream( unknownByte1, out, info ); + }; //--BEGIN POST-WRITE CUSTOM CODE--// //--END CUSTOM CODE--// @@ -103,6 +109,7 @@ std::string bhkPrismaticConstraint::asString( bool verbose ) const { out << " Min Distance: " << minDistance << endl; out << " Max Distance: " << maxDistance << endl; out << " Friction: " << friction << endl; + out << " Unknown Byte 1: " << unknownByte1 << endl; return out.str(); //--BEGIN POST-STRING CUSTOM CODE--// diff --git a/src/obj/bhkRagdollConstraint.cpp b/src/obj/bhkRagdollConstraint.cpp index d9fcdd08..711f7905 100644 --- a/src/obj/bhkRagdollConstraint.cpp +++ b/src/obj/bhkRagdollConstraint.cpp @@ -20,7 +20,7 @@ using namespace Niflib; //Definition of TYPE constant const Type bhkRagdollConstraint::TYPE("bhkRagdollConstraint", &bhkConstraint::TYPE ); -bhkRagdollConstraint::bhkRagdollConstraint() { +bhkRagdollConstraint::bhkRagdollConstraint() : unknownFloat1(0.0f), isDeathPose((byte)0), unknownInt1((int)0), unknownInt2((int)0), unknownInt3((int)0), unknownInt4((int)0), unknownInt5((int)0), unknownInt6((int)0), unknownByte1((byte)0) { //--BEGIN CONSTRUCTOR CUSTOM CODE--// //--END CUSTOM CODE--// } @@ -55,6 +55,28 @@ void bhkRagdollConstraint::Read( istream& in, list<unsigned int> & link_stack, c NifStream( ragdoll.twistMinAngle, in, info ); NifStream( ragdoll.twistMaxAngle, in, info ); NifStream( ragdoll.maxFriction, in, info ); + if ( info.version >= 0x14020007 ) { + NifStream( ragdoll.unknownFloat1, in, info ); + NifStream( ragdoll.unknownFloat2, in, info ); + NifStream( ragdoll.unknownFloat3, in, info ); + NifStream( ragdoll.unknownFloat4, in, info ); + NifStream( ragdoll.unknownFloat5, in, info ); + NifStream( ragdoll.unknownFloat6, in, info ); + NifStream( ragdoll.unknownFloat7, in, info ); + }; + if ( info.version >= 0x14020007 ) { + NifStream( unknownFloat1, in, info ); + NifStream( isDeathPose, in, info ); + if ( isDeathPose ) { + NifStream( unknownInt1, in, info ); + NifStream( unknownInt2, in, info ); + NifStream( unknownInt3, in, info ); + NifStream( unknownInt4, in, info ); + NifStream( unknownInt5, in, info ); + NifStream( unknownInt6, in, info ); + NifStream( unknownByte1, in, info ); + }; + }; //--BEGIN POST-READ CUSTOM CODE--// //--END CUSTOM CODE--// @@ -77,6 +99,28 @@ void bhkRagdollConstraint::Write( ostream& out, const map<NiObjectRef,unsigned i NifStream( ragdoll.twistMinAngle, out, info ); NifStream( ragdoll.twistMaxAngle, out, info ); NifStream( ragdoll.maxFriction, out, info ); + if ( info.version >= 0x14020007 ) { + NifStream( ragdoll.unknownFloat1, out, info ); + NifStream( ragdoll.unknownFloat2, out, info ); + NifStream( ragdoll.unknownFloat3, out, info ); + NifStream( ragdoll.unknownFloat4, out, info ); + NifStream( ragdoll.unknownFloat5, out, info ); + NifStream( ragdoll.unknownFloat6, out, info ); + NifStream( ragdoll.unknownFloat7, out, info ); + }; + if ( info.version >= 0x14020007 ) { + NifStream( unknownFloat1, out, info ); + NifStream( isDeathPose, out, info ); + if ( isDeathPose ) { + NifStream( unknownInt1, out, info ); + NifStream( unknownInt2, out, info ); + NifStream( unknownInt3, out, info ); + NifStream( unknownInt4, out, info ); + NifStream( unknownInt5, out, info ); + NifStream( unknownInt6, out, info ); + NifStream( unknownByte1, out, info ); + }; + }; //--BEGIN POST-WRITE CUSTOM CODE--// //--END CUSTOM CODE--// @@ -101,6 +145,24 @@ std::string bhkRagdollConstraint::asString( bool verbose ) const { out << " Twist Min Angle: " << ragdoll.twistMinAngle << endl; out << " Twist Max Angle: " << ragdoll.twistMaxAngle << endl; out << " Max Friction: " << ragdoll.maxFriction << endl; + out << " Unknown Float 1: " << ragdoll.unknownFloat1 << endl; + out << " Unknown Float 2: " << ragdoll.unknownFloat2 << endl; + out << " Unknown Float 3: " << ragdoll.unknownFloat3 << endl; + out << " Unknown Float 4: " << ragdoll.unknownFloat4 << endl; + out << " Unknown Float 5: " << ragdoll.unknownFloat5 << endl; + out << " Unknown Float 6: " << ragdoll.unknownFloat6 << endl; + out << " Unknown Float 7: " << ragdoll.unknownFloat7 << endl; + out << " Unknown Float 1: " << unknownFloat1 << endl; + out << " Is Death Pose: " << isDeathPose << endl; + if ( isDeathPose ) { + out << " Unknown Int 1: " << unknownInt1 << endl; + out << " Unknown Int 2: " << unknownInt2 << endl; + out << " Unknown Int 3: " << unknownInt3 << endl; + out << " Unknown Int 4: " << unknownInt4 << endl; + out << " Unknown Int 5: " << unknownInt5 << endl; + out << " Unknown Int 6: " << unknownInt6 << endl; + out << " Unknown Byte 1: " << unknownByte1 << endl; + }; return out.str(); //--BEGIN POST-STRING CUSTOM CODE--// diff --git a/src/obj/bhkRigidBody.cpp b/src/obj/bhkRigidBody.cpp index a02f167e..30b2ccbc 100644 --- a/src/obj/bhkRigidBody.cpp +++ b/src/obj/bhkRigidBody.cpp @@ -16,7 +16,7 @@ All rights reserved. Please see niflib.h for license. */ #include "../../include/NIF_IO.h" #include "../../include/obj/bhkRigidBody.h" #include "../../include/gen/QuaternionXYZW.h" -#include "../../include/obj/bhkConstraint.h" +#include "../../include/obj/bhkSerializable.h" using namespace Niflib; //Definition of TYPE constant @@ -263,7 +263,7 @@ void bhkRigidBody::FixLinks( const map<unsigned int,NiObjectRef> & objects, list bhkEntity::FixLinks( objects, link_stack, info ); for (unsigned int i1 = 0; i1 < constraints.size(); i1++) { - constraints[i1] = FixLink<bhkConstraint>( objects, link_stack, info ); + constraints[i1] = FixLink<bhkSerializable>( objects, link_stack, info ); }; //--BEGIN POST-FIXLINKS CUSTOM CODE--// diff --git a/src/obj/hkPackedNiTriStripsData.cpp b/src/obj/hkPackedNiTriStripsData.cpp index 2fa54df8..2f43b8a4 100644 --- a/src/obj/hkPackedNiTriStripsData.cpp +++ b/src/obj/hkPackedNiTriStripsData.cpp @@ -15,12 +15,13 @@ All rights reserved. Please see niflib.h for license. */ #include "../../include/NIF_IO.h" #include "../../include/obj/hkPackedNiTriStripsData.h" #include "../../include/gen/hkTriangle.h" +#include "../../include/gen/OblivionSubShape.h" using namespace Niflib; //Definition of TYPE constant const Type hkPackedNiTriStripsData::TYPE("hkPackedNiTriStripsData", &bhkShapeCollection::TYPE ); -hkPackedNiTriStripsData::hkPackedNiTriStripsData() : numTriangles((unsigned int)0), numVertices((unsigned int)0) { +hkPackedNiTriStripsData::hkPackedNiTriStripsData() : numTriangles((unsigned int)0), numVertices((unsigned int)0), unknownByte1((byte)0), numSubShapes((unsigned short)0) { //--BEGIN CONSTRUCTOR CUSTOM CODE--// //--END CUSTOM CODE--// } @@ -48,13 +49,29 @@ void hkPackedNiTriStripsData::Read( istream& in, list<unsigned int> & link_stack for (unsigned int i1 = 0; i1 < triangles.size(); i1++) { NifStream( triangles[i1].triangle, in, info ); NifStream( triangles[i1].weldingInformation_, in, info ); - NifStream( triangles[i1].normal, in, info ); + if ( info.version <= 0x14000005 ) { + NifStream( triangles[i1].normal, in, info ); + }; }; NifStream( numVertices, in, info ); + if ( info.version >= 0x14020007 ) { + NifStream( unknownByte1, in, info ); + }; vertices.resize(numVertices); for (unsigned int i1 = 0; i1 < vertices.size(); i1++) { NifStream( vertices[i1], in, info ); }; + if ( info.version >= 0x14020007 ) { + NifStream( numSubShapes, in, info ); + subShapes.resize(numSubShapes); + for (unsigned int i2 = 0; i2 < subShapes.size(); i2++) { + NifStream( subShapes[i2].layer, in, info ); + NifStream( subShapes[i2].colFilter, in, info ); + NifStream( subShapes[i2].wieldingType_, in, info ); + NifStream( subShapes[i2].numVertices, in, info ); + NifStream( subShapes[i2].material, in, info ); + }; + }; //--BEGIN POST-READ CUSTOM CODE--// //--END CUSTOM CODE--// @@ -65,18 +82,34 @@ void hkPackedNiTriStripsData::Write( ostream& out, const map<NiObjectRef,unsigne //--END CUSTOM CODE--// bhkShapeCollection::Write( out, link_map, info ); + numSubShapes = (unsigned short)(subShapes.size()); 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].weldingInformation_, out, info ); - NifStream( triangles[i1].normal, out, info ); + if ( info.version <= 0x14000005 ) { + NifStream( triangles[i1].normal, out, info ); + }; }; NifStream( numVertices, out, info ); + if ( info.version >= 0x14020007 ) { + NifStream( unknownByte1, out, info ); + }; for (unsigned int i1 = 0; i1 < vertices.size(); i1++) { NifStream( vertices[i1], out, info ); }; + if ( info.version >= 0x14020007 ) { + NifStream( numSubShapes, out, info ); + for (unsigned int i2 = 0; i2 < subShapes.size(); i2++) { + NifStream( subShapes[i2].layer, out, info ); + NifStream( subShapes[i2].colFilter, out, info ); + NifStream( subShapes[i2].wieldingType_, out, info ); + NifStream( subShapes[i2].numVertices, out, info ); + NifStream( subShapes[i2].material, out, info ); + }; + }; //--BEGIN POST-WRITE CUSTOM CODE--// //--END CUSTOM CODE--// @@ -89,6 +122,7 @@ std::string hkPackedNiTriStripsData::asString( bool verbose ) const { stringstream out; unsigned int array_output_count = 0; out << bhkShapeCollection::asString(); + numSubShapes = (unsigned short)(subShapes.size()); numVertices = (unsigned int)(vertices.size()); numTriangles = (unsigned int)(triangles.size()); out << " Num Triangles: " << numTriangles << endl; @@ -103,6 +137,7 @@ std::string hkPackedNiTriStripsData::asString( bool verbose ) const { out << " Normal: " << triangles[i1].normal << endl; }; out << " Num Vertices: " << numVertices << endl; + out << " Unknown Byte 1: " << unknownByte1 << endl; array_output_count = 0; for (unsigned int i1 = 0; i1 < vertices.size(); i1++) { if ( !verbose && ( array_output_count > MAXARRAYDUMP ) ) { @@ -115,6 +150,19 @@ std::string hkPackedNiTriStripsData::asString( bool verbose ) const { out << " Vertices[" << i1 << "]: " << vertices[i1] << endl; array_output_count++; }; + 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 << " Wielding Type?: " << subShapes[i1].wieldingType_ << endl; + out << " Num Vertices: " << subShapes[i1].numVertices << endl; + out << " Material: " << subShapes[i1].material << endl; + }; return out.str(); //--BEGIN POST-STRING CUSTOM CODE--// -- GitLab