diff --git a/Makefile b/Makefile index 1b4f5ab4db9f5f6a669498ea854dfa499fcc9e11..4ab7e47ef34378a504e29474ab36055a182d96ab 100644 --- a/Makefile +++ b/Makefile @@ -29,8 +29,8 @@ CXXFLAGS = $(CFLAGS) #IT should find the libs used, but if it doesn't specify here. Ex: -lm for libm.so.<whatever> LIBS = L_FLAGS = -shared -Wl,-soname,libniflib.so.0 -VERSION = .6.3 -VERSION_MIN = .6 +VERSION = 0.7 +VERSION_MIN = 0.7 TARGET = libniflib.so.0$(VERSION) TARGETA = libniflib.a @@ -46,271 +46,299 @@ TARGET2 = libniflib.so.0.$(VERSION_MIN) OBJ_FILES = NvTriStrip/NvTriStrip.o \ NvTriStrip/NvTriStripObjects.o \ NvTriStrip/VertexCache.o \ - src/ComplexShape.o \ - src/kfm.o \ - src/NIF_IO.o \ - src/nif_math.o \ - src/niflib.o \ - src/pch.o \ - src/Type.o \ TriStripper/connectivity_graph.o \ TriStripper/policy.o \ - TriStripper/tri_stripper.o \ - src/gen/AVObject.o \ - src/gen/BoundingBox.o \ - src/gen/ByteArray.o \ - src/gen/ControllerLink.o \ - src/gen/enums.o \ - src/gen/Footer.o \ - src/gen/FurniturePosition.o \ - src/gen/Header.o \ - src/gen/hkTriangle.o \ - src/gen/LimitedHingeDescriptor.o \ - src/gen/LODRange.o \ - src/gen/MatchGroup.o \ - src/gen/MipMap.o \ - src/gen/Morph.o \ - src/gen/NodeGroup.o \ - src/gen/obj_factories.o \ - src/gen/obj_impl.o \ - src/gen/OblivionColFilter.o \ - src/gen/OblivionSubShape.o \ - src/gen/Particle.o \ - src/gen/QuaternionXYZW.o \ - src/gen/RagDollDescriptor.o \ - src/gen/ShaderTexDesc.o \ - src/gen/SkinData.o \ - src/gen/SkinPartition.o \ - src/gen/SkinShape.o \ - src/gen/SkinShapeGroup.o \ - src/gen/SkinWeight.o \ - src/gen/Sphere.o \ - src/gen/StringPalette.o \ - src/gen/TBC.o \ - src/gen/TexDesc.o \ - src/gen/TexSource.o \ - src/obj/AbhkConstraint.o \ - src/obj/AbhkRagdollConstraint.o \ - src/obj/AbhkShapeCollection.o \ - src/obj/ABoneLODController.o \ - src/obj/AKeyedData.o \ - src/obj/AParticleModifier.o \ - src/obj/APSysCtlr.o \ - src/obj/APSysData.o \ - src/obj/AvoidNode.o \ - src/obj/bhkBlendCollisionObject.o \ - src/obj/bhkBlendController.o \ - src/obj/bhkBoxShape.o \ - src/obj/bhkCapsuleShape.o \ - src/obj/bhkCollisionObject.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/bhkListShape.o \ - src/obj/bhkMalleableConstraint.o \ - src/obj/bhkMoppBvTreeShape.o \ - src/obj/bhkMultiSphereShape.o \ - src/obj/bhkNiTriStripsShape.o \ - src/obj/bhkPackedNiTriStripsShape.o \ - src/obj/bhkPrismaticConstraint.o \ - src/obj/bhkRagdollConstraint.o \ - src/obj/bhkRefObject.o \ - src/obj/bhkRigidBody.o \ - src/obj/bhkRigidBodyT.o \ - src/obj/bhkSerializable.o \ - src/obj/bhkShape.o \ - src/obj/bhkSimpleShapePhantom.o \ - src/obj/bhkSPCollisionObject.o \ - src/obj/bhkSphereRepShape.o \ - src/obj/bhkSphereShape.o \ - src/obj/bhkStiffSpringConstraint.o \ - src/obj/bhkTransformShape.o \ - src/obj/bhkWorldObject.o \ - src/obj/BSBound.o \ - src/obj/BSFurnitureMarker.o \ - src/obj/BSKeyframeController.o \ - src/obj/BSParentVelocityModifier.o \ - src/obj/BSPSysArrayEmitter.o \ - src/obj/BSXFlags.o \ - src/obj/FxButton.o \ - src/obj/FxRadioButton.o \ - src/obj/FxWidget.o \ - src/obj/hkPackedNiTriStripsData.o \ - src/obj/NiAlphaController.o \ - src/obj/NiAlphaProperty.o \ - src/obj/NiAmbientLight.o \ - src/obj/NiAutoNormalParticles.o \ - src/obj/NiAutoNormalParticlesData.o \ - src/obj/NiAVObject.o \ - src/obj/NiBillboardNode.o \ - src/obj/NiBinaryExtraData.o \ - src/obj/NiBlendBoolInterpolator.o \ - src/obj/NiBlendFloatInterpolator.o \ - src/obj/NiBlendInterpolator.o \ - src/obj/NiBlendPoint3Interpolator.o \ - src/obj/NiBlendTransformInterpolator.o \ - src/obj/NiBoneLODController.o \ - src/obj/NiBoolData.o \ - src/obj/NiBooleanExtraData.o \ - src/obj/NiBoolInterpolator.o \ - src/obj/NiBoolTimelineInterpolator.o \ - src/obj/NiBSAnimationNode.o \ - src/obj/NiBSBoneLODController.o \ - src/obj/NiBSPArrayController.o \ - src/obj/NiBSParticleNode.o \ - src/obj/NiBSplineBasisData.o \ - src/obj/NiBSplineCompFloatInterpolator.o \ - src/obj/NiBSplineCompPoint3Interpolator.o \ - src/obj/NiBSplineCompTransformInterpolator.o \ - src/obj/NiBSplineData.o \ - src/obj/NiBSplineInterpolator.o \ - src/obj/NiCamera.o \ - src/obj/NiClod.o \ - src/obj/NiClodData.o \ - src/obj/NiClodSkinInstance.o \ - src/obj/NiCollisionData.o \ - src/obj/NiCollisionObject.o \ - src/obj/NiColorData.o \ - src/obj/NiColorExtraData.o \ - src/obj/NiControllerManager.o \ - src/obj/NiControllerSequence.o \ - src/obj/NiDefaultAVObjectPalette.o \ - src/obj/NiDirectionalLight.o \ - src/obj/NiDitherProperty.o \ - src/obj/NiDynamicEffect.o \ - src/obj/NiExtraData.o \ - src/obj/NiFlipController.o \ - src/obj/NiFloatData.o \ - src/obj/NiFloatExtraData.o \ - src/obj/NiFloatExtraDataController.o \ - src/obj/NiFloatInterpolator.o \ - src/obj/NiFloatsExtraData.o \ - src/obj/NiFogProperty.o \ - src/obj/NiGeometry.o \ - src/obj/NiGeometryData.o \ - src/obj/NiGeomMorpherController.o \ - src/obj/NiGravity.o \ - src/obj/NiImage.o \ - src/obj/NiIntegerExtraData.o \ - src/obj/NiIntegersExtraData.o \ - src/obj/NiInterpolator.o \ - src/obj/NiKeyframeController.o \ - src/obj/NiKeyframeData.o \ - src/obj/NiLight.o \ - src/obj/NiLightColorController.o \ - src/obj/NiLightDimmerController.o \ - src/obj/NiLODData.o \ - src/obj/NiLODNode.o \ - src/obj/NiLookAtController.o \ - src/obj/NiLookAtInterpolator.o \ - src/obj/NiMaterialColorController.o \ - src/obj/NiMaterialProperty.o \ - src/obj/NiMeshParticleSystem.o \ - src/obj/NiMeshPSysData.o \ - src/obj/NiMorphData.o \ - src/obj/NiMultiTargetTransformController.o \ - src/obj/NiNode.o \ - src/obj/NiObject.o \ - src/obj/NiObjectNET.o \ - src/obj/NiPalette.o \ - src/obj/NiParticleBomb.o \ - src/obj/NiParticleColorModifier.o \ - src/obj/NiParticleGrowFade.o \ - src/obj/NiParticleMeshes.o \ - src/obj/NiParticleMeshesData.o \ - src/obj/NiParticleMeshModifier.o \ - src/obj/NiParticleRotation.o \ - src/obj/NiParticles.o \ - src/obj/NiParticlesData.o \ - src/obj/NiParticleSystem.o \ - src/obj/NiParticleSystemController.o \ - src/obj/NiPathController.o \ - src/obj/NiPathInterpolator.o \ - src/obj/NiPixelData.o \ - src/obj/NiPlanarCollider.o \ - src/obj/NiPoint3Interpolator.o \ - src/obj/NiPointLight.o \ - src/obj/NiPosData.o \ - src/obj/NiProperty.o \ - src/obj/NiPSysAgeDeathModifier.o \ - src/obj/NiPSysBombModifier.o \ - src/obj/NiPSysBoundUpdateModifier.o \ - src/obj/NiPSysBoxEmitter.o \ - src/obj/NiPSysColliderManager.o \ - src/obj/NiPSysColorModifier.o \ - src/obj/NiPSysCylinderEmitter.o \ - src/obj/NiPSysData.o \ - src/obj/NiPSysDragModifier.o \ - src/obj/NiPSysEmitter.o \ - src/obj/NiPSysEmitterCtlr.o \ - src/obj/NiPSysEmitterCtlrData.o \ - src/obj/NiPSysEmitterDeclinationCtlr.o \ - src/obj/NiPSysEmitterDeclinationVarCtlr.o \ - src/obj/NiPSysEmitterInitialRadiusCtlr.o \ - src/obj/NiPSysEmitterLifeSpanCtlr.o \ - src/obj/NiPSysEmitterSpeedCtlr.o \ - src/obj/NiPSysGravityModifier.o \ - src/obj/NiPSysGravityStrengthCtlr.o \ - src/obj/NiPSysGrowFadeModifier.o \ - src/obj/NiPSysMeshEmitter.o \ - src/obj/NiPSysMeshUpdateModifier.o \ - src/obj/NiPSysModifier.o \ - src/obj/NiPSysModifierActiveCtlr.o \ - src/obj/NiPSysPlanarCollider.o \ - src/obj/NiPSysPositionModifier.o \ - src/obj/NiPSysResetOnLoopCtlr.o \ - src/obj/NiPSysRotationModifier.o \ - src/obj/NiPSysSpawnModifier.o \ - src/obj/NiPSysSphereEmitter.o \ - src/obj/NiPSysUpdateCtlr.o \ - src/obj/NiPSysVolumeEmitter.o \ - src/obj/NiRangeLODData.o \ - src/obj/NiRotatingParticles.o \ - src/obj/NiRotatingParticlesData.o \ - src/obj/NiScreenLODData.o \ - src/obj/NiSequenceStreamHelper.o \ - src/obj/NiShadeProperty.o \ - src/obj/NiSingleInterpolatorController.o \ - src/obj/NiSkinData.o \ - src/obj/NiSkinInstance.o \ - src/obj/NiSkinPartition.o \ - src/obj/NiSourceTexture.o \ - src/obj/NiSpecularProperty.o \ - src/obj/NiSphericalCollider.o \ - src/obj/NiSpotLight.o \ - src/obj/NiStencilProperty.o \ - src/obj/NiStringExtraData.o \ - src/obj/NiStringPalette.o \ - src/obj/NiStringsExtraData.o \ - src/obj/NiTextKeyExtraData.o \ - src/obj/NiTextureEffect.o \ - src/obj/NiTextureModeProperty.o \ - src/obj/NiTextureProperty.o \ - src/obj/NiTextureTransformController.o \ - src/obj/NiTexturingProperty.o \ - src/obj/NiTimeController.o \ - src/obj/NiTransformController.o \ - src/obj/NiTransformData.o \ - src/obj/NiTransformInterpolator.o \ - src/obj/NiTriBasedGeom.o \ - src/obj/NiTriBasedGeomData.o \ - src/obj/NiTriShape.o \ - src/obj/NiTriShapeData.o \ - src/obj/NiTriStrips.o \ - src/obj/NiTriStripsData.o \ - src/obj/NiUVController.o \ - src/obj/NiUVData.o \ - src/obj/NiVectorExtraData.o \ - src/obj/NiVertexColorProperty.o \ - src/obj/NiVertWeightsExtraData.o \ - src/obj/NiVisController.o \ - src/obj/NiVisData.o \ - src/obj/NiWireframeProperty.o \ - src/obj/NiZBufferProperty.o \ - src/obj/RootCollisionNode.o + TriStripper/tri_stripper.o \ + src/ComplexShape.o \ + src/kfm.o \ + src/niflib.o \ + src/NIF_IO.o \ + src/nif_math.o \ + src/pch.o \ + src/Type.o \ + src/obj/AParticleModifier.o \ + src/obj/AvoidNode.o \ + src/obj/bhkBlendCollisionObject.o \ + src/obj/bhkBlendController.o \ + src/obj/bhkBoxShape.o \ + src/obj/bhkBvTreeShape.o \ + src/obj/bhkCapsuleShape.o \ + src/obj/bhkCollisionObject.o \ + src/obj/bhkConstraint.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/bhkListShape.o \ + src/obj/bhkMalleableConstraint.o \ + src/obj/bhkMoppBvTreeShape.o \ + src/obj/bhkMultiSphereShape.o \ + src/obj/bhkNiCollisionObject.o \ + src/obj/bhkNiTriStripsShape.o \ + src/obj/bhkPackedNiTriStripsShape.o \ + src/obj/bhkPCollisionObject.o \ + src/obj/bhkPhantom.o \ + src/obj/bhkPrismaticConstraint.o \ + src/obj/bhkRagdollConstraint.o \ + src/obj/bhkRefObject.o \ + src/obj/bhkRigidBody.o \ + src/obj/bhkRigidBodyT.o \ + src/obj/bhkSerializable.o \ + src/obj/bhkShape.o \ + src/obj/bhkShapeCollection.o \ + src/obj/bhkShapePhantom.o \ + src/obj/bhkSimpleShapePhantom.o \ + src/obj/bhkSPCollisionObject.o \ + src/obj/bhkSphereRepShape.o \ + src/obj/bhkSphereShape.o \ + src/obj/bhkStiffSpringConstraint.o \ + src/obj/bhkTransformShape.o \ + src/obj/bhkWorldObject.o \ + src/obj/BSBound.o \ + src/obj/BSFurnitureMarker.o \ + src/obj/BSKeyframeController.o \ + src/obj/BSParentVelocityModifier.o \ + src/obj/BSPSysArrayEmitter.o \ + src/obj/BSWindModifier.o \ + src/obj/BSXFlags.o \ + src/obj/FxButton.o \ + src/obj/FxRadioButton.o \ + src/obj/FxWidget.o \ + src/obj/hkPackedNiTriStripsData.o \ + src/obj/NiAlphaController.o \ + src/obj/NiAlphaProperty.o \ + src/obj/NiAmbientLight.o \ + src/obj/NiAutoNormalParticles.o \ + src/obj/NiAutoNormalParticlesData.o \ + src/obj/NiAVObject.o \ + src/obj/NiAVObjectPalette.o \ + src/obj/NiBillboardNode.o \ + src/obj/NiBinaryExtraData.o \ + src/obj/NiBinaryVoxelData.o \ + src/obj/NiBinaryVoxelExtraData.o \ + src/obj/NiBlendBoolInterpolator.o \ + src/obj/NiBlendFloatInterpolator.o \ + src/obj/NiBlendInterpolator.o \ + src/obj/NiBlendPoint3Interpolator.o \ + src/obj/NiBlendTransformInterpolator.o \ + src/obj/NiBone.o \ + src/obj/NiBoneLODController.o \ + src/obj/NiBoolData.o \ + src/obj/NiBooleanExtraData.o \ + src/obj/NiBoolInterpController.o \ + src/obj/NiBoolInterpolator.o \ + src/obj/NiBoolTimelineInterpolator.o \ + src/obj/NiBSAnimationNode.o \ + src/obj/NiBSBoneLODController.o \ + src/obj/NiBSPArrayController.o \ + src/obj/NiBSParticleNode.o \ + src/obj/NiBSplineBasisData.o \ + src/obj/NiBSplineCompFloatInterpolator.o \ + src/obj/NiBSplineCompPoint3Interpolator.o \ + src/obj/NiBSplineCompTransformInterpolator.o \ + src/obj/NiBSplineData.o \ + src/obj/NiBSplineFloatInterpolator.o \ + src/obj/NiBSplineInterpolator.o \ + src/obj/NiBSplinePoint3Interpolator.o \ + src/obj/NiBSplineTransformInterpolator.o \ + src/obj/NiCamera.o \ + src/obj/NiClod.o \ + src/obj/NiClodData.o \ + src/obj/NiClodSkinInstance.o \ + src/obj/NiCollisionData.o \ + src/obj/NiCollisionObject.o \ + src/obj/NiColorData.o \ + src/obj/NiColorExtraData.o \ + src/obj/NiControllerManager.o \ + src/obj/NiControllerSequence.o \ + src/obj/NiDefaultAVObjectPalette.o \ + src/obj/NiDirectionalLight.o \ + src/obj/NiDitherProperty.o \ + src/obj/NiDynamicEffect.o \ + src/obj/NiExtraData.o \ + src/obj/NiExtraDataController.o \ + src/obj/NiFlipController.o \ + src/obj/NiFloatData.o \ + src/obj/NiFloatExtraData.o \ + src/obj/NiFloatExtraDataController.o \ + src/obj/NiFloatInterpController.o \ + src/obj/NiFloatInterpolator.o \ + src/obj/NiFloatsExtraData.o \ + src/obj/NiFogProperty.o \ + src/obj/NiGeometry.o \ + src/obj/NiGeometryData.o \ + src/obj/NiGeomMorpherController.o \ + src/obj/NiGravity.o \ + src/obj/NiImage.o \ + src/obj/NiIntegerExtraData.o \ + src/obj/NiIntegersExtraData.o \ + src/obj/NiInterpController.o \ + src/obj/NiInterpolator.o \ + src/obj/NiKeyBasedInterpolator.o \ + src/obj/NiKeyframeController.o \ + src/obj/NiKeyframeData.o \ + src/obj/NiLight.o \ + src/obj/NiLightColorController.o \ + src/obj/NiLightDimmerController.o \ + src/obj/NiLODData.o \ + src/obj/NiLODNode.o \ + src/obj/NiLookAtController.o \ + src/obj/NiLookAtInterpolator.o \ + src/obj/NiMaterialColorController.o \ + src/obj/NiMaterialProperty.o \ + src/obj/NiMeshParticleSystem.o \ + src/obj/NiMeshPSysData.o \ + src/obj/NiMorphData.o \ + src/obj/NiMultiTargetTransformController.o \ + src/obj/NiMultiTextureProperty.o \ + src/obj/NiNode.o \ + src/obj/NiObject.o \ + src/obj/NiObjectNET.o \ + src/obj/NiPalette.o \ + src/obj/NiParticleBomb.o \ + src/obj/NiParticleColorModifier.o \ + src/obj/NiParticleGrowFade.o \ + src/obj/NiParticleMeshes.o \ + src/obj/NiParticleMeshesData.o \ + src/obj/NiParticleMeshModifier.o \ + src/obj/NiParticleRotation.o \ + src/obj/NiParticles.o \ + src/obj/NiParticlesData.o \ + src/obj/NiParticleSystem.o \ + src/obj/NiParticleSystemController.o \ + src/obj/NiPathController.o \ + src/obj/NiPathInterpolator.o \ + src/obj/NiPixelData.o \ + src/obj/NiPlanarCollider.o \ + src/obj/NiPoint3InterpController.o \ + src/obj/NiPoint3Interpolator.o \ + src/obj/NiPointLight.o \ + src/obj/NiPosData.o \ + src/obj/NiProperty.o \ + src/obj/NiPSysAgeDeathModifier.o \ + src/obj/NiPSysBombModifier.o \ + src/obj/NiPSysBoundUpdateModifier.o \ + src/obj/NiPSysBoxEmitter.o \ + src/obj/NiPSysCollider.o \ + src/obj/NiPSysColliderManager.o \ + src/obj/NiPSysColorModifier.o \ + src/obj/NiPSysCylinderEmitter.o \ + src/obj/NiPSysData.o \ + src/obj/NiPSysDragModifier.o \ + src/obj/NiPSysEmitter.o \ + src/obj/NiPSysEmitterCtlr.o \ + src/obj/NiPSysEmitterCtlrData.o \ + src/obj/NiPSysEmitterDeclinationCtlr.o \ + src/obj/NiPSysEmitterDeclinationVarCtlr.o \ + src/obj/NiPSysEmitterInitialRadiusCtlr.o \ + src/obj/NiPSysEmitterLifeSpanCtlr.o \ + src/obj/NiPSysEmitterSpeedCtlr.o \ + src/obj/NiPSysGravityModifier.o \ + src/obj/NiPSysGravityStrengthCtlr.o \ + src/obj/NiPSysGrowFadeModifier.o \ + src/obj/NiPSysMeshEmitter.o \ + src/obj/NiPSysMeshUpdateModifier.o \ + src/obj/NiPSysModifier.o \ + src/obj/NiPSysModifierActiveCtlr.o \ + src/obj/NiPSysModifierBoolCtlr.o \ + src/obj/NiPSysModifierCtlr.o \ + src/obj/NiPSysModifierFloatCtlr.o \ + src/obj/NiPSysPlanarCollider.o \ + src/obj/NiPSysPositionModifier.o \ + src/obj/NiPSysResetOnLoopCtlr.o \ + src/obj/NiPSysRotationModifier.o \ + src/obj/NiPSysSpawnModifier.o \ + src/obj/NiPSysSphereEmitter.o \ + src/obj/NiPSysSphericalCollider.o \ + src/obj/NiPSysUpdateCtlr.o \ + src/obj/NiPSysVolumeEmitter.o \ + src/obj/NiRangeLODData.o \ + src/obj/NiRawImageData.o \ + src/obj/NiRollController.o \ + src/obj/NiRotatingParticles.o \ + src/obj/NiRotatingParticlesData.o \ + src/obj/NiScreenLODData.o \ + src/obj/NiSequence.o \ + src/obj/NiSequenceStreamHelper.o \ + src/obj/NiShadeProperty.o \ + src/obj/NiSingleInterpController.o \ + src/obj/NiSkinData.o \ + src/obj/NiSkinInstance.o \ + src/obj/NiSkinPartition.o \ + src/obj/NiSourceTexture.o \ + src/obj/NiSpecularProperty.o \ + src/obj/NiSphericalCollider.o \ + src/obj/NiSpotLight.o \ + src/obj/NiStencilProperty.o \ + src/obj/NiStringExtraData.o \ + src/obj/NiStringPalette.o \ + src/obj/NiStringsExtraData.o \ + src/obj/NiSwitchNode.o \ + src/obj/NiTextKeyExtraData.o \ + src/obj/NiTexture.o \ + src/obj/NiTextureEffect.o \ + src/obj/NiTextureModeProperty.o \ + src/obj/NiTextureProperty.o \ + src/obj/NiTextureTransformController.o \ + src/obj/NiTexturingProperty.o \ + src/obj/NiTimeController.o \ + src/obj/NiTransformController.o \ + src/obj/NiTransformData.o \ + src/obj/NiTransformInterpolator.o \ + src/obj/NiTriBasedGeom.o \ + src/obj/NiTriBasedGeomData.o \ + src/obj/NiTriShape.o \ + src/obj/NiTriShapeData.o \ + src/obj/NiTriShapeSkinController.o \ + src/obj/NiTriStrips.o \ + src/obj/NiTriStripsData.o \ + src/obj/NiUVController.o \ + src/obj/NiUVData.o \ + src/obj/NiVectorExtraData.o \ + src/obj/NiVertexColorProperty.o \ + src/obj/NiVertWeightsExtraData.o \ + src/obj/NiVisController.o \ + src/obj/NiVisData.o \ + src/obj/NiWireframeProperty.o \ + src/obj/NiZBufferProperty.o \ + src/obj/RootCollisionNode.o \ + src/gen/AVObject.o \ + src/gen/BoundingBox.o \ + src/gen/ByteArray.o \ + src/gen/ByteColor3.o \ + src/gen/ByteColor4.o \ + src/gen/ControllerLink.o \ + src/gen/enums.o \ + src/gen/Footer.o \ + src/gen/FurniturePosition.o \ + src/gen/Header.o \ + src/gen/hkTriangle.o \ + src/gen/LimitedHingeDescriptor.o \ + src/gen/LODRange.o \ + src/gen/MatchGroup.o \ + src/gen/MipMap.o \ + src/gen/Morph.o \ + src/gen/MultiTextureElement.o \ + src/gen/NodeGroup.o \ + src/gen/OblivionColFilter.o \ + src/gen/OblivionSubShape.o \ + src/gen/OldSkinData.o \ + src/gen/Particle.o \ + src/gen/QuaternionXYZW.o \ + src/gen/RagDollDescriptor.o \ + src/gen/ShaderTexDesc.o \ + src/gen/SkinData.o \ + src/gen/SkinPartition.o \ + src/gen/SkinShape.o \ + src/gen/SkinShapeGroup.o \ + src/gen/SkinWeight.o \ + src/gen/Sphere.o \ + src/gen/StringPalette.o \ + src/gen/TBC.o \ + src/gen/TexDesc.o \ + src/gen/TexSource.o all: Makefile $(TARGET) diff --git a/NvTriStrip/NvTriStrip.h b/NvTriStrip/NvTriStrip.h index 1e136d280d94ef589d091ac1ed834228e1ecb720..82b2186b27a476ac0cfcaefabaf49e9a87e2f395 100644 --- a/NvTriStrip/NvTriStrip.h +++ b/NvTriStrip/NvTriStrip.h @@ -144,4 +144,4 @@ void RemapIndices(const PrimitiveGroup* in_primGroups, const unsigned short numG } //End namespace -#endif \ No newline at end of file +#endif diff --git a/NvTriStrip/NvTriStripObjects.h b/NvTriStrip/NvTriStripObjects.h index 6c0b42e79d9499f0e38e55236cc58820399ec998..c8588a74862cf6636c52400ef93b09a8690a6c18 100644 --- a/NvTriStrip/NvTriStripObjects.h +++ b/NvTriStrip/NvTriStripObjects.h @@ -245,4 +245,4 @@ protected: } //End namespace -#endif \ No newline at end of file +#endif diff --git a/SConscript b/SConscript deleted file mode 100644 index c14a6de7438ce610f8e21c130ddaf55cce15b304..0000000000000000000000000000000000000000 --- a/SConscript +++ /dev/null @@ -1,50 +0,0 @@ -Import('*') - -# set up environment - -env_niflib = env.Copy() - -if sys.platform == 'win32': - env_niflib.Append(CCFLAGS = '/D "BUILDING_NIFLIB_DLL"') -else: - env_niflib.Append(CCFLAGS = '-DBUILDING_NIFLIB_DLL') - -# generate code - -os.system('cd ' + os.path.join('..', '..', 'docsys') + ' && python nifxml_niflib.py -p ' + os.path.join('..' , 'niflib')) - -# list source files - -src_files = [] - -for n in nifxml.compound_names: - x = nifxml.compound_types[n] - if n[:3] != 'ns ' and not x.niflibtype and not x.template: - src_files.append('src/gen/' + str(n) + '.cpp') - -for n in nifxml.block_names: - src_files.append('src/obj/' + str(n) + '.cpp') - -src_files.extend(Split(""" -src/ComplexShape.cpp -src/niflib.cpp -src/nif_math.cpp -src/NIF_IO.cpp -src/kfm.cpp -src/Type.cpp -src/gen/obj_factories.cpp -src/gen/enums.cpp -src/gen/obj_impl.cpp -TriStripper/connectivity_graph.cpp -TriStripper/policy.cpp -TriStripper/tri_stripper.cpp -NvTriStrip/NvTriStrip.cpp -NvTriStrip/NvTriStripObjects.cpp -NvTriStrip/VertexCache.cpp -""")) - -# build niflib - -niflib = env_niflib.SharedLibrary('niflib', src_files) - -Export('niflib') diff --git a/change_log.txt b/change_log.txt index 78d22478ad47d9a6b5fc3c8982d7633df9bee110..55096443ec509006ac7df1cd0498c61abf72f1a9 100644 --- a/change_log.txt +++ b/change_log.txt @@ -480,4 +480,132 @@ * Change default to little endian instead of big endian. * Added NiClodSkinInstance and fixed NiClodData. Niflib can now open all Freedom Force demo NIF files. - * Corrected Shape/particle hierarchy by adding NiGeometry and NiGeometryData. \ No newline at end of file + * Corrected Shape/particle hierarchy by adding NiGeometry and NiGeometryData. + + ==Version 0.7== + + * Removed predefines from Doxyfile since they are no longer needed with the + new Python generation method. + * Disabled Whole Program Optimization in project settings. This makes a full + recompile take longer, but makes compiling after small changes to a few + files much much faster. + * Niflib is now using a new XML update method. This means: + - There are no longer any defines, things like inheritance class name, NIF + attribute variables, and default constructor code are all visible without + looking at another file. + - All non-custom parts of the Object files are now totally identical and in + the same order, so it will be easier to compare them. + - NiObjects are now completely self-contained. To remove them from Niflib, + you have only to exclude their CPP file from the build. To add new ones, + you only have to include their new CPP file. + - Making a change to a NiObject implementation file only causes that one + file to be re-compiled, which is generally much quicker than before since + the large obj_define and obj_impl files do not have to be parsed or + compiled. + - There are no longer any "Internal" versions of the Read, Write, asString, + FixLinks, or GetRefs functions. Now there is just one function for each + of these with pre and post custom code areas (except for GetRefs which I + didn't think needed it.) + - Updates to the hierarchy in the XML should now be almost completely + automatic. All that should be necessary to make an update is to add any + new NiObject CPP files to the build. + - Changes to the generated parts of the NiObject files can now be made at + any time, and immediately applied to all NiObjects without editing each + existing one. + * Moved FixLink template file from obj_impl.cpp to its own file. + * Moving array template to nif_basic_types so that NIF_IO won't need to be + exposed. + * Removed erroneous bhkMeshShape object. + * Added support in the version parsing functions for versions such as "3.03" + which were being parsed as "3.3.0.0" before. These will now be parsed as + "3.0.3.0." + * All Bridge Commander demo NIF files other than those that contain voxel 3D + textures can now be read. + * All DAoC demo NIF files except those of version 2.3 and those that do not + appear to store NIF data can now be read. + * Updated user's guide. + * Added functions to NiImage and NiTextureProperty to allow texture name to be + manipulated in <= 3.1 files. + * Updated ComplexShape to take the above objects into account when deciding + whether to include UV coordinates. + * Fixed one more bug that allows 3.3.0.13 files to work again. + * Added 10.0.1.2 to the list of "supported" versions. + * Added version 3.1 to list of "supported" versions. + * Fixed several bugs that were preventing support for old 3.1 and below files + from working. Many of these can now be loaded. + * Updated Niflib to the latest XML which adds support for: bhkMeshShape, + NiMultiTextureProperty, NiRawImageData, NiRollController, NiSequence, + NiBinaryVoxelExtraData, NiBinaryVoxelData, NiPSysCollider, NiBone, + NiPSysSphericalCollider, BSWindModifier, NiTriShapeSkinController objects, + and possibly more. This also significantly improves the class hierarchy. + * Objects now have a Create methods and register themselves in the global + object map with pre-main initialization, making obj_factories.cpp obsolete. + * Re-exposed TYPE constants and marked them NIFLIB_API, making the TypeConst + function obsolete. You now must use NiObject::TYPE instead of + NiObject::TypeConst() again. + * Re-exposed IDENTITY constants and marked then NIFLIB_API. Now you must use + MatrixXX::IDENTITY instead of MatrixXX::Identity() again. + * Changed the default linkage to DLL. You now have to define + NIFLIB_STATIC_LINK if you want to use static linking instead of having to + define USE_NIFLIB_DLL if you want to use the DLL. + * Added a new Debug - DLL configuration. + * Static configurations now create either niflib_static.lib or + niflib_static_debug.lib, while DLL configurations create niflib_dll.lib and + niflib_dll_debug.lib along with niflib.dll and niflib_debug.dll. + * Added ClearHardareSkinInfo function to NiTriBasedGeom so that + SetSkinPartition functions could be made NIFLIB_HIDDEN. + * Removed access to unknown data in NiPSysEmitterCtlrData. + * Some function and enum name changes in NiAlphaProperty and + NiStencilProperty to be more consistent with OpenGL and the rest of Niflib. + * Removed access to unknown parameters in NiSourceTexture and merged file name + access functions. + * Removed redundant Get/SetHidden functions from NiAVObject, use + Get/SetVisibility instead. + * Renamed Get/SetCollision to Get/SetCollisionMode in NiAVObject. + * Made sure all classes fell into 3 namespaces: Niflib, triangle_stripper, + and NvTriStrip. + * Removed some functions from NiObject that did nothing. + * Moved structures contained within the ComplexShape class outside of it so + they're easier to reference. + * Moved ListAncestors and FindCommonAncestor helper functions from inside of + NiGeometry to public interface. + * Added IsAnimated function to NiObjectNET. + * Implemented experimental endian support which means that Niflib may be able + to work on PowrePC Macs and other big-endian CPUs, however support is not + complete. Theoretically it should be possible to read a big-endian file on + a little-endian system, but it is not possible to do the opposite, or to + create a little-endian file due to issues with the header needing to switch + endian types int he middle of the generated code and always read the bytes + that make up the NIF version in the same order. + * DLL files built with the MSVC project will now appear in the niflib/bin + folder instead of the common ../bin folder. This should make it easier to + find the files if only the niflib folder is checked out. + * Added warning comments to generated files advising the user not to edit them + manually. + * Changed NiNode AddChild function to keep NiTriBasedGeom-derived objects at + the top of the list. Fixes issue with Oblivion flattened skin file + hierarchies where the NiTriBasedGeom skin was appearing after the NiNode + bones that it used in the child list of their mutual parent. + * Project file now properly uses "Multithreaded DLL" runtime library for + "Release - DLL" configuration. + * Removed old SWIG-related code as SWIG will no longer be suppoted. + * Fixed GetIDString virtual function missmatch that was causing the name not + to show up when the function was called from a NiObjectRef. + * Removed precompiled header file stuff from project files that is no longer + used. + * Fixed Niflib DLL compile. All public functions should now be marked with + either NIFLIB_API or NIFLIB_HIDDEN. May have missed a few here or there + but they should be noticed eventually. + * All public functions are now documented with Doxygen comments. + * Changed all occurrences of uint and ushort to unsigned int and unsigned + short. + * Fixed many GCC compile problems. Niflib should compile in GCC now: + - Replaced array template with a simpler one that works with GCC. + - Replaced "unsigned" with "unsigned int" GCC doesn't like this. + - Changed C++ style unsigned int casts so GCC will be able to understand + them. + - Properly capitalized include file names in niflib.cpp. + * Changed as many functions as possible to take pointer arguments instead of + Ref template arguments. + * Prevented the link map from being copied unnecessarily, improving + performance and memory usage. \ No newline at end of file diff --git a/include/FixLink.h b/include/FixLink.h index 54b7bd3e4aa1761369a6156b47cdbf10196b75fa..b4889315e7e944eccc8c43a57d0da2f9f2ef3828 100644 --- a/include/FixLink.h +++ b/include/FixLink.h @@ -7,6 +7,7 @@ All rights reserved. Please see niflib.h for license. */ #include "obj/NiObject.h" #include "Ref.h" +#include <stdexcept> namespace Niflib { using namespace std; diff --git a/include/dll_export.h b/include/dll_export.h index d01dd4ec31841ff8001743681967e5ee0a1107b9..d8340ab6f9d24a1c6e687a4442d8325d1bf87ee1 100644 --- a/include/dll_export.h +++ b/include/dll_export.h @@ -14,7 +14,7 @@ All rights reserved. Please see niflib.h for license. */ #ifndef NIFLIB_STATIC_LINK // Building shared library - #if defined(_WIN32) || defined(__WIN32__) || defined(_MSC_VER) || defined(__CYGWIN__) + #if defined(_WIN32) || defined(__WIN32__) || defined(_MSC_VER) // Windows #ifdef BUILDING_NIFLIB_DLL //The building process is underway, export symbols diff --git a/include/nif_math.h b/include/nif_math.h index 5584813f918b20f8dbe89938b9a03de20af44bbc..a299e927f57a1b83716e4e9cfeaac05f6d7e66f0 100644 --- a/include/nif_math.h +++ b/include/nif_math.h @@ -31,18 +31,18 @@ struct Float4; struct Matrix44; /*! Stores 2D texture coordinates – two floating point variables, u and v. */ -struct NIFLIB_API TexCoord { +struct TexCoord { float u; /*!< The U value in this coordinate pair. */ float v; /*!< The V value in this coordinate pair. */ /*! Default constructor */ - TexCoord() : u(0.0f), v(0.0f) {} + NIFLIB_API TexCoord() : u(0.0f), v(0.0f) {} /*! This constructor can be used to set all values in this structure during initialization * \param[in] u The value to set U to. * \param[in] v The value to set V to. */ - TexCoord(float u, float v) { + NIFLIB_API TexCoord(float u, float v) { this->u = u; this->v = v; } @@ -51,7 +51,7 @@ struct NIFLIB_API TexCoord { * \param[in] u The value to set U to. * \param[in] v The value to set V to. */ - void Set(float u, float v) { + NIFLIB_API void Set(float u, float v) { this->u = u; this->v = v; } @@ -60,20 +60,20 @@ struct NIFLIB_API TexCoord { }; /*! Represents a triangle face formed between three vertices referenced by number */ -struct NIFLIB_API Triangle { +struct Triangle { unsigned short v1; /*!< The index of the first vertex. */ unsigned short v2; /*!< The index of the second vertex. */ unsigned short v3; /*!< The index of the third vertex. */ /*! Default constructor */ - Triangle() {} + NIFLIB_API Triangle() {} /*! This constructor can be used to set all values in this structure during initialization * \param[in] v1 The index of the first vertex. * \param[in] v2 The index of the second vertex. * \param[in] v3 The index of the third vertex. */ - Triangle(unsigned short v1, unsigned short v2, unsigned short v3) { + NIFLIB_API Triangle(unsigned short v1, unsigned short v2, unsigned short v3) { this->v1 = v1; this->v2 = v2; this->v3 = v3; @@ -84,7 +84,7 @@ struct NIFLIB_API Triangle { * \param[in] v2 The index of the second vertex. * \param[in] v3 The index of the third vertex. */ - void Set(unsigned short v1, unsigned short v2, unsigned short v3) { + NIFLIB_API void Set(unsigned short v1, unsigned short v2, unsigned short v3) { this->v1 = v1; this->v2 = v2; this->v3 = v3; @@ -94,7 +94,7 @@ struct NIFLIB_API Triangle { * \param[in] n The index into the data array. Should be 0, 1, or 2. * \return The value at the given array index by reference so it can be read or set via the bracket operator. */ - unsigned short & operator[](int n) { + NIFLIB_API unsigned short & operator[](int n) { switch (n) { case 0: return v1; break; case 1: return v2; break; @@ -102,7 +102,7 @@ struct NIFLIB_API Triangle { default: throw std::out_of_range("Index out of range for Triangle"); }; } - unsigned short operator[](int n) const { + NIFLIB_API unsigned short operator[](int n) const { switch (n) { case 0: return v1; break; case 1: return v2; break; @@ -113,20 +113,20 @@ struct NIFLIB_API Triangle { }; /*!Represents a position or direction in 3D space*/ -struct NIFLIB_API Vector3 { +struct Vector3 { float x; /*!< The X component of this vector. */ float y; /*!< The Y component of this vector. */ float z; /*!< The Z component of this vector. */ /*!Default constructor.*/ - Vector3() { x = y = z = 0.0f; } + NIFLIB_API Vector3() { x = y = z = 0.0f; } /*! This constructor can be used to set all values in this structure during initialization * \param[in] x The value to set X to. * \param[in] y The value to set Y to. * \param[in] z The value to set Z to. */ - Vector3(float x, float y, float z) { + NIFLIB_API Vector3(float x, float y, float z) { this->x = x; this->y = y; this->z = z; @@ -135,17 +135,17 @@ struct NIFLIB_API Vector3 { /*! This constructor can be used to initialize this Vector3 with another Vector3 * \param[in] v The Vector3 to construct this one from */ - Vector3( const Vector3 & v) { x = v.x; y = v.y; z = v.z; } + NIFLIB_API Vector3( const Vector3 & v) { x = v.x; y = v.y; z = v.z; } /*! Destructor */ - ~Vector3() {} + NIFLIB_API ~Vector3() {} /*! This function can be used to set all values in the structure at the same time. * \param[in] x The value to set X to. * \param[in] y The value to set Y to. * \param[in] z The value to set Z to. */ - void Set(float x, float y, float z) { + NIFLIB_API void Set(float x, float y, float z) { this->x = x; this->y = y; this->z = z; @@ -154,40 +154,40 @@ struct NIFLIB_API Vector3 { /* This function calculates the magnitude of this vector * \return the magnitude of the vector; its length. */ - float Magnitude() const; + NIFLIB_API float Magnitude() const; /* This function returns a normalization of this vector. A vecctor pointing in the same * direction but with a magnitude, or length, of 1. */ - Vector3 Normalized() const; + NIFLIB_API Vector3 Normalized() const; /* Allows the addition of vectors. Each component, x, y, y, is added with * the same component of the other vector. * \return The result of the addition. */ - Vector3 operator+( const Vector3 & rh ) const; + NIFLIB_API Vector3 operator+( const Vector3 & rh ) const; /* Adds the two vectors and then sets the result to the left-hand vector. * \return This vector is returned. */ - Vector3 & operator+=( const Vector3 & rh ); + NIFLIB_API Vector3 & operator+=( const Vector3 & rh ); /* Allows the subtraction of vectors. Each component, x, y, y, is subtracted from * the same component of the other vector. * \return The result of the subtraction. */ - Vector3 operator-( const Vector3 & rh ) const; + NIFLIB_API Vector3 operator-( const Vector3 & rh ) const; /* This operator subtracts the two vectors and then sets the result to the left-hand vector. * \return This vector is returned. */ - Vector3 & operator-=( const Vector3 & rh); + NIFLIB_API Vector3 & operator-=( const Vector3 & rh); /* Allows scaler multiplication, that is multipying all components of the * vector, x, y and z, by the same number. * \return The result of the multiplication. */ - Vector3 operator*( const float & rh) const; //Scalar Multiply + NIFLIB_API Vector3 operator*( const float & rh) const; //Scalar Multiply /* Multipies a vector by a scalar and then sets the result to the left-hand vector. * \return This vector is returned. @@ -197,18 +197,18 @@ struct NIFLIB_API Vector3 { /* Multiplies a vector by a vector using the dot product * \return The dot product of the two vectors. */ - float operator*( const Vector3 & v ) const; + NIFLIB_API float operator*( const Vector3 & v ) const; /* Multiplies a vector by a vector using the cross product * \return The cross product of the two vectors. */ - Vector3 operator^( const Vector3 & v ) const; + NIFLIB_API Vector3 operator^( const Vector3 & v ) const; /* Allows scaler division, that is dividing all components of the * vector, x, y and z, by the same number. * \return The result of the division. */ - Vector3 operator/( const float & rh ) const; + NIFLIB_API Vector3 operator/( const float & rh ) const; /* Divides a vector by a scalar and then sets the result to the left-hand vector. * \return This vector is returned. @@ -218,29 +218,29 @@ struct NIFLIB_API Vector3 { /* Sets the components of this Vector3 to those of another Vector3 * \return This vector is returned. */ - Vector3 & operator=( const Vector3 & v ) { x = v.x; y = v.y; z = v.z; return *this; } + NIFLIB_API Vector3 & operator=( const Vector3 & v ) { x = v.x; y = v.y; z = v.z; return *this; } /* Tests the equality of two Vector3 structures. Vectors are considered equal if all * three components are equal. */ - bool operator==( const Vector3 & rh ) const; + NIFLIB_API bool operator==( const Vector3 & rh ) const; /* Tests the inequality of two Vector3 structures. Vectors are considered equal if all * three components are equal. */ - bool operator!=( const Vector3 & rh ) const; + NIFLIB_API bool operator!=( const Vector3 & rh ) const; /* Computes the dot product of two vectors; the angle between two vectors. * \param[in] rh The vector to perform the dot product with * \return The angle in radians between this vector and the one given */ - float DotProduct( const Vector3 & rh ) const; + NIFLIB_API float DotProduct( const Vector3 & rh ) const; /* Computes the cross product of two vectors; a vector perpendicular to both of them. * \param[in] The vector to perform the cross product with * \return A vector perpendicular to this vector and the one given */ - Vector3 CrossProduct( const Vector3 & rh) const; //Cross Product + NIFLIB_API Vector3 CrossProduct( const Vector3 & rh) const; //Cross Product ///* Multiplies this Vector with a 4x4 matrix @@ -257,28 +257,33 @@ struct NIFLIB_API Vector3 { }; /* Stores two floating point numbers. Used as a row of a Matrix22 */ -struct NIFLIB_API Float2 { +struct Float2 { float data[2]; /*!< The two floating point numbers stored as an array. */ /*! The bracket operator makes it possible to use this structure like a C++ array. * \param[in] n The index into the data array. Should be 0 or 1. * \return The value at the given array index by reference so it can be read or set via the bracket operator. */ - float & operator[](int n) { + NIFLIB_API float & operator[](int n) { return data[n]; } - float operator[](int n) const { + + /*! The bracket operator makes it possible to use this structure like a C++ array. + * \param[in] n The index into the data array. Should be 0 or 1. + * \return The value at the given array index by reference so it can be read or set via the bracket operator. + */ + NIFLIB_API float operator[](int n) const { return data[n]; } /*! Default constructor. */ - Float2() {} + NIFLIB_API Float2() {} /*! This constructor can be used to set all values in this structure during initialization * \param[in] f1 The value to set the first floating point number to. * \param[in] f2 The value to set the second floating point number to. */ - Float2( float f1, float f2 ) { + NIFLIB_API Float2( float f1, float f2 ) { data[0] = f1; data[1] = f2; } @@ -287,7 +292,7 @@ struct NIFLIB_API Float2 { * \param[in] f1 The value to set the first floating point number to. * \param[in] f2 The value to set the second floating point number to. */ - void Set( float f1, float f2 ) { + NIFLIB_API void Set( float f1, float f2 ) { data[0] = f1; data[1] = f2; } @@ -344,29 +349,34 @@ struct Matrix22 { }; /* Stores three floating point numbers. Used as a row of a Matrix33 and to store the data in attr_vector3 and attr_color3 type attributes. */ -struct NIFLIB_API Float3 { +struct Float3 { float data[3]; /*!< The three floating point numbers stored as an array. */ /*! The bracket operator makes it possible to use this structure like a C++ array. * \param[in] n The index into the data array. Should be 0, 1, or 2. * \return The value at the given array index by reference so it can be read or set via the bracket operator. */ - float & operator[](int n) { + NIFLIB_API float & operator[](int n) { return data[n]; } - float operator[](int n) const { + + /*! The bracket operator makes it possible to use this structure like a C++ array. + * \param[in] n The index into the data array. Should be 0, 1, or 2. + * \return The value at the given array index by reference so it can be read or set via the bracket operator. + */ + NIFLIB_API float operator[](int n) const { return data[n]; } /*!Default constructor.*/ - Float3() {} + NIFLIB_API Float3() {} /*! This constructor can be used to set all values in this structure during initialization * \param[in] f1 The value to set the first floating point number to. * \param[in] f2 The value to set the second floating point number to. * \param[in] f3 The value to set the third floating point number to. */ - Float3( float f1, float f2, float f3 ) { + NIFLIB_API Float3( float f1, float f2, float f3 ) { data[0] = f1; data[1] = f2; data[2] = f3; @@ -377,7 +387,7 @@ struct NIFLIB_API Float3 { * \param[in] f2 The value to set the second floating point number to. * \param[in] f3 The value to set the third floating point number to. */ - void Set( float f1, float f2, float f3 ) { + NIFLIB_API void Set( float f1, float f2, float f3 ) { data[0] = f1; data[1] = f2; data[2] = f3; @@ -469,22 +479,27 @@ struct Matrix33 { /* Stores four floating point numbers. Used as a row of a Matrix44. */ -struct NIFLIB_API Float4 { +struct Float4 { float data[4]; /*!< The four floating point numbers stored as an array. */ /*! The bracket operator makes it possible to use this structure like a C++ array. * \param[in] n The index into the data array. Should be 0, 1, 2, or 3. * \return The value at the given array index by reference so it can be read or set via the bracket operator. */ - float & operator[](int n) { + NIFLIB_API float & operator[](int n) { return data[n]; } - float operator[](int n) const { + + /*! The bracket operator makes it possible to use this structure like a C++ array. + * \param[in] n The index into the data array. Should be 0, 1, 2, or 3. + * \return The value at the given array index by reference so it can be read or set via the bracket operator. + */ + NIFLIB_API float operator[](int n) const { return data[n]; } /*! Default Constructor.*/ - Float4() {} + NIFLIB_API Float4() {} /*! This constructor can be used to set all values in this structure during initialization * \param[in] f1 The value to set the first floating point number to. @@ -492,7 +507,7 @@ struct NIFLIB_API Float4 { * \param[in] f3 The value to set the third floating point number to. * \param[in] f4 The value to set the fourth floating point number to. */ - Float4( float f1, float f2, float f3, float f4 ) { + NIFLIB_API Float4( float f1, float f2, float f3, float f4 ) { data[0] = f1; data[1] = f2; data[3] = f3; @@ -505,7 +520,7 @@ struct NIFLIB_API Float4 { * \param[in] f3 The value to set the third floating point number to. * \param[in] f4 The value to set the fourth floating point number to. */ - void Set( float f1, float f2, float f3, float f4 ) { + NIFLIB_API void Set( float f1, float f2, float f3, float f4 ) { data[0] = f1; data[1] = f2; data[3] = f3; @@ -601,7 +616,7 @@ struct Matrix44 { * \param[in] m43 The value to set at row 4, column 3. * \param[in] m44 The value to set at row 4, column 4. */ - void Set( + NIFLIB_API void Set( float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, @@ -727,20 +742,20 @@ struct Matrix44 { }; /*! Stores a color along with alpha translucency */ -struct NIFLIB_API Color3 { +struct Color3 { float r; /*!< The red component of this color. Should be between 0.0f and 1.0f. */ float g; /*!< The green component of this color. Should be between 0.0f and 1.0f. */ float b; /*!< The blue component of this color. Should be between 0.0f and 1.0f. */ /*! Default constructor */ - Color3() {} + NIFLIB_API Color3() {} /*! This constructor can be used to set all values in this structure during initialization * \param[in] r The value to set the red component of this color to. Should be between 0.0f and 1.0f. * \param[in] g The value to set the green component of this color to. Should be between 0.0f and 1.0f. * \param[in] b The value to set the blue component of this color to. Should be between 0.0f and 1.0f. */ - Color3(float r, float g, float b) { + NIFLIB_API Color3(float r, float g, float b) { this->r = r; this->g = g; this->b = b; @@ -751,7 +766,7 @@ struct NIFLIB_API Color3 { * \param[in] g The value to set the green component of this color to. Should be between 0.0f and 1.0f. * \param[in] b The value to set the blue component of this color to. Should be between 0.0f and 1.0f. */ - void Set(float r, float g, float b) { + NIFLIB_API void Set(float r, float g, float b) { this->r = r; this->g = g; this->b = b; @@ -759,14 +774,14 @@ struct NIFLIB_API Color3 { }; /*! Stores a color along with alpha translucency */ -struct NIFLIB_API Color4 { +struct Color4 { float r; /*!< The red component of this color. Should be between 0.0f and 1.0f. */ float g; /*!< The green component of this color. Should be between 0.0f and 1.0f. */ float b; /*!< The blue component of this color. Should be between 0.0f and 1.0f. */ float a; /*!< The alpha translucency component of this color. Should be between 0.0f and 1.0f. */ /*! Default constructor */ - Color4() : r(0.0f), g(0.0f), b(0.0f), a(0.0f) {} + NIFLIB_API Color4() : r(0.0f), g(0.0f), b(0.0f), a(0.0f) {} /*! This constructor can be used to set all values in this structure during initialization * \param[in] r The value to set the red component of this color to. Should be between 0.0f and 1.0f. @@ -774,7 +789,7 @@ struct NIFLIB_API Color4 { * \param[in] b The value to set the blue component of this color to. Should be between 0.0f and 1.0f. * \param[in] a The value to set the alpha translucency component of this color to. Should be between 0.0f and 1.0f. */ - Color4(float r, float g, float b, float a = 1.0f) { + NIFLIB_API Color4(float r, float g, float b, float a = 1.0f) { this->r = r; this->g = g; this->b = b; @@ -787,31 +802,31 @@ struct NIFLIB_API Color4 { * \param[in] b The value to set the blue component of this color to. Should be between 0.0f and 1.0f. * \param[in] a The value to set the alpha translucency component of this color to. Should be between 0.0f and 1.0f. */ - void Set(float r, float g, float b, float a = 1.0f) { + NIFLIB_API void Set(float r, float g, float b, float a = 1.0f) { this->r = r; this->g = g; this->b = b; this->a = a; } - bool operator==( const Color4 & n ) const { + NIFLIB_API bool operator==( const Color4 & n ) const { return ( r == n.r && g == n.g && b == n.b && a == n.a ); } - bool operator!=( const Color4 & n ) const { + NIFLIB_API bool operator!=( const Color4 & n ) const { return ( r != n.r || g != n.g || b != n.b || a != n.a ); } }; /*! Represents a quaternion - a 4D extention of complex numbers used as an alternitive to matrices to represent rotation.*/ -struct NIFLIB_API Quaternion { +struct Quaternion { float w; /*!< The W scalar component of this Quaternion. */ float x; /*!< The X vector component of this Quaternion. */ float y; /*!< The Y vector component of this Quaternion. */ float z; /*!< The Z vector component of this Quaternion. */ /*! Default constructor. */ - Quaternion() {} + NIFLIB_API Quaternion() {} /*! This constructor can be used to set all values in this structure during initialization * \param[in] w The value to set the W scalar component of this quaternion to. @@ -819,7 +834,7 @@ struct NIFLIB_API Quaternion { * \param[in] y The value to set the Y vector component of this quaternion to. * \param[in] z The value to set the Z vector component of this quaternion to. */ - Quaternion(float w, float x, float y, float z) { + NIFLIB_API Quaternion(float w, float x, float y, float z) { this->w = w; this->x = x; this->y = y; @@ -832,7 +847,7 @@ struct NIFLIB_API Quaternion { * \param[in] y The value to set the Y vector component of this quaternion to. * \param[in] z The value to set the Z vector component of this quaternion to. */ - void Set(float w, float x, float y, float z) { + NIFLIB_API void Set(float w, float x, float y, float z) { this->w = w; this->x = x; this->y = y; @@ -842,14 +857,14 @@ struct NIFLIB_API Quaternion { /*! This function returns a 3x3 matrix representation of the rotation stored in this quaternion. * \return a Matrix33 structure with an equivalent rotation to this quaternion. */ - Matrix33 AsMatrix(); + NIFLIB_API Matrix33 AsMatrix(); /*! This function returns a Euler Angle representation of the rotation stored in this quaternion. * The angles returned correspond to yaw, pitch, and roll and are in radiens. * \return a Float3 structure with the first value containing the yaw, the second the pitch, * and the third the roll. The values are in radians. */ - Float3 AsEulerYawPitchRoll(); + NIFLIB_API Float3 AsEulerYawPitchRoll(); }; //--ostream functions for printing with cout--// diff --git a/niflib.vcproj b/niflib.vcproj index 785287628653cd054a2f31a9f79af4c362b4850d..b54dfb79a5be3f461606f7765bb17266b5382718 100644 --- a/niflib.vcproj +++ b/niflib.vcproj @@ -192,6 +192,7 @@ <Tool Name="VCLinkerTool" OutputFile="bin\niflib.dll" + Version="0.7" ImportLibrary="lib/niflib_dll.lib" /> <Tool @@ -267,6 +268,7 @@ <Tool Name="VCLinkerTool" OutputFile="bin\niflib_debug.dll" + Version="0.7" ImportLibrary="lib/niflib_dll_debug.lib" /> <Tool @@ -1529,6 +1531,10 @@ RelativePath=".\include\dll_export.h" > </File> + <File + RelativePath=".\include\FixLink.h" + > + </File> <File RelativePath=".\include\Key.h" >