diff --git a/include/obj/NiGeometry.h b/include/obj/NiGeometry.h
index 9ec92b1e2edc3efc83b83e9bb28d1fcb4f53034d..2b184f22deab53f45b5c18d52b1abf84bc264213 100644
--- a/include/obj/NiGeometry.h
+++ b/include/obj/NiGeometry.h
@@ -153,6 +153,18 @@ public:
 	 */
 	NIFLIB_API bool IsSkin();
 
+   // Active Material.
+   // \return The current value.
+   NIFLIB_API int GetActiveMaterial() const;
+
+   // Active Material.
+   // \param[in] value The new value.
+   NIFLIB_API void SetActiveMaterial( int value );
+
+   // Shader.
+   // \return The current value.
+   NIFLIB_API bool HasShader() const;
+
 	//--END CUSTOM CODE--//
 protected:
 	/*! Data index (NiTriShapeData/NiTriStripData). */
diff --git a/src/obj/NiGeometry.cpp b/src/obj/NiGeometry.cpp
index f470eb86201d1799cdb0ee1de0d2f399edda3fef..f97c465c47b519ad55b0000687fa90f35fd63a2c 100644
--- a/src/obj/NiGeometry.cpp
+++ b/src/obj/NiGeometry.cpp
@@ -24,7 +24,7 @@ using namespace Niflib;
 //Definition of TYPE constant
 const Type NiGeometry::TYPE("NiGeometry", &NiAVObject::TYPE );
 
-NiGeometry::NiGeometry() : data(NULL), skinInstance(NULL), numMaterials((unsigned int)0), activeMaterial((int)-1), hasShader(false), unknownInteger((int)0), unknownByte((byte)255), dirtyFlag(false) {
+NiGeometry::NiGeometry() : data(NULL), skinInstance(NULL), numMaterials((unsigned int)0), activeMaterial((int)0), hasShader(false), unknownInteger((int)0), unknownByte((byte)255), dirtyFlag(false) {
 	//--BEGIN CONSTRUCTOR CUSTOM CODE--//
 	//--END CUSTOM CODE--//
 }
@@ -541,4 +541,17 @@ void NiGeometry::SetBoneWeights( unsigned int bone_index, const vector<SkinWeigh
 	skinData->SetBoneWeights( bone_index, n, center, radius );
 }
 
+int NiGeometry::GetActiveMaterial() const {
+   return activeMaterial;
+}
+
+void NiGeometry::SetActiveMaterial( int value ) {
+   activeMaterial = value;
+}
+
+bool NiGeometry::HasShader() const {
+   return hasShader;
+}
+
+
 //--END CUSTOM CODE--//