From f36a9dfcb14d74792af9eefa72bd7b420e863b88 Mon Sep 17 00:00:00 2001
From: Shon Ferguson <shonferg@users.sourceforge.net>
Date: Fri, 2 Jun 2006 05:05:23 +0000
Subject: [PATCH] Managed to fix the structure generation. Moved all generated
 files to gen sub directory. Renamed some generated files.

---
 obj/Ref.h => Ref.h                          |    0
 obj/Type.cpp => Type.cpp                    |    0
 obj/Type.h => Type.h                        |    0
 gen/AVObject.cpp                            |   11 +
 gen/AVObject.h                              |   31 +
 gen/Bones.cpp                               |   11 +
 gen/Bones.h                                 |   32 +
 gen/BoundingBox.cpp                         |   10 +
 gen/BoundingBox.h                           |   35 +
 gen/ByteArray.cpp                           |   10 +
 gen/ByteArray.h                             |   31 +
 gen/ControllerLink.cpp                      |   14 +
 gen/ControllerLink.h                        |  116 +++
 gen/Footer.cpp                              |   11 +
 gen/Footer.h                                |   34 +
 gen/FurniturePosition.cpp                   |   10 +
 gen/FurniturePosition.h                     |   35 +
 gen/Header.cpp                              |   10 +
 gen/Header.h                                |   87 ++
 gen/KeyGroup.cpp                            |   12 +
 gen/KeyGroup.h                              |   33 +
 gen/LODRange.cpp                            |   10 +
 gen/LODRange.h                              |   27 +
 gen/MatchGroup.cpp                          |   10 +
 gen/MatchGroup.h                            |   27 +
 gen/MipMap.cpp                              |   10 +
 gen/MipMap.h                                |   31 +
 gen/Morph.cpp                               |   10 +
 gen/Morph.h                                 |   44 +
 gen/NodeGroup.cpp                           |   11 +
 gen/NodeGroup.h                             |   31 +
 gen/Particle.cpp                            |   10 +
 gen/Particle.h                              |   47 +
 gen/QuaternionXYZW.cpp                      |   10 +
 gen/QuaternionXYZW.h                        |   35 +
 gen/RotationKeyArray.cpp                    |   12 +
 gen/RotationKeyArray.h                      |   32 +
 gen/ShaderTexDesc.cpp                       |   10 +
 gen/ShaderTexDesc.h                         |   32 +
 gen/ShortString.cpp                         |   10 +
 gen/ShortString.h                           |   29 +
 gen/SkinData.cpp                            |    0
 gen/SkinData.h                              |   47 +
 gen/SkinPartition.cpp                       |   10 +
 gen/SkinPartition.h                         |   85 ++
 gen/SkinShape.cpp                           |   12 +
 gen/SkinShape.h                             |   32 +
 gen/SkinShapeGroup.cpp                      |   10 +
 gen/SkinShapeGroup.h                        |   29 +
 gen/SkinWeight.cpp                          |   10 +
 gen/SkinWeight.h                            |   27 +
 gen/StringPalette.cpp                       |   10 +
 gen/StringPalette.h                         |   27 +
 gen/TBC.cpp                                 |   10 +
 gen/TBC.h                                   |   31 +
 gen/TexDesc.cpp                             |   11 +
 gen/TexDesc.h                               |   75 ++
 gen/TexSource.cpp                           |   12 +
 gen/TexSource.h                             |   53 +
 gen/hkTriangle.cpp                          |   10 +
 gen/hkTriangle.h                            |   32 +
 xml_extract.h => gen/obj_defines.h          | 1013 +------------------
 docsys_extract.cpp => gen/obj_factories.cpp |    0
 niflib.h                                    |    2 +-
 niflib.vcproj                               |  198 +++-
 obj/ABoneLODController.h                    |    2 +-
 obj/AKeyedData.h                            |    2 +-
 obj/APSysCtlr.h                             |    2 +-
 obj/APSysData.h                             |    2 +-
 obj/AParticleModifier.h                     |    2 +-
 obj/AbhkConstraint.h                        |    2 +-
 obj/AbhkRagdollConstraint.h                 |    2 +-
 obj/AbhkShapeCollection.h                   |    2 +-
 obj/AvoidNode.h                             |    2 +-
 obj/BSBound.h                               |    2 +-
 obj/BSFurnitureMarker.h                     |    2 +-
 obj/BSKeyframeController.h                  |    2 +-
 obj/BSPSysArrayEmitter.h                    |    2 +-
 obj/BSParentVelocityModifier.h              |    2 +-
 obj/BSXFlags.h                              |    2 +-
 obj/FxButton.h                              |    2 +-
 obj/FxRadioButton.h                         |    2 +-
 obj/FxWidget.h                              |    2 +-
 obj/NiAVObject.h                            |    2 +-
 obj/NiAlphaController.h                     |    2 +-
 obj/NiAlphaProperty.h                       |    2 +-
 obj/NiAmbientLight.h                        |    2 +-
 obj/NiAutoNormalParticles.h                 |    2 +-
 obj/NiAutoNormalParticlesData.h             |    2 +-
 obj/NiBSAnimationNode.h                     |    2 +-
 obj/NiBSBoneLODController.h                 |    2 +-
 obj/NiBSPArrayController.h                  |    2 +-
 obj/NiBSParticleNode.h                      |    2 +-
 obj/NiBSplineBasisData.h                    |    2 +-
 obj/NiBSplineCompFloatInterpolator.h        |    2 +-
 obj/NiBSplineCompPoint3Interpolator.h       |    2 +-
 obj/NiBSplineCompTransformInterpolator.h    |    2 +-
 obj/NiBSplineData.h                         |    2 +-
 obj/NiBSplineInterpolator.h                 |    2 +-
 obj/NiBillboardNode.h                       |    2 +-
 obj/NiBinaryExtraData.h                     |    2 +-
 obj/NiBlendBoolInterpolator.h               |    2 +-
 obj/NiBlendFloatInterpolator.h              |    2 +-
 obj/NiBlendInterpolator.h                   |    2 +-
 obj/NiBlendPoint3Interpolator.h             |    2 +-
 obj/NiBlendTransformInterpolator.h          |    2 +-
 obj/NiBoneLODController.h                   |    2 +-
 obj/NiBoolData.h                            |    2 +-
 obj/NiBoolInterpolator.h                    |    2 +-
 obj/NiBoolTimelineInterpolator.h            |    2 +-
 obj/NiBooleanExtraData.h                    |    2 +-
 obj/NiCamera.h                              |    2 +-
 obj/NiCollisionData.h                       |    2 +-
 obj/NiCollisionObject.h                     |    2 +-
 obj/NiColorData.h                           |    2 +-
 obj/NiColorExtraData.h                      |    2 +-
 obj/NiControllerManager.h                   |    2 +-
 obj/NiControllerSequence.h                  |    2 +-
 obj/NiDefaultAVObjectPalette.h              |    2 +-
 obj/NiDirectionalLight.h                    |    2 +-
 obj/NiDitherProperty.h                      |    2 +-
 obj/NiDynamicEffect.h                       |    2 +-
 obj/NiExtraData.h                           |    2 +-
 obj/NiFlipController.h                      |    2 +-
 obj/NiFloatData.h                           |    2 +-
 obj/NiFloatExtraData.h                      |    2 +-
 obj/NiFloatExtraDataController.h            |    2 +-
 obj/NiFloatInterpolator.h                   |    2 +-
 obj/NiFloatsExtraData.h                     |    2 +-
 obj/NiFogProperty.h                         |    2 +-
 obj/NiGeomMorpherController.h               |    2 +-
 obj/NiGravity.h                             |    2 +-
 obj/NiIntegerExtraData.h                    |    2 +-
 obj/NiIntegersExtraData.h                   |    2 +-
 obj/NiInterpolator.h                        |    2 +-
 obj/NiKeyframeController.h                  |    2 +-
 obj/NiKeyframeData.h                        |    2 +-
 obj/NiLODNode.h                             |    2 +-
 obj/NiLight.h                               |    2 +-
 obj/NiLightColorController.h                |    2 +-
 obj/NiLightDimmerController.h               |    2 +-
 obj/NiLookAtController.h                    |    2 +-
 obj/NiLookAtInterpolator.h                  |    2 +-
 obj/NiMaterialColorController.h             |    2 +-
 obj/NiMaterialProperty.h                    |    2 +-
 obj/NiMeshPSysData.h                        |    2 +-
 obj/NiMeshParticleSystem.h                  |    2 +-
 obj/NiMorphData.h                           |    2 +-
 obj/NiMultiTargetTransformController.h      |    2 +-
 obj/NiNode.h                                |    2 +-
 obj/NiObject.h                              |    2 +-
 obj/NiObjectNET.h                           |    2 +-
 obj/NiPSysAgeDeathModifier.h                |    2 +-
 obj/NiPSysBombModifier.h                    |    2 +-
 obj/NiPSysBoundUpdateModifier.h             |    2 +-
 obj/NiPSysBoxEmitter.h                      |    2 +-
 obj/NiPSysColliderManager.h                 |    2 +-
 obj/NiPSysColorModifier.h                   |    2 +-
 obj/NiPSysCylinderEmitter.h                 |    2 +-
 obj/NiPSysData.h                            |    2 +-
 obj/NiPSysDragModifier.h                    |    2 +-
 obj/NiPSysEmitter.h                         |    2 +-
 obj/NiPSysEmitterCtlr.h                     |    2 +-
 obj/NiPSysEmitterCtlrData.h                 |    2 +-
 obj/NiPSysEmitterDeclinationCtlr.h          |    2 +-
 obj/NiPSysEmitterDeclinationVarCtlr.h       |    2 +-
 obj/NiPSysEmitterInitialRadiusCtlr.h        |    2 +-
 obj/NiPSysEmitterLifeSpanCtlr.h             |    2 +-
 obj/NiPSysEmitterSpeedCtlr.h                |    2 +-
 obj/NiPSysGravityModifier.h                 |    2 +-
 obj/NiPSysGravityStrengthCtlr.h             |    2 +-
 obj/NiPSysGrowFadeModifier.h                |    2 +-
 obj/NiPSysMeshEmitter.h                     |    2 +-
 obj/NiPSysMeshUpdateModifier.h              |    2 +-
 obj/NiPSysModifier.h                        |    2 +-
 obj/NiPSysModifierActiveCtlr.h              |    2 +-
 obj/NiPSysPlanarCollider.h                  |    2 +-
 obj/NiPSysPositionModifier.h                |    2 +-
 obj/NiPSysResetOnLoopCtlr.h                 |    2 +-
 obj/NiPSysRotationModifier.h                |    2 +-
 obj/NiPSysSpawnModifier.h                   |    2 +-
 obj/NiPSysSphereEmitter.h                   |    2 +-
 obj/NiPSysUpdateCtlr.h                      |    2 +-
 obj/NiPSysVolumeEmitter.h                   |    2 +-
 obj/NiPalette.h                             |    2 +-
 obj/NiParticleBomb.h                        |    2 +-
 obj/NiParticleColorModifier.h               |    2 +-
 obj/NiParticleGrowFade.h                    |    2 +-
 obj/NiParticleMeshModifier.h                |    2 +-
 obj/NiParticleMeshes.h                      |    2 +-
 obj/NiParticleMeshesData.h                  |    2 +-
 obj/NiParticleRotation.h                    |    2 +-
 obj/NiParticleSystem.h                      |    2 +-
 obj/NiParticleSystemController.h            |    2 +-
 obj/NiParticles.h                           |    2 +-
 obj/NiParticlesData.h                       |    2 +-
 obj/NiPathController.h                      |    2 +-
 obj/NiPathInterpolator.h                    |    2 +-
 obj/NiPixelData.h                           |    2 +-
 obj/NiPlanarCollider.h                      |    2 +-
 obj/NiPoint3Interpolator.h                  |    2 +-
 obj/NiPointLight.h                          |    2 +-
 obj/NiPosData.h                             |    2 +-
 obj/NiProperty.h                            |    2 +-
 obj/NiRangeLODData.h                        |    2 +-
 obj/NiRotatingParticles.h                   |    2 +-
 obj/NiRotatingParticlesData.h               |    2 +-
 obj/NiScreenLODData.h                       |    2 +-
 obj/NiSequenceStreamHelper.h                |    2 +-
 obj/NiShadeProperty.h                       |    2 +-
 obj/NiSingleInterpolatorController.h        |    2 +-
 obj/NiSkinData.h                            |    2 +-
 obj/NiSkinInstance.h                        |    2 +-
 obj/NiSkinPartition.h                       |    2 +-
 obj/NiSourceTexture.h                       |    2 +-
 obj/NiSpecularProperty.h                    |    2 +-
 obj/NiSphericalCollider.h                   |    2 +-
 obj/NiSpotLight.h                           |    2 +-
 obj/NiStencilProperty.h                     |    2 +-
 obj/NiStringExtraData.h                     |    2 +-
 obj/NiStringPalette.h                       |    2 +-
 obj/NiStringsExtraData.h                    |    2 +-
 obj/NiTextKeyExtraData.h                    |    2 +-
 obj/NiTextureEffect.h                       |    2 +-
 obj/NiTextureTransformController.h          |    2 +-
 obj/NiTexturingProperty.h                   |    2 +-
 obj/NiTimeController.h                      |    2 +-
 obj/NiTransformController.h                 |    2 +-
 obj/NiTransformData.h                       |    2 +-
 obj/NiTransformInterpolator.h               |    2 +-
 obj/NiTriBasedGeom.h                        |    2 +-
 obj/NiTriBasedGeomData.h                    |    2 +-
 obj/NiTriShape.h                            |    2 +-
 obj/NiTriShapeData.h                        |    2 +-
 obj/NiTriStrips.h                           |    2 +-
 obj/NiTriStripsData.h                       |    2 +-
 obj/NiUVController.h                        |    2 +-
 obj/NiUVData.h                              |    2 +-
 obj/NiVectorExtraData.h                     |    2 +-
 obj/NiVertWeightsExtraData.h                |    2 +-
 obj/NiVertexColorProperty.h                 |    2 +-
 obj/NiVisController.h                       |    2 +-
 obj/NiVisData.h                             |    2 +-
 obj/NiWireframeProperty.h                   |    2 +-
 obj/NiZBufferProperty.h                     |    2 +-
 obj/RootCollisionNode.h                     |    2 +-
 obj/bhkBlendCollisionObject.h               |    2 +-
 obj/bhkBlendController.h                    |    2 +-
 obj/bhkBoxShape.h                           |    2 +-
 obj/bhkCapsuleShape.h                       |    2 +-
 obj/bhkCollisionObject.h                    |    2 +-
 obj/bhkConvexShape.h                        |    2 +-
 obj/bhkConvexTransformShape.h               |    2 +-
 obj/bhkConvexVerticesShape.h                |    2 +-
 obj/bhkEntity.h                             |    2 +-
 obj/bhkHingeConstraint.h                    |    2 +-
 obj/bhkLimitedHingeConstraint.h             |    2 +-
 obj/bhkListShape.h                          |    2 +-
 obj/bhkMalleableConstraint.h                |    2 +-
 obj/bhkMoppBvTreeShape.h                    |    2 +-
 obj/bhkMultiSphereShape.h                   |    2 +-
 obj/bhkNiTriStripsShape.h                   |    2 +-
 obj/bhkPackedNiTriStripsShape.h             |    2 +-
 obj/bhkPrismaticConstraint.h                |    2 +-
 obj/bhkRagdollConstraint.h                  |    2 +-
 obj/bhkRefObject.h                          |    2 +-
 obj/bhkRigidBody.h                          |    2 +-
 obj/bhkRigidBodyT.h                         |    2 +-
 obj/bhkSPCollisionObject.h                  |    2 +-
 obj/bhkSerializable.h                       |    2 +-
 obj/bhkShape.h                              |    2 +-
 obj/bhkSimpleShapePhantom.h                 |    2 +-
 obj/bhkSphereRepShape.h                     |    2 +-
 obj/bhkSphereShape.h                        |    2 +-
 obj/bhkStiffSpringConstraint.h              |    2 +-
 obj/bhkTransformShape.h                     |    2 +-
 obj/bhkWorldObject.h                        |    2 +-
 obj/hkPackedNiTriStripsData.h               |    2 +-
 278 files changed, 1941 insertions(+), 1202 deletions(-)
 rename obj/Ref.h => Ref.h (100%)
 rename obj/Type.cpp => Type.cpp (100%)
 rename obj/Type.h => Type.h (100%)
 create mode 100644 gen/AVObject.cpp
 create mode 100644 gen/AVObject.h
 create mode 100644 gen/Bones.cpp
 create mode 100644 gen/Bones.h
 create mode 100644 gen/BoundingBox.cpp
 create mode 100644 gen/BoundingBox.h
 create mode 100644 gen/ByteArray.cpp
 create mode 100644 gen/ByteArray.h
 create mode 100644 gen/ControllerLink.cpp
 create mode 100644 gen/ControllerLink.h
 create mode 100644 gen/Footer.cpp
 create mode 100644 gen/Footer.h
 create mode 100644 gen/FurniturePosition.cpp
 create mode 100644 gen/FurniturePosition.h
 create mode 100644 gen/Header.cpp
 create mode 100644 gen/Header.h
 create mode 100644 gen/KeyGroup.cpp
 create mode 100644 gen/KeyGroup.h
 create mode 100644 gen/LODRange.cpp
 create mode 100644 gen/LODRange.h
 create mode 100644 gen/MatchGroup.cpp
 create mode 100644 gen/MatchGroup.h
 create mode 100644 gen/MipMap.cpp
 create mode 100644 gen/MipMap.h
 create mode 100644 gen/Morph.cpp
 create mode 100644 gen/Morph.h
 create mode 100644 gen/NodeGroup.cpp
 create mode 100644 gen/NodeGroup.h
 create mode 100644 gen/Particle.cpp
 create mode 100644 gen/Particle.h
 create mode 100644 gen/QuaternionXYZW.cpp
 create mode 100644 gen/QuaternionXYZW.h
 create mode 100644 gen/RotationKeyArray.cpp
 create mode 100644 gen/RotationKeyArray.h
 create mode 100644 gen/ShaderTexDesc.cpp
 create mode 100644 gen/ShaderTexDesc.h
 create mode 100644 gen/ShortString.cpp
 create mode 100644 gen/ShortString.h
 create mode 100644 gen/SkinData.cpp
 create mode 100644 gen/SkinData.h
 create mode 100644 gen/SkinPartition.cpp
 create mode 100644 gen/SkinPartition.h
 create mode 100644 gen/SkinShape.cpp
 create mode 100644 gen/SkinShape.h
 create mode 100644 gen/SkinShapeGroup.cpp
 create mode 100644 gen/SkinShapeGroup.h
 create mode 100644 gen/SkinWeight.cpp
 create mode 100644 gen/SkinWeight.h
 create mode 100644 gen/StringPalette.cpp
 create mode 100644 gen/StringPalette.h
 create mode 100644 gen/TBC.cpp
 create mode 100644 gen/TBC.h
 create mode 100644 gen/TexDesc.cpp
 create mode 100644 gen/TexDesc.h
 create mode 100644 gen/TexSource.cpp
 create mode 100644 gen/TexSource.h
 create mode 100644 gen/hkTriangle.cpp
 create mode 100644 gen/hkTriangle.h
 rename xml_extract.h => gen/obj_defines.h (95%)
 rename docsys_extract.cpp => gen/obj_factories.cpp (100%)

diff --git a/obj/Ref.h b/Ref.h
similarity index 100%
rename from obj/Ref.h
rename to Ref.h
diff --git a/obj/Type.cpp b/Type.cpp
similarity index 100%
rename from obj/Type.cpp
rename to Type.cpp
diff --git a/obj/Type.h b/Type.h
similarity index 100%
rename from obj/Type.h
rename to Type.h
diff --git a/gen/AVObject.cpp b/gen/AVObject.cpp
new file mode 100644
index 00000000..a0729763
--- /dev/null
+++ b/gen/AVObject.cpp
@@ -0,0 +1,11 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "AVObject.h"
+#include "obj/NiAVObject.h"
+
+//Constructor
+AVObject::AVObject() : object(NULL) {};
+
+//Destructor
+AVObject::~AVObject() {};
diff --git a/gen/AVObject.h b/gen/AVObject.h
new file mode 100644
index 00000000..ac8f31d1
--- /dev/null
+++ b/gen/AVObject.h
@@ -0,0 +1,31 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _AVOBJECT_H_
+#define _AVOBJECT_H_
+
+#include "NIF_IO.h"
+#include "Ref.h"
+
+//Forward Declarations
+class NiAVObject;
+
+/*!
+ * Used in NiDefaultAVObjectPalette.
+ */
+struct AVObject {
+  /*! Default Constructor */
+  AVObject();
+  /*! Default Destructor */
+  ~AVObject();
+  /*!
+   * Object name.
+   */
+  string name;
+  /*!
+   * Object reference.
+   */
+  NiAVObject * object;
+};
+
+#endif
diff --git a/gen/Bones.cpp b/gen/Bones.cpp
new file mode 100644
index 00000000..21fd250c
--- /dev/null
+++ b/gen/Bones.cpp
@@ -0,0 +1,11 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "Bones.h"
+#include "obj/NiNode.h"
+
+//Constructor
+Bones::Bones() : numBones((uint)0) {};
+
+//Destructor
+Bones::~Bones() {};
diff --git a/gen/Bones.h b/gen/Bones.h
new file mode 100644
index 00000000..4c7b56f2
--- /dev/null
+++ b/gen/Bones.h
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BONES_H_
+#define _BONES_H_
+
+#include "NIF_IO.h"
+#include "Ref.h"
+
+//Forward Declarations
+class NiNode;
+
+/*!
+ * This is a list of bone influences.  It points to blocks higher in the
+ * hierarchy so ints are used to represent the indices.
+ */
+struct Bones {
+  /*! Default Constructor */
+  Bones();
+  /*! Default Destructor */
+  ~Bones();
+  /*!
+   * The number of node bones referenced as influences.
+   */
+  uint numBones;
+  /*!
+   * Block indicies of the bones.
+   */
+  vector<NiNode * > bones;
+};
+
+#endif
diff --git a/gen/BoundingBox.cpp b/gen/BoundingBox.cpp
new file mode 100644
index 00000000..b3608db7
--- /dev/null
+++ b/gen/BoundingBox.cpp
@@ -0,0 +1,10 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "BoundingBox.h"
+
+//Constructor
+BoundingBox::BoundingBox() : unknownInt((uint)1) {};
+
+//Destructor
+BoundingBox::~BoundingBox() {};
diff --git a/gen/BoundingBox.h b/gen/BoundingBox.h
new file mode 100644
index 00000000..da33d0da
--- /dev/null
+++ b/gen/BoundingBox.h
@@ -0,0 +1,35 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BOUNDINGBOX_H_
+#define _BOUNDINGBOX_H_
+
+#include "NIF_IO.h"
+
+/*!
+ * Bounding box.
+ */
+struct BoundingBox {
+  /*! Default Constructor */
+  BoundingBox();
+  /*! Default Destructor */
+  ~BoundingBox();
+  /*!
+   * Usually 1.
+   */
+  uint unknownInt;
+  /*!
+   * Translation vector.
+   */
+  Vector3 translation;
+  /*!
+   * Rotation matrix.
+   */
+  Matrix33 rotation;
+  /*!
+   * Radius, per direction.
+   */
+  Vector3 radius;
+};
+
+#endif
diff --git a/gen/ByteArray.cpp b/gen/ByteArray.cpp
new file mode 100644
index 00000000..4c40b477
--- /dev/null
+++ b/gen/ByteArray.cpp
@@ -0,0 +1,10 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "ByteArray.h"
+
+//Constructor
+ByteArray::ByteArray() : dataSize((uint)0), unknownInt((uint)0) {};
+
+//Destructor
+ByteArray::~ByteArray() {};
diff --git a/gen/ByteArray.h b/gen/ByteArray.h
new file mode 100644
index 00000000..070829b5
--- /dev/null
+++ b/gen/ByteArray.h
@@ -0,0 +1,31 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BYTEARRAY_H_
+#define _BYTEARRAY_H_
+
+#include "NIF_IO.h"
+
+/*!
+ * An array of bytes.
+ */
+struct ByteArray {
+  /*! Default Constructor */
+  ByteArray();
+  /*! Default Destructor */
+  ~ByteArray();
+  /*!
+   * The number of bytes in this array
+   */
+  uint dataSize;
+  /*!
+   * Unknown.
+   */
+  uint unknownInt;
+  /*!
+   * The bytes which make up the array
+   */
+  vector<byte > data;
+};
+
+#endif
diff --git a/gen/ControllerLink.cpp b/gen/ControllerLink.cpp
new file mode 100644
index 00000000..a5f0f556
--- /dev/null
+++ b/gen/ControllerLink.cpp
@@ -0,0 +1,14 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "ControllerLink.h"
+#include "obj/NiInterpolator.h"
+#include "obj/NiObject.h"
+#include "obj/NiObject.h"
+#include "obj/NiStringPalette.h"
+
+//Constructor
+ControllerLink::ControllerLink() : interpolator(NULL), unknownLink1(NULL), unknownLink2(NULL), unknownShort0((ushort)0), priority_((byte)0), stringPalette(NULL), nodeNameOffset((uint)0), propertyTypeOffset((uint)0), controllerTypeOffset((uint)0), variableOffset1((uint)0), variableOffset2((uint)0) {};
+
+//Destructor
+ControllerLink::~ControllerLink() {};
diff --git a/gen/ControllerLink.h b/gen/ControllerLink.h
new file mode 100644
index 00000000..2879343f
--- /dev/null
+++ b/gen/ControllerLink.h
@@ -0,0 +1,116 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _CONTROLLERLINK_H_
+#define _CONTROLLERLINK_H_
+
+#include "NIF_IO.h"
+#include "Ref.h"
+
+//Forward Declarations
+class NiInterpolator;
+class NiObject;
+class NiObject;
+class NiStringPalette;
+
+/*!
+ * In a .kf file, this links to a controllable block, via its name (or
+ * for version 10.2.0.0 and up, a link and offset to a NiStringPalette
+ * that contains the name), and a sequence of interpolators that apply to
+ * this controllable block, via links.
+ */
+struct ControllerLink {
+  /*! Default Constructor */
+  ControllerLink();
+  /*! Default Destructor */
+  ~ControllerLink();
+  /*!
+   * Name of a controllable block in another NIF file.
+   */
+  string name;
+  /*!
+   * Link to an interpolator.
+   */
+  Ref<NiInterpolator > interpolator;
+  /*!
+   * Unknown link. Usually -1.
+   */
+  Ref<NiObject > unknownLink1;
+  /*!
+   * Unknown.
+   */
+  Ref<NiObject > unknownLink2;
+  /*!
+   * Unknown.
+   */
+  ushort unknownShort0;
+  /*!
+   * Idle animations tend to have low values for this, and blocks that have
+   * high values tend to correspond with the important parts of the
+   * animation. WARNING: BREAKS CIV4 NIF FILES! Only observed in Oblivion
+   * NIF files so far.
+   */
+  byte priority_;
+  /*!
+   * Refers to the NiStringPalette which contains the name of the
+   * controlled block.
+   */
+  Ref<NiStringPalette > stringPalette;
+  /*!
+   * The name of the animated node.
+   */
+  string nodeName;
+  /*!
+   * Offset in the string palette where the name of the controlled node
+   * (NiNode, NiTriShape, ...) starts.
+   */
+  uint nodeNameOffset;
+  /*!
+   * Name of the property (NiMaterialProperty, ...), if this controller
+   * controls a property.
+   */
+  string propertyType;
+  /*!
+   * Offset in the string palette where the property (NiMaterialProperty,
+   * ...) starts, if this controller controls a property. Otherwise, -1.
+   */
+  uint propertyTypeOffset;
+  /*!
+   * Probably the block type name of the controller in the NIF file that is
+   * child of the controlled block.
+   */
+  string controllerType;
+  /*!
+   * Apparently the offset in the string palette of some type of controller
+   * related to Interpolator (for example, a 'NiTransformInterpolator' will
+   * have here a 'NiTransformController', etc.). Sometimes the type of
+   * controller that links to the interpolator. Probably it refers to the
+   * controller in the NIF file that is child of the controlled block, via
+   * its type name.
+   */
+  uint controllerTypeOffset;
+  /*!
+   * Some variable string (such as 'SELF_ILLUM', '0-0-TT_TRANSLATE_U',
+   * 'tongue_out', etc.).
+   */
+  string variable1;
+  /*!
+   * Offset in the string palette where some variable string starts (such
+   * as 'SELF_ILLUM', '0-0-TT_TRANSLATE_U', 'tongue_out', etc.). Usually,
+   * -1.
+   */
+  uint variableOffset1;
+  /*!
+   * Another variable string, apparently used for particle system
+   * controllers.
+   */
+  string variable2;
+  /*!
+   * Offset in the string palette where some variable string starts (so far
+   * only 'EmitterActive' and 'BirthRate' have been observed in official
+   * files, used for particle system controllers). Usually, -1.
+   */
+  uint variableOffset2;
+};
+
+#endif
diff --git a/gen/Footer.cpp b/gen/Footer.cpp
new file mode 100644
index 00000000..021be3a5
--- /dev/null
+++ b/gen/Footer.cpp
@@ -0,0 +1,11 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "Footer.h"
+#include "obj/NiAVObject.h"
+
+//Constructor
+Footer::Footer() : numRoots((uint)0) {};
+
+//Destructor
+Footer::~Footer() {};
diff --git a/gen/Footer.h b/gen/Footer.h
new file mode 100644
index 00000000..768e3345
--- /dev/null
+++ b/gen/Footer.h
@@ -0,0 +1,34 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _FOOTER_H_
+#define _FOOTER_H_
+
+#include "NIF_IO.h"
+#include "Ref.h"
+
+//Forward Declarations
+class NiAVObject;
+
+/*!
+ * The NIF file footer.
+ */
+struct Footer {
+  /*! Default Constructor */
+  Footer();
+  /*! Default Destructor */
+  ~Footer();
+  /*!
+   * The number of root references.
+   */
+  uint numRoots;
+  /*!
+   * List of root blocks. If there is a camera, for 1st person view, then
+   * this block is referred to as well in this list, even if it is not a
+   * root block (usually we want the camera to be attached to the Bip Head
+   * node).
+   */
+  vector<Ref<NiAVObject > > roots;
+};
+
+#endif
diff --git a/gen/FurniturePosition.cpp b/gen/FurniturePosition.cpp
new file mode 100644
index 00000000..157e5e63
--- /dev/null
+++ b/gen/FurniturePosition.cpp
@@ -0,0 +1,10 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "FurniturePosition.h"
+
+//Constructor
+FurniturePosition::FurniturePosition() : unknownShort((ushort)0), positionRef1_((byte)0), positionRef2_((byte)0) {};
+
+//Destructor
+FurniturePosition::~FurniturePosition() {};
diff --git a/gen/FurniturePosition.h b/gen/FurniturePosition.h
new file mode 100644
index 00000000..e345b892
--- /dev/null
+++ b/gen/FurniturePosition.h
@@ -0,0 +1,35 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _FURNITUREPOSITION_H_
+#define _FURNITUREPOSITION_H_
+
+#include "NIF_IO.h"
+
+/*!
+ * Describes a furniture position?
+ */
+struct FurniturePosition {
+  /*! Default Constructor */
+  FurniturePosition();
+  /*! Default Destructor */
+  ~FurniturePosition();
+  /*!
+   * Unknown. Position?
+   */
+  Vector3 unknownVector;
+  /*!
+   * Unknown.
+   */
+  ushort unknownShort;
+  /*!
+   * This might refer to a furnituremarkerxx.nif file.
+   */
+  byte positionRef1_;
+  /*!
+   * This might also refer to a furnituremarkerxx.nif file.
+   */
+  byte positionRef2_;
+};
+
+#endif
diff --git a/gen/Header.cpp b/gen/Header.cpp
new file mode 100644
index 00000000..0ddc730f
--- /dev/null
+++ b/gen/Header.cpp
@@ -0,0 +1,10 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "Header.h"
+
+//Constructor
+Header::Header() : version((uint)0x04000002), endianType((byte)1), userVersion((uint)0), numBlocks((uint)0), unknownInt1((uint)0), unknownInt3((uint)0), numBlockTypes((ushort)0), unknownInt2((uint)0) {};
+
+//Destructor
+Header::~Header() {};
diff --git a/gen/Header.h b/gen/Header.h
new file mode 100644
index 00000000..64a77580
--- /dev/null
+++ b/gen/Header.h
@@ -0,0 +1,87 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _HEADER_H_
+#define _HEADER_H_
+
+#include "NIF_IO.h"
+#include "gen/ShortString.h"
+#include "gen/ShortString.h"
+#include "gen/ShortString.h"
+
+/*!
+ * The NIF file header.
+ */
+struct Header {
+  /*! Default Constructor */
+  Header();
+  /*! Default Destructor */
+  ~Header();
+  /*!
+   * 'NetImmerse File Format x.x.x.x' (versions <= 10.0.1.2) or 'Gamebryo
+   * File Format x.x.x.x' (versions >= 10.1.0.0), with x.x.x.x the version
+   * written out. Ends with a newline character (0x0A).
+   */
+  HeaderString headerString;
+  /*!
+   * The NIF version, in hexadecimal notation: 0x04000002, 0x0401000C,
+   * 0x04020002, 0x04020100, 0x04020200, 0x0A000100, 0x0A010000,
+   * 0x0A020000, 0x14000004, ...
+   */
+  uint version;
+  /*!
+   * Determines the endian-ness of the data.  1 = little endian (default) 0
+   * = big endian
+   */
+  byte endianType;
+  /*!
+   * An extra version number, for companies that decide to modify the file
+   * format.
+   */
+  uint userVersion;
+  /*!
+   * Number of file blocks.
+   */
+  uint numBlocks;
+  /*!
+   * Unknown.
+   */
+  uint unknownInt1;
+  /*!
+   * Unknown.
+   */
+  uint unknownInt3;
+  /*!
+   * Could be the name of the creator of the NIF file?
+   */
+  ShortString creator_;
+  /*!
+   * Unknown. Can be something like 'TriStrip Process Script'.
+   */
+  ShortString exportType_;
+  /*!
+   * Unknown. Possibly the selected option of the export script. Can be
+   * something like 'Default Export Script'.
+   */
+  ShortString exportScript_;
+  /*!
+   * Number of block types in this NIF file.
+   */
+  ushort numBlockTypes;
+  /*!
+   * List of all block types used in this NIF file.
+   */
+  vector<string > blockTypes;
+  /*!
+   * Maps file blocks on their corresponding type: first file block is of
+   * type block_types[block_type_index[0]], the second of
+   * block_types[block_type_index[1]], etc.
+   */
+  vector<ushort > blockTypeIndex;
+  /*!
+   * Unknown.
+   */
+  uint unknownInt2;
+};
+
+#endif
diff --git a/gen/KeyGroup.cpp b/gen/KeyGroup.cpp
new file mode 100644
index 00000000..2902e11f
--- /dev/null
+++ b/gen/KeyGroup.cpp
@@ -0,0 +1,12 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "KeyGroup.h"
+
+//Constructor
+template <class T >
+KeyGroup<T>::KeyGroup() : numKeys((uint)0), interpolation((KeyType)0) {};
+
+//Destructor
+template <class T >
+KeyGroup<T>::~KeyGroup() {};
diff --git a/gen/KeyGroup.h b/gen/KeyGroup.h
new file mode 100644
index 00000000..cc5ad190
--- /dev/null
+++ b/gen/KeyGroup.h
@@ -0,0 +1,33 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _KEYGROUP_H_
+#define _KEYGROUP_H_
+
+#include "NIF_IO.h"
+
+/*!
+ * Array of vector keys (anything that can be interpolated, except
+ * rotations).
+ */
+template <class T >
+struct KeyGroup {
+  /*! Default Constructor */
+  KeyGroup();
+  /*! Default Destructor */
+  ~KeyGroup();
+  /*!
+   * Number of keys in the array.
+   */
+  uint numKeys;
+  /*!
+   * The key type.
+   */
+  KeyType interpolation;
+  /*!
+   * The keys.
+   */
+  vector<Key<T > > keys;
+};
+
+#endif
diff --git a/gen/LODRange.cpp b/gen/LODRange.cpp
new file mode 100644
index 00000000..2e6d9101
--- /dev/null
+++ b/gen/LODRange.cpp
@@ -0,0 +1,10 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "LODRange.h"
+
+//Constructor
+LODRange::LODRange() : near(0.0f), far(0.0f) {};
+
+//Destructor
+LODRange::~LODRange() {};
diff --git a/gen/LODRange.h b/gen/LODRange.h
new file mode 100644
index 00000000..dc251ab2
--- /dev/null
+++ b/gen/LODRange.h
@@ -0,0 +1,27 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _LODRANGE_H_
+#define _LODRANGE_H_
+
+#include "NIF_IO.h"
+
+/*!
+ * The distance range where a specific level of detail applies.
+ */
+struct LODRange {
+  /*! Default Constructor */
+  LODRange();
+  /*! Default Destructor */
+  ~LODRange();
+  /*!
+   * Begining of range.
+   */
+  float near;
+  /*!
+   * End of Range.
+   */
+  float far;
+};
+
+#endif
diff --git a/gen/MatchGroup.cpp b/gen/MatchGroup.cpp
new file mode 100644
index 00000000..58b46937
--- /dev/null
+++ b/gen/MatchGroup.cpp
@@ -0,0 +1,10 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "MatchGroup.h"
+
+//Constructor
+MatchGroup::MatchGroup() : numVertices((ushort)0) {};
+
+//Destructor
+MatchGroup::~MatchGroup() {};
diff --git a/gen/MatchGroup.h b/gen/MatchGroup.h
new file mode 100644
index 00000000..1402d327
--- /dev/null
+++ b/gen/MatchGroup.h
@@ -0,0 +1,27 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _MATCHGROUP_H_
+#define _MATCHGROUP_H_
+
+#include "NIF_IO.h"
+
+/*!
+ * Group of vertex indices of vertices that match.
+ */
+struct MatchGroup {
+  /*! Default Constructor */
+  MatchGroup();
+  /*! Default Destructor */
+  ~MatchGroup();
+  /*!
+   * Number of vertices in this group.
+   */
+  ushort numVertices;
+  /*!
+   * The vertex indices.
+   */
+  vector<ushort > vertexIndices;
+};
+
+#endif
diff --git a/gen/MipMap.cpp b/gen/MipMap.cpp
new file mode 100644
index 00000000..cd673a56
--- /dev/null
+++ b/gen/MipMap.cpp
@@ -0,0 +1,10 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "MipMap.h"
+
+//Constructor
+MipMap::MipMap() : width((uint)0), height((uint)0), offset((uint)0) {};
+
+//Destructor
+MipMap::~MipMap() {};
diff --git a/gen/MipMap.h b/gen/MipMap.h
new file mode 100644
index 00000000..f069585f
--- /dev/null
+++ b/gen/MipMap.h
@@ -0,0 +1,31 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _MIPMAP_H_
+#define _MIPMAP_H_
+
+#include "NIF_IO.h"
+
+/*!
+ * Description of a MipMap within a NiPixelData block.
+ */
+struct MipMap {
+  /*! Default Constructor */
+  MipMap();
+  /*! Default Destructor */
+  ~MipMap();
+  /*!
+   * Width of the mipmap image.
+   */
+  uint width;
+  /*!
+   * Height of the mipmap image.
+   */
+  uint height;
+  /*!
+   * Offset into the pixel data array where this mipmap starts.
+   */
+  uint offset;
+};
+
+#endif
diff --git a/gen/Morph.cpp b/gen/Morph.cpp
new file mode 100644
index 00000000..ef314ed6
--- /dev/null
+++ b/gen/Morph.cpp
@@ -0,0 +1,10 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "Morph.h"
+
+//Constructor
+Morph::Morph() : numMorphKeys((uint)0), morphInterpolation((KeyType)0), unknownInt((uint)0) {};
+
+//Destructor
+Morph::~Morph() {};
diff --git a/gen/Morph.h b/gen/Morph.h
new file mode 100644
index 00000000..02d1abd4
--- /dev/null
+++ b/gen/Morph.h
@@ -0,0 +1,44 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _MORPH_H_
+#define _MORPH_H_
+
+#include "NIF_IO.h"
+
+/*!
+ * Geometry morphing data component.
+ */
+struct Morph {
+  /*! Default Constructor */
+  Morph();
+  /*! Default Destructor */
+  ~Morph();
+  /*!
+   * Name of the frame.
+   */
+  string frameName;
+  /*!
+   * The number of morph keys that follow.
+   */
+  uint numMorphKeys;
+  /*!
+   * Unlike most blocks, the presense of this value is not conditional on
+   * there being keys.
+   */
+  KeyType morphInterpolation;
+  /*!
+   * The morph key frames.
+   */
+  vector<Key<float > > morphKeys;
+  /*!
+   * Unknown.
+   */
+  uint unknownInt;
+  /*!
+   * Morph vectors.
+   */
+  vector<Vector3 > vectors;
+};
+
+#endif
diff --git a/gen/NodeGroup.cpp b/gen/NodeGroup.cpp
new file mode 100644
index 00000000..db83353f
--- /dev/null
+++ b/gen/NodeGroup.cpp
@@ -0,0 +1,11 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NodeGroup.h"
+#include "obj/NiNode.h"
+
+//Constructor
+NodeGroup::NodeGroup() : numNodes((uint)0) {};
+
+//Destructor
+NodeGroup::~NodeGroup() {};
diff --git a/gen/NodeGroup.h b/gen/NodeGroup.h
new file mode 100644
index 00000000..a6de42fa
--- /dev/null
+++ b/gen/NodeGroup.h
@@ -0,0 +1,31 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NODEGROUP_H_
+#define _NODEGROUP_H_
+
+#include "NIF_IO.h"
+#include "Ref.h"
+
+//Forward Declarations
+class NiNode;
+
+/*!
+ * A group of NiNodes references.
+ */
+struct NodeGroup {
+  /*! Default Constructor */
+  NodeGroup();
+  /*! Default Destructor */
+  ~NodeGroup();
+  /*!
+   * Number of node references that follow.
+   */
+  uint numNodes;
+  /*!
+   * The list of NiNode references.
+   */
+  vector<Ref<NiNode > > nodes;
+};
+
+#endif
diff --git a/gen/Particle.cpp b/gen/Particle.cpp
new file mode 100644
index 00000000..5ba5c457
--- /dev/null
+++ b/gen/Particle.cpp
@@ -0,0 +1,10 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "Particle.h"
+
+//Constructor
+Particle::Particle() : lifetime(0.0f), lifespan(0.0f), timestamp(0.0f), unknownShort((ushort)0), vertexId((ushort)0) {};
+
+//Destructor
+Particle::~Particle() {};
diff --git a/gen/Particle.h b/gen/Particle.h
new file mode 100644
index 00000000..4cb3eecd
--- /dev/null
+++ b/gen/Particle.h
@@ -0,0 +1,47 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _PARTICLE_H_
+#define _PARTICLE_H_
+
+#include "NIF_IO.h"
+
+/*!
+ * particle array entry
+ */
+struct Particle {
+  /*! Default Constructor */
+  Particle();
+  /*! Default Destructor */
+  ~Particle();
+  /*!
+   * Particle velocity
+   */
+  Vector3 velocity;
+  /*!
+   * Unknown
+   */
+  Vector3 unknownVector;
+  /*!
+   * The particle's age.
+   */
+  float lifetime;
+  /*!
+   * Maximum age of the particle.
+   */
+  float lifespan;
+  /*!
+   * Timestamp of the last update.
+   */
+  float timestamp;
+  /*!
+   * Unknown short (=0)
+   */
+  ushort unknownShort;
+  /*!
+   * Particle/vertex index matches array index
+   */
+  ushort vertexId;
+};
+
+#endif
diff --git a/gen/QuaternionXYZW.cpp b/gen/QuaternionXYZW.cpp
new file mode 100644
index 00000000..36b23acb
--- /dev/null
+++ b/gen/QuaternionXYZW.cpp
@@ -0,0 +1,10 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "QuaternionXYZW.h"
+
+//Constructor
+QuaternionXYZW::QuaternionXYZW() : x(0.0f), y(0.0f), z(0.0f), w(0.0f) {};
+
+//Destructor
+QuaternionXYZW::~QuaternionXYZW() {};
diff --git a/gen/QuaternionXYZW.h b/gen/QuaternionXYZW.h
new file mode 100644
index 00000000..daf6063b
--- /dev/null
+++ b/gen/QuaternionXYZW.h
@@ -0,0 +1,35 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _QUATERNIONXYZW_H_
+#define _QUATERNIONXYZW_H_
+
+#include "NIF_IO.h"
+
+/*!
+ * A quaternion as it appears in the havok blocks.
+ */
+struct QuaternionXYZW {
+  /*! Default Constructor */
+  QuaternionXYZW();
+  /*! Default Destructor */
+  ~QuaternionXYZW();
+  /*!
+   * The x-coordinate.
+   */
+  float x;
+  /*!
+   * The y-coordinate.
+   */
+  float y;
+  /*!
+   * The z-coordinate.
+   */
+  float z;
+  /*!
+   * The w-coordinate.
+   */
+  float w;
+};
+
+#endif
diff --git a/gen/RotationKeyArray.cpp b/gen/RotationKeyArray.cpp
new file mode 100644
index 00000000..fdd5f41a
--- /dev/null
+++ b/gen/RotationKeyArray.cpp
@@ -0,0 +1,12 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "RotationKeyArray.h"
+
+//Constructor
+template <class T >
+RotationKeyArray<T>::RotationKeyArray() : numKeys((uint)0), keyType((KeyType)0) {};
+
+//Destructor
+template <class T >
+RotationKeyArray<T>::~RotationKeyArray() {};
diff --git a/gen/RotationKeyArray.h b/gen/RotationKeyArray.h
new file mode 100644
index 00000000..18fc9a7d
--- /dev/null
+++ b/gen/RotationKeyArray.h
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _ROTATIONKEYARRAY_H_
+#define _ROTATIONKEYARRAY_H_
+
+#include "NIF_IO.h"
+
+/*!
+ * Rotation key array.
+ */
+template <class T >
+struct RotationKeyArray {
+  /*! Default Constructor */
+  RotationKeyArray();
+  /*! Default Destructor */
+  ~RotationKeyArray();
+  /*!
+   * Number of keys.
+   */
+  uint numKeys;
+  /*!
+   * Key type (1, 2, 3, or 4).
+   */
+  KeyType keyType;
+  /*!
+   * The rotation keys.
+   */
+  vector<Key<T > > keys;
+};
+
+#endif
diff --git a/gen/ShaderTexDesc.cpp b/gen/ShaderTexDesc.cpp
new file mode 100644
index 00000000..e4e27ad9
--- /dev/null
+++ b/gen/ShaderTexDesc.cpp
@@ -0,0 +1,10 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "ShaderTexDesc.h"
+
+//Constructor
+ShaderTexDesc::ShaderTexDesc() : isUsed(false), unknownInt((uint)0) {};
+
+//Destructor
+ShaderTexDesc::~ShaderTexDesc() {};
diff --git a/gen/ShaderTexDesc.h b/gen/ShaderTexDesc.h
new file mode 100644
index 00000000..320d568c
--- /dev/null
+++ b/gen/ShaderTexDesc.h
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _SHADERTEXDESC_H_
+#define _SHADERTEXDESC_H_
+
+#include "NIF_IO.h"
+#include "gen/TexDesc.h"
+
+/*!
+ * An extended texture description for shader textures.
+ */
+struct ShaderTexDesc {
+  /*! Default Constructor */
+  ShaderTexDesc();
+  /*! Default Destructor */
+  ~ShaderTexDesc();
+  /*!
+   * Is it used?
+   */
+  bool isUsed;
+  /*!
+   * The texture data.
+   */
+  TexDesc textureData;
+  /*!
+   * Unknown.
+   */
+  uint unknownInt;
+};
+
+#endif
diff --git a/gen/ShortString.cpp b/gen/ShortString.cpp
new file mode 100644
index 00000000..79d34596
--- /dev/null
+++ b/gen/ShortString.cpp
@@ -0,0 +1,10 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "ShortString.h"
+
+//Constructor
+ShortString::ShortString() : length((byte)0) {};
+
+//Destructor
+ShortString::~ShortString() {};
diff --git a/gen/ShortString.h b/gen/ShortString.h
new file mode 100644
index 00000000..4ea77d9b
--- /dev/null
+++ b/gen/ShortString.h
@@ -0,0 +1,29 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _SHORTSTRING_H_
+#define _SHORTSTRING_H_
+
+#include "NIF_IO.h"
+
+/*!
+ * Another string format, for short strings.  Specific to Bethesda-
+ * specific header tags.
+ */
+struct ShortString {
+  /*! Default Constructor */
+  ShortString();
+  /*! Default Destructor */
+  ~ShortString();
+  /*!
+   * The string length.
+   */
+  byte length;
+  /*!
+   * The string itself, null terminated (the null terminator is taken into
+   * account in the length byte).
+   */
+  vector<byte > value;
+};
+
+#endif
diff --git a/gen/SkinData.cpp b/gen/SkinData.cpp
new file mode 100644
index 00000000..e69de29b
diff --git a/gen/SkinData.h b/gen/SkinData.h
new file mode 100644
index 00000000..6b8e1d52
--- /dev/null
+++ b/gen/SkinData.h
@@ -0,0 +1,47 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _SKINDATA_H_
+#define _SKINDATA_H_
+
+#include "NIF_IO.h"
+#include "gen/SkinWeight.h"
+
+/*!
+ * Skinning data component.
+ */
+struct SkinData {
+  /*! Default Constructor */
+  SkinData();
+  /*! Default Destructor */
+  ~SkinData();
+  /*!
+   * Rotation offset of the skin from this bone in bind position.
+   */
+  Matrix33 rotation;
+  /*!
+   * Translation offset of the skin from this bone in bind position.
+   */
+  Vector3 translation;
+  /*!
+   * Scale offset of the skin from this bone in bind position. (Assumption
+   * - this is always 1.0 so far)
+   */
+  float scale;
+  /*!
+   * This has been verified not to be a normalized quaternion.  They may or
+   * may not be related to each other so their specification as an array of
+   * 4 floats may be misleading.
+   */
+  vector<float > unknown4Floats;
+  /*!
+   * Number of weighted vertices.
+   */
+  ushort numVertices;
+  /*!
+   * The vertex weights.
+   */
+  vector<SkinWeight > vertexWeights;
+};
+
+#endif
diff --git a/gen/SkinPartition.cpp b/gen/SkinPartition.cpp
new file mode 100644
index 00000000..7ac08c81
--- /dev/null
+++ b/gen/SkinPartition.cpp
@@ -0,0 +1,10 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "SkinPartition.h"
+
+//Constructor
+SkinPartition::SkinPartition() : numVertices((ushort)0), numTriangles((ushort)0), numBones((ushort)0), numStrips((ushort)0), numWeightsPerVertex((ushort)0), hasVertexMap(false), hasVertexWeights(false), hasStrips(false), hasBoneIndices(false) {};
+
+//Destructor
+SkinPartition::~SkinPartition() {};
diff --git a/gen/SkinPartition.h b/gen/SkinPartition.h
new file mode 100644
index 00000000..0e0ed88d
--- /dev/null
+++ b/gen/SkinPartition.h
@@ -0,0 +1,85 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _SKINPARTITION_H_
+#define _SKINPARTITION_H_
+
+#include "NIF_IO.h"
+
+/*!
+ * Skinning data for a submesh, optimized for hardware skinning. Part of
+ * NiSkinPartition.
+ */
+struct SkinPartition {
+  /*! Default Constructor */
+  SkinPartition();
+  /*! Default Destructor */
+  ~SkinPartition();
+  /*!
+   * Number of vertices in this submesh.
+   */
+  ushort numVertices;
+  /*!
+   * Number of triangles in this submesh.
+   */
+  ushort numTriangles;
+  /*!
+   * Number of bones influencing this submesh.
+   */
+  ushort numBones;
+  /*!
+   * Number of strips in this submesh (zero if not stripped).
+   */
+  ushort numStrips;
+  /*!
+   * Number of weight coefficients per vertex.
+   */
+  ushort numWeightsPerVertex;
+  /*!
+   * List of bones.
+   */
+  vector<ushort > bones;
+  /*!
+   * Do we have a vertex map?
+   */
+  bool hasVertexMap;
+  /*!
+   * Maps the weight/influence lists in this submesh to the vertices in the
+   * shape being skinned.
+   */
+  vector<ushort > vertexMap;
+  /*!
+   * Do we have vertex weights?
+   */
+  bool hasVertexWeights;
+  /*!
+   * The vertex weights.
+   */
+  vector<vector<float > > vertexWeights;
+  /*!
+   * The strip lengths.
+   */
+  vector<ushort > stripLengths;
+  /*!
+   * Do we have strip data?
+   */
+  bool hasStrips;
+  /*!
+   * The strips.
+   */
+  vector<vector<ushort > > strips;
+  /*!
+   * The triangles.
+   */
+  vector<Triangle > triangles;
+  /*!
+   * Do we have bone indices?
+   */
+  bool hasBoneIndices;
+  /*!
+   * Bone indices, they index into 'Bones'.
+   */
+  vector<vector<byte > > boneIndices;
+};
+
+#endif
diff --git a/gen/SkinShape.cpp b/gen/SkinShape.cpp
new file mode 100644
index 00000000..f548711c
--- /dev/null
+++ b/gen/SkinShape.cpp
@@ -0,0 +1,12 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "SkinShape.h"
+#include "obj/NiTriShape.h"
+#include "obj/NiSkinInstance.h"
+
+//Constructor
+SkinShape::SkinShape() : shape(NULL), skinInstance(NULL) {};
+
+//Destructor
+SkinShape::~SkinShape() {};
diff --git a/gen/SkinShape.h b/gen/SkinShape.h
new file mode 100644
index 00000000..2da3de91
--- /dev/null
+++ b/gen/SkinShape.h
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _SKINSHAPE_H_
+#define _SKINSHAPE_H_
+
+#include "NIF_IO.h"
+#include "Ref.h"
+
+//Forward Declarations
+class NiTriShape;
+class NiSkinInstance;
+
+/*!
+ * Reference to shape and skin instance.
+ */
+struct SkinShape {
+  /*! Default Constructor */
+  SkinShape();
+  /*! Default Destructor */
+  ~SkinShape();
+  /*!
+   * The shape.
+   */
+  Ref<NiTriShape > shape;
+  /*!
+   * Skinning instance for the shape?
+   */
+  Ref<NiSkinInstance > skinInstance;
+};
+
+#endif
diff --git a/gen/SkinShapeGroup.cpp b/gen/SkinShapeGroup.cpp
new file mode 100644
index 00000000..ff7b2b2c
--- /dev/null
+++ b/gen/SkinShapeGroup.cpp
@@ -0,0 +1,10 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "SkinShapeGroup.h"
+
+//Constructor
+SkinShapeGroup::SkinShapeGroup() : numLinkPairs((uint)0) {};
+
+//Destructor
+SkinShapeGroup::~SkinShapeGroup() {};
diff --git a/gen/SkinShapeGroup.h b/gen/SkinShapeGroup.h
new file mode 100644
index 00000000..d1c8a972
--- /dev/null
+++ b/gen/SkinShapeGroup.h
@@ -0,0 +1,29 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _SKINSHAPEGROUP_H_
+#define _SKINSHAPEGROUP_H_
+
+#include "NIF_IO.h"
+#include "gen/SkinShape.h"
+
+/*!
+ * Unknown.
+ */
+struct SkinShapeGroup {
+  /*! Default Constructor */
+  SkinShapeGroup();
+  /*! Default Destructor */
+  ~SkinShapeGroup();
+  /*!
+   * Counts unknown.
+   */
+  uint numLinkPairs;
+  /*!
+   * First link is a NiTriShape block. Second link is a NiSkinInstance
+   * block.
+   */
+  vector<SkinShape > linkPairs;
+};
+
+#endif
diff --git a/gen/SkinWeight.cpp b/gen/SkinWeight.cpp
new file mode 100644
index 00000000..bb35f75d
--- /dev/null
+++ b/gen/SkinWeight.cpp
@@ -0,0 +1,10 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "SkinWeight.h"
+
+//Constructor
+SkinWeight::SkinWeight() : index((ushort)0), weight(0.0f) {};
+
+//Destructor
+SkinWeight::~SkinWeight() {};
diff --git a/gen/SkinWeight.h b/gen/SkinWeight.h
new file mode 100644
index 00000000..0863dfec
--- /dev/null
+++ b/gen/SkinWeight.h
@@ -0,0 +1,27 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _SKINWEIGHT_H_
+#define _SKINWEIGHT_H_
+
+#include "NIF_IO.h"
+
+/*!
+ * A weighted vertex.
+ */
+struct SkinWeight {
+  /*! Default Constructor */
+  SkinWeight();
+  /*! Default Destructor */
+  ~SkinWeight();
+  /*!
+   * The vertex index, in the mesh.
+   */
+  ushort index;
+  /*!
+   * The vertex weight - between 0.0 and 1.0
+   */
+  float weight;
+};
+
+#endif
diff --git a/gen/StringPalette.cpp b/gen/StringPalette.cpp
new file mode 100644
index 00000000..4eeee30e
--- /dev/null
+++ b/gen/StringPalette.cpp
@@ -0,0 +1,10 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "StringPalette.h"
+
+//Constructor
+StringPalette::StringPalette() : length((uint)0) {};
+
+//Destructor
+StringPalette::~StringPalette() {};
diff --git a/gen/StringPalette.h b/gen/StringPalette.h
new file mode 100644
index 00000000..3d81b8be
--- /dev/null
+++ b/gen/StringPalette.h
@@ -0,0 +1,27 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _STRINGPALETTE_H_
+#define _STRINGPALETTE_H_
+
+#include "NIF_IO.h"
+
+/*!
+ * A list of \\0 terminated strings.
+ */
+struct StringPalette {
+  /*! Default Constructor */
+  StringPalette();
+  /*! Default Destructor */
+  ~StringPalette();
+  /*!
+   * A bunch of 0x00 seperated strings.
+   */
+  string palette;
+  /*!
+   * Length of the palette string is repeated here.
+   */
+  uint length;
+};
+
+#endif
diff --git a/gen/TBC.cpp b/gen/TBC.cpp
new file mode 100644
index 00000000..b11f4c33
--- /dev/null
+++ b/gen/TBC.cpp
@@ -0,0 +1,10 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "TBC.h"
+
+//Constructor
+TBC::TBC() : t(0.0f), b(0.0f), c(0.0f) {};
+
+//Destructor
+TBC::~TBC() {};
diff --git a/gen/TBC.h b/gen/TBC.h
new file mode 100644
index 00000000..9566fb10
--- /dev/null
+++ b/gen/TBC.h
@@ -0,0 +1,31 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _TBC_H_
+#define _TBC_H_
+
+#include "NIF_IO.h"
+
+/*!
+ * Tension, bias, continuity.
+ */
+struct TBC {
+  /*! Default Constructor */
+  TBC();
+  /*! Default Destructor */
+  ~TBC();
+  /*!
+   * Tension.
+   */
+  float t;
+  /*!
+   * Bias.
+   */
+  float b;
+  /*!
+   * Continuity.
+   */
+  float c;
+};
+
+#endif
diff --git a/gen/TexDesc.cpp b/gen/TexDesc.cpp
new file mode 100644
index 00000000..00dc165d
--- /dev/null
+++ b/gen/TexDesc.cpp
@@ -0,0 +1,11 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "TexDesc.h"
+#include "obj/NiSourceTexture.h"
+
+//Constructor
+TexDesc::TexDesc() : source(NULL), clampMode((TexClampMode)WRAP_S_WRAP_T), filterMode((TexFilterMode)FILTER_TRILERP), textureSet((uint)0), ps2L((ushort)0), ps2K((ushort)0xFFB5), unknown1((ushort)0), hasTextureTransform(false), wRotation(0.0f), transformType_((uint)0) {};
+
+//Destructor
+TexDesc::~TexDesc() {};
diff --git a/gen/TexDesc.h b/gen/TexDesc.h
new file mode 100644
index 00000000..0d924a17
--- /dev/null
+++ b/gen/TexDesc.h
@@ -0,0 +1,75 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _TEXDESC_H_
+#define _TEXDESC_H_
+
+#include "NIF_IO.h"
+#include "Ref.h"
+
+//Forward Declarations
+class NiSourceTexture;
+
+/*!
+ * Texture description.
+ */
+struct TexDesc {
+  /*! Default Constructor */
+  TexDesc();
+  /*! Default Destructor */
+  ~TexDesc();
+  /*!
+   * NiSourceTexture block index.
+   */
+  Ref<NiSourceTexture > source;
+  /*!
+   * 0=clamp S clamp T, 1=clamp S wrap T, 2=wrap S clamp T, 3=wrap S wrap T
+   */
+  TexClampMode clampMode;
+  /*!
+   * 0=nearest, 1=bilinear, 2=trilinear, 3=..., 4=..., 5=...
+   */
+  TexFilterMode filterMode;
+  /*!
+   * Texture set? Usually 0.
+   */
+  uint textureSet;
+  /*!
+   * 0?
+   */
+  ushort ps2L;
+  /*!
+   * 0xFFB5?
+   */
+  ushort ps2K;
+  /*!
+   * Unknown, 0 or 0x0101?
+   */
+  ushort unknown1;
+  /*!
+   * Determines whether or not the texture's coordinates are transformed.
+   */
+  bool hasTextureTransform;
+  /*!
+   * The amount to translate the texture coordinates in each direction?
+   */
+  TexCoord translation;
+  /*!
+   * The number of times the texture is tiled in each direction?
+   */
+  TexCoord tiling;
+  /*!
+   * 2D Rotation of texture image around third W axis after U and V.
+   */
+  float wRotation;
+  /*!
+   * The texture transform type?  Doesn't seem to do anything.
+   */
+  uint transformType_;
+  /*!
+   * The offset from the origin?
+   */
+  TexCoord centerOffset;
+};
+
+#endif
diff --git a/gen/TexSource.cpp b/gen/TexSource.cpp
new file mode 100644
index 00000000..10838fe0
--- /dev/null
+++ b/gen/TexSource.cpp
@@ -0,0 +1,12 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "TexSource.h"
+#include "obj/NiObject.h"
+#include "obj/NiPixelData.h"
+
+//Constructor
+TexSource::TexSource() : useExternal((byte)0), unknownLink(NULL), unknownByte((byte)0), pixelData(NULL) {};
+
+//Destructor
+TexSource::~TexSource() {};
diff --git a/gen/TexSource.h b/gen/TexSource.h
new file mode 100644
index 00000000..b0c7b23d
--- /dev/null
+++ b/gen/TexSource.h
@@ -0,0 +1,53 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _TEXSOURCE_H_
+#define _TEXSOURCE_H_
+
+#include "NIF_IO.h"
+#include "Ref.h"
+
+//Forward Declarations
+class NiObject;
+class NiPixelData;
+
+/*!
+ * A texture source.
+ */
+struct TexSource {
+  /*! Default Constructor */
+  TexSource();
+  /*! Default Destructor */
+  ~TexSource();
+  /*!
+   * Is the texture external?
+   */
+  byte useExternal;
+  /*!
+   * The external texture file name.  Note: all original morrowind nifs use
+   * name.ext only for addressing the textures, but most mods use something
+   * like textures/[subdir/]name.ext. This is due to a feature in Morrowind
+   * resource manager: it loads name.ext, textures/name.ext and
+   * textures/subdir/name.ext but NOT subdir/name.ext.
+   */
+  string fileName;
+  /*!
+   * Unknown.
+   */
+  Ref<NiObject > unknownLink;
+  /*!
+   * Unknown.
+   */
+  byte unknownByte;
+  /*!
+   * The original source filename of the image embedded by the referred
+   * NiPixelData block.
+   */
+  string originalFileName_;
+  /*!
+   * Pixel data block index.
+   */
+  Ref<NiPixelData > pixelData;
+};
+
+#endif
diff --git a/gen/hkTriangle.cpp b/gen/hkTriangle.cpp
new file mode 100644
index 00000000..e6c99c45
--- /dev/null
+++ b/gen/hkTriangle.cpp
@@ -0,0 +1,10 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "hkTriangle.h"
+
+//Constructor
+hkTriangle::hkTriangle() : unknownShort((ushort)0) {};
+
+//Destructor
+hkTriangle::~hkTriangle() {};
diff --git a/gen/hkTriangle.h b/gen/hkTriangle.h
new file mode 100644
index 00000000..cd6fb832
--- /dev/null
+++ b/gen/hkTriangle.h
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _HKTRIANGLE_H_
+#define _HKTRIANGLE_H_
+
+#include "NIF_IO.h"
+
+/*!
+ * A triangle with extra data used for physics.
+ */
+struct hkTriangle {
+  /*! Default Constructor */
+  hkTriangle();
+  /*! Default Destructor */
+  ~hkTriangle();
+  /*!
+   * The triangle.
+   */
+  Triangle triangle;
+  /*!
+   * Another short, doesn't look like a vertex index.
+   */
+  ushort unknownShort;
+  /*!
+   * This appears to be a normalized vector, so probably it is a normal or
+   * a tangent vector or something like that.
+   */
+  Vector3 normal;
+};
+
+#endif
diff --git a/xml_extract.h b/gen/obj_defines.h
similarity index 95%
rename from xml_extract.h
rename to gen/obj_defines.h
index 0c2cace8..d58c55dc 100644
--- a/xml_extract.h
+++ b/gen/obj_defines.h
@@ -1,11 +1,11 @@
 /* Copyright (c) 2006, NIF File Format Library and Tools
 All rights reserved.  Please see niflib.h for licence. */
 
-#ifndef _XML_EXTRACT_H_
-#define _XML_EXTRACT_H_
+#ifndef _OBJ_DEFINES_H_
+#define _OBJ_DEFINES_H_
 
 #include "NIF_IO.h"
-#include "obj/Ref.h"
+#include "Ref.h"
 #include <iostream>
 #include <fstream>
 #include <vector>
@@ -13,6 +13,36 @@ All rights reserved.  Please see niflib.h for licence. */
 
 using namespace std;
 
+#include "gen/Bones.h"
+#include "gen/ByteArray.h"
+#include "gen/Footer.h"
+#include "gen/LODRange.h"
+#include "gen/MatchGroup.h"
+#include "gen/MipMap.h"
+#include "gen/NodeGroup.h"
+#include "gen/QuaternionXYZW.h"
+#include "gen/ShortString.h"
+#include "gen/SkinShape.h"
+#include "gen/SkinShapeGroup.h"
+#include "gen/SkinWeight.h"
+#include "gen/AVObject.h"
+#include "gen/ControllerLink.h"
+#include "gen/Header.h"
+#include "gen/StringPalette.h"
+#include "gen/TBC.h"
+#include "gen/KeyGroup.h"
+#include "gen/RotationKeyArray.h"
+#include "gen/TexDesc.h"
+#include "gen/ShaderTexDesc.h"
+#include "gen/TexSource.h"
+#include "gen/SkinPartition.h"
+#include "gen/BoundingBox.h"
+#include "gen/FurniturePosition.h"
+#include "gen/hkTriangle.h"
+#include "gen/Morph.h"
+#include "gen/Particle.h"
+#include "gen/SkinData.h"
+
 class NiObject;
 class AKeyedData;
 class AParticleModifier;
@@ -227,983 +257,6 @@ class NiWireframeProperty;
 class NiZBufferProperty;
 class RootCollisionNode;
 
-/*!
- * This is a list of bone influences.  It points to blocks higher in the
- * hierarchy so ints are used to represent the indices.
- */
-struct Bones {
-  /*!
-   * The number of node bones referenced as influences.
-   */
-  uint numBones;
-  /*!
-   * Block indicies of the bones.
-   */
-  vector<NiNode * > bones;
-  Bones() : numBones((uint)0) {};
-};
-
-/*!
- * An array of bytes.
- */
-struct ByteArray {
-  /*!
-   * The number of bytes in this array
-   */
-  uint dataSize;
-  /*!
-   * Unknown.
-   */
-  uint unknownInt;
-  /*!
-   * The bytes which make up the array
-   */
-  vector<byte > data;
-  ByteArray() : dataSize((uint)0), unknownInt((uint)0) {};
-};
-
-/*!
- * The NIF file footer.
- */
-struct Footer {
-  /*!
-   * The number of root references.
-   */
-  uint numRoots;
-  /*!
-   * List of root blocks. If there is a camera, for 1st person view, then
-   * this block is referred to as well in this list, even if it is not a
-   * root block (usually we want the camera to be attached to the Bip Head
-   * node).
-   */
-  vector<Ref<NiAVObject > > roots;
-  Footer() : numRoots((uint)0) {};
-};
-
-/*!
- * The distance range where a specific level of detail applies.
- */
-struct LODRange {
-  /*!
-   * Begining of range.
-   */
-  float near;
-  /*!
-   * End of Range.
-   */
-  float far;
-  LODRange() : near(0.0f), far(0.0f) {};
-};
-
-/*!
- * Group of vertex indices of vertices that match.
- */
-struct MatchGroup {
-  /*!
-   * Number of vertices in this group.
-   */
-  ushort numVertices;
-  /*!
-   * The vertex indices.
-   */
-  vector<ushort > vertexIndices;
-  MatchGroup() : numVertices((ushort)0) {};
-};
-
-/*!
- * Description of a MipMap within a NiPixelData block.
- */
-struct MipMap {
-  /*!
-   * Width of the mipmap image.
-   */
-  uint width;
-  /*!
-   * Height of the mipmap image.
-   */
-  uint height;
-  /*!
-   * Offset into the pixel data array where this mipmap starts.
-   */
-  uint offset;
-  MipMap() : width((uint)0), height((uint)0), offset((uint)0) {};
-};
-
-/*!
- * A group of NiNodes references.
- */
-struct NodeGroup {
-  /*!
-   * Number of node references that follow.
-   */
-  uint numNodes;
-  /*!
-   * The list of NiNode references.
-   */
-  vector<Ref<NiNode > > nodes;
-  NodeGroup() : numNodes((uint)0) {};
-};
-
-/*!
- * Linear key type (!!! for NifSkope optimizer only, use key, keyrot, or
- * keyvec for regular use).
- */
-template <class T >
-struct ns_keylin {
-  /*!
-   * Key time.
-   */
-  float time;
-  /*!
-   * The key value.
-   */
-  T value;
-  ns_keylin() : time(0.0f) {};
-};
-
-/*!
- * Array of keys, not interpolated (!!! for NifSkope only, use keyarray
- * for regular use).
- */
-template <class T >
-struct ns_keyarray {
-  /*!
-   * Number of keys.
-   */
-  uint numKeys;
-  /*!
-   * The keys.
-   */
-  vector<ns_keylin<T > > keys;
-  ns_keyarray() : numKeys((uint)0) {};
-};
-
-/*!
- * Key with tangents (!!! for NifSkope only, use keyvec instead for
- * regular purposes).
- */
-template <class T >
-struct ns_keytan {
-  /*!
-   * The key time.
-   */
-  float time;
-  /*!
-   * The key value.
-   */
-  T value;
-  /*!
-   * Forward tangent.
-   */
-  T forward;
-  /*!
-   * Backward tangent.
-   */
-  T backward;
-  ns_keytan() : time(0.0f) {};
-};
-
-/*!
- * A quaternion as it appears in the havok blocks.
- */
-struct QuaternionXYZW {
-  /*!
-   * The x-coordinate.
-   */
-  float x;
-  /*!
-   * The y-coordinate.
-   */
-  float y;
-  /*!
-   * The z-coordinate.
-   */
-  float z;
-  /*!
-   * The w-coordinate.
-   */
-  float w;
-  QuaternionXYZW() : x(0.0f), y(0.0f), z(0.0f), w(0.0f) {};
-};
-
-/*!
- * Another string format, for short strings.  Specific to Bethesda-
- * specific header tags.
- */
-struct ShortString {
-  /*!
-   * The string length.
-   */
-  byte length;
-  /*!
-   * The string itself, null terminated (the null terminator is taken into
-   * account in the length byte).
-   */
-  vector<byte > value;
-  ShortString() : length((byte)0) {};
-};
-
-/*!
- * Reference to shape and skin instance.
- */
-struct SkinShape {
-  /*!
-   * The shape.
-   */
-  Ref<NiTriShape > shape;
-  /*!
-   * Skinning instance for the shape?
-   */
-  Ref<NiSkinInstance > skinInstance;
-  SkinShape() : shape(NULL), skinInstance(NULL) {};
-};
-
-/*!
- * Unknown.
- */
-struct SkinShapeGroup {
-  /*!
-   * Counts unknown.
-   */
-  uint numLinkPairs;
-  /*!
-   * First link is a NiTriShape block. Second link is a NiSkinInstance
-   * block.
-   */
-  vector<SkinShape > linkPairs;
-  SkinShapeGroup() : numLinkPairs((uint)0) {};
-};
-
-/*!
- * A weighted vertex.
- */
-struct SkinWeight {
-  /*!
-   * The vertex index, in the mesh.
-   */
-  ushort index;
-  /*!
-   * The vertex weight - between 0.0 and 1.0
-   */
-  float weight;
-  SkinWeight() : index((ushort)0), weight(0.0f) {};
-};
-
-/*!
- * Used in NiDefaultAVObjectPalette.
- */
-struct AVObject {
-  /*!
-   * Object name.
-   */
-  string name;
-  /*!
-   * Object reference.
-   */
-  NiAVObject * object;
-  AVObject() : object(NULL) {};
-};
-
-/*!
- * In a .kf file, this links to a controllable block, via its name (or
- * for version 10.2.0.0 and up, a link and offset to a NiStringPalette
- * that contains the name), and a sequence of interpolators that apply to
- * this controllable block, via links.
- */
-struct ControllerLink {
-  /*!
-   * Name of a controllable block in another NIF file.
-   */
-  string name;
-  /*!
-   * Link to an interpolator.
-   */
-  Ref<NiInterpolator > interpolator;
-  /*!
-   * Unknown link. Usually -1.
-   */
-  Ref<NiObject > unknownLink1;
-  /*!
-   * Unknown.
-   */
-  Ref<NiObject > unknownLink2;
-  /*!
-   * Unknown.
-   */
-  ushort unknownShort0;
-  /*!
-   * Idle animations tend to have low values for this, and blocks that have
-   * high values tend to correspond with the important parts of the
-   * animation. WARNING: BREAKS CIV4 NIF FILES! Only observed in Oblivion
-   * NIF files so far.
-   */
-  byte priority_;
-  /*!
-   * Refers to the NiStringPalette which contains the name of the
-   * controlled block.
-   */
-  Ref<NiStringPalette > stringPalette;
-  /*!
-   * The name of the animated node.
-   */
-  string nodeName;
-  /*!
-   * Offset in the string palette where the name of the controlled node
-   * (NiNode, NiTriShape, ...) starts.
-   */
-  uint nodeNameOffset;
-  /*!
-   * Name of the property (NiMaterialProperty, ...), if this controller
-   * controls a property.
-   */
-  string propertyType;
-  /*!
-   * Offset in the string palette where the property (NiMaterialProperty,
-   * ...) starts, if this controller controls a property. Otherwise, -1.
-   */
-  uint propertyTypeOffset;
-  /*!
-   * Probably the block type name of the controller in the NIF file that is
-   * child of the controlled block.
-   */
-  string controllerType;
-  /*!
-   * Apparently the offset in the string palette of some type of controller
-   * related to Interpolator (for example, a 'NiTransformInterpolator' will
-   * have here a 'NiTransformController', etc.). Sometimes the type of
-   * controller that links to the interpolator. Probably it refers to the
-   * controller in the NIF file that is child of the controlled block, via
-   * its type name.
-   */
-  uint controllerTypeOffset;
-  /*!
-   * Some variable string (such as 'SELF_ILLUM', '0-0-TT_TRANSLATE_U',
-   * 'tongue_out', etc.).
-   */
-  string variable1;
-  /*!
-   * Offset in the string palette where some variable string starts (such
-   * as 'SELF_ILLUM', '0-0-TT_TRANSLATE_U', 'tongue_out', etc.). Usually,
-   * -1.
-   */
-  uint variableOffset1;
-  /*!
-   * Another variable string, apparently used for particle system
-   * controllers.
-   */
-  string variable2;
-  /*!
-   * Offset in the string palette where some variable string starts (so far
-   * only 'EmitterActive' and 'BirthRate' have been observed in official
-   * files, used for particle system controllers). Usually, -1.
-   */
-  uint variableOffset2;
-  ControllerLink() : interpolator(NULL), unknownLink1(NULL), unknownLink2(NULL), unknownShort0((ushort)0), priority_((byte)0), stringPalette(NULL), nodeNameOffset((uint)0), propertyTypeOffset((uint)0), controllerTypeOffset((uint)0), variableOffset1((uint)0), variableOffset2((uint)0) {};
-};
-
-/*!
- * The NIF file header.
- */
-struct Header {
-  /*!
-   * 'NetImmerse File Format x.x.x.x' (versions <= 10.0.1.2) or 'Gamebryo
-   * File Format x.x.x.x' (versions >= 10.1.0.0), with x.x.x.x the version
-   * written out. Ends with a newline character (0x0A).
-   */
-  HeaderString headerString;
-  /*!
-   * The NIF version, in hexadecimal notation: 0x04000002, 0x0401000C,
-   * 0x04020002, 0x04020100, 0x04020200, 0x0A000100, 0x0A010000,
-   * 0x0A020000, 0x14000004, ...
-   */
-  uint version;
-  /*!
-   * Determines the endian-ness of the data.  1 = little endian (default) 0
-   * = big endian
-   */
-  byte endianType;
-  /*!
-   * An extra version number, for companies that decide to modify the file
-   * format.
-   */
-  uint userVersion;
-  /*!
-   * Number of file blocks.
-   */
-  uint numBlocks;
-  /*!
-   * Unknown.
-   */
-  uint unknownInt1;
-  /*!
-   * Unknown.
-   */
-  uint unknownInt3;
-  /*!
-   * Could be the name of the creator of the NIF file?
-   */
-  ShortString creator_;
-  /*!
-   * Unknown. Can be something like 'TriStrip Process Script'.
-   */
-  ShortString exportType_;
-  /*!
-   * Unknown. Possibly the selected option of the export script. Can be
-   * something like 'Default Export Script'.
-   */
-  ShortString exportScript_;
-  /*!
-   * Number of block types in this NIF file.
-   */
-  ushort numBlockTypes;
-  /*!
-   * List of all block types used in this NIF file.
-   */
-  vector<string > blockTypes;
-  /*!
-   * Maps file blocks on their corresponding type: first file block is of
-   * type block_types[block_type_index[0]], the second of
-   * block_types[block_type_index[1]], etc.
-   */
-  vector<ushort > blockTypeIndex;
-  /*!
-   * Unknown.
-   */
-  uint unknownInt2;
-  Header() : version((uint)0x04000002), endianType((byte)1), userVersion((uint)0), numBlocks((uint)0), unknownInt1((uint)0), unknownInt3((uint)0), numBlockTypes((ushort)0), unknownInt2((uint)0) {};
-};
-
-/*!
- * A list of \\0 terminated strings.
- */
-struct StringPalette {
-  /*!
-   * A bunch of 0x00 seperated strings.
-   */
-  string palette;
-  /*!
-   * Length of the palette string is repeated here.
-   */
-  uint length;
-  StringPalette() : length((uint)0) {};
-};
-
-/*!
- * Tension, bias, continuity.
- */
-struct TBC {
-  /*!
-   * Tension.
-   */
-  float t;
-  /*!
-   * Bias.
-   */
-  float b;
-  /*!
-   * Continuity.
-   */
-  float c;
-  TBC() : t(0.0f), b(0.0f), c(0.0f) {};
-};
-
-/*!
- * Array of vector keys (anything that can be interpolated, except
- * rotations).
- */
-template <class T >
-struct KeyGroup {
-  /*!
-   * Number of keys in the array.
-   */
-  uint numKeys;
-  /*!
-   * The key type.
-   */
-  KeyType interpolation;
-  /*!
-   * The keys.
-   */
-  vector<Key<T > > keys;
-  KeyGroup() : numKeys((uint)0), interpolation((KeyType)0) {};
-};
-
-/*!
- * A TBC key (!!! for NifSkope only, use keyvec for regular purposes).
- */
-template <class T >
-struct ns_keytbc {
-  /*!
-   * The key time.
-   */
-  float time;
-  /*!
-   * The key value.
-   */
-  T value;
-  /*!
-   * Tension, bias, continuity.
-   */
-  TBC tbc;
-  ns_keytbc() : time(0.0f) {};
-};
-
-/*!
- * Array of interpolable keys (!!! for NifSkope only, use keyvecarray for
- * regular use).
- */
-template <class T >
-struct ns_keyvecarray {
-  /*!
-   * Number of keys.
-   */
-  uint numKeys;
-  /*!
-   * The key type (1, 2, or 3).
-   */
-  uint keyType;
-  /*!
-   * Linearly interpolated keys.
-   */
-  vector<ns_keylin<T > > keys;
-  ns_keyvecarray() : numKeys((uint)0), keyType((uint)0) {};
-};
-
-/*!
- * Rotation subkey (!!! Nifskope only).
- */
-struct ns_keyrotsub {
-  /*!
-   * Time.
-   */
-  float time;
-  /*!
-   * The sub keys, one for every axis.
-   */
-  vector<ns_keyvecarray<float > > subKeys;
-  ns_keyrotsub() : time(0.0f) {};
-};
-
-/*!
- * Array of rotation keys (!!! for NifSkope only, use keyrotarray for
- * regular use).
- */
-template <class T >
-struct ns_keyrotarray {
-  /*!
-   * Number of rotation keys.
-   */
-  uint numKeys;
-  /*!
-   * The key type (1, 2, 3, or 4).
-   */
-  uint keyType;
-  /*!
-   * Linear keys.
-   */
-  vector<ns_keylin<T > > keys;
-  /*!
-   * Special rotation keys (3 float arrays, one for each axis).
-   */
-  vector<ns_keyrotsub > keysSub;
-  ns_keyrotarray() : numKeys((uint)0), keyType((uint)0) {};
-};
-
-/*!
- * Array of interpolable keys (!!! for NifSkope only, use keyvecarraytyp
- * for regular use)
- */
-template <class T >
-struct ns_keyvecarraytyp {
-  /*!
-   * Number of keys
-   */
-  uint numKeys;
-  /*!
-   * The key type (1, 2, 3)
-   */
-  uint keyType;
-  /*!
-   * Linearly interpolated keys.
-   */
-  vector<ns_keylin<T > > keys;
-  ns_keyvecarraytyp() : numKeys((uint)0), keyType((uint)0) {};
-};
-
-/*!
- * Rotation key array.
- */
-template <class T >
-struct RotationKeyArray {
-  /*!
-   * Number of keys.
-   */
-  uint numKeys;
-  /*!
-   * Key type (1, 2, 3, or 4).
-   */
-  KeyType keyType;
-  /*!
-   * The rotation keys.
-   */
-  vector<Key<T > > keys;
-  RotationKeyArray() : numKeys((uint)0), keyType((KeyType)0) {};
-};
-
-/*!
- * Texture description.
- */
-struct TexDesc {
-  /*!
-   * NiSourceTexture block index.
-   */
-  Ref<NiSourceTexture > source;
-  /*!
-   * 0=clamp S clamp T, 1=clamp S wrap T, 2=wrap S clamp T, 3=wrap S wrap T
-   */
-  TexClampMode clampMode;
-  /*!
-   * 0=nearest, 1=bilinear, 2=trilinear, 3=..., 4=..., 5=...
-   */
-  TexFilterMode filterMode;
-  /*!
-   * Texture set? Usually 0.
-   */
-  uint textureSet;
-  /*!
-   * 0?
-   */
-  ushort ps2L;
-  /*!
-   * 0xFFB5?
-   */
-  ushort ps2K;
-  /*!
-   * Unknown, 0 or 0x0101?
-   */
-  ushort unknown1;
-  /*!
-   * Determines whether or not the texture's coordinates are transformed.
-   */
-  bool hasTextureTransform;
-  /*!
-   * The amount to translate the texture coordinates in each direction?
-   */
-  TexCoord translation;
-  /*!
-   * The number of times the texture is tiled in each direction?
-   */
-  TexCoord tiling;
-  /*!
-   * 2D Rotation of texture image around third W axis after U and V.
-   */
-  float wRotation;
-  /*!
-   * The texture transform type?  Doesn't seem to do anything.
-   */
-  uint transformType_;
-  /*!
-   * The offset from the origin?
-   */
-  TexCoord centerOffset;
-  TexDesc() : source(NULL), clampMode((TexClampMode)WRAP_S_WRAP_T), filterMode((TexFilterMode)FILTER_TRILERP), textureSet((uint)0), ps2L((ushort)0), ps2K((ushort)0xFFB5), unknown1((ushort)0), hasTextureTransform(false), wRotation(0.0f), transformType_((uint)0) {};
-};
-
-/*!
- * An extended texture description for shader textures.
- */
-struct ShaderTexDesc {
-  /*!
-   * Is it used?
-   */
-  bool isUsed;
-  /*!
-   * The texture data.
-   */
-  TexDesc textureData;
-  /*!
-   * Unknown.
-   */
-  uint unknownInt;
-  ShaderTexDesc() : isUsed(false), unknownInt((uint)0) {};
-};
-
-/*!
- * A texture source.
- */
-struct TexSource {
-  /*!
-   * Is the texture external?
-   */
-  byte useExternal;
-  /*!
-   * The external texture file name.  Note: all original morrowind nifs use
-   * name.ext only for addressing the textures, but most mods use something
-   * like textures/[subdir/]name.ext. This is due to a feature in Morrowind
-   * resource manager: it loads name.ext, textures/name.ext and
-   * textures/subdir/name.ext but NOT subdir/name.ext.
-   */
-  string fileName;
-  /*!
-   * Unknown.
-   */
-  Ref<NiObject > unknownLink;
-  /*!
-   * Unknown.
-   */
-  byte unknownByte;
-  /*!
-   * The original source filename of the image embedded by the referred
-   * NiPixelData block.
-   */
-  string originalFileName_;
-  /*!
-   * Pixel data block index.
-   */
-  Ref<NiPixelData > pixelData;
-  TexSource() : useExternal((byte)0), unknownLink(NULL), unknownByte((byte)0), pixelData(NULL) {};
-};
-
-/*!
- * Skinning data for a submesh, optimized for hardware skinning. Part of
- * NiSkinPartition.
- */
-struct SkinPartition {
-  /*!
-   * Number of vertices in this submesh.
-   */
-  ushort numVertices;
-  /*!
-   * Number of triangles in this submesh.
-   */
-  ushort numTriangles;
-  /*!
-   * Number of bones influencing this submesh.
-   */
-  ushort numBones;
-  /*!
-   * Number of strips in this submesh (zero if not stripped).
-   */
-  ushort numStrips;
-  /*!
-   * Number of weight coefficients per vertex.
-   */
-  ushort numWeightsPerVertex;
-  /*!
-   * List of bones.
-   */
-  vector<ushort > bones;
-  /*!
-   * Do we have a vertex map?
-   */
-  bool hasVertexMap;
-  /*!
-   * Maps the weight/influence lists in this submesh to the vertices in the
-   * shape being skinned.
-   */
-  vector<ushort > vertexMap;
-  /*!
-   * Do we have vertex weights?
-   */
-  bool hasVertexWeights;
-  /*!
-   * The vertex weights.
-   */
-  vector<vector<float > > vertexWeights;
-  /*!
-   * The strip lengths.
-   */
-  vector<ushort > stripLengths;
-  /*!
-   * Do we have strip data?
-   */
-  bool hasStrips;
-  /*!
-   * The strips.
-   */
-  vector<vector<ushort > > strips;
-  /*!
-   * The triangles.
-   */
-  vector<Triangle > triangles;
-  /*!
-   * Do we have bone indices?
-   */
-  bool hasBoneIndices;
-  /*!
-   * Bone indices, they index into 'Bones'.
-   */
-  vector<vector<byte > > boneIndices;
-  SkinPartition() : numVertices((ushort)0), numTriangles((ushort)0), numBones((ushort)0), numStrips((ushort)0), numWeightsPerVertex((ushort)0), hasVertexMap(false), hasVertexWeights(false), hasStrips(false), hasBoneIndices(false) {};
-};
-
-/*!
- * Bounding box.
- */
-struct BoundingBox {
-  /*!
-   * Usually 1.
-   */
-  uint unknownInt;
-  /*!
-   * Translation vector.
-   */
-  Vector3 translation;
-  /*!
-   * Rotation matrix.
-   */
-  Matrix33 rotation;
-  /*!
-   * Radius, per direction.
-   */
-  Vector3 radius;
-  BoundingBox() : unknownInt((uint)1) {};
-};
-
-/*!
- * Describes a furniture position?
- */
-struct FurniturePosition {
-  /*!
-   * Unknown. Position?
-   */
-  Vector3 unknownVector;
-  /*!
-   * Unknown.
-   */
-  ushort unknownShort;
-  /*!
-   * This might refer to a furnituremarkerxx.nif file.
-   */
-  byte positionRef1_;
-  /*!
-   * This might also refer to a furnituremarkerxx.nif file.
-   */
-  byte positionRef2_;
-  FurniturePosition() : unknownShort((ushort)0), positionRef1_((byte)0), positionRef2_((byte)0) {};
-};
-
-/*!
- * A triangle with extra data used for physics.
- */
-struct hkTriangle {
-  /*!
-   * The triangle.
-   */
-  Triangle triangle;
-  /*!
-   * Another short, doesn't look like a vertex index.
-   */
-  ushort unknownShort;
-  /*!
-   * This appears to be a normalized vector, so probably it is a normal or
-   * a tangent vector or something like that.
-   */
-  Vector3 normal;
-  hkTriangle() : unknownShort((ushort)0) {};
-};
-
-/*!
- * Geometry morphing data component.
- */
-struct Morph {
-  /*!
-   * Name of the frame.
-   */
-  string frameName;
-  /*!
-   * The number of morph keys that follow.
-   */
-  uint numMorphKeys;
-  /*!
-   * Unlike most blocks, the presense of this value is not conditional on
-   * there being keys.
-   */
-  KeyType morphInterpolation;
-  /*!
-   * The morph key frames.
-   */
-  vector<Key<float > > morphKeys;
-  /*!
-   * Unknown.
-   */
-  uint unknownInt;
-  /*!
-   * Morph vectors.
-   */
-  vector<Vector3 > vectors;
-  Morph() : numMorphKeys((uint)0), morphInterpolation((KeyType)0), unknownInt((uint)0) {};
-};
-
-/*!
- * particle array entry
- */
-struct Particle {
-  /*!
-   * Particle velocity
-   */
-  Vector3 velocity;
-  /*!
-   * Unknown
-   */
-  Vector3 unknownVector;
-  /*!
-   * The particle's age.
-   */
-  float lifetime;
-  /*!
-   * Maximum age of the particle.
-   */
-  float lifespan;
-  /*!
-   * Timestamp of the last update.
-   */
-  float timestamp;
-  /*!
-   * Unknown short (=0)
-   */
-  ushort unknownShort;
-  /*!
-   * Particle/vertex index matches array index
-   */
-  ushort vertexId;
-  Particle() : lifetime(0.0f), lifespan(0.0f), timestamp(0.0f), unknownShort((ushort)0), vertexId((ushort)0) {};
-};
-
-/*!
- * Skinning data component.
- */
-struct SkinData {
-  /*!
-   * Rotation offset of the skin from this bone in bind position.
-   */
-  Matrix33 rotation;
-  /*!
-   * Translation offset of the skin from this bone in bind position.
-   */
-  Vector3 translation;
-  /*!
-   * Scale offset of the skin from this bone in bind position. (Assumption
-   * - this is always 1.0 so far)
-   */
-  float scale;
-  /*!
-   * This has been verified not to be a normalized quaternion.  They may or
-   * may not be related to each other so their specification as an array of
-   * 4 floats may be misleading.
-   */
-  vector<float > unknown4Floats;
-  /*!
-   * Number of weighted vertices.
-   */
-  ushort numVertices;
-  /*!
-   * The vertex weights.
-   */
-  vector<SkinWeight > vertexWeights;
-  SkinData() : scale(0.0f), numVertices((ushort)0) {};
-};
-
 #define NI_OBJECT_MEMBERS \
 
 #define NI_OBJECT_INCLUDE ".h" \
diff --git a/docsys_extract.cpp b/gen/obj_factories.cpp
similarity index 100%
rename from docsys_extract.cpp
rename to gen/obj_factories.cpp
diff --git a/niflib.h b/niflib.h
index 2a09aad5..7fa56ff9 100644
--- a/niflib.h
+++ b/niflib.h
@@ -50,7 +50,7 @@ POSSIBILITY OF SUCH DAMAGE. */
 #include "nif_math.h"
 #include "NIF_IO.h"
 #include "obj/NiObject.h"
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include "kfm.h"
 
 using namespace std;
diff --git a/niflib.vcproj b/niflib.vcproj
index b97b4fea..24073298 100644
--- a/niflib.vcproj
+++ b/niflib.vcproj
@@ -134,9 +134,6 @@
 			Name="Source Files"
 			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
 			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-			<File
-				RelativePath=".\docsys_extract.cpp">
-			</File>
 			<File
 				RelativePath=".\NIF_IO.cpp">
 			</File>
@@ -152,6 +149,9 @@
 						RuntimeLibrary="3"/>
 				</FileConfiguration>
 			</File>
+			<File
+				RelativePath=".\Type.cpp">
+			</File>
 			<Filter
 				Name="obj"
 				Filter="">
@@ -794,8 +794,99 @@
 				<File
 					RelativePath=".\obj\RootCollisionNode.cpp">
 				</File>
+			</Filter>
+			<Filter
+				Name="gen"
+				Filter="">
+				<File
+					RelativePath=".\gen\AVObject.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\Bones.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\BoundingBox.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\ByteArray.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\ControllerLink.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\Footer.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\FurniturePosition.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\Header.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\hkTriangle.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\KeyGroup.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\LODRange.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\MatchGroup.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\MipMap.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\Morph.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\NodeGroup.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\obj_factories.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\Particle.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\QuaternionXYZW.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\RotationKeyArray.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\ShaderTexDesc.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\ShortString.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\SkinData.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\SkinPartition.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\SkinShape.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\SkinShapeGroup.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\SkinWeight.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\StringPalette.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\TBC.cpp">
+				</File>
+				<File
+					RelativePath=".\gen\TexDesc.cpp">
+				</File>
 				<File
-					RelativePath=".\obj\Type.cpp">
+					RelativePath=".\gen\TexSource.cpp">
 				</File>
 			</Filter>
 		</Filter>
@@ -813,7 +904,10 @@
 				RelativePath=".\niflib.h">
 			</File>
 			<File
-				RelativePath=".\xml_extract.h">
+				RelativePath=".\Ref.h">
+			</File>
+			<File
+				RelativePath=".\Type.h">
 			</File>
 			<Filter
 				Name="obj"
@@ -1455,13 +1549,101 @@
 					RelativePath=".\obj\NiZBufferProperty.h">
 				</File>
 				<File
-					RelativePath=".\obj\Ref.h">
+					RelativePath=".\obj\RootCollisionNode.h">
 				</File>
+			</Filter>
+			<Filter
+				Name="gen"
+				Filter="">
 				<File
-					RelativePath=".\obj\RootCollisionNode.h">
+					RelativePath=".\gen\AVObject.h">
+				</File>
+				<File
+					RelativePath=".\gen\Bones.h">
+				</File>
+				<File
+					RelativePath=".\gen\BoundingBox.h">
+				</File>
+				<File
+					RelativePath=".\gen\ByteArray.h">
+				</File>
+				<File
+					RelativePath=".\gen\ControllerLink.h">
+				</File>
+				<File
+					RelativePath=".\gen\Footer.h">
+				</File>
+				<File
+					RelativePath=".\gen\FurniturePosition.h">
+				</File>
+				<File
+					RelativePath=".\gen\Header.h">
+				</File>
+				<File
+					RelativePath=".\gen\hkTriangle.h">
+				</File>
+				<File
+					RelativePath=".\gen\KeyGroup.h">
+				</File>
+				<File
+					RelativePath=".\gen\LODRange.h">
+				</File>
+				<File
+					RelativePath=".\gen\MatchGroup.h">
+				</File>
+				<File
+					RelativePath=".\gen\MipMap.h">
+				</File>
+				<File
+					RelativePath=".\gen\Morph.h">
+				</File>
+				<File
+					RelativePath=".\gen\NodeGroup.h">
+				</File>
+				<File
+					RelativePath=".\gen\obj_defines.h">
+				</File>
+				<File
+					RelativePath=".\gen\Particle.h">
+				</File>
+				<File
+					RelativePath=".\gen\QuaternionXYZW.h">
+				</File>
+				<File
+					RelativePath=".\gen\RotationKeyArray.h">
+				</File>
+				<File
+					RelativePath=".\gen\ShaderTexDesc.h">
+				</File>
+				<File
+					RelativePath=".\gen\ShortString.h">
+				</File>
+				<File
+					RelativePath=".\gen\SkinData.h">
+				</File>
+				<File
+					RelativePath=".\gen\SkinPartition.h">
+				</File>
+				<File
+					RelativePath=".\gen\SkinShape.h">
+				</File>
+				<File
+					RelativePath=".\gen\SkinShapeGroup.h">
+				</File>
+				<File
+					RelativePath=".\gen\SkinWeight.h">
+				</File>
+				<File
+					RelativePath=".\gen\StringPalette.h">
+				</File>
+				<File
+					RelativePath=".\gen\TBC.h">
+				</File>
+				<File
+					RelativePath=".\gen\TexDesc.h">
 				</File>
 				<File
-					RelativePath=".\obj\Type.h">
+					RelativePath=".\gen\TexSource.h">
 				</File>
 			</Filter>
 		</Filter>
diff --git a/obj/ABoneLODController.h b/obj/ABoneLODController.h
index d8f643d6..54bf369b 100644
--- a/obj/ABoneLODController.h
+++ b/obj/ABoneLODController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _ABONELODCONTROLLER_H_
 #define _ABONELODCONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include A_BONE_L_O_D_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/AKeyedData.h b/obj/AKeyedData.h
index da0486e9..200ef280 100644
--- a/obj/AKeyedData.h
+++ b/obj/AKeyedData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _AKEYEDDATA_H_
 #define _AKEYEDDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include A_KEYED_DATA_INCLUDE
 
 /*
diff --git a/obj/APSysCtlr.h b/obj/APSysCtlr.h
index 50f13b96..e690f573 100644
--- a/obj/APSysCtlr.h
+++ b/obj/APSysCtlr.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _APSYSCTLR_H_
 #define _APSYSCTLR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include A_P_SYS_CTLR_INCLUDE
 
 /*
diff --git a/obj/APSysData.h b/obj/APSysData.h
index ae108c0c..865ff47f 100644
--- a/obj/APSysData.h
+++ b/obj/APSysData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _APSYSDATA_H_
 #define _APSYSDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include A_P_SYS_DATA_INCLUDE
 
 /*
diff --git a/obj/AParticleModifier.h b/obj/AParticleModifier.h
index a5242c63..154b25b7 100644
--- a/obj/AParticleModifier.h
+++ b/obj/AParticleModifier.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _APARTICLEMODIFIER_H_
 #define _APARTICLEMODIFIER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include A_PARTICLE_MODIFIER_INCLUDE
 
 /*
diff --git a/obj/AbhkConstraint.h b/obj/AbhkConstraint.h
index ae055189..e68c65c8 100644
--- a/obj/AbhkConstraint.h
+++ b/obj/AbhkConstraint.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _ABHKCONSTRAINT_H_
 #define _ABHKCONSTRAINT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include ABHK_CONSTRAINT_INCLUDE
 
 /*
diff --git a/obj/AbhkRagdollConstraint.h b/obj/AbhkRagdollConstraint.h
index ddb7ae36..44d9d681 100644
--- a/obj/AbhkRagdollConstraint.h
+++ b/obj/AbhkRagdollConstraint.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _ABHKRAGDOLLCONSTRAINT_H_
 #define _ABHKRAGDOLLCONSTRAINT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include ABHK_RAGDOLL_CONSTRAINT_INCLUDE
 
 /*
diff --git a/obj/AbhkShapeCollection.h b/obj/AbhkShapeCollection.h
index 6c8f8013..ee382c3e 100644
--- a/obj/AbhkShapeCollection.h
+++ b/obj/AbhkShapeCollection.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _ABHKSHAPECOLLECTION_H_
 #define _ABHKSHAPECOLLECTION_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include ABHK_SHAPE_COLLECTION_INCLUDE
 
 /*
diff --git a/obj/AvoidNode.h b/obj/AvoidNode.h
index ef9d9804..0ce41923 100644
--- a/obj/AvoidNode.h
+++ b/obj/AvoidNode.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _AVOIDNODE_H_
 #define _AVOIDNODE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include AVOID_NODE_INCLUDE
 
 /*
diff --git a/obj/BSBound.h b/obj/BSBound.h
index d8b7e667..97df9911 100644
--- a/obj/BSBound.h
+++ b/obj/BSBound.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BSBOUND_H_
 #define _BSBOUND_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include B_S_BOUND_INCLUDE
 
 /*
diff --git a/obj/BSFurnitureMarker.h b/obj/BSFurnitureMarker.h
index 0f8c8939..70f977e0 100644
--- a/obj/BSFurnitureMarker.h
+++ b/obj/BSFurnitureMarker.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BSFURNITUREMARKER_H_
 #define _BSFURNITUREMARKER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include B_S_FURNITURE_MARKER_INCLUDE
 
 /*
diff --git a/obj/BSKeyframeController.h b/obj/BSKeyframeController.h
index 81be2798..ff1148cd 100644
--- a/obj/BSKeyframeController.h
+++ b/obj/BSKeyframeController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BSKEYFRAMECONTROLLER_H_
 #define _BSKEYFRAMECONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include B_S_KEYFRAME_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/BSPSysArrayEmitter.h b/obj/BSPSysArrayEmitter.h
index 8e3f131f..540534e2 100644
--- a/obj/BSPSysArrayEmitter.h
+++ b/obj/BSPSysArrayEmitter.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BSPSYSARRAYEMITTER_H_
 #define _BSPSYSARRAYEMITTER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include B_S_P_SYS_ARRAY_EMITTER_INCLUDE
 
 /*
diff --git a/obj/BSParentVelocityModifier.h b/obj/BSParentVelocityModifier.h
index f6ba99ff..38d659ea 100644
--- a/obj/BSParentVelocityModifier.h
+++ b/obj/BSParentVelocityModifier.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BSPARENTVELOCITYMODIFIER_H_
 #define _BSPARENTVELOCITYMODIFIER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include B_S_PARENT_VELOCITY_MODIFIER_INCLUDE
 
 /*
diff --git a/obj/BSXFlags.h b/obj/BSXFlags.h
index bd7c6f2c..cd2125c9 100644
--- a/obj/BSXFlags.h
+++ b/obj/BSXFlags.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BSXFLAGS_H_
 #define _BSXFLAGS_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include B_S_X_FLAGS_INCLUDE
 
 /*
diff --git a/obj/FxButton.h b/obj/FxButton.h
index ed67c2cf..08f91ad5 100644
--- a/obj/FxButton.h
+++ b/obj/FxButton.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _FXBUTTON_H_
 #define _FXBUTTON_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include FX_BUTTON_INCLUDE
 
 /*
diff --git a/obj/FxRadioButton.h b/obj/FxRadioButton.h
index b5acc826..406dc948 100644
--- a/obj/FxRadioButton.h
+++ b/obj/FxRadioButton.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _FXRADIOBUTTON_H_
 #define _FXRADIOBUTTON_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include FX_RADIO_BUTTON_INCLUDE
 
 /*
diff --git a/obj/FxWidget.h b/obj/FxWidget.h
index 8d45e249..9be4551c 100644
--- a/obj/FxWidget.h
+++ b/obj/FxWidget.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _FXWIDGET_H_
 #define _FXWIDGET_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include FX_WIDGET_INCLUDE
 
 /*
diff --git a/obj/NiAVObject.h b/obj/NiAVObject.h
index 1eee1d5c..c69be0da 100644
--- a/obj/NiAVObject.h
+++ b/obj/NiAVObject.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIAVOBJECT_H_
 #define _NIAVOBJECT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_A_V_OBJECT_INCLUDE
 
 /*
diff --git a/obj/NiAlphaController.h b/obj/NiAlphaController.h
index 2b0f86a6..226a5841 100644
--- a/obj/NiAlphaController.h
+++ b/obj/NiAlphaController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIALPHACONTROLLER_H_
 #define _NIALPHACONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_ALPHA_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiAlphaProperty.h b/obj/NiAlphaProperty.h
index 95b9735a..e61e2840 100644
--- a/obj/NiAlphaProperty.h
+++ b/obj/NiAlphaProperty.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIALPHAPROPERTY_H_
 #define _NIALPHAPROPERTY_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_ALPHA_PROPERTY_INCLUDE
 
 /*
diff --git a/obj/NiAmbientLight.h b/obj/NiAmbientLight.h
index 56d2b340..904af4e9 100644
--- a/obj/NiAmbientLight.h
+++ b/obj/NiAmbientLight.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIAMBIENTLIGHT_H_
 #define _NIAMBIENTLIGHT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_AMBIENT_LIGHT_INCLUDE
 
 /*
diff --git a/obj/NiAutoNormalParticles.h b/obj/NiAutoNormalParticles.h
index 0a491854..16900c4a 100644
--- a/obj/NiAutoNormalParticles.h
+++ b/obj/NiAutoNormalParticles.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIAUTONORMALPARTICLES_H_
 #define _NIAUTONORMALPARTICLES_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_AUTO_NORMAL_PARTICLES_INCLUDE
 
 /*
diff --git a/obj/NiAutoNormalParticlesData.h b/obj/NiAutoNormalParticlesData.h
index 9ea6ee79..23da7b6e 100644
--- a/obj/NiAutoNormalParticlesData.h
+++ b/obj/NiAutoNormalParticlesData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIAUTONORMALPARTICLESDATA_H_
 #define _NIAUTONORMALPARTICLESDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_AUTO_NORMAL_PARTICLES_DATA_INCLUDE
 
 /*
diff --git a/obj/NiBSAnimationNode.h b/obj/NiBSAnimationNode.h
index 1c843c10..0ef43fe9 100644
--- a/obj/NiBSAnimationNode.h
+++ b/obj/NiBSAnimationNode.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBSANIMATIONNODE_H_
 #define _NIBSANIMATIONNODE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_B_S_ANIMATION_NODE_INCLUDE
 
 /*
diff --git a/obj/NiBSBoneLODController.h b/obj/NiBSBoneLODController.h
index 297124cb..318076c0 100644
--- a/obj/NiBSBoneLODController.h
+++ b/obj/NiBSBoneLODController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBSBONELODCONTROLLER_H_
 #define _NIBSBONELODCONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_B_S_BONE_L_O_D_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiBSPArrayController.h b/obj/NiBSPArrayController.h
index ca4cb7cb..d67e6432 100644
--- a/obj/NiBSPArrayController.h
+++ b/obj/NiBSPArrayController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBSPARRAYCONTROLLER_H_
 #define _NIBSPARRAYCONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_B_S_P_ARRAY_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiBSParticleNode.h b/obj/NiBSParticleNode.h
index 03d7c802..d88f8fb5 100644
--- a/obj/NiBSParticleNode.h
+++ b/obj/NiBSParticleNode.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBSPARTICLENODE_H_
 #define _NIBSPARTICLENODE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_B_S_PARTICLE_NODE_INCLUDE
 
 /*
diff --git a/obj/NiBSplineBasisData.h b/obj/NiBSplineBasisData.h
index 4faa427f..71fcdf93 100644
--- a/obj/NiBSplineBasisData.h
+++ b/obj/NiBSplineBasisData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBSPLINEBASISDATA_H_
 #define _NIBSPLINEBASISDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_B_SPLINE_BASIS_DATA_INCLUDE
 
 /*
diff --git a/obj/NiBSplineCompFloatInterpolator.h b/obj/NiBSplineCompFloatInterpolator.h
index 1514e3ec..cbd1ecac 100644
--- a/obj/NiBSplineCompFloatInterpolator.h
+++ b/obj/NiBSplineCompFloatInterpolator.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBSPLINECOMPFLOATINTERPOLATOR_H_
 #define _NIBSPLINECOMPFLOATINTERPOLATOR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_INCLUDE
 
 /*
diff --git a/obj/NiBSplineCompPoint3Interpolator.h b/obj/NiBSplineCompPoint3Interpolator.h
index a7117b31..2b14e1e6 100644
--- a/obj/NiBSplineCompPoint3Interpolator.h
+++ b/obj/NiBSplineCompPoint3Interpolator.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBSPLINECOMPPOINT3INTERPOLATOR_H_
 #define _NIBSPLINECOMPPOINT3INTERPOLATOR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_INCLUDE
 
 /*
diff --git a/obj/NiBSplineCompTransformInterpolator.h b/obj/NiBSplineCompTransformInterpolator.h
index dc64647f..f42738ca 100644
--- a/obj/NiBSplineCompTransformInterpolator.h
+++ b/obj/NiBSplineCompTransformInterpolator.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBSPLINECOMPTRANSFORMINTERPOLATOR_H_
 #define _NIBSPLINECOMPTRANSFORMINTERPOLATOR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_INCLUDE
 
 /*
diff --git a/obj/NiBSplineData.h b/obj/NiBSplineData.h
index 59ca0af5..23a01661 100644
--- a/obj/NiBSplineData.h
+++ b/obj/NiBSplineData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBSPLINEDATA_H_
 #define _NIBSPLINEDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_B_SPLINE_DATA_INCLUDE
 
 /*
diff --git a/obj/NiBSplineInterpolator.h b/obj/NiBSplineInterpolator.h
index 9b887bf6..34e95cfc 100644
--- a/obj/NiBSplineInterpolator.h
+++ b/obj/NiBSplineInterpolator.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBSPLINEINTERPOLATOR_H_
 #define _NIBSPLINEINTERPOLATOR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_B_SPLINE_INTERPOLATOR_INCLUDE
 
 /*
diff --git a/obj/NiBillboardNode.h b/obj/NiBillboardNode.h
index 5cbcd89d..065da941 100644
--- a/obj/NiBillboardNode.h
+++ b/obj/NiBillboardNode.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBILLBOARDNODE_H_
 #define _NIBILLBOARDNODE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_BILLBOARD_NODE_INCLUDE
 
 /*
diff --git a/obj/NiBinaryExtraData.h b/obj/NiBinaryExtraData.h
index 8bc84c3c..48ac9f16 100644
--- a/obj/NiBinaryExtraData.h
+++ b/obj/NiBinaryExtraData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBINARYEXTRADATA_H_
 #define _NIBINARYEXTRADATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_BINARY_EXTRA_DATA_INCLUDE
 
 /*
diff --git a/obj/NiBlendBoolInterpolator.h b/obj/NiBlendBoolInterpolator.h
index 72518784..33f5af01 100644
--- a/obj/NiBlendBoolInterpolator.h
+++ b/obj/NiBlendBoolInterpolator.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBLENDBOOLINTERPOLATOR_H_
 #define _NIBLENDBOOLINTERPOLATOR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_BLEND_BOOL_INTERPOLATOR_INCLUDE
 
 /*
diff --git a/obj/NiBlendFloatInterpolator.h b/obj/NiBlendFloatInterpolator.h
index 4c4b2e3d..e51cabb3 100644
--- a/obj/NiBlendFloatInterpolator.h
+++ b/obj/NiBlendFloatInterpolator.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBLENDFLOATINTERPOLATOR_H_
 #define _NIBLENDFLOATINTERPOLATOR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_BLEND_FLOAT_INTERPOLATOR_INCLUDE
 
 /*
diff --git a/obj/NiBlendInterpolator.h b/obj/NiBlendInterpolator.h
index 2060ef25..029ec483 100644
--- a/obj/NiBlendInterpolator.h
+++ b/obj/NiBlendInterpolator.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBLENDINTERPOLATOR_H_
 #define _NIBLENDINTERPOLATOR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_BLEND_INTERPOLATOR_INCLUDE
 
 /*
diff --git a/obj/NiBlendPoint3Interpolator.h b/obj/NiBlendPoint3Interpolator.h
index c3cdb09c..90de087c 100644
--- a/obj/NiBlendPoint3Interpolator.h
+++ b/obj/NiBlendPoint3Interpolator.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBLENDPOINT3INTERPOLATOR_H_
 #define _NIBLENDPOINT3INTERPOLATOR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_BLEND_POINT3_INTERPOLATOR_INCLUDE
 
 /*
diff --git a/obj/NiBlendTransformInterpolator.h b/obj/NiBlendTransformInterpolator.h
index a3664341..a8644c84 100644
--- a/obj/NiBlendTransformInterpolator.h
+++ b/obj/NiBlendTransformInterpolator.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBLENDTRANSFORMINTERPOLATOR_H_
 #define _NIBLENDTRANSFORMINTERPOLATOR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_BLEND_TRANSFORM_INTERPOLATOR_INCLUDE
 
 /*
diff --git a/obj/NiBoneLODController.h b/obj/NiBoneLODController.h
index 076ad27d..a6620b8b 100644
--- a/obj/NiBoneLODController.h
+++ b/obj/NiBoneLODController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBONELODCONTROLLER_H_
 #define _NIBONELODCONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_BONE_L_O_D_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiBoolData.h b/obj/NiBoolData.h
index 4cb10367..6d460e6b 100644
--- a/obj/NiBoolData.h
+++ b/obj/NiBoolData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBOOLDATA_H_
 #define _NIBOOLDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_BOOL_DATA_INCLUDE
 
 /*
diff --git a/obj/NiBoolInterpolator.h b/obj/NiBoolInterpolator.h
index 8079e990..91a28660 100644
--- a/obj/NiBoolInterpolator.h
+++ b/obj/NiBoolInterpolator.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBOOLINTERPOLATOR_H_
 #define _NIBOOLINTERPOLATOR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_BOOL_INTERPOLATOR_INCLUDE
 
 /*
diff --git a/obj/NiBoolTimelineInterpolator.h b/obj/NiBoolTimelineInterpolator.h
index 738263a4..d932cd3c 100644
--- a/obj/NiBoolTimelineInterpolator.h
+++ b/obj/NiBoolTimelineInterpolator.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBOOLTIMELINEINTERPOLATOR_H_
 #define _NIBOOLTIMELINEINTERPOLATOR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_BOOL_TIMELINE_INTERPOLATOR_INCLUDE
 
 /*
diff --git a/obj/NiBooleanExtraData.h b/obj/NiBooleanExtraData.h
index d26a2eb5..0043b25f 100644
--- a/obj/NiBooleanExtraData.h
+++ b/obj/NiBooleanExtraData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIBOOLEANEXTRADATA_H_
 #define _NIBOOLEANEXTRADATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_BOOLEAN_EXTRA_DATA_INCLUDE
 
 /*
diff --git a/obj/NiCamera.h b/obj/NiCamera.h
index d480a439..72f9be44 100644
--- a/obj/NiCamera.h
+++ b/obj/NiCamera.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NICAMERA_H_
 #define _NICAMERA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_CAMERA_INCLUDE
 
 /*
diff --git a/obj/NiCollisionData.h b/obj/NiCollisionData.h
index 7b3124e1..4ef013ed 100644
--- a/obj/NiCollisionData.h
+++ b/obj/NiCollisionData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NICOLLISIONDATA_H_
 #define _NICOLLISIONDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_COLLISION_DATA_INCLUDE
 
 /*
diff --git a/obj/NiCollisionObject.h b/obj/NiCollisionObject.h
index 3a57ef22..0edd7f8b 100644
--- a/obj/NiCollisionObject.h
+++ b/obj/NiCollisionObject.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NICOLLISIONOBJECT_H_
 #define _NICOLLISIONOBJECT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_COLLISION_OBJECT_INCLUDE
 
 /*
diff --git a/obj/NiColorData.h b/obj/NiColorData.h
index 524a3346..93375395 100644
--- a/obj/NiColorData.h
+++ b/obj/NiColorData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NICOLORDATA_H_
 #define _NICOLORDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_COLOR_DATA_INCLUDE
 
 /*
diff --git a/obj/NiColorExtraData.h b/obj/NiColorExtraData.h
index b3723598..8b98f6ca 100644
--- a/obj/NiColorExtraData.h
+++ b/obj/NiColorExtraData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NICOLOREXTRADATA_H_
 #define _NICOLOREXTRADATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_COLOR_EXTRA_DATA_INCLUDE
 
 /*
diff --git a/obj/NiControllerManager.h b/obj/NiControllerManager.h
index 7f60f662..6835fef7 100644
--- a/obj/NiControllerManager.h
+++ b/obj/NiControllerManager.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NICONTROLLERMANAGER_H_
 #define _NICONTROLLERMANAGER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_CONTROLLER_MANAGER_INCLUDE
 
 /*
diff --git a/obj/NiControllerSequence.h b/obj/NiControllerSequence.h
index 2c20b0bf..75c9e191 100644
--- a/obj/NiControllerSequence.h
+++ b/obj/NiControllerSequence.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NICONTROLLERSEQUENCE_H_
 #define _NICONTROLLERSEQUENCE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_CONTROLLER_SEQUENCE_INCLUDE
 
 /*
diff --git a/obj/NiDefaultAVObjectPalette.h b/obj/NiDefaultAVObjectPalette.h
index 9a6b9802..fe6db48f 100644
--- a/obj/NiDefaultAVObjectPalette.h
+++ b/obj/NiDefaultAVObjectPalette.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIDEFAULTAVOBJECTPALETTE_H_
 #define _NIDEFAULTAVOBJECTPALETTE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_DEFAULT_A_V_OBJECT_PALETTE_INCLUDE
 
 /*
diff --git a/obj/NiDirectionalLight.h b/obj/NiDirectionalLight.h
index d9af432f..d2694bbb 100644
--- a/obj/NiDirectionalLight.h
+++ b/obj/NiDirectionalLight.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIDIRECTIONALLIGHT_H_
 #define _NIDIRECTIONALLIGHT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_DIRECTIONAL_LIGHT_INCLUDE
 
 /*
diff --git a/obj/NiDitherProperty.h b/obj/NiDitherProperty.h
index baaa5095..c1b57c25 100644
--- a/obj/NiDitherProperty.h
+++ b/obj/NiDitherProperty.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIDITHERPROPERTY_H_
 #define _NIDITHERPROPERTY_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_DITHER_PROPERTY_INCLUDE
 
 /*
diff --git a/obj/NiDynamicEffect.h b/obj/NiDynamicEffect.h
index e5ce7661..713f7ba5 100644
--- a/obj/NiDynamicEffect.h
+++ b/obj/NiDynamicEffect.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIDYNAMICEFFECT_H_
 #define _NIDYNAMICEFFECT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_DYNAMIC_EFFECT_INCLUDE
 
 /*
diff --git a/obj/NiExtraData.h b/obj/NiExtraData.h
index b4ffa722..c18c002e 100644
--- a/obj/NiExtraData.h
+++ b/obj/NiExtraData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIEXTRADATA_H_
 #define _NIEXTRADATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_EXTRA_DATA_INCLUDE
 
 /*
diff --git a/obj/NiFlipController.h b/obj/NiFlipController.h
index 17b23150..1d731c6b 100644
--- a/obj/NiFlipController.h
+++ b/obj/NiFlipController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIFLIPCONTROLLER_H_
 #define _NIFLIPCONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_FLIP_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiFloatData.h b/obj/NiFloatData.h
index 29653367..4e2e4b9c 100644
--- a/obj/NiFloatData.h
+++ b/obj/NiFloatData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIFLOATDATA_H_
 #define _NIFLOATDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_FLOAT_DATA_INCLUDE
 
 /*
diff --git a/obj/NiFloatExtraData.h b/obj/NiFloatExtraData.h
index 4c60bc0d..6657cc7a 100644
--- a/obj/NiFloatExtraData.h
+++ b/obj/NiFloatExtraData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIFLOATEXTRADATA_H_
 #define _NIFLOATEXTRADATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_FLOAT_EXTRA_DATA_INCLUDE
 
 /*
diff --git a/obj/NiFloatExtraDataController.h b/obj/NiFloatExtraDataController.h
index 2990d7d2..a72c60eb 100644
--- a/obj/NiFloatExtraDataController.h
+++ b/obj/NiFloatExtraDataController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIFLOATEXTRADATACONTROLLER_H_
 #define _NIFLOATEXTRADATACONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_FLOAT_EXTRA_DATA_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiFloatInterpolator.h b/obj/NiFloatInterpolator.h
index b8345789..b116373f 100644
--- a/obj/NiFloatInterpolator.h
+++ b/obj/NiFloatInterpolator.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIFLOATINTERPOLATOR_H_
 #define _NIFLOATINTERPOLATOR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_FLOAT_INTERPOLATOR_INCLUDE
 
 /*
diff --git a/obj/NiFloatsExtraData.h b/obj/NiFloatsExtraData.h
index f5129e05..3202b9c5 100644
--- a/obj/NiFloatsExtraData.h
+++ b/obj/NiFloatsExtraData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIFLOATSEXTRADATA_H_
 #define _NIFLOATSEXTRADATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_FLOATS_EXTRA_DATA_INCLUDE
 
 /*
diff --git a/obj/NiFogProperty.h b/obj/NiFogProperty.h
index 6900d3ff..23c6b554 100644
--- a/obj/NiFogProperty.h
+++ b/obj/NiFogProperty.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIFOGPROPERTY_H_
 #define _NIFOGPROPERTY_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_FOG_PROPERTY_INCLUDE
 
 /*
diff --git a/obj/NiGeomMorpherController.h b/obj/NiGeomMorpherController.h
index a0d63e40..df116b5b 100644
--- a/obj/NiGeomMorpherController.h
+++ b/obj/NiGeomMorpherController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIGEOMMORPHERCONTROLLER_H_
 #define _NIGEOMMORPHERCONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_GEOM_MORPHER_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiGravity.h b/obj/NiGravity.h
index 05c131b8..433cdf03 100644
--- a/obj/NiGravity.h
+++ b/obj/NiGravity.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIGRAVITY_H_
 #define _NIGRAVITY_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_GRAVITY_INCLUDE
 
 /*
diff --git a/obj/NiIntegerExtraData.h b/obj/NiIntegerExtraData.h
index 6825a69d..e3152e63 100644
--- a/obj/NiIntegerExtraData.h
+++ b/obj/NiIntegerExtraData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIINTEGEREXTRADATA_H_
 #define _NIINTEGEREXTRADATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_INTEGER_EXTRA_DATA_INCLUDE
 
 /*
diff --git a/obj/NiIntegersExtraData.h b/obj/NiIntegersExtraData.h
index a3beb6bf..6fe72ab7 100644
--- a/obj/NiIntegersExtraData.h
+++ b/obj/NiIntegersExtraData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIINTEGERSEXTRADATA_H_
 #define _NIINTEGERSEXTRADATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_INTEGERS_EXTRA_DATA_INCLUDE
 
 /*
diff --git a/obj/NiInterpolator.h b/obj/NiInterpolator.h
index 0e636014..09ccec4f 100644
--- a/obj/NiInterpolator.h
+++ b/obj/NiInterpolator.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIINTERPOLATOR_H_
 #define _NIINTERPOLATOR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_INTERPOLATOR_INCLUDE
 
 /*
diff --git a/obj/NiKeyframeController.h b/obj/NiKeyframeController.h
index 74366c72..1578d7af 100644
--- a/obj/NiKeyframeController.h
+++ b/obj/NiKeyframeController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIKEYFRAMECONTROLLER_H_
 #define _NIKEYFRAMECONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_KEYFRAME_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiKeyframeData.h b/obj/NiKeyframeData.h
index 0bd67890..d04b7363 100644
--- a/obj/NiKeyframeData.h
+++ b/obj/NiKeyframeData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIKEYFRAMEDATA_H_
 #define _NIKEYFRAMEDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_KEYFRAME_DATA_INCLUDE
 
 /*
diff --git a/obj/NiLODNode.h b/obj/NiLODNode.h
index bc7913a7..0a93cce9 100644
--- a/obj/NiLODNode.h
+++ b/obj/NiLODNode.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NILODNODE_H_
 #define _NILODNODE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_L_O_D_NODE_INCLUDE
 
 /*
diff --git a/obj/NiLight.h b/obj/NiLight.h
index 28eb8b5e..5bc5c652 100644
--- a/obj/NiLight.h
+++ b/obj/NiLight.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NILIGHT_H_
 #define _NILIGHT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_LIGHT_INCLUDE
 
 /*
diff --git a/obj/NiLightColorController.h b/obj/NiLightColorController.h
index dc0ff09f..e9606272 100644
--- a/obj/NiLightColorController.h
+++ b/obj/NiLightColorController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NILIGHTCOLORCONTROLLER_H_
 #define _NILIGHTCOLORCONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_LIGHT_COLOR_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiLightDimmerController.h b/obj/NiLightDimmerController.h
index 3a69464a..74b2d6be 100644
--- a/obj/NiLightDimmerController.h
+++ b/obj/NiLightDimmerController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NILIGHTDIMMERCONTROLLER_H_
 #define _NILIGHTDIMMERCONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_LIGHT_DIMMER_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiLookAtController.h b/obj/NiLookAtController.h
index 4ca230d5..01b43513 100644
--- a/obj/NiLookAtController.h
+++ b/obj/NiLookAtController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NILOOKATCONTROLLER_H_
 #define _NILOOKATCONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_LOOK_AT_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiLookAtInterpolator.h b/obj/NiLookAtInterpolator.h
index a4c7db0d..54d247f0 100644
--- a/obj/NiLookAtInterpolator.h
+++ b/obj/NiLookAtInterpolator.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NILOOKATINTERPOLATOR_H_
 #define _NILOOKATINTERPOLATOR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_LOOK_AT_INTERPOLATOR_INCLUDE
 
 /*
diff --git a/obj/NiMaterialColorController.h b/obj/NiMaterialColorController.h
index 25d11d9a..721a1f33 100644
--- a/obj/NiMaterialColorController.h
+++ b/obj/NiMaterialColorController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIMATERIALCOLORCONTROLLER_H_
 #define _NIMATERIALCOLORCONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_MATERIAL_COLOR_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiMaterialProperty.h b/obj/NiMaterialProperty.h
index 10141d94..c92670e8 100644
--- a/obj/NiMaterialProperty.h
+++ b/obj/NiMaterialProperty.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIMATERIALPROPERTY_H_
 #define _NIMATERIALPROPERTY_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_MATERIAL_PROPERTY_INCLUDE
 
 /*
diff --git a/obj/NiMeshPSysData.h b/obj/NiMeshPSysData.h
index bc21f854..6530f77a 100644
--- a/obj/NiMeshPSysData.h
+++ b/obj/NiMeshPSysData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIMESHPSYSDATA_H_
 #define _NIMESHPSYSDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_MESH_P_SYS_DATA_INCLUDE
 
 /*
diff --git a/obj/NiMeshParticleSystem.h b/obj/NiMeshParticleSystem.h
index faa88934..10752781 100644
--- a/obj/NiMeshParticleSystem.h
+++ b/obj/NiMeshParticleSystem.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIMESHPARTICLESYSTEM_H_
 #define _NIMESHPARTICLESYSTEM_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_MESH_PARTICLE_SYSTEM_INCLUDE
 
 /*
diff --git a/obj/NiMorphData.h b/obj/NiMorphData.h
index c1c78586..4f33553c 100644
--- a/obj/NiMorphData.h
+++ b/obj/NiMorphData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIMORPHDATA_H_
 #define _NIMORPHDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_MORPH_DATA_INCLUDE
 
 /*
diff --git a/obj/NiMultiTargetTransformController.h b/obj/NiMultiTargetTransformController.h
index f0ca9f5a..9a69900b 100644
--- a/obj/NiMultiTargetTransformController.h
+++ b/obj/NiMultiTargetTransformController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIMULTITARGETTRANSFORMCONTROLLER_H_
 #define _NIMULTITARGETTRANSFORMCONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_MULTI_TARGET_TRANSFORM_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiNode.h b/obj/NiNode.h
index d3db1911..b17f4b3e 100644
--- a/obj/NiNode.h
+++ b/obj/NiNode.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NINODE_H_
 #define _NINODE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_NODE_INCLUDE
 
 /*
diff --git a/obj/NiObject.h b/obj/NiObject.h
index 83452b3b..ecea0262 100644
--- a/obj/NiObject.h
+++ b/obj/NiObject.h
@@ -15,7 +15,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #include "NIF_IO.h"
 #include "Ref.h"
 #include "Type.h"
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 
 using namespace std;
 
diff --git a/obj/NiObjectNET.h b/obj/NiObjectNET.h
index d571a7a0..fe9109f4 100644
--- a/obj/NiObjectNET.h
+++ b/obj/NiObjectNET.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIOBJECTNET_H_
 #define _NIOBJECTNET_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_OBJECT_N_E_T_INCLUDE
 
 /*
diff --git a/obj/NiPSysAgeDeathModifier.h b/obj/NiPSysAgeDeathModifier.h
index 04c9e245..aa3d0171 100644
--- a/obj/NiPSysAgeDeathModifier.h
+++ b/obj/NiPSysAgeDeathModifier.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSAGEDEATHMODIFIER_H_
 #define _NIPSYSAGEDEATHMODIFIER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_AGE_DEATH_MODIFIER_INCLUDE
 
 /*
diff --git a/obj/NiPSysBombModifier.h b/obj/NiPSysBombModifier.h
index 6b0fb601..c5e1e476 100644
--- a/obj/NiPSysBombModifier.h
+++ b/obj/NiPSysBombModifier.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSBOMBMODIFIER_H_
 #define _NIPSYSBOMBMODIFIER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_BOMB_MODIFIER_INCLUDE
 
 /*
diff --git a/obj/NiPSysBoundUpdateModifier.h b/obj/NiPSysBoundUpdateModifier.h
index 77ac0d23..b194e857 100644
--- a/obj/NiPSysBoundUpdateModifier.h
+++ b/obj/NiPSysBoundUpdateModifier.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSBOUNDUPDATEMODIFIER_H_
 #define _NIPSYSBOUNDUPDATEMODIFIER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_BOUND_UPDATE_MODIFIER_INCLUDE
 
 /*
diff --git a/obj/NiPSysBoxEmitter.h b/obj/NiPSysBoxEmitter.h
index d92bd9b0..d02c7e14 100644
--- a/obj/NiPSysBoxEmitter.h
+++ b/obj/NiPSysBoxEmitter.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSBOXEMITTER_H_
 #define _NIPSYSBOXEMITTER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_BOX_EMITTER_INCLUDE
 
 /*
diff --git a/obj/NiPSysColliderManager.h b/obj/NiPSysColliderManager.h
index ad9fdd33..26e941d3 100644
--- a/obj/NiPSysColliderManager.h
+++ b/obj/NiPSysColliderManager.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSCOLLIDERMANAGER_H_
 #define _NIPSYSCOLLIDERMANAGER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_COLLIDER_MANAGER_INCLUDE
 
 /*
diff --git a/obj/NiPSysColorModifier.h b/obj/NiPSysColorModifier.h
index 1a17930f..05b2bb62 100644
--- a/obj/NiPSysColorModifier.h
+++ b/obj/NiPSysColorModifier.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSCOLORMODIFIER_H_
 #define _NIPSYSCOLORMODIFIER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_COLOR_MODIFIER_INCLUDE
 
 /*
diff --git a/obj/NiPSysCylinderEmitter.h b/obj/NiPSysCylinderEmitter.h
index e9dbf125..8dbe4ce0 100644
--- a/obj/NiPSysCylinderEmitter.h
+++ b/obj/NiPSysCylinderEmitter.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSCYLINDEREMITTER_H_
 #define _NIPSYSCYLINDEREMITTER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_CYLINDER_EMITTER_INCLUDE
 
 /*
diff --git a/obj/NiPSysData.h b/obj/NiPSysData.h
index 074caa20..4c6e076d 100644
--- a/obj/NiPSysData.h
+++ b/obj/NiPSysData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSDATA_H_
 #define _NIPSYSDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_DATA_INCLUDE
 
 /*
diff --git a/obj/NiPSysDragModifier.h b/obj/NiPSysDragModifier.h
index 74ff0916..06e15f2c 100644
--- a/obj/NiPSysDragModifier.h
+++ b/obj/NiPSysDragModifier.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSDRAGMODIFIER_H_
 #define _NIPSYSDRAGMODIFIER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_DRAG_MODIFIER_INCLUDE
 
 /*
diff --git a/obj/NiPSysEmitter.h b/obj/NiPSysEmitter.h
index d426a0b1..b961a667 100644
--- a/obj/NiPSysEmitter.h
+++ b/obj/NiPSysEmitter.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSEMITTER_H_
 #define _NIPSYSEMITTER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_EMITTER_INCLUDE
 
 /*
diff --git a/obj/NiPSysEmitterCtlr.h b/obj/NiPSysEmitterCtlr.h
index 6ade1d00..9af3e3be 100644
--- a/obj/NiPSysEmitterCtlr.h
+++ b/obj/NiPSysEmitterCtlr.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSEMITTERCTLR_H_
 #define _NIPSYSEMITTERCTLR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_EMITTER_CTLR_INCLUDE
 
 /*
diff --git a/obj/NiPSysEmitterCtlrData.h b/obj/NiPSysEmitterCtlrData.h
index cfa39a78..30901a80 100644
--- a/obj/NiPSysEmitterCtlrData.h
+++ b/obj/NiPSysEmitterCtlrData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSEMITTERCTLRDATA_H_
 #define _NIPSYSEMITTERCTLRDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_EMITTER_CTLR_DATA_INCLUDE
 
 /*
diff --git a/obj/NiPSysEmitterDeclinationCtlr.h b/obj/NiPSysEmitterDeclinationCtlr.h
index 09c9b08e..311a6b7e 100644
--- a/obj/NiPSysEmitterDeclinationCtlr.h
+++ b/obj/NiPSysEmitterDeclinationCtlr.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSEMITTERDECLINATIONCTLR_H_
 #define _NIPSYSEMITTERDECLINATIONCTLR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_EMITTER_DECLINATION_CTLR_INCLUDE
 
 /*
diff --git a/obj/NiPSysEmitterDeclinationVarCtlr.h b/obj/NiPSysEmitterDeclinationVarCtlr.h
index 251a1b2f..e5503361 100644
--- a/obj/NiPSysEmitterDeclinationVarCtlr.h
+++ b/obj/NiPSysEmitterDeclinationVarCtlr.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSEMITTERDECLINATIONVARCTLR_H_
 #define _NIPSYSEMITTERDECLINATIONVARCTLR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_INCLUDE
 
 /*
diff --git a/obj/NiPSysEmitterInitialRadiusCtlr.h b/obj/NiPSysEmitterInitialRadiusCtlr.h
index 473fa1cc..19d8b378 100644
--- a/obj/NiPSysEmitterInitialRadiusCtlr.h
+++ b/obj/NiPSysEmitterInitialRadiusCtlr.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSEMITTERINITIALRADIUSCTLR_H_
 #define _NIPSYSEMITTERINITIALRADIUSCTLR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_INCLUDE
 
 /*
diff --git a/obj/NiPSysEmitterLifeSpanCtlr.h b/obj/NiPSysEmitterLifeSpanCtlr.h
index 121044bf..6cfa8970 100644
--- a/obj/NiPSysEmitterLifeSpanCtlr.h
+++ b/obj/NiPSysEmitterLifeSpanCtlr.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSEMITTERLIFESPANCTLR_H_
 #define _NIPSYSEMITTERLIFESPANCTLR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_INCLUDE
 
 /*
diff --git a/obj/NiPSysEmitterSpeedCtlr.h b/obj/NiPSysEmitterSpeedCtlr.h
index 7aa0c6cd..4de99588 100644
--- a/obj/NiPSysEmitterSpeedCtlr.h
+++ b/obj/NiPSysEmitterSpeedCtlr.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSEMITTERSPEEDCTLR_H_
 #define _NIPSYSEMITTERSPEEDCTLR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_EMITTER_SPEED_CTLR_INCLUDE
 
 /*
diff --git a/obj/NiPSysGravityModifier.h b/obj/NiPSysGravityModifier.h
index 3392550d..7cdab726 100644
--- a/obj/NiPSysGravityModifier.h
+++ b/obj/NiPSysGravityModifier.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSGRAVITYMODIFIER_H_
 #define _NIPSYSGRAVITYMODIFIER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_GRAVITY_MODIFIER_INCLUDE
 
 /*
diff --git a/obj/NiPSysGravityStrengthCtlr.h b/obj/NiPSysGravityStrengthCtlr.h
index b8df3f29..96a43cf7 100644
--- a/obj/NiPSysGravityStrengthCtlr.h
+++ b/obj/NiPSysGravityStrengthCtlr.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSGRAVITYSTRENGTHCTLR_H_
 #define _NIPSYSGRAVITYSTRENGTHCTLR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_GRAVITY_STRENGTH_CTLR_INCLUDE
 
 /*
diff --git a/obj/NiPSysGrowFadeModifier.h b/obj/NiPSysGrowFadeModifier.h
index 0513e54d..69865a63 100644
--- a/obj/NiPSysGrowFadeModifier.h
+++ b/obj/NiPSysGrowFadeModifier.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSGROWFADEMODIFIER_H_
 #define _NIPSYSGROWFADEMODIFIER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_GROW_FADE_MODIFIER_INCLUDE
 
 /*
diff --git a/obj/NiPSysMeshEmitter.h b/obj/NiPSysMeshEmitter.h
index dd440d53..40889e78 100644
--- a/obj/NiPSysMeshEmitter.h
+++ b/obj/NiPSysMeshEmitter.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSMESHEMITTER_H_
 #define _NIPSYSMESHEMITTER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_MESH_EMITTER_INCLUDE
 
 /*
diff --git a/obj/NiPSysMeshUpdateModifier.h b/obj/NiPSysMeshUpdateModifier.h
index 820ebe9f..0177bc66 100644
--- a/obj/NiPSysMeshUpdateModifier.h
+++ b/obj/NiPSysMeshUpdateModifier.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSMESHUPDATEMODIFIER_H_
 #define _NIPSYSMESHUPDATEMODIFIER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_MESH_UPDATE_MODIFIER_INCLUDE
 
 /*
diff --git a/obj/NiPSysModifier.h b/obj/NiPSysModifier.h
index 0464aa9b..8f6ff00c 100644
--- a/obj/NiPSysModifier.h
+++ b/obj/NiPSysModifier.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSMODIFIER_H_
 #define _NIPSYSMODIFIER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_MODIFIER_INCLUDE
 
 /*
diff --git a/obj/NiPSysModifierActiveCtlr.h b/obj/NiPSysModifierActiveCtlr.h
index 1625d9ab..0c4f7c36 100644
--- a/obj/NiPSysModifierActiveCtlr.h
+++ b/obj/NiPSysModifierActiveCtlr.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSMODIFIERACTIVECTLR_H_
 #define _NIPSYSMODIFIERACTIVECTLR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_MODIFIER_ACTIVE_CTLR_INCLUDE
 
 /*
diff --git a/obj/NiPSysPlanarCollider.h b/obj/NiPSysPlanarCollider.h
index 6058d189..88974555 100644
--- a/obj/NiPSysPlanarCollider.h
+++ b/obj/NiPSysPlanarCollider.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSPLANARCOLLIDER_H_
 #define _NIPSYSPLANARCOLLIDER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_PLANAR_COLLIDER_INCLUDE
 
 /*
diff --git a/obj/NiPSysPositionModifier.h b/obj/NiPSysPositionModifier.h
index a0426f38..1c5cffac 100644
--- a/obj/NiPSysPositionModifier.h
+++ b/obj/NiPSysPositionModifier.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSPOSITIONMODIFIER_H_
 #define _NIPSYSPOSITIONMODIFIER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_POSITION_MODIFIER_INCLUDE
 
 /*
diff --git a/obj/NiPSysResetOnLoopCtlr.h b/obj/NiPSysResetOnLoopCtlr.h
index 1fda6d06..7d93020c 100644
--- a/obj/NiPSysResetOnLoopCtlr.h
+++ b/obj/NiPSysResetOnLoopCtlr.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSRESETONLOOPCTLR_H_
 #define _NIPSYSRESETONLOOPCTLR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_RESET_ON_LOOP_CTLR_INCLUDE
 
 /*
diff --git a/obj/NiPSysRotationModifier.h b/obj/NiPSysRotationModifier.h
index 7d0427f7..09867558 100644
--- a/obj/NiPSysRotationModifier.h
+++ b/obj/NiPSysRotationModifier.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSROTATIONMODIFIER_H_
 #define _NIPSYSROTATIONMODIFIER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_ROTATION_MODIFIER_INCLUDE
 
 /*
diff --git a/obj/NiPSysSpawnModifier.h b/obj/NiPSysSpawnModifier.h
index 99535d0f..2ff46448 100644
--- a/obj/NiPSysSpawnModifier.h
+++ b/obj/NiPSysSpawnModifier.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSSPAWNMODIFIER_H_
 #define _NIPSYSSPAWNMODIFIER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_SPAWN_MODIFIER_INCLUDE
 
 /*
diff --git a/obj/NiPSysSphereEmitter.h b/obj/NiPSysSphereEmitter.h
index e1fcfb0f..e548b627 100644
--- a/obj/NiPSysSphereEmitter.h
+++ b/obj/NiPSysSphereEmitter.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSSPHEREEMITTER_H_
 #define _NIPSYSSPHEREEMITTER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_SPHERE_EMITTER_INCLUDE
 
 /*
diff --git a/obj/NiPSysUpdateCtlr.h b/obj/NiPSysUpdateCtlr.h
index ed54b6ef..ec26dc34 100644
--- a/obj/NiPSysUpdateCtlr.h
+++ b/obj/NiPSysUpdateCtlr.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSUPDATECTLR_H_
 #define _NIPSYSUPDATECTLR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_UPDATE_CTLR_INCLUDE
 
 /*
diff --git a/obj/NiPSysVolumeEmitter.h b/obj/NiPSysVolumeEmitter.h
index 59c10add..a2cc9bcb 100644
--- a/obj/NiPSysVolumeEmitter.h
+++ b/obj/NiPSysVolumeEmitter.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPSYSVOLUMEEMITTER_H_
 #define _NIPSYSVOLUMEEMITTER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_P_SYS_VOLUME_EMITTER_INCLUDE
 
 /*
diff --git a/obj/NiPalette.h b/obj/NiPalette.h
index 6805d4f8..806f5558 100644
--- a/obj/NiPalette.h
+++ b/obj/NiPalette.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPALETTE_H_
 #define _NIPALETTE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_PALETTE_INCLUDE
 
 /*
diff --git a/obj/NiParticleBomb.h b/obj/NiParticleBomb.h
index 43743c76..6014dae8 100644
--- a/obj/NiParticleBomb.h
+++ b/obj/NiParticleBomb.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPARTICLEBOMB_H_
 #define _NIPARTICLEBOMB_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_PARTICLE_BOMB_INCLUDE
 
 /*
diff --git a/obj/NiParticleColorModifier.h b/obj/NiParticleColorModifier.h
index 2bb20433..2d649df1 100644
--- a/obj/NiParticleColorModifier.h
+++ b/obj/NiParticleColorModifier.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPARTICLECOLORMODIFIER_H_
 #define _NIPARTICLECOLORMODIFIER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_PARTICLE_COLOR_MODIFIER_INCLUDE
 
 /*
diff --git a/obj/NiParticleGrowFade.h b/obj/NiParticleGrowFade.h
index b40c4c46..0d7167b9 100644
--- a/obj/NiParticleGrowFade.h
+++ b/obj/NiParticleGrowFade.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPARTICLEGROWFADE_H_
 #define _NIPARTICLEGROWFADE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_PARTICLE_GROW_FADE_INCLUDE
 
 /*
diff --git a/obj/NiParticleMeshModifier.h b/obj/NiParticleMeshModifier.h
index f9cd5c20..12dd3aa1 100644
--- a/obj/NiParticleMeshModifier.h
+++ b/obj/NiParticleMeshModifier.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPARTICLEMESHMODIFIER_H_
 #define _NIPARTICLEMESHMODIFIER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_PARTICLE_MESH_MODIFIER_INCLUDE
 
 /*
diff --git a/obj/NiParticleMeshes.h b/obj/NiParticleMeshes.h
index e3398cb4..26381d6e 100644
--- a/obj/NiParticleMeshes.h
+++ b/obj/NiParticleMeshes.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPARTICLEMESHES_H_
 #define _NIPARTICLEMESHES_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_PARTICLE_MESHES_INCLUDE
 
 /*
diff --git a/obj/NiParticleMeshesData.h b/obj/NiParticleMeshesData.h
index 02577ba5..e30b5f25 100644
--- a/obj/NiParticleMeshesData.h
+++ b/obj/NiParticleMeshesData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPARTICLEMESHESDATA_H_
 #define _NIPARTICLEMESHESDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_PARTICLE_MESHES_DATA_INCLUDE
 
 /*
diff --git a/obj/NiParticleRotation.h b/obj/NiParticleRotation.h
index 3d87fa1e..ed6fb36c 100644
--- a/obj/NiParticleRotation.h
+++ b/obj/NiParticleRotation.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPARTICLEROTATION_H_
 #define _NIPARTICLEROTATION_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_PARTICLE_ROTATION_INCLUDE
 
 /*
diff --git a/obj/NiParticleSystem.h b/obj/NiParticleSystem.h
index 4919bf6a..703cf8e4 100644
--- a/obj/NiParticleSystem.h
+++ b/obj/NiParticleSystem.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPARTICLESYSTEM_H_
 #define _NIPARTICLESYSTEM_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_PARTICLE_SYSTEM_INCLUDE
 
 /*
diff --git a/obj/NiParticleSystemController.h b/obj/NiParticleSystemController.h
index 098d3be7..c5b81079 100644
--- a/obj/NiParticleSystemController.h
+++ b/obj/NiParticleSystemController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPARTICLESYSTEMCONTROLLER_H_
 #define _NIPARTICLESYSTEMCONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_PARTICLE_SYSTEM_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiParticles.h b/obj/NiParticles.h
index 065c591c..95901b93 100644
--- a/obj/NiParticles.h
+++ b/obj/NiParticles.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPARTICLES_H_
 #define _NIPARTICLES_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_PARTICLES_INCLUDE
 
 /*
diff --git a/obj/NiParticlesData.h b/obj/NiParticlesData.h
index 2dc6bd04..ac1379a9 100644
--- a/obj/NiParticlesData.h
+++ b/obj/NiParticlesData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPARTICLESDATA_H_
 #define _NIPARTICLESDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_PARTICLES_DATA_INCLUDE
 
 /*
diff --git a/obj/NiPathController.h b/obj/NiPathController.h
index 0685c85c..95433d91 100644
--- a/obj/NiPathController.h
+++ b/obj/NiPathController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPATHCONTROLLER_H_
 #define _NIPATHCONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_PATH_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiPathInterpolator.h b/obj/NiPathInterpolator.h
index 1a81119a..28a56f33 100644
--- a/obj/NiPathInterpolator.h
+++ b/obj/NiPathInterpolator.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPATHINTERPOLATOR_H_
 #define _NIPATHINTERPOLATOR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_PATH_INTERPOLATOR_INCLUDE
 
 /*
diff --git a/obj/NiPixelData.h b/obj/NiPixelData.h
index dbe13d46..5fd96ab8 100644
--- a/obj/NiPixelData.h
+++ b/obj/NiPixelData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPIXELDATA_H_
 #define _NIPIXELDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_PIXEL_DATA_INCLUDE
 
 /*
diff --git a/obj/NiPlanarCollider.h b/obj/NiPlanarCollider.h
index 001e594c..f7ab778e 100644
--- a/obj/NiPlanarCollider.h
+++ b/obj/NiPlanarCollider.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPLANARCOLLIDER_H_
 #define _NIPLANARCOLLIDER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_PLANAR_COLLIDER_INCLUDE
 
 /*
diff --git a/obj/NiPoint3Interpolator.h b/obj/NiPoint3Interpolator.h
index 64617824..dcc255a6 100644
--- a/obj/NiPoint3Interpolator.h
+++ b/obj/NiPoint3Interpolator.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPOINT3INTERPOLATOR_H_
 #define _NIPOINT3INTERPOLATOR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_POINT3_INTERPOLATOR_INCLUDE
 
 /*
diff --git a/obj/NiPointLight.h b/obj/NiPointLight.h
index bd6fc0d4..4cc41804 100644
--- a/obj/NiPointLight.h
+++ b/obj/NiPointLight.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPOINTLIGHT_H_
 #define _NIPOINTLIGHT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_POINT_LIGHT_INCLUDE
 
 /*
diff --git a/obj/NiPosData.h b/obj/NiPosData.h
index 9d46cff5..5cc2ad34 100644
--- a/obj/NiPosData.h
+++ b/obj/NiPosData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPOSDATA_H_
 #define _NIPOSDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_POS_DATA_INCLUDE
 
 /*
diff --git a/obj/NiProperty.h b/obj/NiProperty.h
index 7547efb1..0544e5e5 100644
--- a/obj/NiProperty.h
+++ b/obj/NiProperty.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIPROPERTY_H_
 #define _NIPROPERTY_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_PROPERTY_INCLUDE
 
 /*
diff --git a/obj/NiRangeLODData.h b/obj/NiRangeLODData.h
index 7998e4ed..4dabcfe8 100644
--- a/obj/NiRangeLODData.h
+++ b/obj/NiRangeLODData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIRANGELODDATA_H_
 #define _NIRANGELODDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_RANGE_L_O_D_DATA_INCLUDE
 
 /*
diff --git a/obj/NiRotatingParticles.h b/obj/NiRotatingParticles.h
index 3494f157..41196d70 100644
--- a/obj/NiRotatingParticles.h
+++ b/obj/NiRotatingParticles.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIROTATINGPARTICLES_H_
 #define _NIROTATINGPARTICLES_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_ROTATING_PARTICLES_INCLUDE
 
 /*
diff --git a/obj/NiRotatingParticlesData.h b/obj/NiRotatingParticlesData.h
index 42f61bee..5fab749c 100644
--- a/obj/NiRotatingParticlesData.h
+++ b/obj/NiRotatingParticlesData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIROTATINGPARTICLESDATA_H_
 #define _NIROTATINGPARTICLESDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_ROTATING_PARTICLES_DATA_INCLUDE
 
 /*
diff --git a/obj/NiScreenLODData.h b/obj/NiScreenLODData.h
index 01866197..a5823a64 100644
--- a/obj/NiScreenLODData.h
+++ b/obj/NiScreenLODData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NISCREENLODDATA_H_
 #define _NISCREENLODDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_SCREEN_L_O_D_DATA_INCLUDE
 
 /*
diff --git a/obj/NiSequenceStreamHelper.h b/obj/NiSequenceStreamHelper.h
index f7343023..93ebebe1 100644
--- a/obj/NiSequenceStreamHelper.h
+++ b/obj/NiSequenceStreamHelper.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NISEQUENCESTREAMHELPER_H_
 #define _NISEQUENCESTREAMHELPER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_SEQUENCE_STREAM_HELPER_INCLUDE
 
 /*
diff --git a/obj/NiShadeProperty.h b/obj/NiShadeProperty.h
index f9f6ae13..6258c999 100644
--- a/obj/NiShadeProperty.h
+++ b/obj/NiShadeProperty.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NISHADEPROPERTY_H_
 #define _NISHADEPROPERTY_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_SHADE_PROPERTY_INCLUDE
 
 /*
diff --git a/obj/NiSingleInterpolatorController.h b/obj/NiSingleInterpolatorController.h
index 2a49c57c..61d944d4 100644
--- a/obj/NiSingleInterpolatorController.h
+++ b/obj/NiSingleInterpolatorController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NISINGLEINTERPOLATORCONTROLLER_H_
 #define _NISINGLEINTERPOLATORCONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_SINGLE_INTERPOLATOR_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiSkinData.h b/obj/NiSkinData.h
index 6ae509dc..dd2b42cf 100644
--- a/obj/NiSkinData.h
+++ b/obj/NiSkinData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NISKINDATA_H_
 #define _NISKINDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_SKIN_DATA_INCLUDE
 
 /*
diff --git a/obj/NiSkinInstance.h b/obj/NiSkinInstance.h
index de839899..5a062ecc 100644
--- a/obj/NiSkinInstance.h
+++ b/obj/NiSkinInstance.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NISKININSTANCE_H_
 #define _NISKININSTANCE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_SKIN_INSTANCE_INCLUDE
 
 /*
diff --git a/obj/NiSkinPartition.h b/obj/NiSkinPartition.h
index 3670b59c..6f198672 100644
--- a/obj/NiSkinPartition.h
+++ b/obj/NiSkinPartition.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NISKINPARTITION_H_
 #define _NISKINPARTITION_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_SKIN_PARTITION_INCLUDE
 
 /*
diff --git a/obj/NiSourceTexture.h b/obj/NiSourceTexture.h
index b787a2e6..045c8974 100644
--- a/obj/NiSourceTexture.h
+++ b/obj/NiSourceTexture.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NISOURCETEXTURE_H_
 #define _NISOURCETEXTURE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_SOURCE_TEXTURE_INCLUDE
 
 /*
diff --git a/obj/NiSpecularProperty.h b/obj/NiSpecularProperty.h
index 85c57e1e..88b0a491 100644
--- a/obj/NiSpecularProperty.h
+++ b/obj/NiSpecularProperty.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NISPECULARPROPERTY_H_
 #define _NISPECULARPROPERTY_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_SPECULAR_PROPERTY_INCLUDE
 
 /*
diff --git a/obj/NiSphericalCollider.h b/obj/NiSphericalCollider.h
index 7b04d866..73ce08dc 100644
--- a/obj/NiSphericalCollider.h
+++ b/obj/NiSphericalCollider.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NISPHERICALCOLLIDER_H_
 #define _NISPHERICALCOLLIDER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_SPHERICAL_COLLIDER_INCLUDE
 
 /*
diff --git a/obj/NiSpotLight.h b/obj/NiSpotLight.h
index 27f8bf5c..7c51f347 100644
--- a/obj/NiSpotLight.h
+++ b/obj/NiSpotLight.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NISPOTLIGHT_H_
 #define _NISPOTLIGHT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_SPOT_LIGHT_INCLUDE
 
 /*
diff --git a/obj/NiStencilProperty.h b/obj/NiStencilProperty.h
index 281ffa29..b2c537a7 100644
--- a/obj/NiStencilProperty.h
+++ b/obj/NiStencilProperty.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NISTENCILPROPERTY_H_
 #define _NISTENCILPROPERTY_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_STENCIL_PROPERTY_INCLUDE
 
 /*
diff --git a/obj/NiStringExtraData.h b/obj/NiStringExtraData.h
index 2dc2d96d..6e70cfa5 100644
--- a/obj/NiStringExtraData.h
+++ b/obj/NiStringExtraData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NISTRINGEXTRADATA_H_
 #define _NISTRINGEXTRADATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_STRING_EXTRA_DATA_INCLUDE
 
 /*
diff --git a/obj/NiStringPalette.h b/obj/NiStringPalette.h
index 383577df..ccaa147f 100644
--- a/obj/NiStringPalette.h
+++ b/obj/NiStringPalette.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NISTRINGPALETTE_H_
 #define _NISTRINGPALETTE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_STRING_PALETTE_INCLUDE
 
 /*
diff --git a/obj/NiStringsExtraData.h b/obj/NiStringsExtraData.h
index a55ee196..e8bacb16 100644
--- a/obj/NiStringsExtraData.h
+++ b/obj/NiStringsExtraData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NISTRINGSEXTRADATA_H_
 #define _NISTRINGSEXTRADATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_STRINGS_EXTRA_DATA_INCLUDE
 
 /*
diff --git a/obj/NiTextKeyExtraData.h b/obj/NiTextKeyExtraData.h
index 2b7fc0c1..4a04acda 100644
--- a/obj/NiTextKeyExtraData.h
+++ b/obj/NiTextKeyExtraData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NITEXTKEYEXTRADATA_H_
 #define _NITEXTKEYEXTRADATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_TEXT_KEY_EXTRA_DATA_INCLUDE
 
 /*
diff --git a/obj/NiTextureEffect.h b/obj/NiTextureEffect.h
index 33a7652f..2dce45de 100644
--- a/obj/NiTextureEffect.h
+++ b/obj/NiTextureEffect.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NITEXTUREEFFECT_H_
 #define _NITEXTUREEFFECT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_TEXTURE_EFFECT_INCLUDE
 
 /*
diff --git a/obj/NiTextureTransformController.h b/obj/NiTextureTransformController.h
index fc7952be..fb9f2577 100644
--- a/obj/NiTextureTransformController.h
+++ b/obj/NiTextureTransformController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NITEXTURETRANSFORMCONTROLLER_H_
 #define _NITEXTURETRANSFORMCONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_TEXTURE_TRANSFORM_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiTexturingProperty.h b/obj/NiTexturingProperty.h
index 446bc9c8..26759a18 100644
--- a/obj/NiTexturingProperty.h
+++ b/obj/NiTexturingProperty.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NITEXTURINGPROPERTY_H_
 #define _NITEXTURINGPROPERTY_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_TEXTURING_PROPERTY_INCLUDE
 
 /*
diff --git a/obj/NiTimeController.h b/obj/NiTimeController.h
index 6cf80e13..d7fa1ac3 100644
--- a/obj/NiTimeController.h
+++ b/obj/NiTimeController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NITIMECONTROLLER_H_
 #define _NITIMECONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_TIME_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiTransformController.h b/obj/NiTransformController.h
index f60e6f7d..045839b5 100644
--- a/obj/NiTransformController.h
+++ b/obj/NiTransformController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NITRANSFORMCONTROLLER_H_
 #define _NITRANSFORMCONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_TRANSFORM_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiTransformData.h b/obj/NiTransformData.h
index 64c348b0..cb2c48de 100644
--- a/obj/NiTransformData.h
+++ b/obj/NiTransformData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NITRANSFORMDATA_H_
 #define _NITRANSFORMDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_TRANSFORM_DATA_INCLUDE
 
 /*
diff --git a/obj/NiTransformInterpolator.h b/obj/NiTransformInterpolator.h
index a4e7ebc6..e0f7fd2e 100644
--- a/obj/NiTransformInterpolator.h
+++ b/obj/NiTransformInterpolator.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NITRANSFORMINTERPOLATOR_H_
 #define _NITRANSFORMINTERPOLATOR_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_TRANSFORM_INTERPOLATOR_INCLUDE
 
 /*
diff --git a/obj/NiTriBasedGeom.h b/obj/NiTriBasedGeom.h
index a5a6b2a8..d2f356b7 100644
--- a/obj/NiTriBasedGeom.h
+++ b/obj/NiTriBasedGeom.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NITRIBASEDGEOM_H_
 #define _NITRIBASEDGEOM_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_TRI_BASED_GEOM_INCLUDE
 
 /*
diff --git a/obj/NiTriBasedGeomData.h b/obj/NiTriBasedGeomData.h
index 5fd879fc..1719e829 100644
--- a/obj/NiTriBasedGeomData.h
+++ b/obj/NiTriBasedGeomData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NITRIBASEDGEOMDATA_H_
 #define _NITRIBASEDGEOMDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_TRI_BASED_GEOM_DATA_INCLUDE
 
 /*
diff --git a/obj/NiTriShape.h b/obj/NiTriShape.h
index d0c2766a..c83770f8 100644
--- a/obj/NiTriShape.h
+++ b/obj/NiTriShape.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NITRISHAPE_H_
 #define _NITRISHAPE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_TRI_SHAPE_INCLUDE
 
 /*
diff --git a/obj/NiTriShapeData.h b/obj/NiTriShapeData.h
index 758be0ae..b537305a 100644
--- a/obj/NiTriShapeData.h
+++ b/obj/NiTriShapeData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NITRISHAPEDATA_H_
 #define _NITRISHAPEDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_TRI_SHAPE_DATA_INCLUDE
 
 /*
diff --git a/obj/NiTriStrips.h b/obj/NiTriStrips.h
index ca954285..2c35f1ca 100644
--- a/obj/NiTriStrips.h
+++ b/obj/NiTriStrips.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NITRISTRIPS_H_
 #define _NITRISTRIPS_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_TRI_STRIPS_INCLUDE
 
 /*
diff --git a/obj/NiTriStripsData.h b/obj/NiTriStripsData.h
index 148a9211..246376f4 100644
--- a/obj/NiTriStripsData.h
+++ b/obj/NiTriStripsData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NITRISTRIPSDATA_H_
 #define _NITRISTRIPSDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_TRI_STRIPS_DATA_INCLUDE
 
 /*
diff --git a/obj/NiUVController.h b/obj/NiUVController.h
index 5295c14c..269e4ea0 100644
--- a/obj/NiUVController.h
+++ b/obj/NiUVController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIUVCONTROLLER_H_
 #define _NIUVCONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_U_V_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiUVData.h b/obj/NiUVData.h
index 0fd3335d..341bc046 100644
--- a/obj/NiUVData.h
+++ b/obj/NiUVData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIUVDATA_H_
 #define _NIUVDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_U_V_DATA_INCLUDE
 
 /*
diff --git a/obj/NiVectorExtraData.h b/obj/NiVectorExtraData.h
index 8f393950..42e1787f 100644
--- a/obj/NiVectorExtraData.h
+++ b/obj/NiVectorExtraData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIVECTOREXTRADATA_H_
 #define _NIVECTOREXTRADATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_VECTOR_EXTRA_DATA_INCLUDE
 
 /*
diff --git a/obj/NiVertWeightsExtraData.h b/obj/NiVertWeightsExtraData.h
index 1edcab94..b26aad13 100644
--- a/obj/NiVertWeightsExtraData.h
+++ b/obj/NiVertWeightsExtraData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIVERTWEIGHTSEXTRADATA_H_
 #define _NIVERTWEIGHTSEXTRADATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_VERT_WEIGHTS_EXTRA_DATA_INCLUDE
 
 /*
diff --git a/obj/NiVertexColorProperty.h b/obj/NiVertexColorProperty.h
index 18faa409..77df5dff 100644
--- a/obj/NiVertexColorProperty.h
+++ b/obj/NiVertexColorProperty.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIVERTEXCOLORPROPERTY_H_
 #define _NIVERTEXCOLORPROPERTY_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_VERTEX_COLOR_PROPERTY_INCLUDE
 
 /*
diff --git a/obj/NiVisController.h b/obj/NiVisController.h
index 8b4bf548..52eb3955 100644
--- a/obj/NiVisController.h
+++ b/obj/NiVisController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIVISCONTROLLER_H_
 #define _NIVISCONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_VIS_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/NiVisData.h b/obj/NiVisData.h
index 2513bb3a..e5a54dbf 100644
--- a/obj/NiVisData.h
+++ b/obj/NiVisData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIVISDATA_H_
 #define _NIVISDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_VIS_DATA_INCLUDE
 
 /*
diff --git a/obj/NiWireframeProperty.h b/obj/NiWireframeProperty.h
index 1d75b708..a556d54d 100644
--- a/obj/NiWireframeProperty.h
+++ b/obj/NiWireframeProperty.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIWIREFRAMEPROPERTY_H_
 #define _NIWIREFRAMEPROPERTY_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_WIREFRAME_PROPERTY_INCLUDE
 
 /*
diff --git a/obj/NiZBufferProperty.h b/obj/NiZBufferProperty.h
index b33487dd..c78e1244 100644
--- a/obj/NiZBufferProperty.h
+++ b/obj/NiZBufferProperty.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _NIZBUFFERPROPERTY_H_
 #define _NIZBUFFERPROPERTY_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include NI_Z_BUFFER_PROPERTY_INCLUDE
 
 /*
diff --git a/obj/RootCollisionNode.h b/obj/RootCollisionNode.h
index 42e1409b..f4955853 100644
--- a/obj/RootCollisionNode.h
+++ b/obj/RootCollisionNode.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _ROOTCOLLISIONNODE_H_
 #define _ROOTCOLLISIONNODE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include ROOT_COLLISION_NODE_INCLUDE
 
 /*
diff --git a/obj/bhkBlendCollisionObject.h b/obj/bhkBlendCollisionObject.h
index 296cc796..0154c81e 100644
--- a/obj/bhkBlendCollisionObject.h
+++ b/obj/bhkBlendCollisionObject.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKBLENDCOLLISIONOBJECT_H_
 #define _BHKBLENDCOLLISIONOBJECT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_BLEND_COLLISION_OBJECT_INCLUDE
 
 /*
diff --git a/obj/bhkBlendController.h b/obj/bhkBlendController.h
index 445814ef..d0a596d7 100644
--- a/obj/bhkBlendController.h
+++ b/obj/bhkBlendController.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKBLENDCONTROLLER_H_
 #define _BHKBLENDCONTROLLER_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_BLEND_CONTROLLER_INCLUDE
 
 /*
diff --git a/obj/bhkBoxShape.h b/obj/bhkBoxShape.h
index d9d56171..52768fbf 100644
--- a/obj/bhkBoxShape.h
+++ b/obj/bhkBoxShape.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKBOXSHAPE_H_
 #define _BHKBOXSHAPE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_BOX_SHAPE_INCLUDE
 
 /*
diff --git a/obj/bhkCapsuleShape.h b/obj/bhkCapsuleShape.h
index 48fd4f6f..f19d7d87 100644
--- a/obj/bhkCapsuleShape.h
+++ b/obj/bhkCapsuleShape.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKCAPSULESHAPE_H_
 #define _BHKCAPSULESHAPE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_CAPSULE_SHAPE_INCLUDE
 
 /*
diff --git a/obj/bhkCollisionObject.h b/obj/bhkCollisionObject.h
index 2180b85e..b4268bba 100644
--- a/obj/bhkCollisionObject.h
+++ b/obj/bhkCollisionObject.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKCOLLISIONOBJECT_H_
 #define _BHKCOLLISIONOBJECT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_COLLISION_OBJECT_INCLUDE
 
 /*
diff --git a/obj/bhkConvexShape.h b/obj/bhkConvexShape.h
index 9a92fb18..c0aafdfc 100644
--- a/obj/bhkConvexShape.h
+++ b/obj/bhkConvexShape.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKCONVEXSHAPE_H_
 #define _BHKCONVEXSHAPE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_CONVEX_SHAPE_INCLUDE
 
 /*
diff --git a/obj/bhkConvexTransformShape.h b/obj/bhkConvexTransformShape.h
index 64799fa4..97589065 100644
--- a/obj/bhkConvexTransformShape.h
+++ b/obj/bhkConvexTransformShape.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKCONVEXTRANSFORMSHAPE_H_
 #define _BHKCONVEXTRANSFORMSHAPE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_CONVEX_TRANSFORM_SHAPE_INCLUDE
 
 /*
diff --git a/obj/bhkConvexVerticesShape.h b/obj/bhkConvexVerticesShape.h
index e2c78f19..5813e48b 100644
--- a/obj/bhkConvexVerticesShape.h
+++ b/obj/bhkConvexVerticesShape.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKCONVEXVERTICESSHAPE_H_
 #define _BHKCONVEXVERTICESSHAPE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_CONVEX_VERTICES_SHAPE_INCLUDE
 
 /*
diff --git a/obj/bhkEntity.h b/obj/bhkEntity.h
index 834e168e..c1adafef 100644
--- a/obj/bhkEntity.h
+++ b/obj/bhkEntity.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKENTITY_H_
 #define _BHKENTITY_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_ENTITY_INCLUDE
 
 /*
diff --git a/obj/bhkHingeConstraint.h b/obj/bhkHingeConstraint.h
index 7fc52d32..dd076148 100644
--- a/obj/bhkHingeConstraint.h
+++ b/obj/bhkHingeConstraint.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKHINGECONSTRAINT_H_
 #define _BHKHINGECONSTRAINT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_HINGE_CONSTRAINT_INCLUDE
 
 /*
diff --git a/obj/bhkLimitedHingeConstraint.h b/obj/bhkLimitedHingeConstraint.h
index f6d648ae..75c00128 100644
--- a/obj/bhkLimitedHingeConstraint.h
+++ b/obj/bhkLimitedHingeConstraint.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKLIMITEDHINGECONSTRAINT_H_
 #define _BHKLIMITEDHINGECONSTRAINT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_LIMITED_HINGE_CONSTRAINT_INCLUDE
 
 /*
diff --git a/obj/bhkListShape.h b/obj/bhkListShape.h
index f11437a9..7ca94099 100644
--- a/obj/bhkListShape.h
+++ b/obj/bhkListShape.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKLISTSHAPE_H_
 #define _BHKLISTSHAPE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_LIST_SHAPE_INCLUDE
 
 /*
diff --git a/obj/bhkMalleableConstraint.h b/obj/bhkMalleableConstraint.h
index 586bc7e3..7b5d8fe1 100644
--- a/obj/bhkMalleableConstraint.h
+++ b/obj/bhkMalleableConstraint.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKMALLEABLECONSTRAINT_H_
 #define _BHKMALLEABLECONSTRAINT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_MALLEABLE_CONSTRAINT_INCLUDE
 
 /*
diff --git a/obj/bhkMoppBvTreeShape.h b/obj/bhkMoppBvTreeShape.h
index 9e6e8e68..e058820e 100644
--- a/obj/bhkMoppBvTreeShape.h
+++ b/obj/bhkMoppBvTreeShape.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKMOPPBVTREESHAPE_H_
 #define _BHKMOPPBVTREESHAPE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_MOPP_BV_TREE_SHAPE_INCLUDE
 
 /*
diff --git a/obj/bhkMultiSphereShape.h b/obj/bhkMultiSphereShape.h
index 4895bdab..48619888 100644
--- a/obj/bhkMultiSphereShape.h
+++ b/obj/bhkMultiSphereShape.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKMULTISPHERESHAPE_H_
 #define _BHKMULTISPHERESHAPE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_MULTI_SPHERE_SHAPE_INCLUDE
 
 /*
diff --git a/obj/bhkNiTriStripsShape.h b/obj/bhkNiTriStripsShape.h
index b1b50c60..93dcf774 100644
--- a/obj/bhkNiTriStripsShape.h
+++ b/obj/bhkNiTriStripsShape.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKNITRISTRIPSSHAPE_H_
 #define _BHKNITRISTRIPSSHAPE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_NI_TRI_STRIPS_SHAPE_INCLUDE
 
 /*
diff --git a/obj/bhkPackedNiTriStripsShape.h b/obj/bhkPackedNiTriStripsShape.h
index d56ecebb..22013d97 100644
--- a/obj/bhkPackedNiTriStripsShape.h
+++ b/obj/bhkPackedNiTriStripsShape.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKPACKEDNITRISTRIPSSHAPE_H_
 #define _BHKPACKEDNITRISTRIPSSHAPE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_PACKED_NI_TRI_STRIPS_SHAPE_INCLUDE
 
 /*
diff --git a/obj/bhkPrismaticConstraint.h b/obj/bhkPrismaticConstraint.h
index 7f105f8f..fef8fd00 100644
--- a/obj/bhkPrismaticConstraint.h
+++ b/obj/bhkPrismaticConstraint.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKPRISMATICCONSTRAINT_H_
 #define _BHKPRISMATICCONSTRAINT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_PRISMATIC_CONSTRAINT_INCLUDE
 
 /*
diff --git a/obj/bhkRagdollConstraint.h b/obj/bhkRagdollConstraint.h
index 9cf61000..73f9f48f 100644
--- a/obj/bhkRagdollConstraint.h
+++ b/obj/bhkRagdollConstraint.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKRAGDOLLCONSTRAINT_H_
 #define _BHKRAGDOLLCONSTRAINT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_RAGDOLL_CONSTRAINT_INCLUDE
 
 /*
diff --git a/obj/bhkRefObject.h b/obj/bhkRefObject.h
index 0714a630..d451abbc 100644
--- a/obj/bhkRefObject.h
+++ b/obj/bhkRefObject.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKREFOBJECT_H_
 #define _BHKREFOBJECT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_REF_OBJECT_INCLUDE
 
 /*
diff --git a/obj/bhkRigidBody.h b/obj/bhkRigidBody.h
index 3891c53c..a1506c32 100644
--- a/obj/bhkRigidBody.h
+++ b/obj/bhkRigidBody.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKRIGIDBODY_H_
 #define _BHKRIGIDBODY_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_RIGID_BODY_INCLUDE
 
 /*
diff --git a/obj/bhkRigidBodyT.h b/obj/bhkRigidBodyT.h
index e63e8002..b4bc8554 100644
--- a/obj/bhkRigidBodyT.h
+++ b/obj/bhkRigidBodyT.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKRIGIDBODYT_H_
 #define _BHKRIGIDBODYT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_RIGID_BODY_T_INCLUDE
 
 /*
diff --git a/obj/bhkSPCollisionObject.h b/obj/bhkSPCollisionObject.h
index 6d5dc239..5b8577d4 100644
--- a/obj/bhkSPCollisionObject.h
+++ b/obj/bhkSPCollisionObject.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKSPCOLLISIONOBJECT_H_
 #define _BHKSPCOLLISIONOBJECT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_S_P_COLLISION_OBJECT_INCLUDE
 
 /*
diff --git a/obj/bhkSerializable.h b/obj/bhkSerializable.h
index fe3b45c4..2ee6ed89 100644
--- a/obj/bhkSerializable.h
+++ b/obj/bhkSerializable.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKSERIALIZABLE_H_
 #define _BHKSERIALIZABLE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_SERIALIZABLE_INCLUDE
 
 /*
diff --git a/obj/bhkShape.h b/obj/bhkShape.h
index d795e6ae..68b38926 100644
--- a/obj/bhkShape.h
+++ b/obj/bhkShape.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKSHAPE_H_
 #define _BHKSHAPE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_SHAPE_INCLUDE
 
 /*
diff --git a/obj/bhkSimpleShapePhantom.h b/obj/bhkSimpleShapePhantom.h
index c72a1168..e53d4a8a 100644
--- a/obj/bhkSimpleShapePhantom.h
+++ b/obj/bhkSimpleShapePhantom.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKSIMPLESHAPEPHANTOM_H_
 #define _BHKSIMPLESHAPEPHANTOM_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_SIMPLE_SHAPE_PHANTOM_INCLUDE
 
 /*
diff --git a/obj/bhkSphereRepShape.h b/obj/bhkSphereRepShape.h
index 86dd489f..645a360c 100644
--- a/obj/bhkSphereRepShape.h
+++ b/obj/bhkSphereRepShape.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKSPHEREREPSHAPE_H_
 #define _BHKSPHEREREPSHAPE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_SPHERE_REP_SHAPE_INCLUDE
 
 /*
diff --git a/obj/bhkSphereShape.h b/obj/bhkSphereShape.h
index 1557c92e..605b3299 100644
--- a/obj/bhkSphereShape.h
+++ b/obj/bhkSphereShape.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKSPHERESHAPE_H_
 #define _BHKSPHERESHAPE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_SPHERE_SHAPE_INCLUDE
 
 /*
diff --git a/obj/bhkStiffSpringConstraint.h b/obj/bhkStiffSpringConstraint.h
index b96967ff..980dfc22 100644
--- a/obj/bhkStiffSpringConstraint.h
+++ b/obj/bhkStiffSpringConstraint.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKSTIFFSPRINGCONSTRAINT_H_
 #define _BHKSTIFFSPRINGCONSTRAINT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_STIFF_SPRING_CONSTRAINT_INCLUDE
 
 /*
diff --git a/obj/bhkTransformShape.h b/obj/bhkTransformShape.h
index 3a537bc2..4374afa1 100644
--- a/obj/bhkTransformShape.h
+++ b/obj/bhkTransformShape.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKTRANSFORMSHAPE_H_
 #define _BHKTRANSFORMSHAPE_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_TRANSFORM_SHAPE_INCLUDE
 
 /*
diff --git a/obj/bhkWorldObject.h b/obj/bhkWorldObject.h
index 54ed2919..54c4aaf4 100644
--- a/obj/bhkWorldObject.h
+++ b/obj/bhkWorldObject.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _BHKWORLDOBJECT_H_
 #define _BHKWORLDOBJECT_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include BHK_WORLD_OBJECT_INCLUDE
 
 /*
diff --git a/obj/hkPackedNiTriStripsData.h b/obj/hkPackedNiTriStripsData.h
index ac582caa..15648b48 100644
--- a/obj/hkPackedNiTriStripsData.h
+++ b/obj/hkPackedNiTriStripsData.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _HKPACKEDNITRISTRIPSDATA_H_
 #define _HKPACKEDNITRISTRIPSDATA_H_
 
-#include "xml_extract.h"
+#include "gen/obj_defines.h"
 #include HK_PACKED_NI_TRI_STRIPS_DATA_INCLUDE
 
 /*
-- 
GitLab