From 60aea4597cc24e73f339690507a35132bd163068 Mon Sep 17 00:00:00 2001
From: Shon Ferguson <shonferg@users.sourceforge.net>
Date: Sat, 17 Jun 2006 04:32:56 +0000
Subject: [PATCH] Implemented functions for important controllers and extra
 data objects.

---
 obj/ABoneLODController.h               |  2 ++
 obj/BSFurnitureMarker.cpp              |  9 +++++++++
 obj/BSFurnitureMarker.h                |  4 ++++
 obj/BSXFlags.cpp                       |  7 +++++++
 obj/BSXFlags.h                         |  4 ++++
 obj/NiBinaryExtraData.cpp              |  9 +++++++++
 obj/NiBinaryExtraData.h                |  4 ++++
 obj/NiBooleanExtraData.cpp             |  7 +++++++
 obj/NiBooleanExtraData.h               |  4 ++++
 obj/NiColorExtraData.cpp               |  7 +++++++
 obj/NiColorExtraData.h                 |  4 ++++
 obj/NiControllerManager.h              |  2 ++
 obj/NiFloatExtraData.cpp               |  7 +++++++
 obj/NiFloatExtraData.h                 |  4 ++++
 obj/NiFloatExtraDataController.h       |  2 ++
 obj/NiFloatsExtraData.cpp              |  8 ++++++++
 obj/NiFloatsExtraData.h                |  4 ++++
 obj/NiGeomMorpherController.cpp        | 16 ++++++++++++++++
 obj/NiGeomMorpherController.h          |  7 +++++++
 obj/NiIntegerExtraData.cpp             |  7 +++++++
 obj/NiIntegerExtraData.h               |  4 ++++
 obj/NiIntegersExtraData.cpp            |  8 ++++++++
 obj/NiIntegersExtraData.h              |  4 ++++
 obj/NiKeyframeController.cpp           |  7 +++++++
 obj/NiKeyframeController.h             |  4 ++++
 obj/NiLightColorController.cpp         | 15 +++++++++++++++
 obj/NiLightColorController.h           |  8 ++++++++
 obj/NiParticleSystemController.h       |  1 +
 obj/NiPathController.cpp               | 15 +++++++++++++++
 obj/NiPathController.h                 |  7 +++++++
 obj/NiSingleInterpolatorController.cpp |  7 +++++++
 obj/NiSingleInterpolatorController.h   |  3 +++
 obj/NiStringExtraData.cpp              |  9 ++++++++-
 obj/NiStringExtraData.h                |  4 ++++
 obj/NiStringsExtraData.cpp             |  8 ++++++++
 obj/NiStringsExtraData.h               |  4 ++++
 obj/NiTextKeyExtraData.h               |  2 ++
 obj/NiUVController.cpp                 |  7 +++++++
 obj/NiUVController.h                   |  5 +++++
 obj/NiVectorExtraData.cpp              |  8 ++++++++
 obj/NiVectorExtraData.h                |  5 +++++
 obj/NiVertWeightsExtraData.cpp         |  9 +++++++++
 obj/NiVertWeightsExtraData.h           |  4 ++++
 obj/bhkBlendController.h               |  2 ++
 44 files changed, 267 insertions(+), 1 deletion(-)

diff --git a/obj/ABoneLODController.h b/obj/ABoneLODController.h
index da28ba9b..dd730642 100644
--- a/obj/ABoneLODController.h
+++ b/obj/ABoneLODController.h
@@ -32,6 +32,8 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	//TODO:  This is not a priority but needs to be implemented eventually
 protected:
 	A_BONE_L_O_D_CONTROLLER_MEMBERS
 };
diff --git a/obj/BSFurnitureMarker.cpp b/obj/BSFurnitureMarker.cpp
index 4738518d..4a06a294 100644
--- a/obj/BSFurnitureMarker.cpp
+++ b/obj/BSFurnitureMarker.cpp
@@ -35,3 +35,12 @@ const Type & BSFurnitureMarker::GetType() const {
 	return TYPE;
 };
 
+vector<FurniturePosition> BSFurnitureMarker::GetFurniturePositions() const {
+	return positions;
+}
+	
+void BSFurnitureMarker::SetFurniturePositions( const vector<FurniturePosition> & n ) {
+	numPositions = uint(n.size());
+	positions = n;
+}
+
diff --git a/obj/BSFurnitureMarker.h b/obj/BSFurnitureMarker.h
index 36600358..d5d4efb2 100644
--- a/obj/BSFurnitureMarker.h
+++ b/obj/BSFurnitureMarker.h
@@ -32,6 +32,10 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	vector<FurniturePosition> GetFurniturePositions() const;
+	void SetFurniturePositions( const vector<FurniturePosition> & n );
+
 protected:
 	B_S_FURNITURE_MARKER_MEMBERS
 };
diff --git a/obj/BSXFlags.cpp b/obj/BSXFlags.cpp
index 595b31ff..172b2771 100644
--- a/obj/BSXFlags.cpp
+++ b/obj/BSXFlags.cpp
@@ -34,3 +34,10 @@ const Type & BSXFlags::GetType() const {
 	return TYPE;
 };
 
+uint BSXFlags::GetFlags() const {
+	return flags;
+};
+
+void BSXFlags::SetFlags( uint n ) {
+	flags = n;
+};
diff --git a/obj/BSXFlags.h b/obj/BSXFlags.h
index 2afc6692..beee3235 100644
--- a/obj/BSXFlags.h
+++ b/obj/BSXFlags.h
@@ -30,6 +30,10 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	uint GetFlags() const;
+	void SetFlags( uint n );
+
 protected:
 	B_S_X_FLAGS_MEMBERS
 };
diff --git a/obj/NiBinaryExtraData.cpp b/obj/NiBinaryExtraData.cpp
index 6afffdf9..dfa649c6 100644
--- a/obj/NiBinaryExtraData.cpp
+++ b/obj/NiBinaryExtraData.cpp
@@ -35,3 +35,12 @@ const Type & NiBinaryExtraData::GetType() const {
 	return TYPE;
 };
 
+
+vector<byte> NiBinaryExtraData::GetData() const {
+	return binaryData.data;
+};
+
+void NiBinaryExtraData::SetData( const vector<byte> & n ) {
+	binaryData.dataSize = uint(n.size());
+	binaryData.data = n;
+};
\ No newline at end of file
diff --git a/obj/NiBinaryExtraData.h b/obj/NiBinaryExtraData.h
index b2223848..d0f37b85 100644
--- a/obj/NiBinaryExtraData.h
+++ b/obj/NiBinaryExtraData.h
@@ -33,6 +33,10 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	vector<byte> GetData() const;
+	void SetData( const vector<byte> & n );
+
 protected:
 	NI_BINARY_EXTRA_DATA_MEMBERS
 };
diff --git a/obj/NiBooleanExtraData.cpp b/obj/NiBooleanExtraData.cpp
index ec6d7e8a..ece75ba9 100644
--- a/obj/NiBooleanExtraData.cpp
+++ b/obj/NiBooleanExtraData.cpp
@@ -34,3 +34,10 @@ const Type & NiBooleanExtraData::GetType() const {
 	return TYPE;
 };
 
+bool NiBooleanExtraData::GetData() const {
+	return (booleanData != 0);
+}
+
+void NiBooleanExtraData::SetData( bool n ) {
+	booleanData = n;
+}
\ No newline at end of file
diff --git a/obj/NiBooleanExtraData.h b/obj/NiBooleanExtraData.h
index 67ec97ef..c57ef158 100644
--- a/obj/NiBooleanExtraData.h
+++ b/obj/NiBooleanExtraData.h
@@ -30,6 +30,10 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	bool GetData() const;
+	void SetData( bool n );
+
 protected:
 	NI_BOOLEAN_EXTRA_DATA_MEMBERS
 };
diff --git a/obj/NiColorExtraData.cpp b/obj/NiColorExtraData.cpp
index 2f3d121e..9ab7e769 100644
--- a/obj/NiColorExtraData.cpp
+++ b/obj/NiColorExtraData.cpp
@@ -34,3 +34,10 @@ const Type & NiColorExtraData::GetType() const {
 	return TYPE;
 };
 
+Color4 NiColorExtraData::GetData() const {
+	return data;
+}
+	
+void NiColorExtraData::SetData( const Color4 & n ) {
+	data = n;
+}
diff --git a/obj/NiColorExtraData.h b/obj/NiColorExtraData.h
index 0f2d1573..3e1e55ef 100644
--- a/obj/NiColorExtraData.h
+++ b/obj/NiColorExtraData.h
@@ -30,6 +30,10 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	Color4 GetData() const;
+	void SetData( const Color4 & n );
+
 protected:
 	NI_COLOR_EXTRA_DATA_MEMBERS
 };
diff --git a/obj/NiControllerManager.h b/obj/NiControllerManager.h
index 27ce8f6c..08e08267 100644
--- a/obj/NiControllerManager.h
+++ b/obj/NiControllerManager.h
@@ -35,6 +35,8 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	//TODO:  This is not a priority but needs to be implemented eventually
 protected:
 	NI_CONTROLLER_MANAGER_MEMBERS
 };
diff --git a/obj/NiFloatExtraData.cpp b/obj/NiFloatExtraData.cpp
index 19fbc460..9c226365 100644
--- a/obj/NiFloatExtraData.cpp
+++ b/obj/NiFloatExtraData.cpp
@@ -34,3 +34,10 @@ const Type & NiFloatExtraData::GetType() const {
 	return TYPE;
 };
 
+float NiFloatExtraData::GetData() const {
+	return floatData;
+}
+	
+void NiFloatExtraData::SetData( float n ) {
+	floatData = n;
+}
\ No newline at end of file
diff --git a/obj/NiFloatExtraData.h b/obj/NiFloatExtraData.h
index 017709dc..dfadf851 100644
--- a/obj/NiFloatExtraData.h
+++ b/obj/NiFloatExtraData.h
@@ -30,6 +30,10 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+	
+	float GetData() const;
+	void SetData( float n );
+
 protected:
 	NI_FLOAT_EXTRA_DATA_MEMBERS
 };
diff --git a/obj/NiFloatExtraDataController.h b/obj/NiFloatExtraDataController.h
index a977e89c..610c93e5 100644
--- a/obj/NiFloatExtraDataController.h
+++ b/obj/NiFloatExtraDataController.h
@@ -34,6 +34,8 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	//TODO:  The function of all data is currently unknown.
 protected:
 	NI_FLOAT_EXTRA_DATA_CONTROLLER_MEMBERS
 };
diff --git a/obj/NiFloatsExtraData.cpp b/obj/NiFloatsExtraData.cpp
index 7657cfea..80fd06d6 100644
--- a/obj/NiFloatsExtraData.cpp
+++ b/obj/NiFloatsExtraData.cpp
@@ -34,3 +34,11 @@ const Type & NiFloatsExtraData::GetType() const {
 	return TYPE;
 };
 
+vector<float> NiFloatsExtraData::GetData() const {
+	return data;
+}
+	
+void NiFloatsExtraData::SetData( const vector<float> & n ) {
+	numFloats = uint(n.size());
+	data = n;
+}
diff --git a/obj/NiFloatsExtraData.h b/obj/NiFloatsExtraData.h
index 64fa3f33..4d7c37d6 100644
--- a/obj/NiFloatsExtraData.h
+++ b/obj/NiFloatsExtraData.h
@@ -30,6 +30,10 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	vector<float> GetData() const;
+	void SetData( const vector<float> & n );
+
 protected:
 	NI_FLOATS_EXTRA_DATA_MEMBERS
 };
diff --git a/obj/NiGeomMorpherController.cpp b/obj/NiGeomMorpherController.cpp
index aabfe34f..b8014b83 100644
--- a/obj/NiGeomMorpherController.cpp
+++ b/obj/NiGeomMorpherController.cpp
@@ -36,3 +36,19 @@ const Type & NiGeomMorpherController::GetType() const {
 	return TYPE;
 };
 
+vector< Ref<NiInterpolator> > NiGeomMorpherController::GetInterpolators() const {
+	return interpolators;
+}
+
+void NiGeomMorpherController::SetInterpolators( const vector< Ref<NiInterpolator> > & n ) {
+	numInterpolators = uint(n.size());
+	interpolators = n;
+}
+
+Ref<NiMorphData> NiGeomMorpherController::GetData() const {
+	return data;
+}
+
+void NiGeomMorpherController::SetData( const Ref<NiMorphData> & n ) {
+	data = n;
+}
\ No newline at end of file
diff --git a/obj/NiGeomMorpherController.h b/obj/NiGeomMorpherController.h
index 34a1ff70..5dea8ee1 100644
--- a/obj/NiGeomMorpherController.h
+++ b/obj/NiGeomMorpherController.h
@@ -35,6 +35,13 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	//TODO: lots of unknown data in this object
+	vector< Ref<NiInterpolator> > GetInterpolators() const;
+	void SetInterpolators( const vector< Ref<NiInterpolator> > & n );
+
+	Ref<NiMorphData> GetData() const;
+	void SetData( const Ref<NiMorphData> & n );
 protected:
 	NI_GEOM_MORPHER_CONTROLLER_MEMBERS
 };
diff --git a/obj/NiIntegerExtraData.cpp b/obj/NiIntegerExtraData.cpp
index b3a495be..96a9a3b1 100644
--- a/obj/NiIntegerExtraData.cpp
+++ b/obj/NiIntegerExtraData.cpp
@@ -34,3 +34,10 @@ const Type & NiIntegerExtraData::GetType() const {
 	return TYPE;
 };
 
+uint NiIntegerExtraData::GetData() const {
+	return integerData;
+}
+	
+void NiIntegerExtraData::SetData( uint n ) {
+	integerData = n;
+}
diff --git a/obj/NiIntegerExtraData.h b/obj/NiIntegerExtraData.h
index d354ee73..c581004a 100644
--- a/obj/NiIntegerExtraData.h
+++ b/obj/NiIntegerExtraData.h
@@ -30,6 +30,10 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	uint GetData() const;
+	void SetData( uint n );
+
 protected:
 	NI_INTEGER_EXTRA_DATA_MEMBERS
 };
diff --git a/obj/NiIntegersExtraData.cpp b/obj/NiIntegersExtraData.cpp
index 2c74ab04..5b9cc50a 100644
--- a/obj/NiIntegersExtraData.cpp
+++ b/obj/NiIntegersExtraData.cpp
@@ -34,3 +34,11 @@ const Type & NiIntegersExtraData::GetType() const {
 	return TYPE;
 };
 
+vector<uint> NiIntegersExtraData::GetData() const {
+	return data;
+};
+	
+void NiIntegersExtraData::SetData( const vector<uint> & n ) {
+	numIntegers = uint( n.size() );
+	data = n;
+};
\ No newline at end of file
diff --git a/obj/NiIntegersExtraData.h b/obj/NiIntegersExtraData.h
index 22502a35..13c679da 100644
--- a/obj/NiIntegersExtraData.h
+++ b/obj/NiIntegersExtraData.h
@@ -30,6 +30,10 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	vector<uint> GetData() const;
+	void SetData( const vector<uint> & n );
+
 protected:
 	NI_INTEGERS_EXTRA_DATA_MEMBERS
 };
diff --git a/obj/NiKeyframeController.cpp b/obj/NiKeyframeController.cpp
index 1a22c4cf..026f17e4 100644
--- a/obj/NiKeyframeController.cpp
+++ b/obj/NiKeyframeController.cpp
@@ -35,3 +35,10 @@ const Type & NiKeyframeController::GetType() const {
 	return TYPE;
 };
 
+Ref<NiKeyframeData> NiKeyframeController::GetData() const {
+	return data;
+}
+	
+void NiKeyframeController::SetData( const Ref<NiKeyframeData> & n ) {
+	data = n;
+}
\ No newline at end of file
diff --git a/obj/NiKeyframeController.h b/obj/NiKeyframeController.h
index 56452349..a9aca36f 100644
--- a/obj/NiKeyframeController.h
+++ b/obj/NiKeyframeController.h
@@ -35,6 +35,10 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	Ref<NiKeyframeData> GetData() const;
+	void SetData( const Ref<NiKeyframeData> & n );
+
 protected:
 	NI_KEYFRAME_CONTROLLER_MEMBERS
 };
diff --git a/obj/NiLightColorController.cpp b/obj/NiLightColorController.cpp
index 9fedddac..45f30bda 100644
--- a/obj/NiLightColorController.cpp
+++ b/obj/NiLightColorController.cpp
@@ -36,3 +36,18 @@ const Type & NiLightColorController::GetType() const {
 	return TYPE;
 };
 
+Ref<NiPoint3Interpolator> NiLightColorController::GetInterpolator() const {
+	return interpolator;
+}
+
+void NiLightColorController::SetInterpolator( const Ref<NiPoint3Interpolator> & n ) {
+	interpolator = n;
+}
+
+Ref<NiPosData> NiLightColorController::GetData() const {
+	return data;
+}
+
+void NiLightColorController::SetData( const Ref<NiPosData> & n ) {
+	data = n;
+}
\ No newline at end of file
diff --git a/obj/NiLightColorController.h b/obj/NiLightColorController.h
index f2476d05..4d9e864c 100644
--- a/obj/NiLightColorController.h
+++ b/obj/NiLightColorController.h
@@ -35,6 +35,14 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+	//TODO: There is an item of unknown data in this class
+
+	Ref<NiPoint3Interpolator> GetInterpolator() const;
+	void SetInterpolator( const Ref<NiPoint3Interpolator> & n );
+
+	Ref<NiPosData> GetData() const;
+	void SetData( const Ref<NiPosData> & n );
+
 protected:
 	NI_LIGHT_COLOR_CONTROLLER_MEMBERS
 };
diff --git a/obj/NiParticleSystemController.h b/obj/NiParticleSystemController.h
index 9e185d02..c84f136e 100644
--- a/obj/NiParticleSystemController.h
+++ b/obj/NiParticleSystemController.h
@@ -38,6 +38,7 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+	//TODO:  This controller is not a priority and it has a lot of unknown data.
 protected:
 	NI_PARTICLE_SYSTEM_CONTROLLER_MEMBERS
 };
diff --git a/obj/NiPathController.cpp b/obj/NiPathController.cpp
index 80341c47..5c6dcc00 100644
--- a/obj/NiPathController.cpp
+++ b/obj/NiPathController.cpp
@@ -36,3 +36,18 @@ const Type & NiPathController::GetType() const {
 	return TYPE;
 };
 
+Ref<NiFloatData> NiPathController::GetFloatData() const {
+	return floatData;
+}
+
+void NiPathController::SetFloatData( const Ref<NiFloatData> & n ) {
+	floatData = n;
+}
+
+Ref<NiPosData> NiPathController::GetPosData() const {
+	return posData;
+}
+
+void NiPathController::SetPosData( const Ref<NiPosData> & n ) {
+	posData = n;
+}
diff --git a/obj/NiPathController.h b/obj/NiPathController.h
index 467e6eec..e15c7683 100644
--- a/obj/NiPathController.h
+++ b/obj/NiPathController.h
@@ -35,6 +35,13 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	//TODO:  This class has a lot of unknown data
+	Ref<NiFloatData> GetFloatData() const;
+	void SetFloatData( const Ref<NiFloatData> & n );
+
+	Ref<NiPosData> GetPosData() const;
+	void SetPosData( const Ref<NiPosData> & n );
 protected:
 	NI_PATH_CONTROLLER_MEMBERS
 };
diff --git a/obj/NiSingleInterpolatorController.cpp b/obj/NiSingleInterpolatorController.cpp
index 5010d257..a9853ce1 100644
--- a/obj/NiSingleInterpolatorController.cpp
+++ b/obj/NiSingleInterpolatorController.cpp
@@ -35,3 +35,10 @@ const Type & NiSingleInterpolatorController::GetType() const {
 	return TYPE;
 };
 
+Ref<NiInterpolator> NiSingleInterpolatorController::GetInterpolator() const {
+	return interpolator;
+}
+
+void NiSingleInterpolatorController::SetInterpolator( const Ref<NiInterpolator> & n ) {
+	interpolator = n;
+}
\ No newline at end of file
diff --git a/obj/NiSingleInterpolatorController.h b/obj/NiSingleInterpolatorController.h
index 7b9a89f2..1dd07a80 100644
--- a/obj/NiSingleInterpolatorController.h
+++ b/obj/NiSingleInterpolatorController.h
@@ -35,6 +35,9 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	Ref<NiInterpolator> GetInterpolator() const;
+	void SetInterpolator( const Ref<NiInterpolator> & n );
 protected:
 	NI_SINGLE_INTERPOLATOR_CONTROLLER_MEMBERS
 };
diff --git a/obj/NiStringExtraData.cpp b/obj/NiStringExtraData.cpp
index c060e7d0..f25175ec 100644
--- a/obj/NiStringExtraData.cpp
+++ b/obj/NiStringExtraData.cpp
@@ -34,4 +34,11 @@ const Type & NiStringExtraData::GetType() const {
 	return TYPE;
 };
 
-uint NiStringExtraData::BytesRemaining() const { return uint(); }
+string NiStringExtraData::GetData() const {
+	return stringData;
+}
+
+void NiStringExtraData::SetData( const string & n ) {
+	stringData = n;
+	bytesRemaining = uint(stringData.size()) + 4;
+}
\ No newline at end of file
diff --git a/obj/NiStringExtraData.h b/obj/NiStringExtraData.h
index a9bedaea..79949693 100644
--- a/obj/NiStringExtraData.h
+++ b/obj/NiStringExtraData.h
@@ -32,6 +32,10 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	string GetData() const;
+	void SetData( const string & n );
+
 protected:
 	uint BytesRemaining() const;
 	NI_STRING_EXTRA_DATA_MEMBERS
diff --git a/obj/NiStringsExtraData.cpp b/obj/NiStringsExtraData.cpp
index 8fdad714..428c98ce 100644
--- a/obj/NiStringsExtraData.cpp
+++ b/obj/NiStringsExtraData.cpp
@@ -34,3 +34,11 @@ const Type & NiStringsExtraData::GetType() const {
 	return TYPE;
 };
 
+vector<string> NiStringsExtraData::GetData() const {
+	return data;
+};
+	
+void NiStringsExtraData::SetData( const vector<string> & n ) {
+	numStrings = uint(n.size());
+	data = n;
+};
\ No newline at end of file
diff --git a/obj/NiStringsExtraData.h b/obj/NiStringsExtraData.h
index 97e98e51..6d556ac1 100644
--- a/obj/NiStringsExtraData.h
+++ b/obj/NiStringsExtraData.h
@@ -31,6 +31,10 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	vector<string> GetData() const;
+	void SetData( const vector<string> & n );
+
 protected:
 	NI_STRINGS_EXTRA_DATA_MEMBERS
 };
diff --git a/obj/NiTextKeyExtraData.h b/obj/NiTextKeyExtraData.h
index d5e229fc..7700fbf6 100644
--- a/obj/NiTextKeyExtraData.h
+++ b/obj/NiTextKeyExtraData.h
@@ -44,6 +44,8 @@ public:
 	 */
 	void SetKeys( vector< Key<string> > const & keys );
 
+	//TODO:  There is an unknown member in this class
+
 protected:
 	NI_TEXT_KEY_EXTRA_DATA_MEMBERS
 };
diff --git a/obj/NiUVController.cpp b/obj/NiUVController.cpp
index fc695ec5..4b03643c 100644
--- a/obj/NiUVController.cpp
+++ b/obj/NiUVController.cpp
@@ -35,3 +35,10 @@ const Type & NiUVController::GetType() const {
 	return TYPE;
 };
 
+Ref<NiUVData> NiUVController::GetData() const {
+	return data;
+}
+
+void NiUVController::SetData( const Ref<NiUVData> & n ) {
+	data = n;
+}
\ No newline at end of file
diff --git a/obj/NiUVController.h b/obj/NiUVController.h
index 39370212..329f74f9 100644
--- a/obj/NiUVController.h
+++ b/obj/NiUVController.h
@@ -34,6 +34,11 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	//TODO:  This class has an unknown member
+	Ref<NiUVData> GetData() const;
+	void SetData( const Ref<NiUVData> & n );
+
 protected:
 	NI_U_V_CONTROLLER_MEMBERS
 };
diff --git a/obj/NiVectorExtraData.cpp b/obj/NiVectorExtraData.cpp
index 6169226c..134301b9 100644
--- a/obj/NiVectorExtraData.cpp
+++ b/obj/NiVectorExtraData.cpp
@@ -34,3 +34,11 @@ const Type & NiVectorExtraData::GetType() const {
 	return TYPE;
 };
 
+Vector3 NiVectorExtraData::GetData() const {
+	return vectorData;
+};
+	
+void NiVectorExtraData::SetData( const Vector3 & n ) {
+	vectorData = n;
+};
+
diff --git a/obj/NiVectorExtraData.h b/obj/NiVectorExtraData.h
index e50e2398..8f3b007e 100644
--- a/obj/NiVectorExtraData.h
+++ b/obj/NiVectorExtraData.h
@@ -30,6 +30,11 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	Vector3 GetData() const;
+	void SetData( const Vector3 & n );
+
+	//TODO:  There is an unknown member in this class
 protected:
 	NI_VECTOR_EXTRA_DATA_MEMBERS
 };
diff --git a/obj/NiVertWeightsExtraData.cpp b/obj/NiVertWeightsExtraData.cpp
index 7544bd0e..98558aab 100644
--- a/obj/NiVertWeightsExtraData.cpp
+++ b/obj/NiVertWeightsExtraData.cpp
@@ -34,3 +34,12 @@ const Type & NiVertWeightsExtraData::GetType() const {
 	return TYPE;
 };
 
+vector<float> NiVertWeightsExtraData::GetData() const {
+	return weight;
+}
+	
+void NiVertWeightsExtraData::SetData( const vector<float> & n ) {
+	numVertices = uint(n.size());
+	numBytes = numVertices + 2;
+	weight = n;
+}
diff --git a/obj/NiVertWeightsExtraData.h b/obj/NiVertWeightsExtraData.h
index 6b9c8c33..5f2375cf 100644
--- a/obj/NiVertWeightsExtraData.h
+++ b/obj/NiVertWeightsExtraData.h
@@ -31,6 +31,10 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	vector<float> GetData() const;
+	void SetData( const vector<float> & n );
+
 protected:
 	NI_VERT_WEIGHTS_EXTRA_DATA_MEMBERS
 };
diff --git a/obj/bhkBlendController.h b/obj/bhkBlendController.h
index bbd7319a..92ce9146 100644
--- a/obj/bhkBlendController.h
+++ b/obj/bhkBlendController.h
@@ -31,6 +31,8 @@ public:
 	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version );
 	virtual list<NiObjectRef> GetRefs() const;
 	virtual const Type & GetType() const;
+
+	//TODO:  This is not a priority but needs to be implemented eventually
 protected:
 	BHK_BLEND_CONTROLLER_MEMBERS
 };
-- 
GitLab