diff --git a/HGamer3D-Ogre-Binding.cabal b/HGamer3D-Ogre-Binding.cabal
--- a/HGamer3D-Ogre-Binding.cabal
+++ b/HGamer3D-Ogre-Binding.cabal
@@ -1,5 +1,5 @@
 Name:                HGamer3D-Ogre-Binding
-Version:             0.3.1
+Version:             0.3.2
 Synopsis:            Ogre Binding for HGamer3D
 Description:         
    HGamer3D is a game engine for developing 3D games in the programming 
@@ -18,7 +18,7 @@
 Cabal-Version:       >=1.4
 Homepage:            http://www.hgamer3d.org
 Category:            Game Engine, Graphics
-Extra-source-files:  Setup.hs, include/WindowUtilsHG3D.h, include/quaternion_struct.h, include/sharedptr_struct.h, include/radian_struct.h, include/vector2_struct.h, include/vector4_struct.h, include/hg3dstruct.h, include/vector3_struct.h, include/colorvalue_struct.h, include/degree_struct.h
+Extra-source-files:  Setup.hs, include/EnumAnimationRotationInterpolationMode.h, include/ClassTimeIndex.h, include/EnumSceneManagerIlluminationRenderStage.h, include/ClassSkeleton.h, include/ClassArchive.h, include/StructHG3DClass.h, include/EnumRenderTargetFrameBuffer.h, include/ClassBillboardSet.h, include/EnumSkeletonAnimationBlendMode.h, include/StructDegrees.h, include/EnumSceneType.h, include/HG3DUtilities.h, include/EnumAxisAlignedBoxCorner.h, include/ClassBillboardSetFactory.h, include/ClassBillboardChainFactory.h, include/EnumOrientationMode.h, include/ClassManualObject.h, include/ClassVertexAnimationTrack.h, include/EnumRootFrameEventTimeType.h, include/EnumRenderOperationOperationType.h, include/ClassManualObjectSection.h, include/StructColour.h, include/ClassResourceGroupManager.h, include/ClassNumericAnimationTrack.h, include/StructVec3.h, include/ClassException.h, include/StructVec2.h, include/ClassTextureManager.h, include/ClassBillboardChain.h, include/EnumSceneManagerPrefabType.h, include/ClassMaterialManager.h, include/EnumSceneManagerSpecialCaseRenderQueueMode.h, include/ClassLight.h, include/ClassAnimationState.h, include/ClassMovableObject.h, include/ClassBone.h, include/ClassAnimation.h, include/ClassRenderTarget.h, include/ClassRenderTexture.h, include/EnumTexCoordCalcMethod.h, include/StructSharedPtr.h, include/ClassRenderSystem.h, include/EnumDataStreamAccessMode.h, include/EnumAnimationInterpolationMode.h, include/ClassMesh.h, include/ClassSceneManager.h, include/EnumGpuProgramType.h, include/ClassRenderable.h, include/ClassNode.h, include/ClassMultiRenderTarget.h, include/EnumLogMessageLevel.h, include/ClassEntityFactory.h, include/ClassAnimationStateSet.h, include/EnumNodeTransformSpace.h, include/ClassSceneManagerFactory.h, include/EnumBillboardRotationType.h, include/EnumProjectionType.h, include/ClassArchiveManager.h, include/EnumMathAngleUnit.h, include/ClassSkeletonManager.h, include/EnumFrustumPlane.h, include/EnumVertexAnimationType.h, include/EnumLoggingLevel.h, include/EnumStencilOperation.h, include/ClassSceneNode.h, include/ClassControllerManager.h, include/ClassManualObjectFactory.h, include/ClassResource.h, include/OgreDllDefines.h, include/ClassLightFactory.h, include/ClassBillboard.h, include/ClassResourceManager.h, include/EnumBillboardOrigin.h, include/StructQuaternion.h, include/ClassFrustum.h, include/ClassNodeAnimationTrack.h, include/EnumBillboardChainTexCoordDirection.h, include/EnumSceneManagerBoxPlane.h, include/ClassEntity.h, include/EnumAxisAlignedBoxExtent.h, include/ClassWindowEventUtilities.h, include/ClassConfigFile.h, include/EnumEntityVertexDataBindChoice.h, include/EnumRenderTargetStatFlags.h, include/EnumBillboardType.h, include/ClassLogManager.h, include/ClassPtr.h, include/StructRadians.h, include/EnumVertexAnimationTrackTargetMode.h, include/ClassCamera.h, include/ClassHG3DUtilities.h, include/ClassRoot.h, include/ClassMovableObjectFactory.h, include/EnumExceptionCode.h, include/ClassViewport.h, include/ClassAnimationTrack.h, include/ClassRenderWindow.h, include/EnumMeshManagerMeshBuildType.h, include/ClassMaterial.h, include/ClassLog.h, include/EnumLightType.h, include/ClassMeshManager.h
 
 Library
   Build-Depends:     base >= 3 && < 5, transformers>=0.3.0,mtl, HGamer3D-Data >= 0.3.0
@@ -33,6 +33,6 @@
   Build-tools:       
   build-depends:     
   if os(windows)
-     extra-libraries:   hg3dogre031
+     extra-libraries:   hg3dogre032
   else
-     extra-libraries:   hg3dogre031,OgreMain,OgrePaging,OgreProperty,OgreRTShaderSystem,OgreTerrain
+     extra-libraries:   hg3dogre032,OgreMain,OgrePaging,OgreProperty,OgreRTShaderSystem,OgreTerrain
diff --git a/include/ClassAnimation.h b/include/ClassAnimation.h
new file mode 100644
--- /dev/null
+++ b/include/ClassAnimation.h
@@ -0,0 +1,165 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassAnimation.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassAnimation
+#define _DEFINED_HG3D_ClassAnimation
+
+#include "ClassPtr.h"
+#include "ClassNodeAnimationTrack.h"
+#include "ClassNumericAnimationTrack.h"
+#include "ClassVertexAnimationTrack.h"
+#include "EnumVertexAnimationType.h"
+#include "ClassNode.h"
+#include "ClassSkeleton.h"
+#include "ClassEntity.h"
+#include "EnumAnimationInterpolationMode.h"
+#include "EnumAnimationRotationInterpolationMode.h"
+
+
+// 
+void ogre_anm_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_anm_getName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_anm_getLength(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_anm_setLength(struct hg3dclass_struct * thisclass_c, float len_c);
+
+// 
+void ogre_anm_createNodeTrack(struct hg3dclass_struct * thisclass_c, unsigned short handle_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_anm_createNumericTrack(struct hg3dclass_struct * thisclass_c, unsigned short handle_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_anm_createVertexTrack(struct hg3dclass_struct * thisclass_c, unsigned short handle_c, enum EnumVertexAnimationType animType_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_anm_createNodeTrack2(struct hg3dclass_struct * thisclass_c, unsigned short handle_c, struct hg3dclass_struct * node_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_anm_getNumNodeTracks(struct hg3dclass_struct * thisclass_c, unsigned short * result_c);
+
+// 
+void ogre_anm_getNodeTrack(struct hg3dclass_struct * thisclass_c, unsigned short handle_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_anm_hasNodeTrack(struct hg3dclass_struct * thisclass_c, unsigned short handle_c, int * result_c);
+
+// 
+void ogre_anm_getNumNumericTracks(struct hg3dclass_struct * thisclass_c, unsigned short * result_c);
+
+// 
+void ogre_anm_getNumericTrack(struct hg3dclass_struct * thisclass_c, unsigned short handle_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_anm_hasNumericTrack(struct hg3dclass_struct * thisclass_c, unsigned short handle_c, int * result_c);
+
+// 
+void ogre_anm_getNumVertexTracks(struct hg3dclass_struct * thisclass_c, unsigned short * result_c);
+
+// 
+void ogre_anm_getVertexTrack(struct hg3dclass_struct * thisclass_c, unsigned short handle_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_anm_hasVertexTrack(struct hg3dclass_struct * thisclass_c, unsigned short handle_c, int * result_c);
+
+// 
+void ogre_anm_destroyNodeTrack(struct hg3dclass_struct * thisclass_c, unsigned short handle_c);
+
+// 
+void ogre_anm_destroyNumericTrack(struct hg3dclass_struct * thisclass_c, unsigned short handle_c);
+
+// 
+void ogre_anm_destroyVertexTrack(struct hg3dclass_struct * thisclass_c, unsigned short handle_c);
+
+// 
+void ogre_anm_destroyAllTracks(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_anm_destroyAllNodeTracks(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_anm_destroyAllNumericTracks(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_anm_destroyAllVertexTracks(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_anm_apply(struct hg3dclass_struct * thisclass_c, float timePos_c, float weight_c, float scale_c);
+
+// 
+void ogre_anm_applyToNode(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * node_c, float timePos_c, float weight_c, float scale_c);
+
+// 
+void ogre_anm_apply2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * skeleton_c, float timePos_c, float weight_c, float scale_c);
+
+// 
+void ogre_anm_apply4(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * entity_c, float timePos_c, float weight_c, int software_c, int hardware_c);
+
+// 
+void ogre_anm_setInterpolationMode(struct hg3dclass_struct * thisclass_c, enum EnumAnimationInterpolationMode im_c);
+
+// 
+void ogre_anm_getInterpolationMode(struct hg3dclass_struct * thisclass_c, enum EnumAnimationInterpolationMode * result_c);
+
+// 
+void ogre_anm_setRotationInterpolationMode(struct hg3dclass_struct * thisclass_c, enum EnumAnimationRotationInterpolationMode im_c);
+
+// 
+void ogre_anm_getRotationInterpolationMode(struct hg3dclass_struct * thisclass_c, enum EnumAnimationRotationInterpolationMode * result_c);
+
+// 
+void ogre_anm_optimise(struct hg3dclass_struct * thisclass_c, int discardIdentityNodeTracks_c);
+
+// 
+void ogre_anm_clone(struct hg3dclass_struct * thisclass_c, char * newName_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_anm_setUseBaseKeyFrame(struct hg3dclass_struct * thisclass_c, int useBaseKeyFrame_c, float keyframeTime_c, char * baseAnimName_c);
+
+// 
+void ogre_anm_getUseBaseKeyFrame(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_anm_getBaseKeyFrameTime(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_anm_getBaseKeyFrameAnimationName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_anm_setDefaultInterpolationMode(enum EnumAnimationInterpolationMode im_c);
+
+// 
+void ogre_anm_getDefaultInterpolationMode(enum EnumAnimationInterpolationMode * result_c);
+
+// 
+void ogre_anm_setDefaultRotationInterpolationMode(enum EnumAnimationRotationInterpolationMode im_c);
+
+// 
+void ogre_anm_getDefaultRotationInterpolationMode(enum EnumAnimationRotationInterpolationMode * result_c);
+
+#endif 
diff --git a/include/ClassAnimationState.h b/include/ClassAnimationState.h
new file mode 100644
--- /dev/null
+++ b/include/ClassAnimationState.h
@@ -0,0 +1,97 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassAnimationState.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassAnimationState
+#define _DEFINED_HG3D_ClassAnimationState
+
+#include "ClassPtr.h"
+#include "ClassAnimationStateSet.h"
+
+
+// 
+void ogre_anms_construct(char * animName_c, struct hg3dclass_struct * parent_c, float timePos_c, float length_c, float weight_c, int enabled_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_anms_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Gets the name of the animation to which this state applies. 
+void ogre_anms_getAnimationName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// Gets the time position for this animation. 
+void ogre_anms_getTimePosition(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Sets the time position for this animation. 
+void ogre_anms_setTimePosition(struct hg3dclass_struct * thisclass_c, float timePos_c);
+
+// Gets the total length of this animation (may be shorter than whole animation) 
+void ogre_anms_getLength(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Sets the total length of this animation (may be shorter than whole animation) 
+void ogre_anms_setLength(struct hg3dclass_struct * thisclass_c, float len_c);
+
+// Gets the weight (influence) of this animation. 
+void ogre_anms_getWeight(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Sets the weight (influence) of this animation. 
+void ogre_anms_setWeight(struct hg3dclass_struct * thisclass_c, float weight_c);
+
+// 
+void ogre_anms_addTime(struct hg3dclass_struct * thisclass_c, float offset_c);
+
+// Returns true if the animation has reached the end and is not looping. 
+void ogre_anms_hasEnded(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Returns true if this animation is currently enabled. 
+void ogre_anms_getEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Sets whether this animation is enabled. 
+void ogre_anms_setEnabled(struct hg3dclass_struct * thisclass_c, int enabled_c);
+
+// 
+void ogre_anms_setLoop(struct hg3dclass_struct * thisclass_c, int loop_c);
+
+// Gets whether or not this animation loops. 
+void ogre_anms_getLoop(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_anms_copyStateFrom(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * animState_c);
+
+// Get the parent animation state set. 
+void ogre_anms_getParent(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Create a new blend mask with the given number of entries. 
+void ogre_anms_createBlendMask(struct hg3dclass_struct * thisclass_c, int blendMaskSizeHint_c, float initialWeight_c);
+
+// Destroy the currently set blend mask. 
+void ogre_anms_destroyBlendMask(struct hg3dclass_struct * thisclass_c);
+
+// Return whether there is currently a valid blend mask set. 
+void ogre_anms_hasBlendMask(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Set the weight for the bone identified by the given handle. 
+void ogre_anms_setBlendMaskEntry(struct hg3dclass_struct * thisclass_c, int boneHandle_c, float weight_c);
+
+// Get the weight for the bone identified by the given handle. 
+void ogre_anms_getBlendMaskEntry(struct hg3dclass_struct * thisclass_c, int boneHandle_c, float * result_c);
+
+#endif 
diff --git a/include/ClassAnimationStateSet.h b/include/ClassAnimationStateSet.h
new file mode 100644
--- /dev/null
+++ b/include/ClassAnimationStateSet.h
@@ -0,0 +1,55 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassAnimationStateSet.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassAnimationStateSet
+#define _DEFINED_HG3D_ClassAnimationStateSet
+
+#include "ClassPtr.h"
+#include "ClassAnimationState.h"
+
+
+// 
+void ogre_ass_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_ass_createAnimationState(struct hg3dclass_struct * thisclass_c, char * animName_c, float timePos_c, float length_c, float weight_c, int enabled_c, struct hg3dclass_struct * result_c);
+
+// Get an animation state by the name of the animation. 
+void ogre_ass_getAnimationState(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Tests if state for the named animation is present. 
+void ogre_ass_hasAnimationState(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// Remove animation state with the given name. 
+void ogre_ass_removeAnimationState(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// Remove all animation states. 
+void ogre_ass_removeAllAnimationStates(struct hg3dclass_struct * thisclass_c);
+
+// Copy the state of any matching animation states from this to another. 
+void ogre_ass_copyMatchingState(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * target_c);
+
+// Tests if exists enabled animation state in this set. 
+void ogre_ass_hasEnabledAnimationState(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+#endif 
diff --git a/include/ClassAnimationTrack.h b/include/ClassAnimationTrack.h
new file mode 100644
--- /dev/null
+++ b/include/ClassAnimationTrack.h
@@ -0,0 +1,59 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassAnimationTrack.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassAnimationTrack
+#define _DEFINED_HG3D_ClassAnimationTrack
+
+#include "ClassPtr.h"
+#include "ClassTimeIndex.h"
+#include "ClassAnimation.h"
+
+
+// 
+void ogre_at_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_at_getHandle(struct hg3dclass_struct * thisclass_c, unsigned short * result_c);
+
+// 
+void ogre_at_getNumKeyFrames(struct hg3dclass_struct * thisclass_c, unsigned short * result_c);
+
+// 
+void ogre_at_removeKeyFrame(struct hg3dclass_struct * thisclass_c, unsigned short index_c);
+
+// 
+void ogre_at_removeAllKeyFrames(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_at_apply(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * timeIndex_c, float weight_c, float scale_c);
+
+// 
+void ogre_at_hasNonZeroKeyFrames(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_at_optimise(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_at_getParent(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+#endif 
diff --git a/include/ClassArchive.h b/include/ClassArchive.h
new file mode 100644
--- /dev/null
+++ b/include/ClassArchive.h
@@ -0,0 +1,57 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassArchive.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassArchive
+#define _DEFINED_HG3D_ClassArchive
+
+#include "ClassPtr.h"
+
+
+// 
+void ogre_arch_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Get the name of this archive. 
+void ogre_arch_getName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// Returns whether this archive is case sensitive in the way it matches files. 
+void ogre_arch_isCaseSensitive(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_arch_load(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_arch_unload(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_arch_isReadOnly(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_arch_remove(struct hg3dclass_struct * thisclass_c, char * filename_c);
+
+// 
+void ogre_arch_exists(struct hg3dclass_struct * thisclass_c, char * filename_c, int * result_c);
+
+// Return the type code of this Archive
+void ogre_arch_getType(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+#endif 
diff --git a/include/ClassArchiveManager.h b/include/ClassArchiveManager.h
new file mode 100644
--- /dev/null
+++ b/include/ClassArchiveManager.h
@@ -0,0 +1,49 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassArchiveManager.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassArchiveManager
+#define _DEFINED_HG3D_ClassArchiveManager
+
+#include "ClassPtr.h"
+#include "ClassArchive.h"
+
+
+// 
+void ogre_archm_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_archm_load(struct hg3dclass_struct * thisclass_c, char * filename_c, char * archiveType_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_archm_unload(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * arch_c);
+
+// 
+void ogre_archm_unload2(struct hg3dclass_struct * thisclass_c, char * filename_c);
+
+// 
+void ogre_archm_getSingleton(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_archm_getSingletonPtr(struct hg3dclass_struct * result_c);
+
+#endif 
diff --git a/include/ClassBillboard.h b/include/ClassBillboard.h
new file mode 100644
--- /dev/null
+++ b/include/ClassBillboard.h
@@ -0,0 +1,87 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassBillboard.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassBillboard
+#define _DEFINED_HG3D_ClassBillboard
+
+#include "ClassPtr.h"
+#include "StructRadians.h"
+#include "StructVec3.h"
+#include "StructColour.h"
+
+
+// 
+void ogre_bbd_construct(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_bbd_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_bbd_getRotation(struct hg3dclass_struct * thisclass_c, struct radian_struct * result_c);
+
+// 
+void ogre_bbd_setRotation(struct hg3dclass_struct * thisclass_c, struct radian_struct * rotation_c);
+
+// 
+void ogre_bbd_setPosition(struct hg3dclass_struct * thisclass_c, struct vector3_struct * position_c);
+
+// 
+void ogre_bbd_setPosition2(struct hg3dclass_struct * thisclass_c, float x_c, float y_c, float z_c);
+
+// 
+void ogre_bbd_getPosition(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_bbd_setDimensions(struct hg3dclass_struct * thisclass_c, float width_c, float height_c);
+
+// 
+void ogre_bbd_resetDimensions(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_bbd_setColour(struct hg3dclass_struct * thisclass_c, struct colourvalue_struct * colour_c);
+
+// 
+void ogre_bbd_getColour(struct hg3dclass_struct * thisclass_c, struct colourvalue_struct * result_c);
+
+// 
+void ogre_bbd_hasOwnDimensions(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_bbd_getOwnWidth(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_bbd_getOwnHeight(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_bbd_isUseTexcoordRect(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_bbd_setTexcoordIndex(struct hg3dclass_struct * thisclass_c, unsigned short texcoordIndex_c);
+
+// 
+void ogre_bbd_getTexcoordIndex(struct hg3dclass_struct * thisclass_c, unsigned short * result_c);
+
+// 
+void ogre_bbd_setTexcoordRect2(struct hg3dclass_struct * thisclass_c, float u0_c, float v0_c, float u1_c, float v1_c);
+
+#endif 
diff --git a/include/ClassBillboardChain.h b/include/ClassBillboardChain.h
new file mode 100644
--- /dev/null
+++ b/include/ClassBillboardChain.h
@@ -0,0 +1,114 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassBillboardChain.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassBillboardChain
+#define _DEFINED_HG3D_ClassBillboardChain
+
+#include "ClassPtr.h"
+#include "EnumBillboardChainTexCoordDirection.h"
+#include "StructVec3.h"
+#include "ClassCamera.h"
+#include "StructSharedPtr.h"
+#include "ClassSceneManager.h"
+#include "ClassRenderSystem.h"
+
+
+// destructor 
+void ogre_bbdc_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_bbdc_setMaxChainElements(struct hg3dclass_struct * thisclass_c, int maxElements_c);
+
+// 
+void ogre_bbdc_getMaxChainElements(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_bbdc_setNumberOfChains(struct hg3dclass_struct * thisclass_c, int numChains_c);
+
+// 
+void ogre_bbdc_getNumberOfChains(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_bbdc_setUseTextureCoords(struct hg3dclass_struct * thisclass_c, int use_c);
+
+// 
+void ogre_bbdc_getUseTextureCoords(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_bbdc_setTextureCoordDirection(struct hg3dclass_struct * thisclass_c, enum EnumBillboardChainTexCoordDirection dir_c);
+
+// 
+void ogre_bbdc_getTextureCoordDirection(struct hg3dclass_struct * thisclass_c, enum EnumBillboardChainTexCoordDirection * result_c);
+
+// 
+void ogre_bbdc_setOtherTextureCoordRange(struct hg3dclass_struct * thisclass_c, float start_c, float end_c);
+
+// 
+void ogre_bbdc_setUseVertexColours(struct hg3dclass_struct * thisclass_c, int use_c);
+
+// 
+void ogre_bbdc_getUseVertexColours(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_bbdc_setDynamic(struct hg3dclass_struct * thisclass_c, int dyn_c);
+
+// 
+void ogre_bbdc_getDynamic(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_bbdc_removeChainElement(struct hg3dclass_struct * thisclass_c, int chainIndex_c);
+
+// 
+void ogre_bbdc_getNumChainElements(struct hg3dclass_struct * thisclass_c, int chainIndex_c, int * result_c);
+
+// 
+void ogre_bbdc_clearChain(struct hg3dclass_struct * thisclass_c, int chainIndex_c);
+
+// 
+void ogre_bbdc_clearAllChains(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_bbdc_setFaceCamera(struct hg3dclass_struct * thisclass_c, int faceCamera_c, struct vector3_struct * normalVector_c);
+
+// Get the material name in use. 
+void ogre_bbdc_getMaterialName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// Set the material name to use for rendering. 
+void ogre_bbdc_setMaterialName(struct hg3dclass_struct * thisclass_c, char * name_c, char * groupName_c);
+
+// 
+void ogre_bbdc_getSquaredViewDepth(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * cam_c, float * result_c);
+
+// 
+void ogre_bbdc_getBoundingRadius(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_bbdc_getMaterial(struct hg3dclass_struct * thisclass_c, struct sharedptr_struct * result_c);
+
+// 
+void ogre_bbdc_getMovableType(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_bbdc_preRender(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * sm_c, struct hg3dclass_struct * rsys_c, int * result_c);
+
+#endif 
diff --git a/include/ClassBillboardChainFactory.h b/include/ClassBillboardChainFactory.h
new file mode 100644
--- /dev/null
+++ b/include/ClassBillboardChainFactory.h
@@ -0,0 +1,43 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassBillboardChainFactory.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassBillboardChainFactory
+#define _DEFINED_HG3D_ClassBillboardChainFactory
+
+#include "ClassPtr.h"
+#include "ClassMovableObject.h"
+
+
+// 
+void ogre_bbdcf_construct(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_bbdcf_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Get the type of the object to be created. 
+void ogre_bbdcf_getType(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_bbdcf_destroyInstance(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * obj_c);
+
+#endif 
diff --git a/include/ClassBillboardSet.h b/include/ClassBillboardSet.h
new file mode 100644
--- /dev/null
+++ b/include/ClassBillboardSet.h
@@ -0,0 +1,191 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassBillboardSet.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassBillboardSet
+#define _DEFINED_HG3D_ClassBillboardSet
+
+#include "ClassPtr.h"
+#include "ClassBillboard.h"
+#include "StructVec3.h"
+#include "StructColour.h"
+#include "EnumBillboardOrigin.h"
+#include "EnumBillboardRotationType.h"
+#include "StructSharedPtr.h"
+#include "EnumBillboardType.h"
+#include "ClassCamera.h"
+
+
+// 
+void ogre_bbs_construct(char * name_c, unsigned int poolSize_c, int externalDataSource_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_bbs_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_bbs_createBillboard(struct hg3dclass_struct * thisclass_c, struct vector3_struct * position_c, struct colourvalue_struct * colour_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_bbs_createBillboard2(struct hg3dclass_struct * thisclass_c, float x_c, float y_c, float z_c, struct colourvalue_struct * colour_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_bbs_getNumBillboards(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_bbs_setAutoextend(struct hg3dclass_struct * thisclass_c, int autoextend_c);
+
+// 
+void ogre_bbs_getAutoextend(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_bbs_setSortingEnabled(struct hg3dclass_struct * thisclass_c, int sortenable_c);
+
+// 
+void ogre_bbs_getSortingEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_bbs_setPoolSize(struct hg3dclass_struct * thisclass_c, int size_c);
+
+// 
+void ogre_bbs_getPoolSize(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_bbs_clear(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_bbs_getBillboard(struct hg3dclass_struct * thisclass_c, unsigned int index_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_bbs_removeBillboard(struct hg3dclass_struct * thisclass_c, unsigned int index_c);
+
+// 
+void ogre_bbs_removeBillboard2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * pBill_c);
+
+// 
+void ogre_bbs_setBillboardOrigin(struct hg3dclass_struct * thisclass_c, enum EnumBillboardOrigin origin_c);
+
+// 
+void ogre_bbs_getBillboardOrigin(struct hg3dclass_struct * thisclass_c, enum EnumBillboardOrigin * result_c);
+
+// 
+void ogre_bbs_setBillboardRotationType(struct hg3dclass_struct * thisclass_c, enum EnumBillboardRotationType rotationType_c);
+
+// 
+void ogre_bbs_getBillboardRotationType(struct hg3dclass_struct * thisclass_c, enum EnumBillboardRotationType * result_c);
+
+// 
+void ogre_bbs_setDefaultDimensions(struct hg3dclass_struct * thisclass_c, float width_c, float height_c);
+
+// 
+void ogre_bbs_setDefaultWidth(struct hg3dclass_struct * thisclass_c, float width_c);
+
+// 
+void ogre_bbs_getDefaultWidth(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_bbs_setDefaultHeight(struct hg3dclass_struct * thisclass_c, float height_c);
+
+// 
+void ogre_bbs_getDefaultHeight(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_bbs_setMaterialName(struct hg3dclass_struct * thisclass_c, char * name_c, char * groupName_c);
+
+// 
+void ogre_bbs_getMaterialName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_bbs_beginBillboards(struct hg3dclass_struct * thisclass_c, int numBillboards_c);
+
+// 
+void ogre_bbs_injectBillboard(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * bb_c);
+
+// 
+void ogre_bbs_endBillboards(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_bbs_getBoundingRadius(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_bbs_getMaterial(struct hg3dclass_struct * thisclass_c, struct sharedptr_struct * result_c);
+
+// 
+void ogre_bbs_setMaterial(struct hg3dclass_struct * thisclass_c, struct sharedptr_struct * material_c);
+
+// 
+void ogre_bbs_getCullIndividually(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_bbs_setCullIndividually(struct hg3dclass_struct * thisclass_c, int cullIndividual_c);
+
+// 
+void ogre_bbs_setBillboardType(struct hg3dclass_struct * thisclass_c, enum EnumBillboardType bbt_c);
+
+// 
+void ogre_bbs_getBillboardType(struct hg3dclass_struct * thisclass_c, enum EnumBillboardType * result_c);
+
+// 
+void ogre_bbs_setCommonDirection(struct hg3dclass_struct * thisclass_c, struct vector3_struct * vec_c);
+
+// 
+void ogre_bbs_getCommonDirection(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_bbs_setCommonUpVector(struct hg3dclass_struct * thisclass_c, struct vector3_struct * vec_c);
+
+// 
+void ogre_bbs_getCommonUpVector(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_bbs_setUseAccurateFacing(struct hg3dclass_struct * thisclass_c, int acc_c);
+
+// 
+void ogre_bbs_getUseAccurateFacing(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_bbs_getMovableType(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_bbs_getSquaredViewDepth(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * cam_c, float * result_c);
+
+// 
+void ogre_bbs_setBillboardsInWorldSpace(struct hg3dclass_struct * thisclass_c, int ws_c);
+
+// 
+void ogre_bbs_setPointRenderingEnabled(struct hg3dclass_struct * thisclass_c, int enabled_c);
+
+// 
+void ogre_bbs_isPointRenderingEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Override to return specific type flag. 
+void ogre_bbs_getTypeFlags(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_bbs_setAutoUpdate(struct hg3dclass_struct * thisclass_c, int autoUpdate_c);
+
+// 
+void ogre_bbs_getAutoUpdate(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_bbs_notifyBillboardDataChanged(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassBillboardSetFactory.h b/include/ClassBillboardSetFactory.h
new file mode 100644
--- /dev/null
+++ b/include/ClassBillboardSetFactory.h
@@ -0,0 +1,43 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassBillboardSetFactory.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassBillboardSetFactory
+#define _DEFINED_HG3D_ClassBillboardSetFactory
+
+#include "ClassPtr.h"
+#include "ClassMovableObject.h"
+
+
+// 
+void ogre_bbsf_construct(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_bbsf_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Get the type of the object to be created. 
+void ogre_bbsf_getType(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_bbsf_destroyInstance(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * obj_c);
+
+#endif 
diff --git a/include/ClassBone.h b/include/ClassBone.h
new file mode 100644
--- /dev/null
+++ b/include/ClassBone.h
@@ -0,0 +1,56 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassBone.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassBone
+#define _DEFINED_HG3D_ClassBone
+
+#include "ClassPtr.h"
+#include "StructVec3.h"
+#include "StructQuaternion.h"
+
+
+// 
+void ogre_bn_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_bn_createChild(struct hg3dclass_struct * thisclass_c, unsigned short handle_c, struct vector3_struct * translate_c, struct quaternion_struct * rotate_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_bn_getHandle(struct hg3dclass_struct * thisclass_c, unsigned short * result_c);
+
+// 
+void ogre_bn_setBindingPose(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_bn_reset(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_bn_setManuallyControlled(struct hg3dclass_struct * thisclass_c, int manuallyControlled_c);
+
+// 
+void ogre_bn_isManuallyControlled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_bn_needUpdate(struct hg3dclass_struct * thisclass_c, int forceParentUpdate_c);
+
+#endif 
diff --git a/include/ClassCamera.h b/include/ClassCamera.h
new file mode 100644
--- /dev/null
+++ b/include/ClassCamera.h
@@ -0,0 +1,222 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassCamera.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassCamera
+#define _DEFINED_HG3D_ClassCamera
+
+#include "ClassPtr.h"
+#include "ClassSceneManager.h"
+#include "StructVec3.h"
+#include "StructRadians.h"
+#include "StructQuaternion.h"
+#include "ClassSceneNode.h"
+#include "ClassViewport.h"
+#include "ClassFrustum.h"
+#include "EnumFrustumPlane.h"
+
+
+// 
+void ogre_cam_construct(char * name_c, struct hg3dclass_struct * sm_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_cam_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_cam_getSceneManager(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_cam_setPosition(struct hg3dclass_struct * thisclass_c, float x_c, float y_c, float z_c);
+
+// 
+void ogre_cam_setPosition2(struct hg3dclass_struct * thisclass_c, struct vector3_struct * vec_c);
+
+// 
+void ogre_cam_getPosition(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_cam_move(struct hg3dclass_struct * thisclass_c, struct vector3_struct * vec_c);
+
+// 
+void ogre_cam_moveRelative(struct hg3dclass_struct * thisclass_c, struct vector3_struct * vec_c);
+
+// 
+void ogre_cam_setDirection(struct hg3dclass_struct * thisclass_c, float x_c, float y_c, float z_c);
+
+// 
+void ogre_cam_setDirection2(struct hg3dclass_struct * thisclass_c, struct vector3_struct * vec_c);
+
+// 
+void ogre_cam_getDirection(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_cam_getUp(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_cam_getRight(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_cam_lookAt(struct hg3dclass_struct * thisclass_c, struct vector3_struct * targetPoint_c);
+
+// 
+void ogre_cam_lookAt2(struct hg3dclass_struct * thisclass_c, float x_c, float y_c, float z_c);
+
+// 
+void ogre_cam_roll(struct hg3dclass_struct * thisclass_c, struct radian_struct * angle_c);
+
+// 
+void ogre_cam_yaw(struct hg3dclass_struct * thisclass_c, struct radian_struct * angle_c);
+
+// 
+void ogre_cam_pitch(struct hg3dclass_struct * thisclass_c, struct radian_struct * angle_c);
+
+// 
+void ogre_cam_rotate(struct hg3dclass_struct * thisclass_c, struct vector3_struct * axis_c, struct radian_struct * angle_c);
+
+// 
+void ogre_cam_rotate2(struct hg3dclass_struct * thisclass_c, struct quaternion_struct * q_c);
+
+// 
+void ogre_cam_setFixedYawAxis(struct hg3dclass_struct * thisclass_c, int useFixed_c, struct vector3_struct * fixedAxis_c);
+
+// 
+void ogre_cam_getOrientation(struct hg3dclass_struct * thisclass_c, struct quaternion_struct * result_c);
+
+// 
+void ogre_cam_setOrientation(struct hg3dclass_struct * thisclass_c, struct quaternion_struct * q_c);
+
+// 
+void ogre_cam_getDerivedOrientation(struct hg3dclass_struct * thisclass_c, struct quaternion_struct * result_c);
+
+// 
+void ogre_cam_getDerivedPosition(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_cam_getDerivedDirection(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_cam_getDerivedUp(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_cam_getDerivedRight(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_cam_getRealOrientation(struct hg3dclass_struct * thisclass_c, struct quaternion_struct * result_c);
+
+// 
+void ogre_cam_getRealPosition(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_cam_getRealDirection(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_cam_getRealUp(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_cam_getRealRight(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_cam_getMovableType(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_cam_setLodBias(struct hg3dclass_struct * thisclass_c, float factor_c);
+
+// 
+void ogre_cam_getLodBias(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_cam_setLodCamera(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * lodCam_c);
+
+// 
+void ogre_cam_getLodCamera(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_cam_setWindow(struct hg3dclass_struct * thisclass_c, float Left_c, float Top_c, float Right_c, float Bottom_c);
+
+// Cancel view window. 
+void ogre_cam_resetWindow(struct hg3dclass_struct * thisclass_c);
+
+// Returns if a viewport window is being used. 
+void ogre_cam_isWindowSet(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_cam_getBoundingRadius(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_cam_getAutoTrackTarget(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_cam_getAutoTrackOffset(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_cam_getViewport(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_cam_setAutoAspectRatio(struct hg3dclass_struct * thisclass_c, int autoratio_c);
+
+// 
+void ogre_cam_getAutoAspectRatio(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_cam_setCullingFrustum(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * frustum_c);
+
+// 
+void ogre_cam_getCullingFrustum(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_cam_isVisible3(struct hg3dclass_struct * thisclass_c, struct vector3_struct * vert_c, enum EnumFrustumPlane * culledBy_c, int * result_c);
+
+// 
+void ogre_cam_getWorldSpaceCorners(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_cam_getNearClipDistance(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_cam_getFarClipDistance(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_cam_setUseRenderingDistance(struct hg3dclass_struct * thisclass_c, int use_c);
+
+// 
+void ogre_cam_getUseRenderingDistance(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_cam_synchroniseBaseSettingsWith(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * cam_c);
+
+// 
+void ogre_cam_getPositionForViewUpdate(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_cam_getOrientationForViewUpdate(struct hg3dclass_struct * thisclass_c, struct quaternion_struct * result_c);
+
+// Sets whether to use min display size calculations 
+
+void ogre_cam_setUseMinPixelSize(struct hg3dclass_struct * thisclass_c, int enable_c);
+
+// 
+void ogre_cam_getUseMinPixelSize(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_cam_getPixelDisplayRatio(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+#endif 
diff --git a/include/ClassConfigFile.h b/include/ClassConfigFile.h
new file mode 100644
--- /dev/null
+++ b/include/ClassConfigFile.h
@@ -0,0 +1,54 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassConfigFile.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassConfigFile
+#define _DEFINED_HG3D_ClassConfigFile
+
+#include "ClassPtr.h"
+
+
+// 
+void ogre_cf_construct(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_cf_destruct(struct hg3dclass_struct * thisclass_c);
+
+// load from a filename (not using resource group locations) 
+void ogre_cf_load(struct hg3dclass_struct * thisclass_c, char * filename_c, char * separators_c, int trimWhitespace_c);
+
+// load from a filename (using resource group locations) 
+void ogre_cf_load2(struct hg3dclass_struct * thisclass_c, char * filename_c, char * resourceGroup_c, char * separators_c, int trimWhitespace_c);
+
+// load from a filename (not using resource group locations) 
+void ogre_cf_loadDirect(struct hg3dclass_struct * thisclass_c, char * filename_c, char * separators_c, int trimWhitespace_c);
+
+// load from a filename (using resource group locations) 
+void ogre_cf_loadFromResourceSystem(struct hg3dclass_struct * thisclass_c, char * filename_c, char * resourceGroup_c, char * separators_c, int trimWhitespace_c);
+
+// 
+void ogre_cf_getSetting(struct hg3dclass_struct * thisclass_c, char * key_c, char * section_c, char * defaultValue_c, char * result_c);
+
+// 
+void ogre_cf_clear(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassControllerManager.h b/include/ClassControllerManager.h
new file mode 100644
--- /dev/null
+++ b/include/ClassControllerManager.h
@@ -0,0 +1,66 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassControllerManager.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassControllerManager
+#define _DEFINED_HG3D_ClassControllerManager
+
+#include "ClassPtr.h"
+
+
+// 
+void ogre_cmgr_construct(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_cmgr_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_cmgr_clearControllers(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_cmgr_updateAllControllers(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_cmgr_getTimeFactor(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_cmgr_setTimeFactor(struct hg3dclass_struct * thisclass_c, float tf_c);
+
+// 
+void ogre_cmgr_getFrameDelay(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_cmgr_setFrameDelay(struct hg3dclass_struct * thisclass_c, float fd_c);
+
+// 
+void ogre_cmgr_getElapsedTime(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_cmgr_setElapsedTime(struct hg3dclass_struct * thisclass_c, float elapsedTime_c);
+
+// 
+void ogre_cmgr_getSingleton(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_cmgr_getSingletonPtr(struct hg3dclass_struct * result_c);
+
+#endif 
diff --git a/include/ClassEntity.h b/include/ClassEntity.h
new file mode 100644
--- /dev/null
+++ b/include/ClassEntity.h
@@ -0,0 +1,150 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassEntity.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassEntity
+#define _DEFINED_HG3D_ClassEntity
+
+#include "ClassPtr.h"
+#include "StructSharedPtr.h"
+#include "ClassAnimationState.h"
+#include "ClassAnimationStateSet.h"
+#include "ClassMovableObject.h"
+#include "EnumEntityVertexDataBindChoice.h"
+#include "ClassResource.h"
+
+
+// 
+void ogre_ent_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_ent_getMesh(struct hg3dclass_struct * thisclass_c, struct sharedptr_struct * result_c);
+
+// 
+void ogre_ent_getNumSubEntities(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_ent_clone(struct hg3dclass_struct * thisclass_c, char * newName_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_ent_setMaterialName(struct hg3dclass_struct * thisclass_c, char * name_c, char * groupName_c);
+
+// 
+void ogre_ent_setMaterial(struct hg3dclass_struct * thisclass_c, struct sharedptr_struct * material_c);
+
+// 
+void ogre_ent_getMovableType(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_ent_getAnimationState(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_ent_hasAnimationState(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_ent_getAllAnimationStates(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_ent_setDisplaySkeleton(struct hg3dclass_struct * thisclass_c, int display_c);
+
+// 
+void ogre_ent_getDisplaySkeleton(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_ent_getManualLodLevel(struct hg3dclass_struct * thisclass_c, int index_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_ent_getNumManualLodLevels(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_ent_setPolygonModeOverrideable(struct hg3dclass_struct * thisclass_c, int PolygonModeOverrideable_c);
+
+// 
+void ogre_ent_detachObjectFromBone(struct hg3dclass_struct * thisclass_c, char * movableName_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_ent_detachObjectFromBone2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * obj_c);
+
+// Detach all MovableObjects previously attached using attachObjectToBone. 
+void ogre_ent_detachAllObjectsFromBone(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_ent_getBoundingRadius(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_ent_hasEdgeList(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_ent_hasSkeleton(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_ent_isHardwareAnimationEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_ent_getSoftwareAnimationRequests(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_ent_getSoftwareAnimationNormalsRequests(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_ent_addSoftwareAnimationRequest(struct hg3dclass_struct * thisclass_c, int normalsAlso_c);
+
+// 
+void ogre_ent_removeSoftwareAnimationRequest(struct hg3dclass_struct * thisclass_c, int normalsAlso_c);
+
+// 
+void ogre_ent_shareSkeletonInstanceWith(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * entity_c);
+
+// 
+void ogre_ent_hasVertexAnimation(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_ent_stopSharingSkeletonInstance(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_ent_sharesSkeletonInstance(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_ent_refreshAvailableAnimationState(struct hg3dclass_struct * thisclass_c);
+
+// Choose which vertex data to bind to the renderer. 
+void ogre_ent_chooseVertexDataForBinding(struct hg3dclass_struct * thisclass_c, int hasVertexAnim_c, enum EnumEntityVertexDataBindChoice * result_c);
+
+// 
+void ogre_ent_isInitialised(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_ent_backgroundLoadingComplete(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * res_c);
+
+// 
+void ogre_ent_setSkipAnimationStateUpdate(struct hg3dclass_struct * thisclass_c, int skip_c);
+
+// 
+void ogre_ent_getSkipAnimationStateUpdate(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_ent_setAlwaysUpdateMainSkeleton(struct hg3dclass_struct * thisclass_c, int update_c);
+
+// 
+void ogre_ent_getAlwaysUpdateMainSkeleton(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+#endif 
diff --git a/include/ClassEntityFactory.h b/include/ClassEntityFactory.h
new file mode 100644
--- /dev/null
+++ b/include/ClassEntityFactory.h
@@ -0,0 +1,43 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassEntityFactory.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassEntityFactory
+#define _DEFINED_HG3D_ClassEntityFactory
+
+#include "ClassPtr.h"
+#include "ClassMovableObject.h"
+
+
+// 
+void ogre_entf_construct(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_entf_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Get the type of the object to be created. 
+void ogre_entf_getType(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_entf_destroyInstance(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * obj_c);
+
+#endif 
diff --git a/include/ClassException.h b/include/ClassException.h
new file mode 100644
--- /dev/null
+++ b/include/ClassException.h
@@ -0,0 +1,57 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassException.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassException
+#define _DEFINED_HG3D_ClassException
+
+#include "ClassPtr.h"
+
+
+// 
+void ogre_exc_construct(int number_c, char * description_c, char * source_c, struct hg3dclass_struct * result_c);
+
+// Needed for compatibility with std::exception. 
+void ogre_exc_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_exc_getFullDescription(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_exc_getNumber(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_exc_getSource(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_exc_getFile(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_exc_getLine(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_exc_getDescription(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// Override std::exception::what. 
+void ogre_exc_what(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+#endif 
diff --git a/include/ClassFrustum.h b/include/ClassFrustum.h
new file mode 100644
--- /dev/null
+++ b/include/ClassFrustum.h
@@ -0,0 +1,165 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassFrustum.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassFrustum
+#define _DEFINED_HG3D_ClassFrustum
+
+#include "ClassPtr.h"
+#include "StructRadians.h"
+#include "StructVec2.h"
+#include "StructVec3.h"
+#include "EnumFrustumPlane.h"
+#include "StructSharedPtr.h"
+#include "ClassCamera.h"
+#include "EnumProjectionType.h"
+#include "StructQuaternion.h"
+#include "EnumOrientationMode.h"
+
+
+// Named constructor. 
+void ogre_frst_construct(char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_frst_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_frst_setFOVy(struct hg3dclass_struct * thisclass_c, struct radian_struct * fovy_c);
+
+// 
+void ogre_frst_getFOVy(struct hg3dclass_struct * thisclass_c, struct radian_struct * result_c);
+
+// 
+void ogre_frst_setNearClipDistance(struct hg3dclass_struct * thisclass_c, float nearDist_c);
+
+// 
+void ogre_frst_getNearClipDistance(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_frst_setFarClipDistance(struct hg3dclass_struct * thisclass_c, float farDist_c);
+
+// 
+void ogre_frst_getFarClipDistance(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_frst_setAspectRatio(struct hg3dclass_struct * thisclass_c, float ratio_c);
+
+// 
+void ogre_frst_getAspectRatio(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_frst_setFrustumOffset(struct hg3dclass_struct * thisclass_c, struct vector2_struct * offset_c);
+
+// 
+void ogre_frst_setFrustumOffset2(struct hg3dclass_struct * thisclass_c, float horizontal_c, float vertical_c);
+
+// 
+void ogre_frst_getFrustumOffset(struct hg3dclass_struct * thisclass_c, struct vector2_struct * result_c);
+
+// 
+void ogre_frst_setFocalLength(struct hg3dclass_struct * thisclass_c, float focalLength_c);
+
+// 
+void ogre_frst_getFocalLength(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_frst_setFrustumExtents(struct hg3dclass_struct * thisclass_c, float left_c, float right_c, float top_c, float bottom_c);
+
+// 
+void ogre_frst_resetFrustumExtents(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_frst_getFrustumExtents(struct hg3dclass_struct * thisclass_c, float * outleft_c, float * outright_c, float * outtop_c, float * outbottom_c);
+
+// Returns whether a custom view matrix is in use. 
+void ogre_frst_isCustomViewMatrixEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Returns whether a custom projection matrix is in use. 
+void ogre_frst_isCustomProjectionMatrixEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_frst_isVisible3(struct hg3dclass_struct * thisclass_c, struct vector3_struct * vert_c, enum EnumFrustumPlane * culledBy_c, int * result_c);
+
+// Overridden from MovableObject::getTypeFlags
+void ogre_frst_getTypeFlags(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_frst_getBoundingRadius(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_frst_getMovableType(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_frst_getMaterial(struct hg3dclass_struct * thisclass_c, struct sharedptr_struct * result_c);
+
+// 
+void ogre_frst_getSquaredViewDepth(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * cam_c, float * result_c);
+
+// 
+void ogre_frst_getWorldSpaceCorners(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_frst_setProjectionType(struct hg3dclass_struct * thisclass_c, enum EnumProjectionType pt_c);
+
+// 
+void ogre_frst_getProjectionType(struct hg3dclass_struct * thisclass_c, enum EnumProjectionType * result_c);
+
+// 
+void ogre_frst_setOrthoWindow(struct hg3dclass_struct * thisclass_c, float w_c, float h_c);
+
+// 
+void ogre_frst_setOrthoWindowHeight(struct hg3dclass_struct * thisclass_c, float h_c);
+
+// 
+void ogre_frst_setOrthoWindowWidth(struct hg3dclass_struct * thisclass_c, float w_c);
+
+// 
+void ogre_frst_getOrthoWindowHeight(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_frst_getOrthoWindowWidth(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_frst_disableReflection(struct hg3dclass_struct * thisclass_c);
+
+// Returns whether this frustum is being reflected. 
+void ogre_frst_isReflected(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_frst_disableCustomNearClipPlane(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_frst_isCustomNearClipPlaneEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_frst_getPositionForViewUpdate(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_frst_getOrientationForViewUpdate(struct hg3dclass_struct * thisclass_c, struct quaternion_struct * result_c);
+
+// 
+void ogre_frst_setOrientationMode(struct hg3dclass_struct * thisclass_c, enum EnumOrientationMode orientationMode_c);
+
+// 
+void ogre_frst_getOrientationMode(struct hg3dclass_struct * thisclass_c, enum EnumOrientationMode * result_c);
+
+#endif 
diff --git a/include/ClassHG3DUtilities.h b/include/ClassHG3DUtilities.h
new file mode 100644
--- /dev/null
+++ b/include/ClassHG3DUtilities.h
@@ -0,0 +1,44 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassHG3DUtilities.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassHG3DUtilities
+#define _DEFINED_HG3D_ClassHG3DUtilities
+
+#include "ClassPtr.h"
+#include "ClassRenderWindow.h"
+#include "ClassEntity.h"
+
+
+// 
+void ogre_hg3dutl_getWindowHandle(struct hg3dclass_struct * window_c, unsigned int * result_c);
+
+// 
+void ogre_hg3dutl_setupCloseEventHandler(struct hg3dclass_struct * window_c);
+
+// 
+void ogre_hg3dutl_checkQuitReceived(int * result_c);
+
+// 
+void ogre_hg3dutl_buildTangentVectors(struct hg3dclass_struct * entity_c);
+
+#endif 
diff --git a/include/ClassLight.h b/include/ClassLight.h
new file mode 100644
--- /dev/null
+++ b/include/ClassLight.h
@@ -0,0 +1,175 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassLight.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassLight
+#define _DEFINED_HG3D_ClassLight
+
+#include "ClassPtr.h"
+#include "EnumLightType.h"
+#include "StructColour.h"
+#include "StructVec3.h"
+#include "StructRadians.h"
+
+
+// 
+void ogre_lgt_construct(char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_lgt_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_lgt_setType(struct hg3dclass_struct * thisclass_c, enum EnumLightType type_c);
+
+// 
+void ogre_lgt_getType(struct hg3dclass_struct * thisclass_c, enum EnumLightType * result_c);
+
+// 
+void ogre_lgt_setDiffuseColour(struct hg3dclass_struct * thisclass_c, float red_c, float green_c, float blue_c);
+
+// 
+void ogre_lgt_setDiffuseColour2(struct hg3dclass_struct * thisclass_c, struct colourvalue_struct * colour_c);
+
+// 
+void ogre_lgt_getDiffuseColour(struct hg3dclass_struct * thisclass_c, struct colourvalue_struct * result_c);
+
+// 
+void ogre_lgt_setSpecularColour(struct hg3dclass_struct * thisclass_c, float red_c, float green_c, float blue_c);
+
+// 
+void ogre_lgt_setSpecularColour2(struct hg3dclass_struct * thisclass_c, struct colourvalue_struct * colour_c);
+
+// 
+void ogre_lgt_getSpecularColour(struct hg3dclass_struct * thisclass_c, struct colourvalue_struct * result_c);
+
+// 
+void ogre_lgt_setAttenuation(struct hg3dclass_struct * thisclass_c, float range_c, float constant_c, float linear_c, float quadratic_c);
+
+// 
+void ogre_lgt_getAttenuationRange(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_lgt_getAttenuationConstant(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_lgt_getAttenuationLinear(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_lgt_getAttenuationQuadric(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_lgt_setPosition(struct hg3dclass_struct * thisclass_c, float x_c, float y_c, float z_c);
+
+// 
+void ogre_lgt_setPosition2(struct hg3dclass_struct * thisclass_c, struct vector3_struct * vec_c);
+
+// 
+void ogre_lgt_getPosition(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_lgt_setDirection(struct hg3dclass_struct * thisclass_c, float x_c, float y_c, float z_c);
+
+// 
+void ogre_lgt_setDirection2(struct hg3dclass_struct * thisclass_c, struct vector3_struct * vec_c);
+
+// 
+void ogre_lgt_getDirection(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_lgt_setSpotlightRange(struct hg3dclass_struct * thisclass_c, struct radian_struct * innerAngle_c, struct radian_struct * outerAngle_c, float falloff_c);
+
+// 
+void ogre_lgt_getSpotlightInnerAngle(struct hg3dclass_struct * thisclass_c, struct radian_struct * result_c);
+
+// 
+void ogre_lgt_getSpotlightOuterAngle(struct hg3dclass_struct * thisclass_c, struct radian_struct * result_c);
+
+// 
+void ogre_lgt_getSpotlightFalloff(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_lgt_setSpotlightInnerAngle(struct hg3dclass_struct * thisclass_c, struct radian_struct * val_c);
+
+// 
+void ogre_lgt_setSpotlightOuterAngle(struct hg3dclass_struct * thisclass_c, struct radian_struct * val_c);
+
+// 
+void ogre_lgt_setSpotlightFalloff(struct hg3dclass_struct * thisclass_c, float val_c);
+
+// 
+void ogre_lgt_setSpotlightNearClipDistance(struct hg3dclass_struct * thisclass_c, float nearClip_c);
+
+// 
+void ogre_lgt_getSpotlightNearClipDistance(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_lgt_setPowerScale(struct hg3dclass_struct * thisclass_c, float power_c);
+
+// 
+void ogre_lgt_getPowerScale(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_lgt_getMovableType(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_lgt_getDerivedPosition(struct hg3dclass_struct * thisclass_c, int cameraRelativeIfSet_c, struct vector3_struct * result_c);
+
+// 
+void ogre_lgt_getDerivedDirection(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_lgt_setVisible(struct hg3dclass_struct * thisclass_c, int visible_c);
+
+// 
+void ogre_lgt_getBoundingRadius(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Override to return specific type flag. 
+void ogre_lgt_getTypeFlags(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_lgt_resetCustomShadowCameraSetup(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_lgt_setShadowFarDistance(struct hg3dclass_struct * thisclass_c, float distance_c);
+
+// 
+void ogre_lgt_resetShadowFarDistance(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_lgt_getShadowFarDistance(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_lgt_getShadowFarDistanceSquared(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_lgt_setShadowNearClipDistance(struct hg3dclass_struct * thisclass_c, float nearClip_c);
+
+// 
+void ogre_lgt_getShadowNearClipDistance(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_lgt_setShadowFarClipDistance(struct hg3dclass_struct * thisclass_c, float farClip_c);
+
+// 
+void ogre_lgt_getShadowFarClipDistance(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+#endif 
diff --git a/include/ClassLightFactory.h b/include/ClassLightFactory.h
new file mode 100644
--- /dev/null
+++ b/include/ClassLightFactory.h
@@ -0,0 +1,43 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassLightFactory.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassLightFactory
+#define _DEFINED_HG3D_ClassLightFactory
+
+#include "ClassPtr.h"
+#include "ClassMovableObject.h"
+
+
+// 
+void ogre_lgtf_construct(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_lgtf_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Get the type of the object to be created. 
+void ogre_lgtf_getType(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_lgtf_destroyInstance(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * obj_c);
+
+#endif 
diff --git a/include/ClassLog.h b/include/ClassLog.h
new file mode 100644
--- /dev/null
+++ b/include/ClassLog.h
@@ -0,0 +1,62 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassLog.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassLog
+#define _DEFINED_HG3D_ClassLog
+
+#include "ClassPtr.h"
+#include "EnumLogMessageLevel.h"
+#include "EnumLoggingLevel.h"
+
+
+// 
+void ogre_lg_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Return the name of the log. 
+void ogre_lg_getName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// Get whether debug output is enabled for this log. 
+void ogre_lg_isDebugOutputEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Get whether file output is suppressed for this log. 
+void ogre_lg_isFileOutputSuppressed(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Get whether time stamps are printed for this log. 
+void ogre_lg_isTimeStampEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_lg_logMessage(struct hg3dclass_struct * thisclass_c, char * message_c, enum EnumLogMessageLevel lml_c, int maskDebug_c);
+
+// 
+void ogre_lg_setDebugOutputEnabled(struct hg3dclass_struct * thisclass_c, int debugOutput_c);
+
+// 
+void ogre_lg_setLogDetail(struct hg3dclass_struct * thisclass_c, enum EnumLoggingLevel ll_c);
+
+// 
+void ogre_lg_setTimeStampEnabled(struct hg3dclass_struct * thisclass_c, int timeStamp_c);
+
+// 
+void ogre_lg_getLogDetail(struct hg3dclass_struct * thisclass_c, enum EnumLoggingLevel * result_c);
+
+#endif 
diff --git a/include/ClassLogManager.h b/include/ClassLogManager.h
new file mode 100644
--- /dev/null
+++ b/include/ClassLogManager.h
@@ -0,0 +1,69 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassLogManager.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassLogManager
+#define _DEFINED_HG3D_ClassLogManager
+
+#include "ClassPtr.h"
+#include "ClassLog.h"
+#include "EnumLogMessageLevel.h"
+#include "EnumLoggingLevel.h"
+
+
+// 
+void ogre_lmgr_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_lmgr_createLog(struct hg3dclass_struct * thisclass_c, char * name_c, int defaultLog_c, int debuggerOutput_c, int suppressFileOutput_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_lmgr_getLog(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_lmgr_getDefaultLog(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_lmgr_destroyLog(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_lmgr_destroyLog2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * log_c);
+
+// 
+void ogre_lmgr_setDefaultLog(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * newLog_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_lmgr_logMessage(struct hg3dclass_struct * thisclass_c, char * message_c, enum EnumLogMessageLevel lml_c, int maskDebug_c);
+
+// 
+void ogre_lmgr_logMessage2(struct hg3dclass_struct * thisclass_c, enum EnumLogMessageLevel lml_c, char * message_c, int maskDebug_c);
+
+// 
+void ogre_lmgr_setLogDetail(struct hg3dclass_struct * thisclass_c, enum EnumLoggingLevel ll_c);
+
+// 
+void ogre_lmgr_getSingleton(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_lmgr_getSingletonPtr(struct hg3dclass_struct * result_c);
+
+#endif 
diff --git a/include/ClassManualObject.h b/include/ClassManualObject.h
new file mode 100644
--- /dev/null
+++ b/include/ClassManualObject.h
@@ -0,0 +1,162 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassManualObject.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassManualObject
+#define _DEFINED_HG3D_ClassManualObject
+
+#include "ClassPtr.h"
+#include "EnumRenderOperationOperationType.h"
+#include "StructVec3.h"
+#include "StructVec2.h"
+#include "StructColour.h"
+#include "ClassManualObjectSection.h"
+#include "StructSharedPtr.h"
+
+
+// 
+void ogre_mno_construct(char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_mno_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_mno_clear(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_mno_estimateVertexCount(struct hg3dclass_struct * thisclass_c, int vcount_c);
+
+// 
+void ogre_mno_estimateIndexCount(struct hg3dclass_struct * thisclass_c, int icount_c);
+
+// 
+void ogre_mno_begin(struct hg3dclass_struct * thisclass_c, char * materialName_c, enum EnumRenderOperationOperationType opType_c, char * groupName_c);
+
+// 
+void ogre_mno_setDynamic(struct hg3dclass_struct * thisclass_c, int dyn_c);
+
+// 
+void ogre_mno_getDynamic(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_mno_beginUpdate(struct hg3dclass_struct * thisclass_c, int sectionIndex_c);
+
+// 
+void ogre_mno_position(struct hg3dclass_struct * thisclass_c, struct vector3_struct * pos_c);
+
+// 
+void ogre_mno_position2(struct hg3dclass_struct * thisclass_c, float x_c, float y_c, float z_c);
+
+// 
+void ogre_mno_normal(struct hg3dclass_struct * thisclass_c, struct vector3_struct * norm_c);
+
+// 
+void ogre_mno_normal2(struct hg3dclass_struct * thisclass_c, float x_c, float y_c, float z_c);
+
+// 
+void ogre_mno_tangent(struct hg3dclass_struct * thisclass_c, struct vector3_struct * tan_c);
+
+// 
+void ogre_mno_tangent2(struct hg3dclass_struct * thisclass_c, float x_c, float y_c, float z_c);
+
+// 
+void ogre_mno_textureCoord(struct hg3dclass_struct * thisclass_c, float u_c);
+
+// 
+void ogre_mno_textureCoord2(struct hg3dclass_struct * thisclass_c, float u_c, float v_c);
+
+// 
+void ogre_mno_textureCoord3(struct hg3dclass_struct * thisclass_c, float u_c, float v_c, float w_c);
+
+// 
+void ogre_mno_textureCoord4(struct hg3dclass_struct * thisclass_c, float x_c, float y_c, float z_c, float w_c);
+
+// 
+void ogre_mno_textureCoord5(struct hg3dclass_struct * thisclass_c, struct vector2_struct * uv_c);
+
+// 
+void ogre_mno_textureCoord6(struct hg3dclass_struct * thisclass_c, struct vector3_struct * uvw_c);
+
+// 
+void ogre_mno_colour(struct hg3dclass_struct * thisclass_c, struct colourvalue_struct * col_c);
+
+// 
+void ogre_mno_colour2(struct hg3dclass_struct * thisclass_c, float r_c, float g_c, float b_c, float a_c);
+
+// 
+void ogre_mno_index(struct hg3dclass_struct * thisclass_c, unsigned int idx_c);
+
+// 
+void ogre_mno_triangle(struct hg3dclass_struct * thisclass_c, unsigned int i1_c, unsigned int i2_c, unsigned int i3_c);
+
+// 
+void ogre_mno_quad(struct hg3dclass_struct * thisclass_c, unsigned int i1_c, unsigned int i2_c, unsigned int i3_c, unsigned int i4_c);
+
+// Get the number of vertices in the section currently being defined (returns 0 if no section is in progress). 
+void ogre_mno_getCurrentVertexCount(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Get the number of indices in the section currently being defined (returns 0 if no section is in progress). 
+void ogre_mno_getCurrentIndexCount(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_mno_end(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_mno_setMaterialName(struct hg3dclass_struct * thisclass_c, int subindex_c, char * name_c, char * group_c);
+
+// 
+void ogre_mno_convertToMesh(struct hg3dclass_struct * thisclass_c, char * meshName_c, char * groupName_c, struct sharedptr_struct * result_c);
+
+// 
+void ogre_mno_setUseIdentityProjection(struct hg3dclass_struct * thisclass_c, int useIdentityProjection_c);
+
+// 
+void ogre_mno_getUseIdentityProjection(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_mno_setUseIdentityView(struct hg3dclass_struct * thisclass_c, int useIdentityView_c);
+
+// 
+void ogre_mno_getUseIdentityView(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_mno_getSection(struct hg3dclass_struct * thisclass_c, unsigned int index_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_mno_getNumSections(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_mno_setKeepDeclarationOrder(struct hg3dclass_struct * thisclass_c, int keepOrder_c);
+
+// 
+void ogre_mno_getKeepDeclarationOrder(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// . 
+void ogre_mno_getMovableType(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// . 
+void ogre_mno_getBoundingRadius(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_mno_hasEdgeList(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+#endif 
diff --git a/include/ClassManualObjectFactory.h b/include/ClassManualObjectFactory.h
new file mode 100644
--- /dev/null
+++ b/include/ClassManualObjectFactory.h
@@ -0,0 +1,43 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassManualObjectFactory.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassManualObjectFactory
+#define _DEFINED_HG3D_ClassManualObjectFactory
+
+#include "ClassPtr.h"
+#include "ClassMovableObject.h"
+
+
+// 
+void ogre_mnof_construct(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_mnof_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Get the type of the object to be created. 
+void ogre_mnof_getType(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_mnof_destroyInstance(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * obj_c);
+
+#endif 
diff --git a/include/ClassManualObjectSection.h b/include/ClassManualObjectSection.h
new file mode 100644
--- /dev/null
+++ b/include/ClassManualObjectSection.h
@@ -0,0 +1,61 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassManualObjectSection.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassManualObjectSection
+#define _DEFINED_HG3D_ClassManualObjectSection
+
+#include "ClassPtr.h"
+#include "ClassManualObject.h"
+#include "EnumRenderOperationOperationType.h"
+#include "StructSharedPtr.h"
+#include "ClassCamera.h"
+
+
+// 
+void ogre_mnos_construct(struct hg3dclass_struct * parent_c, char * materialName_c, enum EnumRenderOperationOperationType opType_c, char * groupName_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_mnos_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Retrieve the material name in use. 
+void ogre_mnos_getMaterialName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// Retrieve the material group in use. 
+void ogre_mnos_getMaterialGroup(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// update the material name in use 
+void ogre_mnos_setMaterialName(struct hg3dclass_struct * thisclass_c, char * name_c, char * groupName_c);
+
+// Set whether we need 32-bit indices. 
+void ogre_mnos_set32BitIndices(struct hg3dclass_struct * thisclass_c, int n32_c);
+
+// Get whether we need 32-bit indices. 
+void ogre_mnos_get32BitIndices(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// . 
+void ogre_mnos_getMaterial(struct hg3dclass_struct * thisclass_c, struct sharedptr_struct * result_c);
+
+// . 
+void ogre_mnos_getSquaredViewDepth(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * _c, float * result_c);
+
+#endif 
diff --git a/include/ClassMaterial.h b/include/ClassMaterial.h
new file mode 100644
--- /dev/null
+++ b/include/ClassMaterial.h
@@ -0,0 +1,134 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassMaterial.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassMaterial
+#define _DEFINED_HG3D_ClassMaterial
+
+#include "ClassPtr.h"
+#include "StructSharedPtr.h"
+#include "StructColour.h"
+
+
+// 
+void ogre_mtrl_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_mtrl_isTransparent(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_mtrl_setReceiveShadows(struct hg3dclass_struct * thisclass_c, int enabled_c);
+
+// 
+void ogre_mtrl_getReceiveShadows(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_mtrl_setTransparencyCastsShadows(struct hg3dclass_struct * thisclass_c, int enabled_c);
+
+// 
+void ogre_mtrl_getTransparencyCastsShadows(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_mtrl_getNumTechniques(struct hg3dclass_struct * thisclass_c, unsigned short * result_c);
+
+// 
+void ogre_mtrl_removeTechnique(struct hg3dclass_struct * thisclass_c, unsigned short index_c);
+
+// 
+void ogre_mtrl_removeAllTechniques(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_mtrl_getNumSupportedTechniques(struct hg3dclass_struct * thisclass_c, unsigned short * result_c);
+
+// 
+void ogre_mtrl_getUnsupportedTechniquesExplanation(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_mtrl_getNumLodLevels(struct hg3dclass_struct * thisclass_c, unsigned short schemeIndex_c, unsigned short * result_c);
+
+// 
+void ogre_mtrl_getNumLodLevels2(struct hg3dclass_struct * thisclass_c, char * schemeName_c, unsigned short * result_c);
+
+// 
+void ogre_mtrl_clone(struct hg3dclass_struct * thisclass_c, char * newName_c, int changeGroup_c, char * newGroup_c, struct sharedptr_struct * result_c);
+
+// 
+void ogre_mtrl_copyDetailsTo(struct hg3dclass_struct * thisclass_c, struct sharedptr_struct * mat_c);
+
+// 
+void ogre_mtrl_compile(struct hg3dclass_struct * thisclass_c, int autoManageTextureUnits_c);
+
+// 
+void ogre_mtrl_setPointSize(struct hg3dclass_struct * thisclass_c, float ps_c);
+
+// 
+void ogre_mtrl_setAmbient(struct hg3dclass_struct * thisclass_c, float red_c, float green_c, float blue_c);
+
+// 
+void ogre_mtrl_setAmbient2(struct hg3dclass_struct * thisclass_c, struct colourvalue_struct * ambient_c);
+
+// 
+void ogre_mtrl_setDiffuse(struct hg3dclass_struct * thisclass_c, float red_c, float green_c, float blue_c, float alpha_c);
+
+// 
+void ogre_mtrl_setDiffuse2(struct hg3dclass_struct * thisclass_c, struct colourvalue_struct * diffuse_c);
+
+// 
+void ogre_mtrl_setSpecular(struct hg3dclass_struct * thisclass_c, float red_c, float green_c, float blue_c, float alpha_c);
+
+// 
+void ogre_mtrl_setSpecular2(struct hg3dclass_struct * thisclass_c, struct colourvalue_struct * specular_c);
+
+// 
+void ogre_mtrl_setShininess(struct hg3dclass_struct * thisclass_c, float val_c);
+
+// 
+void ogre_mtrl_setSelfIllumination(struct hg3dclass_struct * thisclass_c, float red_c, float green_c, float blue_c);
+
+// 
+void ogre_mtrl_setSelfIllumination2(struct hg3dclass_struct * thisclass_c, struct colourvalue_struct * selfIllum_c);
+
+// 
+void ogre_mtrl_setDepthCheckEnabled(struct hg3dclass_struct * thisclass_c, int enabled_c);
+
+// 
+void ogre_mtrl_setDepthWriteEnabled(struct hg3dclass_struct * thisclass_c, int enabled_c);
+
+// 
+void ogre_mtrl_setColourWriteEnabled(struct hg3dclass_struct * thisclass_c, int enabled_c);
+
+// 
+void ogre_mtrl_setLightingEnabled(struct hg3dclass_struct * thisclass_c, int enabled_c);
+
+// 
+void ogre_mtrl_setDepthBias(struct hg3dclass_struct * thisclass_c, float constantBias_c, float slopeScaleBias_c);
+
+// 
+void ogre_mtrl_setTextureAnisotropy(struct hg3dclass_struct * thisclass_c, int maxAniso_c);
+
+// 
+void ogre_mtrl_touch(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_mtrl_getCompilationRequired(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+#endif 
diff --git a/include/ClassMaterialManager.h b/include/ClassMaterialManager.h
new file mode 100644
--- /dev/null
+++ b/include/ClassMaterialManager.h
@@ -0,0 +1,61 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassMaterialManager.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassMaterialManager
+#define _DEFINED_HG3D_ClassMaterialManager
+
+#include "ClassPtr.h"
+#include "StructSharedPtr.h"
+
+
+// 
+void ogre_mtrlmgr_construct(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_mtrlmgr_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_mtrlmgr_initialise(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_mtrlmgr_setDefaultAnisotropy(struct hg3dclass_struct * thisclass_c, unsigned int maxAniso_c);
+
+// Get the default maxAnisotropy. 
+void ogre_mtrlmgr_getDefaultAnisotropy(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_mtrlmgr_getDefaultSettings(struct hg3dclass_struct * thisclass_c, struct sharedptr_struct * result_c);
+
+// 
+void ogre_mtrlmgr_getActiveScheme(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_mtrlmgr_setActiveScheme(struct hg3dclass_struct * thisclass_c, char * schemeName_c);
+
+// 
+void ogre_mtrlmgr_getSingleton(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_mtrlmgr_getSingletonPtr(struct hg3dclass_struct * result_c);
+
+#endif 
diff --git a/include/ClassMesh.h b/include/ClassMesh.h
new file mode 100644
--- /dev/null
+++ b/include/ClassMesh.h
@@ -0,0 +1,147 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassMesh.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassMesh
+#define _DEFINED_HG3D_ClassMesh
+
+#include "ClassPtr.h"
+#include "StructSharedPtr.h"
+#include "EnumVertexAnimationType.h"
+#include "ClassAnimation.h"
+
+
+// 
+void ogre_msh_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_msh_unnameSubMesh(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_msh_getNumSubMeshes(struct hg3dclass_struct * thisclass_c, unsigned short * result_c);
+
+// 
+void ogre_msh_destroySubMesh(struct hg3dclass_struct * thisclass_c, unsigned short index_c);
+
+// 
+void ogre_msh_destroySubMesh2(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_msh_clone(struct hg3dclass_struct * thisclass_c, char * newName_c, char * newGroup_c, struct sharedptr_struct * result_c);
+
+// 
+void ogre_msh_getBoundingSphereRadius(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_msh_setSkeletonName(struct hg3dclass_struct * thisclass_c, char * skelName_c);
+
+// 
+void ogre_msh_hasSkeleton(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_msh_hasVertexAnimation(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_msh_getSkeleton(struct hg3dclass_struct * thisclass_c, struct sharedptr_struct * result_c);
+
+// 
+void ogre_msh_getSkeletonName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_msh_clearBoneAssignments(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_msh_createManualLodLevel(struct hg3dclass_struct * thisclass_c, float value_c, char * meshName_c, char * groupName_c);
+
+// 
+void ogre_msh_isLodManual(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_msh_removeLodLevels(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_msh_isVertexBufferShadowed(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_msh_isIndexBufferShadowed(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_msh_buildEdgeList(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_msh_freeEdgeList(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_msh_prepareForShadowVolume(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_msh_isPreparedForShadowVolumes(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_msh_isEdgeListBuilt(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_msh_setAutoBuildEdgeLists(struct hg3dclass_struct * thisclass_c, int autobuild_c);
+
+// 
+void ogre_msh_getAutoBuildEdgeLists(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_msh_getSharedVertexDataAnimationType(struct hg3dclass_struct * thisclass_c, enum EnumVertexAnimationType * result_c);
+
+// Returns whether animation on shared vertex data includes normals. 
+void ogre_msh_getSharedVertexDataAnimationIncludesNormals(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_msh_createAnimation(struct hg3dclass_struct * thisclass_c, char * name_c, float length_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_msh_getAnimation(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_msh_hasAnimation(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_msh_removeAnimation(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_msh_getNumAnimations(struct hg3dclass_struct * thisclass_c, unsigned short * result_c);
+
+// 
+void ogre_msh_getAnimation2(struct hg3dclass_struct * thisclass_c, unsigned short index_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_msh_removeAllAnimations(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_msh_updateMaterialForAllSubMeshes(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_msh_getPoseCount(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_msh_removePose2(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_msh_removeAllPoses(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassMeshManager.h b/include/ClassMeshManager.h
new file mode 100644
--- /dev/null
+++ b/include/ClassMeshManager.h
@@ -0,0 +1,58 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassMeshManager.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassMeshManager
+#define _DEFINED_HG3D_ClassMeshManager
+
+#include "ClassPtr.h"
+#include "ClassResource.h"
+
+
+// 
+void ogre_mshmgr_construct(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_mshmgr_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_mshmgr_setPrepareAllMeshesForShadowVolumes(struct hg3dclass_struct * thisclass_c, int enable_c);
+
+// 
+void ogre_mshmgr_getPrepareAllMeshesForShadowVolumes(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_mshmgr_getBoundsPaddingFactor(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_mshmgr_setBoundsPaddingFactor(struct hg3dclass_struct * thisclass_c, float paddingFactor_c);
+
+// 
+void ogre_mshmgr_loadResource(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * res_c);
+
+// 
+void ogre_mshmgr_getSingleton(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_mshmgr_getSingletonPtr(struct hg3dclass_struct * result_c);
+
+#endif 
diff --git a/include/ClassMovableObject.h b/include/ClassMovableObject.h
new file mode 100644
--- /dev/null
+++ b/include/ClassMovableObject.h
@@ -0,0 +1,150 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassMovableObject.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassMovableObject
+#define _DEFINED_HG3D_ClassMovableObject
+
+#include "ClassPtr.h"
+#include "ClassNode.h"
+#include "ClassSceneNode.h"
+#include "ClassLight.h"
+
+
+// 
+void ogre_mvo_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_mvo_getName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_mvo_getMovableType(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_mvo_getParentNode(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_mvo_getParentSceneNode(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Gets whether the parent node is a TagPoint (or a SceneNode
+void ogre_mvo_isParentTagPoint(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_mvo_isAttached(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_mvo_detachFromParent(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_mvo_isInScene(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_mvo_getBoundingRadius(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_mvo_setVisible(struct hg3dclass_struct * thisclass_c, int visible_c);
+
+// 
+void ogre_mvo_getVisible(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_mvo_isVisible(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_mvo_setRenderingDistance(struct hg3dclass_struct * thisclass_c, float dist_c);
+
+// 
+void ogre_mvo_getRenderingDistance(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_mvo_setRenderingMinPixelSize(struct hg3dclass_struct * thisclass_c, float pixelSize_c);
+
+// 
+void ogre_mvo_getRenderingMinPixelSize(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_mvo_setQueryFlags(struct hg3dclass_struct * thisclass_c, unsigned int flags_c);
+
+// 
+void ogre_mvo_addQueryFlags(struct hg3dclass_struct * thisclass_c, unsigned int flags_c);
+
+// 
+void ogre_mvo_removeQueryFlags(struct hg3dclass_struct * thisclass_c, unsigned int flags_c);
+
+// Returns the query flags relevant for this object. 
+void ogre_mvo_getQueryFlags(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_mvo_setVisibilityFlags(struct hg3dclass_struct * thisclass_c, unsigned int flags_c);
+
+// 
+void ogre_mvo_addVisibilityFlags(struct hg3dclass_struct * thisclass_c, unsigned int flags_c);
+
+// 
+void ogre_mvo_removeVisibilityFlags(struct hg3dclass_struct * thisclass_c, unsigned int flags_c);
+
+// Returns the visibility flags relevant for this object. 
+void ogre_mvo_getVisibilityFlags(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_mvo_getLightMask(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_mvo_setLightMask(struct hg3dclass_struct * thisclass_c, unsigned int lightMask_c);
+
+// Define a default implementation of method from ShadowCaster which implements no shadows. 
+void ogre_mvo_hasEdgeList(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_mvo_setCastShadows(struct hg3dclass_struct * thisclass_c, int enabled_c);
+
+// 
+void ogre_mvo_getCastShadows(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_mvo_getReceivesShadows(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_mvo_getPointExtrusionDistance(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * l_c, float * result_c);
+
+// 
+void ogre_mvo_getTypeFlags(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_mvo_setDebugDisplayEnabled(struct hg3dclass_struct * thisclass_c, int enabled_c);
+
+// Gets whether debug display of this object is enabled. 
+void ogre_mvo_isDebugDisplayEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_mvo_setDefaultQueryFlags(unsigned int flags_c);
+
+// 
+void ogre_mvo_getDefaultQueryFlags(unsigned int * result_c);
+
+// 
+void ogre_mvo_setDefaultVisibilityFlags(unsigned int flags_c);
+
+// 
+void ogre_mvo_getDefaultVisibilityFlags(unsigned int * result_c);
+
+#endif 
diff --git a/include/ClassMovableObjectFactory.h b/include/ClassMovableObjectFactory.h
new file mode 100644
--- /dev/null
+++ b/include/ClassMovableObjectFactory.h
@@ -0,0 +1,46 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassMovableObjectFactory.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassMovableObjectFactory
+#define _DEFINED_HG3D_ClassMovableObjectFactory
+
+#include "ClassPtr.h"
+#include "ClassMovableObject.h"
+
+
+// 
+void ogre_mvof_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Get the type of the object to be created. 
+void ogre_mvof_getType(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_mvof_destroyInstance(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * obj_c);
+
+// 
+void ogre_mvof_requestTypeFlags(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_mvof_getTypeFlags(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+#endif 
diff --git a/include/ClassMultiRenderTarget.h b/include/ClassMultiRenderTarget.h
new file mode 100644
--- /dev/null
+++ b/include/ClassMultiRenderTarget.h
@@ -0,0 +1,40 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassMultiRenderTarget.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassMultiRenderTarget
+#define _DEFINED_HG3D_ClassMultiRenderTarget
+
+#include "ClassPtr.h"
+#include "ClassRenderTexture.h"
+
+
+// 
+void ogre_mrt_bindSurface(struct hg3dclass_struct * thisclass_c, int attachment_c, struct hg3dclass_struct * target_c);
+
+// 
+void ogre_mrt_unbindSurface(struct hg3dclass_struct * thisclass_c, int attachment_c);
+
+// 
+void ogre_mrt_getBoundSurface(struct hg3dclass_struct * thisclass_c, int index_c, struct hg3dclass_struct * result_c);
+
+#endif 
diff --git a/include/ClassNode.h b/include/ClassNode.h
new file mode 100644
--- /dev/null
+++ b/include/ClassNode.h
@@ -0,0 +1,188 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassNode.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassNode
+#define _DEFINED_HG3D_ClassNode
+
+#include "ClassPtr.h"
+#include "StructQuaternion.h"
+#include "StructVec3.h"
+#include "EnumNodeTransformSpace.h"
+#include "StructRadians.h"
+#include "ClassCamera.h"
+
+
+// 
+void ogre_nd_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_nd_getName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_nd_getParent(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_nd_getOrientation(struct hg3dclass_struct * thisclass_c, struct quaternion_struct * result_c);
+
+// 
+void ogre_nd_setOrientation(struct hg3dclass_struct * thisclass_c, struct quaternion_struct * q_c);
+
+// 
+void ogre_nd_setOrientation2(struct hg3dclass_struct * thisclass_c, float w_c, float x_c, float y_c, float z_c);
+
+// 
+void ogre_nd_resetOrientation(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_nd_setPosition(struct hg3dclass_struct * thisclass_c, struct vector3_struct * pos_c);
+
+// 
+void ogre_nd_setPosition2(struct hg3dclass_struct * thisclass_c, float x_c, float y_c, float z_c);
+
+// 
+void ogre_nd_getPosition(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_nd_setScale(struct hg3dclass_struct * thisclass_c, struct vector3_struct * scale_c);
+
+// 
+void ogre_nd_setScale2(struct hg3dclass_struct * thisclass_c, float x_c, float y_c, float z_c);
+
+// 
+void ogre_nd_getScale(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_nd_setInheritOrientation(struct hg3dclass_struct * thisclass_c, int inherit_c);
+
+// 
+void ogre_nd_getInheritOrientation(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_nd_setInheritScale(struct hg3dclass_struct * thisclass_c, int inherit_c);
+
+// 
+void ogre_nd_getInheritScale(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_nd_scale(struct hg3dclass_struct * thisclass_c, struct vector3_struct * scale_c);
+
+// 
+void ogre_nd_scale2(struct hg3dclass_struct * thisclass_c, float x_c, float y_c, float z_c);
+
+// 
+void ogre_nd_translate(struct hg3dclass_struct * thisclass_c, struct vector3_struct * d_c, enum EnumNodeTransformSpace relativeTo_c);
+
+// 
+void ogre_nd_translate2(struct hg3dclass_struct * thisclass_c, float x_c, float y_c, float z_c, enum EnumNodeTransformSpace relativeTo_c);
+
+// 
+void ogre_nd_roll(struct hg3dclass_struct * thisclass_c, struct radian_struct * angle_c, enum EnumNodeTransformSpace relativeTo_c);
+
+// 
+void ogre_nd_pitch(struct hg3dclass_struct * thisclass_c, struct radian_struct * angle_c, enum EnumNodeTransformSpace relativeTo_c);
+
+// 
+void ogre_nd_yaw(struct hg3dclass_struct * thisclass_c, struct radian_struct * angle_c, enum EnumNodeTransformSpace relativeTo_c);
+
+// 
+void ogre_nd_rotate(struct hg3dclass_struct * thisclass_c, struct vector3_struct * axis_c, struct radian_struct * angle_c, enum EnumNodeTransformSpace relativeTo_c);
+
+// 
+void ogre_nd_rotate2(struct hg3dclass_struct * thisclass_c, struct quaternion_struct * q_c, enum EnumNodeTransformSpace relativeTo_c);
+
+// 
+void ogre_nd_createChild(struct hg3dclass_struct * thisclass_c, struct vector3_struct * translate_c, struct quaternion_struct * rotate_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_nd_createChild2(struct hg3dclass_struct * thisclass_c, char * name_c, struct vector3_struct * translate_c, struct quaternion_struct * rotate_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_nd_addChild(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * child_c);
+
+// 
+void ogre_nd_numChildren(struct hg3dclass_struct * thisclass_c, unsigned short * result_c);
+
+// 
+void ogre_nd_getChild(struct hg3dclass_struct * thisclass_c, unsigned short index_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_nd_getChild2(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_nd_removeChild(struct hg3dclass_struct * thisclass_c, unsigned short index_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_nd_removeChild2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * child_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_nd_removeChild3(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_nd_removeAllChildren(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_nd_setInitialState(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_nd_resetToInitialState(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_nd_getInitialPosition(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_nd_convertWorldToLocalPosition(struct hg3dclass_struct * thisclass_c, struct vector3_struct * worldPos_c, struct vector3_struct * result_c);
+
+// 
+void ogre_nd_convertLocalToWorldPosition(struct hg3dclass_struct * thisclass_c, struct vector3_struct * localPos_c, struct vector3_struct * result_c);
+
+// 
+void ogre_nd_convertWorldToLocalOrientation(struct hg3dclass_struct * thisclass_c, struct quaternion_struct * worldOrientation_c, struct quaternion_struct * result_c);
+
+// 
+void ogre_nd_convertLocalToWorldOrientation(struct hg3dclass_struct * thisclass_c, struct quaternion_struct * localOrientation_c, struct quaternion_struct * result_c);
+
+// 
+void ogre_nd_getInitialOrientation(struct hg3dclass_struct * thisclass_c, struct quaternion_struct * result_c);
+
+// 
+void ogre_nd_getInitialScale(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_nd_getSquaredViewDepth(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * cam_c, float * result_c);
+
+// 
+void ogre_nd_needUpdate(struct hg3dclass_struct * thisclass_c, int forceParentUpdate_c);
+
+// 
+void ogre_nd_requestUpdate(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * child_c, int forceParentUpdate_c);
+
+// 
+void ogre_nd_cancelUpdate(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * child_c);
+
+// 
+void ogre_nd_queueNeedUpdate(struct hg3dclass_struct * n_c);
+
+// 
+void ogre_nd_processQueuedUpdates();
+
+#endif 
diff --git a/include/ClassNodeAnimationTrack.h b/include/ClassNodeAnimationTrack.h
new file mode 100644
--- /dev/null
+++ b/include/ClassNodeAnimationTrack.h
@@ -0,0 +1,63 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassNodeAnimationTrack.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassNodeAnimationTrack
+#define _DEFINED_HG3D_ClassNodeAnimationTrack
+
+#include "ClassPtr.h"
+#include "ClassAnimation.h"
+#include "ClassNode.h"
+#include "ClassTimeIndex.h"
+
+
+// Constructor. 
+void ogre_noat_construct(struct hg3dclass_struct * parent_c, unsigned short handle_c, struct hg3dclass_struct * result_c);
+
+// Destructor. 
+void ogre_noat_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_noat_getAssociatedNode(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_noat_setAssociatedNode(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * node_c);
+
+// 
+void ogre_noat_applyToNode(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * node_c, struct hg3dclass_struct * timeIndex_c, float weight_c, float scale_c);
+
+// 
+void ogre_noat_setUseShortestRotationPath(struct hg3dclass_struct * thisclass_c, int useShortestPath_c);
+
+// 
+void ogre_noat_getUseShortestRotationPath(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_noat_apply(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * timeIndex_c, float weight_c, float scale_c);
+
+// 
+void ogre_noat_hasNonZeroKeyFrames(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_noat_optimise(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassNumericAnimationTrack.h b/include/ClassNumericAnimationTrack.h
new file mode 100644
--- /dev/null
+++ b/include/ClassNumericAnimationTrack.h
@@ -0,0 +1,38 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassNumericAnimationTrack.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassNumericAnimationTrack
+#define _DEFINED_HG3D_ClassNumericAnimationTrack
+
+#include "ClassPtr.h"
+#include "ClassAnimation.h"
+#include "ClassTimeIndex.h"
+
+
+// Constructor. 
+void ogre_nuat_construct(struct hg3dclass_struct * parent_c, unsigned short handle_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_nuat_apply(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * timeIndex_c, float weight_c, float scale_c);
+
+#endif 
diff --git a/include/ClassPtr.h b/include/ClassPtr.h
new file mode 100644
--- /dev/null
+++ b/include/ClassPtr.h
@@ -0,0 +1,206 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassPtr.h
+
+// Here are the methods defined, which do the class pointer
+// marshalling and the casting of subclasses to higher classes
+
+#include "wchar.h"
+
+
+#ifndef CLASSPTR_INCLUDE_H
+#define CLASSPTR_INCLUDE_H
+
+typedef struct hg3dclass_struct {
+	void *ptr;
+	void *fptr;
+} hg3dclass_struct;
+
+void *getHG3DClassPtr(hg3dclass_struct inSt, const char* className);
+
+
+typedef void ClassAnimation; 
+hg3dclass_struct getHG3DClass_Animation(void *ptrIn);
+
+typedef void ClassAnimationState; 
+hg3dclass_struct getHG3DClass_AnimationState(void *ptrIn);
+
+typedef void ClassAnimationStateSet; 
+hg3dclass_struct getHG3DClass_AnimationStateSet(void *ptrIn);
+
+typedef void ClassAnimationTrack; 
+hg3dclass_struct getHG3DClass_AnimationTrack(void *ptrIn);
+
+typedef void ClassArchive; 
+hg3dclass_struct getHG3DClass_Archive(void *ptrIn);
+
+typedef void ClassArchiveManager; 
+hg3dclass_struct getHG3DClass_ArchiveManager(void *ptrIn);
+
+typedef void ClassBillboard; 
+hg3dclass_struct getHG3DClass_Billboard(void *ptrIn);
+
+typedef void ClassBillboardChain; 
+hg3dclass_struct getHG3DClass_BillboardChain(void *ptrIn);
+
+typedef void ClassBillboardChainFactory; 
+hg3dclass_struct getHG3DClass_BillboardChainFactory(void *ptrIn);
+
+typedef void ClassBillboardSet; 
+hg3dclass_struct getHG3DClass_BillboardSet(void *ptrIn);
+
+typedef void ClassBillboardSetFactory; 
+hg3dclass_struct getHG3DClass_BillboardSetFactory(void *ptrIn);
+
+typedef void ClassBone; 
+hg3dclass_struct getHG3DClass_Bone(void *ptrIn);
+
+typedef void ClassCamera; 
+hg3dclass_struct getHG3DClass_Camera(void *ptrIn);
+
+typedef void ClassConfigFile; 
+hg3dclass_struct getHG3DClass_ConfigFile(void *ptrIn);
+
+typedef void ClassControllerManager; 
+hg3dclass_struct getHG3DClass_ControllerManager(void *ptrIn);
+
+typedef void ClassEntity; 
+hg3dclass_struct getHG3DClass_Entity(void *ptrIn);
+
+typedef void ClassEntityFactory; 
+hg3dclass_struct getHG3DClass_EntityFactory(void *ptrIn);
+
+typedef void ClassException; 
+hg3dclass_struct getHG3DClass_Exception(void *ptrIn);
+
+typedef void ClassFrustum; 
+hg3dclass_struct getHG3DClass_Frustum(void *ptrIn);
+
+typedef void ClassLight; 
+hg3dclass_struct getHG3DClass_Light(void *ptrIn);
+
+typedef void ClassLightFactory; 
+hg3dclass_struct getHG3DClass_LightFactory(void *ptrIn);
+
+typedef void ClassLog; 
+hg3dclass_struct getHG3DClass_Log(void *ptrIn);
+
+typedef void ClassLogManager; 
+hg3dclass_struct getHG3DClass_LogManager(void *ptrIn);
+
+typedef void ClassManualObject; 
+hg3dclass_struct getHG3DClass_ManualObject(void *ptrIn);
+
+typedef void ClassManualObjectFactory; 
+hg3dclass_struct getHG3DClass_ManualObjectFactory(void *ptrIn);
+
+typedef void ClassManualObjectSection; 
+hg3dclass_struct getHG3DClass_ManualObjectSection(void *ptrIn);
+
+typedef void ClassMaterial; 
+hg3dclass_struct getHG3DClass_Material(void *ptrIn);
+
+typedef void ClassMaterialManager; 
+hg3dclass_struct getHG3DClass_MaterialManager(void *ptrIn);
+
+typedef void ClassMesh; 
+hg3dclass_struct getHG3DClass_Mesh(void *ptrIn);
+
+typedef void ClassMeshManager; 
+hg3dclass_struct getHG3DClass_MeshManager(void *ptrIn);
+
+typedef void ClassMovableObject; 
+hg3dclass_struct getHG3DClass_MovableObject(void *ptrIn);
+
+typedef void ClassMovableObjectFactory; 
+hg3dclass_struct getHG3DClass_MovableObjectFactory(void *ptrIn);
+
+typedef void ClassMultiRenderTarget; 
+hg3dclass_struct getHG3DClass_MultiRenderTarget(void *ptrIn);
+
+typedef void ClassNode; 
+hg3dclass_struct getHG3DClass_Node(void *ptrIn);
+
+typedef void ClassNodeAnimationTrack; 
+hg3dclass_struct getHG3DClass_NodeAnimationTrack(void *ptrIn);
+
+typedef void ClassNumericAnimationTrack; 
+hg3dclass_struct getHG3DClass_NumericAnimationTrack(void *ptrIn);
+
+typedef void ClassRenderable; 
+hg3dclass_struct getHG3DClass_Renderable(void *ptrIn);
+
+typedef void ClassRenderSystem; 
+hg3dclass_struct getHG3DClass_RenderSystem(void *ptrIn);
+
+typedef void ClassRenderTarget; 
+hg3dclass_struct getHG3DClass_RenderTarget(void *ptrIn);
+
+typedef void ClassRenderTexture; 
+hg3dclass_struct getHG3DClass_RenderTexture(void *ptrIn);
+
+typedef void ClassRenderWindow; 
+hg3dclass_struct getHG3DClass_RenderWindow(void *ptrIn);
+
+typedef void ClassResource; 
+hg3dclass_struct getHG3DClass_Resource(void *ptrIn);
+
+typedef void ClassResourceGroupManager; 
+hg3dclass_struct getHG3DClass_ResourceGroupManager(void *ptrIn);
+
+typedef void ClassResourceManager; 
+hg3dclass_struct getHG3DClass_ResourceManager(void *ptrIn);
+
+typedef void ClassRoot; 
+hg3dclass_struct getHG3DClass_Root(void *ptrIn);
+
+typedef void ClassSceneManager; 
+hg3dclass_struct getHG3DClass_SceneManager(void *ptrIn);
+
+typedef void ClassSceneManagerFactory; 
+hg3dclass_struct getHG3DClass_SceneManagerFactory(void *ptrIn);
+
+typedef void ClassSceneNode; 
+hg3dclass_struct getHG3DClass_SceneNode(void *ptrIn);
+
+typedef void ClassSkeleton; 
+hg3dclass_struct getHG3DClass_Skeleton(void *ptrIn);
+
+typedef void ClassSkeletonManager; 
+hg3dclass_struct getHG3DClass_SkeletonManager(void *ptrIn);
+
+typedef void ClassTextureManager; 
+hg3dclass_struct getHG3DClass_TextureManager(void *ptrIn);
+
+typedef void ClassTimeIndex; 
+hg3dclass_struct getHG3DClass_TimeIndex(void *ptrIn);
+
+typedef void ClassVertexAnimationTrack; 
+hg3dclass_struct getHG3DClass_VertexAnimationTrack(void *ptrIn);
+
+typedef void ClassViewport; 
+hg3dclass_struct getHG3DClass_Viewport(void *ptrIn);
+
+typedef void ClassWindowEventUtilities; 
+hg3dclass_struct getHG3DClass_WindowEventUtilities(void *ptrIn);
+
+typedef void ClassHG3DUtilities; 
+hg3dclass_struct getHG3DClass_HG3DUtilities(void *ptrIn);
+
+#endif
diff --git a/include/ClassRenderSystem.h b/include/ClassRenderSystem.h
new file mode 100644
--- /dev/null
+++ b/include/ClassRenderSystem.h
@@ -0,0 +1,184 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassRenderSystem.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassRenderSystem
+#define _DEFINED_HG3D_ClassRenderSystem
+
+#include "ClassPtr.h"
+#include "ClassMultiRenderTarget.h"
+#include "ClassRenderTarget.h"
+#include "StructColour.h"
+#include "EnumGpuProgramType.h"
+
+
+// 
+void ogre_rds_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rds_getName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_rds_setConfigOption(struct hg3dclass_struct * thisclass_c, char * name_c, char * value_c);
+
+// 
+void ogre_rds_validateConfigOptions(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_rds_reinitialise(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rds_shutdown(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rds_setAmbientLight(struct hg3dclass_struct * thisclass_c, float r_c, float g_c, float b_c);
+
+// 
+void ogre_rds_setLightingEnabled(struct hg3dclass_struct * thisclass_c, int enabled_c);
+
+// 
+void ogre_rds_setWBufferEnabled(struct hg3dclass_struct * thisclass_c, int enabled_c);
+
+// 
+void ogre_rds_getWBufferEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rds_createMultiRenderTarget(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rds_destroyRenderWindow(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_rds_destroyRenderTexture(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_rds_destroyRenderTarget(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_rds_attachRenderTarget(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * target_c);
+
+// 
+void ogre_rds_getRenderTarget(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rds_detachRenderTarget(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rds_getErrorDescription(struct hg3dclass_struct * thisclass_c, int errorNumber_c, char * result_c);
+
+// 
+void ogre_rds_setWaitForVerticalBlank(struct hg3dclass_struct * thisclass_c, int enabled_c);
+
+// 
+void ogre_rds_getWaitForVerticalBlank(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rds_getGlobalNumberOfInstances(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rds_setGlobalNumberOfInstances(struct hg3dclass_struct * thisclass_c, const int val_c);
+
+// 
+void ogre_rds_setDepthBufferFor(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * renderTarget_c);
+
+// 
+void ogre_rds_areFixedFunctionLightsInViewSpace(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rds_convertColourValue(struct hg3dclass_struct * thisclass_c, struct colourvalue_struct * colour_c, unsigned int * pDest_c);
+
+// 
+void ogre_rds_setStencilCheckEnabled(struct hg3dclass_struct * thisclass_c, int enabled_c);
+
+// 
+void ogre_rds_setNormaliseNormals(struct hg3dclass_struct * thisclass_c, int normalise_c);
+
+// 
+void ogre_rds_bindGpuProgramPassIterationParameters(struct hg3dclass_struct * thisclass_c, enum EnumGpuProgramType gptype_c);
+
+// 
+void ogre_rds_unbindGpuProgram(struct hg3dclass_struct * thisclass_c, enum EnumGpuProgramType gptype_c);
+
+// 
+void ogre_rds_isGpuProgramBound(struct hg3dclass_struct * thisclass_c, enum EnumGpuProgramType gptype_c, int * result_c);
+
+// 
+void ogre_rds_addClipPlane2(struct hg3dclass_struct * thisclass_c, float A_c, float B_c, float C_c, float D_c);
+
+// 
+void ogre_rds_resetClipPlanes(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rds_setInvertVertexWinding(struct hg3dclass_struct * thisclass_c, int invert_c);
+
+// 
+void ogre_rds_getInvertVertexWinding(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rds_setScissorTest(struct hg3dclass_struct * thisclass_c, int enabled_c, int left_c, int top_c, int right_c, int bottom_c);
+
+// 
+void ogre_rds_clearFrameBuffer(struct hg3dclass_struct * thisclass_c, unsigned int buffers_c, struct colourvalue_struct * colour_c, float depth_c, unsigned short stencil_c);
+
+// 
+void ogre_rds_getHorizontalTexelOffset(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_rds_getVerticalTexelOffset(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_rds_getMinimumDepthInputValue(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_rds_getMaximumDepthInputValue(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_rds_setCurrentPassIterationCount(struct hg3dclass_struct * thisclass_c, const int count_c);
+
+// 
+void ogre_rds_setDeriveDepthBias(struct hg3dclass_struct * thisclass_c, int derive_c, float baseValue_c, float multiplier_c, float slopeScale_c);
+
+// 
+void ogre_rds_preExtraThreadsStarted(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rds_postExtraThreadsStarted(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rds_registerThread(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rds_unregisterThread(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rds_getDisplayMonitorCount(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_rds_beginProfileEvent(struct hg3dclass_struct * thisclass_c, char * eventName_c);
+
+// 
+void ogre_rds_endProfileEvent(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rds_markProfileEvent(struct hg3dclass_struct * thisclass_c, char * event_c);
+
+#endif 
diff --git a/include/ClassRenderTarget.h b/include/ClassRenderTarget.h
new file mode 100644
--- /dev/null
+++ b/include/ClassRenderTarget.h
@@ -0,0 +1,152 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassRenderTarget.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassRenderTarget
+#define _DEFINED_HG3D_ClassRenderTarget
+
+#include "ClassPtr.h"
+#include "ClassViewport.h"
+#include "ClassCamera.h"
+
+
+// 
+void ogre_rtgt_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Retrieve target's name. 
+void ogre_rtgt_getName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// Retrieve information about the render target. 
+void ogre_rtgt_getMetrics(struct hg3dclass_struct * thisclass_c, unsigned int * width_c, unsigned int * height_c, unsigned int * colourDepth_c);
+
+// 
+void ogre_rtgt_getWidth(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_rtgt_getHeight(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_rtgt_getColourDepth(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_rtgt_setDepthBufferPool(struct hg3dclass_struct * thisclass_c, unsigned short poolId_c);
+
+// 
+void ogre_rtgt_getDepthBufferPool(struct hg3dclass_struct * thisclass_c, unsigned short * result_c);
+
+// 
+void ogre_rtgt_detachDepthBuffer(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rtgt_update(struct hg3dclass_struct * thisclass_c, int swapBuffers_c);
+
+// 
+void ogre_rtgt_swapBuffers(struct hg3dclass_struct * thisclass_c, int waitForVSync_c);
+
+// 
+void ogre_rtgt_addViewport(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * cam_c, int ZOrder_c, float left_c, float top_c, float width_c, float height_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rtgt_getNumViewports(struct hg3dclass_struct * thisclass_c, unsigned short * result_c);
+
+// 
+void ogre_rtgt_getViewport(struct hg3dclass_struct * thisclass_c, unsigned short index_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rtgt_getViewportByZOrder(struct hg3dclass_struct * thisclass_c, int ZOrder_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rtgt_hasViewportWithZOrder(struct hg3dclass_struct * thisclass_c, int ZOrder_c, int * result_c);
+
+// 
+void ogre_rtgt_removeViewport(struct hg3dclass_struct * thisclass_c, int ZOrder_c);
+
+// 
+void ogre_rtgt_removeAllViewports(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rtgt_getStatistics(struct hg3dclass_struct * thisclass_c, float * lastFPS_c, float * avgFPS_c, float * bestFPS_c, float * worstFPS_c);
+
+// 
+void ogre_rtgt_getLastFPS(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_rtgt_getAverageFPS(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_rtgt_getBestFPS(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_rtgt_getWorstFPS(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_rtgt_getBestFrameTime(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_rtgt_getWorstFrameTime(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_rtgt_resetStatistics(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rtgt_removeAllListeners(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rtgt_isActive(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rtgt_setActive(struct hg3dclass_struct * thisclass_c, int state_c);
+
+// 
+void ogre_rtgt_setAutoUpdated(struct hg3dclass_struct * thisclass_c, int autoupdate_c);
+
+// 
+void ogre_rtgt_isAutoUpdated(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rtgt_writeContentsToFile(struct hg3dclass_struct * thisclass_c, char * filename_c);
+
+// 
+void ogre_rtgt_writeContentsToTimestampedFile(struct hg3dclass_struct * thisclass_c, char * filenamePrefix_c, char * filenameSuffix_c, char * result_c);
+
+// 
+void ogre_rtgt_requiresTextureFlipping(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rtgt_getTriangleCount(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rtgt_getBatchCount(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rtgt_isPrimary(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rtgt_isHardwareGammaEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rtgt_getFSAA(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_rtgt_getFSAAHint(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+#endif 
diff --git a/include/ClassRenderTexture.h b/include/ClassRenderTexture.h
new file mode 100644
--- /dev/null
+++ b/include/ClassRenderTexture.h
@@ -0,0 +1,33 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassRenderTexture.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassRenderTexture
+#define _DEFINED_HG3D_ClassRenderTexture
+
+#include "ClassPtr.h"
+
+
+// 
+void ogre_rtx_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassRenderWindow.h b/include/ClassRenderWindow.h
new file mode 100644
--- /dev/null
+++ b/include/ClassRenderWindow.h
@@ -0,0 +1,90 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassRenderWindow.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassRenderWindow
+#define _DEFINED_HG3D_ClassRenderWindow
+
+#include "ClassPtr.h"
+
+
+// 
+void ogre_rw_setFullscreen(struct hg3dclass_struct * thisclass_c, int fullScreen_c, unsigned int width_c, unsigned int height_c);
+
+// 
+void ogre_rw_destroy(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rw_resize(struct hg3dclass_struct * thisclass_c, unsigned int width_c, unsigned int height_c);
+
+// 
+void ogre_rw_windowMovedOrResized(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rw_reposition(struct hg3dclass_struct * thisclass_c, int left_c, int top_c);
+
+// 
+void ogre_rw_isVisible(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rw_setVisible(struct hg3dclass_struct * thisclass_c, int visible_c);
+
+// 
+void ogre_rw_isHidden(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rw_setHidden(struct hg3dclass_struct * thisclass_c, int hidden_c);
+
+// 
+void ogre_rw_setVSyncEnabled(struct hg3dclass_struct * thisclass_c, int vsync_c);
+
+// 
+void ogre_rw_isVSyncEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rw_setVSyncInterval(struct hg3dclass_struct * thisclass_c, unsigned int interval_c);
+
+// 
+void ogre_rw_getVSyncInterval(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_rw_isActive(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rw_isClosed(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rw_isPrimary(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rw_isFullScreen(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rw_getMetrics(struct hg3dclass_struct * thisclass_c, unsigned int * width_c, unsigned int * height_c, unsigned int * colourDepth_c, int * left_c, int * top_c);
+
+// 
+void ogre_rw_isDeactivatedOnFocusChange(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rw_setDeactivateOnFocusChange(struct hg3dclass_struct * thisclass_c, int deactivate_c);
+
+#endif 
diff --git a/include/ClassRenderable.h b/include/ClassRenderable.h
new file mode 100644
--- /dev/null
+++ b/include/ClassRenderable.h
@@ -0,0 +1,79 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassRenderable.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassRenderable
+#define _DEFINED_HG3D_ClassRenderable
+
+#include "ClassPtr.h"
+#include "StructSharedPtr.h"
+#include "ClassSceneManager.h"
+#include "ClassRenderSystem.h"
+#include "ClassCamera.h"
+
+
+// 
+void ogre_rndl_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rndl_getMaterial(struct hg3dclass_struct * thisclass_c, struct sharedptr_struct * result_c);
+
+// 
+void ogre_rndl_preRender(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * sm_c, struct hg3dclass_struct * rsys_c, int * result_c);
+
+// 
+void ogre_rndl_postRender(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * sm_c, struct hg3dclass_struct * rsys_c);
+
+// 
+void ogre_rndl_getNumWorldTransforms(struct hg3dclass_struct * thisclass_c, unsigned short * result_c);
+
+// 
+void ogre_rndl_setUseIdentityProjection(struct hg3dclass_struct * thisclass_c, int useIdentityProjection_c);
+
+// 
+void ogre_rndl_getUseIdentityProjection(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rndl_setUseIdentityView(struct hg3dclass_struct * thisclass_c, int useIdentityView_c);
+
+// 
+void ogre_rndl_getUseIdentityView(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rndl_getSquaredViewDepth(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * cam_c, float * result_c);
+
+// 
+void ogre_rndl_getCastsShadows(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rndl_removeCustomParameter(struct hg3dclass_struct * thisclass_c, int index_c);
+
+// 
+void ogre_rndl_hasCustomParameter(struct hg3dclass_struct * thisclass_c, int index_c, int * result_c);
+
+// 
+void ogre_rndl_setPolygonModeOverrideable(struct hg3dclass_struct * thisclass_c, int override_c);
+
+// 
+void ogre_rndl_getPolygonModeOverrideable(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+#endif 
diff --git a/include/ClassResource.h b/include/ClassResource.h
new file mode 100644
--- /dev/null
+++ b/include/ClassResource.h
@@ -0,0 +1,94 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassResource.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassResource
+#define _DEFINED_HG3D_ClassResource
+
+#include "ClassPtr.h"
+#include "ClassResourceManager.h"
+
+
+// 
+void ogre_rsrc_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rsrc_prepare(struct hg3dclass_struct * thisclass_c, int backgroundThread_c);
+
+// 
+void ogre_rsrc_load(struct hg3dclass_struct * thisclass_c, int backgroundThread_c);
+
+// 
+void ogre_rsrc_reload(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rsrc_isReloadable(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rsrc_isManuallyLoaded(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rsrc_unload(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rsrc_getSize(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rsrc_touch(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rsrc_getName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_rsrc_isPrepared(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rsrc_isLoaded(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rsrc_isLoading(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rsrc_isBackgroundLoaded(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rsrc_setBackgroundLoaded(struct hg3dclass_struct * thisclass_c, int bl_c);
+
+// 
+void ogre_rsrc_escalateLoading(struct hg3dclass_struct * thisclass_c);
+
+// Gets the group which this resource is a member of. 
+void ogre_rsrc_getGroup(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_rsrc_changeGroupOwnership(struct hg3dclass_struct * thisclass_c, char * newGroup_c);
+
+// Gets the manager which created this resource. 
+void ogre_rsrc_getCreator(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rsrc_getOrigin(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_rsrc_getStateCount(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+#endif 
diff --git a/include/ClassResourceGroupManager.h b/include/ClassResourceGroupManager.h
new file mode 100644
--- /dev/null
+++ b/include/ClassResourceGroupManager.h
@@ -0,0 +1,124 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassResourceGroupManager.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassResourceGroupManager
+#define _DEFINED_HG3D_ClassResourceGroupManager
+
+#include "ClassPtr.h"
+#include "ClassSceneManager.h"
+
+
+// 
+void ogre_rgmgr_construct(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rgmgr_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rgmgr_createResourceGroup(struct hg3dclass_struct * thisclass_c, char * name_c, const int inGlobalPool_c);
+
+// 
+void ogre_rgmgr_initialiseResourceGroup(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_rgmgr_initialiseAllResourceGroups(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rgmgr_prepareResourceGroup(struct hg3dclass_struct * thisclass_c, char * name_c, int prepareMainResources_c, int prepareWorldGeom_c);
+
+// 
+void ogre_rgmgr_loadResourceGroup(struct hg3dclass_struct * thisclass_c, char * name_c, int loadMainResources_c, int loadWorldGeom_c);
+
+// 
+void ogre_rgmgr_unloadResourceGroup(struct hg3dclass_struct * thisclass_c, char * name_c, int reloadableOnly_c);
+
+// 
+void ogre_rgmgr_unloadUnreferencedResourcesInGroup(struct hg3dclass_struct * thisclass_c, char * name_c, int reloadableOnly_c);
+
+// 
+void ogre_rgmgr_clearResourceGroup(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_rgmgr_destroyResourceGroup(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_rgmgr_isResourceGroupInitialised(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_rgmgr_isResourceGroupLoaded(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_rgmgr_resourceGroupExists(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_rgmgr_addResourceLocation(struct hg3dclass_struct * thisclass_c, char * name_c, char * locType_c, char * resGroup_c, int recursive_c);
+
+// 
+void ogre_rgmgr_removeResourceLocation(struct hg3dclass_struct * thisclass_c, char * name_c, char * resGroup_c);
+
+// 
+void ogre_rgmgr_resourceLocationExists(struct hg3dclass_struct * thisclass_c, char * name_c, char * resGroup_c, int * result_c);
+
+// 
+void ogre_rgmgr_undeclareResource(struct hg3dclass_struct * thisclass_c, char * name_c, char * groupName_c);
+
+// 
+void ogre_rgmgr_resourceExists(struct hg3dclass_struct * thisclass_c, char * group_c, char * filename_c, int * result_c);
+
+// 
+void ogre_rgmgr_resourceExistsInAnyGroup(struct hg3dclass_struct * thisclass_c, char * filename_c, int * result_c);
+
+// 
+void ogre_rgmgr_findGroupContainingResource(struct hg3dclass_struct * thisclass_c, char * filename_c, char * result_c);
+
+// 
+void ogre_rgmgr_deleteResource(struct hg3dclass_struct * thisclass_c, char * filename_c, char * groupName_c, char * locationPattern_c);
+
+// 
+void ogre_rgmgr_deleteMatchingResources(struct hg3dclass_struct * thisclass_c, char * filePattern_c, char * groupName_c, char * locationPattern_c);
+
+// 
+void ogre_rgmgr_setWorldResourceGroupName(struct hg3dclass_struct * thisclass_c, char * groupName_c);
+
+// Gets the resource group that 'world' resources will use. 
+void ogre_rgmgr_getWorldResourceGroupName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_rgmgr_linkWorldGeometryToResourceGroup(struct hg3dclass_struct * thisclass_c, char * group_c, char * worldGeometry_c, struct hg3dclass_struct * sceneManager_c);
+
+// 
+void ogre_rgmgr_unlinkWorldGeometryFromResourceGroup(struct hg3dclass_struct * thisclass_c, char * group_c);
+
+// 
+void ogre_rgmgr_isResourceGroupInGlobalPool(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_rgmgr_shutdownAll(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rgmgr_getSingleton(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rgmgr_getSingletonPtr(struct hg3dclass_struct * result_c);
+
+#endif 
diff --git a/include/ClassResourceManager.h b/include/ClassResourceManager.h
new file mode 100644
--- /dev/null
+++ b/include/ClassResourceManager.h
@@ -0,0 +1,87 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassResourceManager.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassResourceManager
+#define _DEFINED_HG3D_ClassResourceManager
+
+#include "ClassPtr.h"
+
+
+// 
+void ogre_rsrcmgr_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rsrcmgr_setMemoryBudget(struct hg3dclass_struct * thisclass_c, int bytes_c);
+
+// 
+void ogre_rsrcmgr_getMemoryBudget(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rsrcmgr_getMemoryUsage(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rsrcmgr_unload(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_rsrcmgr_unloadAll(struct hg3dclass_struct * thisclass_c, int reloadableOnly_c);
+
+// 
+void ogre_rsrcmgr_reloadAll(struct hg3dclass_struct * thisclass_c, int reloadableOnly_c);
+
+// 
+void ogre_rsrcmgr_unloadUnreferencedResources(struct hg3dclass_struct * thisclass_c, int reloadableOnly_c);
+
+// 
+void ogre_rsrcmgr_reloadUnreferencedResources(struct hg3dclass_struct * thisclass_c, int reloadableOnly_c);
+
+// 
+void ogre_rsrcmgr_remove2(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_rsrcmgr_removeAll(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rsrcmgr_removeUnreferencedResources(struct hg3dclass_struct * thisclass_c, int reloadableOnly_c);
+
+// Returns whether the named resource exists in this manager. 
+void ogre_rsrcmgr_resourceExists(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_rsrcmgr_getLoadingOrder(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_rsrcmgr_getResourceType(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_rsrcmgr_setVerbose(struct hg3dclass_struct * thisclass_c, int v_c);
+
+// 
+void ogre_rsrcmgr_getVerbose(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Destroy a resource pool. 
+void ogre_rsrcmgr_destroyResourcePool2(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// destroy all pools 
+void ogre_rsrcmgr_destroyAllResourcePools(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassRoot.h b/include/ClassRoot.h
new file mode 100644
--- /dev/null
+++ b/include/ClassRoot.h
@@ -0,0 +1,207 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassRoot.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassRoot
+#define _DEFINED_HG3D_ClassRoot
+
+#include "ClassPtr.h"
+#include "ClassRenderSystem.h"
+#include "ClassRenderWindow.h"
+#include "ClassSceneManagerFactory.h"
+#include "ClassSceneManager.h"
+#include "ClassTextureManager.h"
+#include "ClassMeshManager.h"
+#include "StructColour.h"
+#include "ClassRenderTarget.h"
+#include "ClassMovableObjectFactory.h"
+
+
+// 
+void ogre_rt_construct(char * pluginFileName_c, char * configFileName_c, char * logFileName_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rt_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rt_saveConfig(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rt_restoreConfig(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rt_showConfigDialog(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rt_addRenderSystem(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * newRend_c);
+
+// 
+void ogre_rt_getRenderSystemByName(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rt_setRenderSystem(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * system_c);
+
+// 
+void ogre_rt_getRenderSystem(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rt_initialise(struct hg3dclass_struct * thisclass_c, int autoCreateWindow_c, char * windowTitle_c, char * customCapabilitiesConfig_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rt_isInitialised(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rt_getRemoveRenderQueueStructuresOnClear(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rt_setRemoveRenderQueueStructuresOnClear(struct hg3dclass_struct * thisclass_c, int r_c);
+
+// 
+void ogre_rt_addSceneManagerFactory(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * fact_c);
+
+// 
+void ogre_rt_removeSceneManagerFactory(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * fact_c);
+
+// 
+void ogre_rt_createSceneManager(struct hg3dclass_struct * thisclass_c, char * typeName_c, char * instanceName_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rt_destroySceneManager(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * sm_c);
+
+// 
+void ogre_rt_getSceneManager(struct hg3dclass_struct * thisclass_c, char * instanceName_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rt_hasSceneManager(struct hg3dclass_struct * thisclass_c, char * instanceName_c, int * result_c);
+
+// 
+void ogre_rt_getTextureManager(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rt_getMeshManager(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rt_getErrorDescription(struct hg3dclass_struct * thisclass_c, int errorNumber_c, char * result_c);
+
+// 
+void ogre_rt_queueEndRendering(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rt_startRendering(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rt_renderOneFrame(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rt_renderOneFrame2(struct hg3dclass_struct * thisclass_c, float timeSinceLastFrame_c, int * result_c);
+
+// 
+void ogre_rt_shutdown(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rt_addResourceLocation(struct hg3dclass_struct * thisclass_c, char * name_c, char * locType_c, char * groupName_c, int recursive_c);
+
+// 
+void ogre_rt_removeResourceLocation(struct hg3dclass_struct * thisclass_c, char * name_c, char * groupName_c);
+
+// 
+void ogre_rt_convertColourValue(struct hg3dclass_struct * thisclass_c, struct colourvalue_struct * colour_c, unsigned int * pDest_c);
+
+// 
+void ogre_rt_getAutoCreatedWindow(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rt_detachRenderTarget(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * pWin_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rt_detachRenderTarget2(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rt_destroyRenderTarget(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * target_c);
+
+// 
+void ogre_rt_destroyRenderTarget2(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_rt_getRenderTarget(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rt_loadPlugin(struct hg3dclass_struct * thisclass_c, char * pluginName_c);
+
+// 
+void ogre_rt_unloadPlugin(struct hg3dclass_struct * thisclass_c, char * pluginName_c);
+
+// 
+void ogre_rt_destroyRenderQueueInvocationSequence(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_rt_destroyAllRenderQueueInvocationSequences(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rt_clearEventTimes(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_rt_setFrameSmoothingPeriod(struct hg3dclass_struct * thisclass_c, float period_c);
+
+// 
+void ogre_rt_getFrameSmoothingPeriod(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_rt_addMovableObjectFactory(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * fact_c, int overrideExisting_c);
+
+// 
+void ogre_rt_removeMovableObjectFactory(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * fact_c);
+
+// Checks whether a factory is registered for a given MovableObject
+void ogre_rt_hasMovableObjectFactory(struct hg3dclass_struct * thisclass_c, char * typeName_c, int * result_c);
+
+// Get a MovableObjectFactory
+void ogre_rt_getMovableObjectFactory(struct hg3dclass_struct * thisclass_c, char * typeName_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rt_getDisplayMonitorCount(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_rt_setBlendIndicesGpuRedundant(struct hg3dclass_struct * thisclass_c, int redundant_c);
+
+// 
+void ogre_rt_isBlendIndicesGpuRedundant(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rt_setBlendWeightsGpuRedundant(struct hg3dclass_struct * thisclass_c, int redundant_c);
+
+// 
+void ogre_rt_isBlendWeightsGpuRedundant(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_rt_setDefaultMinPixelSize(struct hg3dclass_struct * thisclass_c, float pixelSize_c);
+
+// 
+void ogre_rt_getDefaultMinPixelSize(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_rt_getSingleton(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_rt_getSingletonPtr(struct hg3dclass_struct * result_c);
+
+#endif 
diff --git a/include/ClassSceneManager.h b/include/ClassSceneManager.h
new file mode 100644
--- /dev/null
+++ b/include/ClassSceneManager.h
@@ -0,0 +1,555 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassSceneManager.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassSceneManager
+#define _DEFINED_HG3D_ClassSceneManager
+
+#include "ClassPtr.h"
+#include "ClassCamera.h"
+#include "ClassLight.h"
+#include "ClassSceneNode.h"
+#include "ClassEntity.h"
+#include "StructSharedPtr.h"
+#include "EnumSceneManagerPrefabType.h"
+#include "ClassManualObject.h"
+#include "ClassBillboardChain.h"
+#include "StructColour.h"
+#include "StructQuaternion.h"
+#include "ClassBillboardSet.h"
+#include "ClassAnimation.h"
+#include "ClassAnimationState.h"
+#include "EnumSceneManagerSpecialCaseRenderQueueMode.h"
+#include "EnumLightType.h"
+#include "ClassMovableObject.h"
+#include "ClassRenderSystem.h"
+#include "ClassViewport.h"
+
+
+// 
+void ogre_scmgr_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_scmgr_getName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_scmgr_getTypeName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_scmgr_createCamera(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_getCamera(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_hasCamera(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_scmgr_destroyCamera(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * cam_c);
+
+// 
+void ogre_scmgr_destroyCamera2(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_scmgr_destroyAllCameras(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_scmgr_createLight(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_createLight2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_getLight(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_hasLight(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_scmgr_destroyLight(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_scmgr_destroyLight2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * light_c);
+
+// 
+void ogre_scmgr_destroyAllLights(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_scmgr_createSceneNode(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_createSceneNode2(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_destroySceneNode(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_scmgr_destroySceneNode2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * sn_c);
+
+// 
+void ogre_scmgr_getRootSceneNode(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_getSceneNode(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_hasSceneNode(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_scmgr_createEntity(struct hg3dclass_struct * thisclass_c, char * entityName_c, char * meshName_c, char * groupName_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_createEntity2(struct hg3dclass_struct * thisclass_c, char * entityName_c, struct sharedptr_struct * pMesh_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_createEntity3(struct hg3dclass_struct * thisclass_c, char * meshName_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_createEntity4(struct hg3dclass_struct * thisclass_c, struct sharedptr_struct * pMesh_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_createEntity5(struct hg3dclass_struct * thisclass_c, char * entityName_c, enum EnumSceneManagerPrefabType ptype_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_createEntity6(struct hg3dclass_struct * thisclass_c, enum EnumSceneManagerPrefabType ptype_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_getEntity(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_hasEntity(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_scmgr_destroyEntity(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * ent_c);
+
+// 
+void ogre_scmgr_destroyEntity2(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_scmgr_destroyAllEntities(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_scmgr_createManualObject(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_createManualObject2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_getManualObject(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_hasManualObject(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_scmgr_destroyManualObject(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * obj_c);
+
+// 
+void ogre_scmgr_destroyManualObject2(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_scmgr_destroyAllManualObjects(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_scmgr_createBillboardChain(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_createBillboardChain2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_getBillboardChain(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_hasBillboardChain(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_scmgr_destroyBillboardChain(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * obj_c);
+
+// 
+void ogre_scmgr_destroyBillboardChain2(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_scmgr_destroyAllBillboardChains(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_scmgr_hasRibbonTrail(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_scmgr_destroyRibbonTrail2(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_scmgr_destroyAllRibbonTrails(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_scmgr_hasParticleSystem(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_scmgr_destroyParticleSystem2(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_scmgr_destroyAllParticleSystems(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_scmgr_clearScene(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_scmgr_setAmbientLight(struct hg3dclass_struct * thisclass_c, struct colourvalue_struct * colour_c);
+
+// 
+void ogre_scmgr_getAmbientLight(struct hg3dclass_struct * thisclass_c, struct colourvalue_struct * result_c);
+
+// 
+void ogre_scmgr_prepareWorldGeometry(struct hg3dclass_struct * thisclass_c, char * filename_c);
+
+// 
+void ogre_scmgr_setWorldGeometry(struct hg3dclass_struct * thisclass_c, char * filename_c);
+
+// 
+void ogre_scmgr_estimateWorldGeometry(struct hg3dclass_struct * thisclass_c, char * filename_c, int * result_c);
+
+// 
+void ogre_scmgr_hasOption(struct hg3dclass_struct * thisclass_c, char * strKey_c, int * result_c);
+
+// 
+void ogre_scmgr_setSkyPlaneEnabled(struct hg3dclass_struct * thisclass_c, int enable_c);
+
+// 
+void ogre_scmgr_isSkyPlaneEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_getSkyPlaneNode(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_setSkyBox(struct hg3dclass_struct * thisclass_c, int enable_c, char * materialName_c, float distance_c, int drawFirst_c, struct quaternion_struct * orientation_c, char * groupName_c);
+
+// 
+void ogre_scmgr_setSkyBoxEnabled(struct hg3dclass_struct * thisclass_c, int enable_c);
+
+// 
+void ogre_scmgr_isSkyBoxEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_getSkyBoxNode(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_setSkyDome(struct hg3dclass_struct * thisclass_c, int enable_c, char * materialName_c, float curvature_c, float tiling_c, float distance_c, int drawFirst_c, struct quaternion_struct * orientation_c, int xsegments_c, int ysegments_c, int ysegments_keep_c, char * groupName_c);
+
+// 
+void ogre_scmgr_setSkyDomeEnabled(struct hg3dclass_struct * thisclass_c, int enable_c);
+
+// 
+void ogre_scmgr_isSkyDomeEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_getSkyDomeNode(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_getFogColour(struct hg3dclass_struct * thisclass_c, struct colourvalue_struct * result_c);
+
+// 
+void ogre_scmgr_getFogStart(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_scmgr_getFogEnd(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_scmgr_getFogDensity(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_scmgr_createBillboardSet(struct hg3dclass_struct * thisclass_c, char * name_c, unsigned int poolSize_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_createBillboardSet2(struct hg3dclass_struct * thisclass_c, unsigned int poolSize_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_getBillboardSet(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_hasBillboardSet(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_scmgr_destroyBillboardSet(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * set_c);
+
+// 
+void ogre_scmgr_destroyBillboardSet2(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_scmgr_destroyAllBillboardSets(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_scmgr_setDisplaySceneNodes(struct hg3dclass_struct * thisclass_c, int display_c);
+
+// 
+void ogre_scmgr_getDisplaySceneNodes(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_createAnimation(struct hg3dclass_struct * thisclass_c, char * name_c, float length_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_getAnimation(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_hasAnimation(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_scmgr_destroyAnimation(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_scmgr_destroyAllAnimations(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_scmgr_createAnimationState(struct hg3dclass_struct * thisclass_c, char * animName_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_getAnimationState(struct hg3dclass_struct * thisclass_c, char * animName_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_hasAnimationState(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_scmgr_destroyAnimationState(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_scmgr_destroyAllAnimationStates(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_scmgr_clearSpecialCaseRenderQueues(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_scmgr_setSpecialCaseRenderQueueMode(struct hg3dclass_struct * thisclass_c, enum EnumSceneManagerSpecialCaseRenderQueueMode mode_c);
+
+// 
+void ogre_scmgr_getSpecialCaseRenderQueueMode(struct hg3dclass_struct * thisclass_c, enum EnumSceneManagerSpecialCaseRenderQueueMode * result_c);
+
+// 
+void ogre_scmgr_showBoundingBoxes(struct hg3dclass_struct * thisclass_c, int bShow_c);
+
+// 
+void ogre_scmgr_getShowBoundingBoxes(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_setShowDebugShadows(struct hg3dclass_struct * thisclass_c, int debug_c);
+
+// 
+void ogre_scmgr_getShowDebugShadows(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_setShadowColour(struct hg3dclass_struct * thisclass_c, struct colourvalue_struct * colour_c);
+
+// 
+void ogre_scmgr_getShadowColour(struct hg3dclass_struct * thisclass_c, struct colourvalue_struct * result_c);
+
+// 
+void ogre_scmgr_setShadowDirectionalLightExtrusionDistance(struct hg3dclass_struct * thisclass_c, float dist_c);
+
+// 
+void ogre_scmgr_getShadowDirectionalLightExtrusionDistance(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_scmgr_setShadowFarDistance(struct hg3dclass_struct * thisclass_c, float distance_c);
+
+// 
+void ogre_scmgr_getShadowFarDistance(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_scmgr_getShadowFarDistanceSquared(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_scmgr_setShadowIndexBufferSize(struct hg3dclass_struct * thisclass_c, int size_c);
+
+// Get the size of the shadow index buffer. 
+void ogre_scmgr_getShadowIndexBufferSize(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_setShadowTextureSize(struct hg3dclass_struct * thisclass_c, unsigned short size_c);
+
+// 
+void ogre_scmgr_setShadowTextureFSAA(struct hg3dclass_struct * thisclass_c, unsigned short fsaa_c);
+
+// 
+void ogre_scmgr_setShadowTextureCount(struct hg3dclass_struct * thisclass_c, int count_c);
+
+// Get the number of the textures allocated for texture based shadows. 
+void ogre_scmgr_getShadowTextureCount(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_setShadowTextureCountPerLightType(struct hg3dclass_struct * thisclass_c, enum EnumLightType type_c, int count_c);
+
+// Get the number of shadow textures is assigned for the given light type. 
+void ogre_scmgr_getShadowTextureCountPerLightType(struct hg3dclass_struct * thisclass_c, enum EnumLightType type_c, int * result_c);
+
+// 
+void ogre_scmgr_getShadowTexture(struct hg3dclass_struct * thisclass_c, int shadowIndex_c, struct sharedptr_struct * result_c);
+
+// 
+void ogre_scmgr_setShadowDirLightTextureOffset(struct hg3dclass_struct * thisclass_c, float offset_c);
+
+// 
+void ogre_scmgr_getShadowDirLightTextureOffset(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_scmgr_setShadowTextureFadeStart(struct hg3dclass_struct * thisclass_c, float fadeStart_c);
+
+// 
+void ogre_scmgr_setShadowTextureFadeEnd(struct hg3dclass_struct * thisclass_c, float fadeEnd_c);
+
+// 
+void ogre_scmgr_setShadowTextureSelfShadow(struct hg3dclass_struct * thisclass_c, int selfShadow_c);
+
+// Gets whether or not texture shadows attempt to self-shadow. 
+void ogre_scmgr_getShadowTextureSelfShadow(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_setShadowTextureCasterMaterial(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_scmgr_setShadowTextureReceiverMaterial(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_scmgr_setShadowCasterRenderBackFaces(struct hg3dclass_struct * thisclass_c, int bf_c);
+
+// 
+void ogre_scmgr_getShadowCasterRenderBackFaces(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_setShadowUseInfiniteFarPlane(struct hg3dclass_struct * thisclass_c, int enable_c);
+
+// 
+void ogre_scmgr_isShadowTechniqueStencilBased(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_isShadowTechniqueTextureBased(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_isShadowTechniqueModulative(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_isShadowTechniqueAdditive(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_isShadowTechniqueIntegrated(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_isShadowTechniqueInUse(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_setShadowUseLightClipPlanes(struct hg3dclass_struct * thisclass_c, int enabled_c);
+
+// 
+void ogre_scmgr_getShadowUseLightClipPlanes(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_setLateMaterialResolving(struct hg3dclass_struct * thisclass_c, int isLate_c);
+
+// 
+void ogre_scmgr_isLateMaterialResolving(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_hasStaticGeometry(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_scmgr_destroyStaticGeometry2(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_scmgr_destroyAllStaticGeometry(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_scmgr_destroyInstancedGeometry2(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_scmgr_destroyAllInstancedGeometry(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_scmgr_hasInstanceManager(struct hg3dclass_struct * thisclass_c, char * managerName_c, int * result_c);
+
+// 
+void ogre_scmgr_destroyInstanceManager(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_scmgr_destroyAllInstanceManagers(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_scmgr_destroyMovableObject(struct hg3dclass_struct * thisclass_c, char * name_c, char * typeName_c);
+
+// 
+void ogre_scmgr_destroyMovableObject2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * m_c);
+
+// 
+void ogre_scmgr_destroyAllMovableObjectsByType(struct hg3dclass_struct * thisclass_c, char * typeName_c);
+
+// 
+void ogre_scmgr_destroyAllMovableObjects(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_scmgr_getMovableObject(struct hg3dclass_struct * thisclass_c, char * name_c, char * typeName_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_hasMovableObject(struct hg3dclass_struct * thisclass_c, char * name_c, char * typeName_c, int * result_c);
+
+// 
+void ogre_scmgr_injectMovableObject(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * m_c);
+
+// 
+void ogre_scmgr_extractMovableObject(struct hg3dclass_struct * thisclass_c, char * name_c, char * typeName_c);
+
+// 
+void ogre_scmgr_extractMovableObject2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * m_c);
+
+// 
+void ogre_scmgr_extractAllMovableObjectsByType(struct hg3dclass_struct * thisclass_c, char * typeName_c);
+
+// 
+void ogre_scmgr_setVisibilityMask(struct hg3dclass_struct * thisclass_c, unsigned int vmask_c);
+
+// 
+void ogre_scmgr_getVisibilityMask(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_scmgr_setFindVisibleObjects(struct hg3dclass_struct * thisclass_c, int find_c);
+
+// 
+void ogre_scmgr_getFindVisibleObjects(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_setNormaliseNormalsOnScale(struct hg3dclass_struct * thisclass_c, int n_c);
+
+// 
+void ogre_scmgr_getNormaliseNormalsOnScale(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_setFlipCullingOnNegativeScale(struct hg3dclass_struct * thisclass_c, int n_c);
+
+// 
+void ogre_scmgr_getFlipCullingOnNegativeScale(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_scmgr_getDestinationRenderSystem(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_getCurrentViewport(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_scmgr_setCameraRelativeRendering(struct hg3dclass_struct * thisclass_c, int rel_c);
+
+// 
+void ogre_scmgr_getCameraRelativeRendering(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+#endif 
diff --git a/include/ClassSceneManagerFactory.h b/include/ClassSceneManagerFactory.h
new file mode 100644
--- /dev/null
+++ b/include/ClassSceneManagerFactory.h
@@ -0,0 +1,40 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassSceneManagerFactory.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassSceneManagerFactory
+#define _DEFINED_HG3D_ClassSceneManagerFactory
+
+#include "ClassPtr.h"
+#include "ClassSceneManager.h"
+
+
+// 
+void ogre_smf_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_smf_createInstance(struct hg3dclass_struct * thisclass_c, char * instanceName_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_smf_destroyInstance(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * instance_c);
+
+#endif 
diff --git a/include/ClassSceneNode.h b/include/ClassSceneNode.h
new file mode 100644
--- /dev/null
+++ b/include/ClassSceneNode.h
@@ -0,0 +1,115 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassSceneNode.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassSceneNode
+#define _DEFINED_HG3D_ClassSceneNode
+
+#include "ClassPtr.h"
+#include "ClassMovableObject.h"
+#include "ClassSceneManager.h"
+#include "StructVec3.h"
+#include "StructQuaternion.h"
+
+
+// 
+void ogre_sn_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_sn_attachObject(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * obj_c);
+
+// 
+void ogre_sn_numAttachedObjects(struct hg3dclass_struct * thisclass_c, unsigned short * result_c);
+
+// 
+void ogre_sn_getAttachedObject(struct hg3dclass_struct * thisclass_c, unsigned short index_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_sn_getAttachedObject2(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_sn_detachObject(struct hg3dclass_struct * thisclass_c, unsigned short index_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_sn_detachObject2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * obj_c);
+
+// 
+void ogre_sn_detachObject3(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_sn_detachAllObjects(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_sn_isInSceneGraph(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_sn_getCreator(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_sn_removeAndDestroyChild(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_sn_removeAndDestroyChild2(struct hg3dclass_struct * thisclass_c, unsigned short index_c);
+
+// 
+void ogre_sn_removeAndDestroyAllChildren(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_sn_showBoundingBox(struct hg3dclass_struct * thisclass_c, int bShow_c);
+
+// 
+void ogre_sn_hideBoundingBox(struct hg3dclass_struct * thisclass_c, int bHide_c);
+
+// 
+void ogre_sn_getShowBoundingBox(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_sn_createChildSceneNode(struct hg3dclass_struct * thisclass_c, struct vector3_struct * translate_c, struct quaternion_struct * rotate_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_sn_createChildSceneNode2(struct hg3dclass_struct * thisclass_c, char * name_c, struct vector3_struct * translate_c, struct quaternion_struct * rotate_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_sn_setFixedYawAxis(struct hg3dclass_struct * thisclass_c, int useFixed_c, struct vector3_struct * fixedAxis_c);
+
+// 
+void ogre_sn_getAutoTrackTarget(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_sn_getAutoTrackOffset(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_sn_getAutoTrackLocalDirection(struct hg3dclass_struct * thisclass_c, struct vector3_struct * result_c);
+
+// 
+void ogre_sn_getParentSceneNode(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_sn_setVisible(struct hg3dclass_struct * thisclass_c, int visible_c, int cascade_c);
+
+// 
+void ogre_sn_flipVisibility(struct hg3dclass_struct * thisclass_c, int cascade_c);
+
+// 
+void ogre_sn_setDebugDisplayEnabled(struct hg3dclass_struct * thisclass_c, int enabled_c, int cascade_c);
+
+#endif 
diff --git a/include/ClassSkeleton.h b/include/ClassSkeleton.h
new file mode 100644
--- /dev/null
+++ b/include/ClassSkeleton.h
@@ -0,0 +1,112 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassSkeleton.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassSkeleton
+#define _DEFINED_HG3D_ClassSkeleton
+
+#include "ClassPtr.h"
+#include "ClassBone.h"
+#include "ClassAnimation.h"
+#include "ClassAnimationStateSet.h"
+#include "EnumSkeletonAnimationBlendMode.h"
+
+
+// 
+void ogre_skl_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_skl_createBone(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_skl_createBone2(struct hg3dclass_struct * thisclass_c, unsigned short handle_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_skl_createBone3(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_skl_createBone4(struct hg3dclass_struct * thisclass_c, char * name_c, unsigned short handle_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_skl_getNumBones(struct hg3dclass_struct * thisclass_c, unsigned short * result_c);
+
+// 
+void ogre_skl_getRootBone(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_skl_getBone(struct hg3dclass_struct * thisclass_c, unsigned short handle_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_skl_getBone2(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_skl_hasBone(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_skl_setBindingPose(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_skl_reset(struct hg3dclass_struct * thisclass_c, int resetManualBones_c);
+
+// 
+void ogre_skl_createAnimation(struct hg3dclass_struct * thisclass_c, char * name_c, float length_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_skl_getAnimation2(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_skl_hasAnimation(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// 
+void ogre_skl_removeAnimation(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// 
+void ogre_skl_setAnimationState(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * animSet_c);
+
+// 
+void ogre_skl_getNumAnimations(struct hg3dclass_struct * thisclass_c, unsigned short * result_c);
+
+// 
+void ogre_skl_getAnimation3(struct hg3dclass_struct * thisclass_c, unsigned short index_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_skl_getBlendMode(struct hg3dclass_struct * thisclass_c, enum EnumSkeletonAnimationBlendMode * result_c);
+
+// 
+void ogre_skl_setBlendMode(struct hg3dclass_struct * thisclass_c, enum EnumSkeletonAnimationBlendMode state_c);
+
+// 
+void ogre_skl_optimiseAllAnimations(struct hg3dclass_struct * thisclass_c, int preservingIdentityNodeTracks_c);
+
+// 
+void ogre_skl_addLinkedSkeletonAnimationSource(struct hg3dclass_struct * thisclass_c, char * skelName_c, float scale_c);
+
+// Remove all links to other skeletons for the purposes of sharing animation. 
+void ogre_skl_removeAllLinkedSkeletonAnimationSources(struct hg3dclass_struct * thisclass_c);
+
+// Have manual bones been modified since the skeleton was last updated? 
+void ogre_skl_getManualBonesDirty(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Are there any manually controlled bones? 
+void ogre_skl_hasManualBones(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+#endif 
diff --git a/include/ClassSkeletonManager.h b/include/ClassSkeletonManager.h
new file mode 100644
--- /dev/null
+++ b/include/ClassSkeletonManager.h
@@ -0,0 +1,42 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassSkeletonManager.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassSkeletonManager
+#define _DEFINED_HG3D_ClassSkeletonManager
+
+#include "ClassPtr.h"
+
+
+// Constructor. 
+void ogre_sklmgr_construct(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_sklmgr_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_sklmgr_getSingleton(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_sklmgr_getSingletonPtr(struct hg3dclass_struct * result_c);
+
+#endif 
diff --git a/include/ClassTextureManager.h b/include/ClassTextureManager.h
new file mode 100644
--- /dev/null
+++ b/include/ClassTextureManager.h
@@ -0,0 +1,45 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassTextureManager.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassTextureManager
+#define _DEFINED_HG3D_ClassTextureManager
+
+#include "ClassPtr.h"
+
+
+// 
+void ogre_txmgr_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_txmgr_setDefaultNumMipmaps(struct hg3dclass_struct * thisclass_c, int num_c);
+
+// 
+void ogre_txmgr_getDefaultNumMipmaps(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_txmgr_getSingleton(struct hg3dclass_struct * result_c);
+
+// 
+void ogre_txmgr_getSingletonPtr(struct hg3dclass_struct * result_c);
+
+#endif 
diff --git a/include/ClassTimeIndex.h b/include/ClassTimeIndex.h
new file mode 100644
--- /dev/null
+++ b/include/ClassTimeIndex.h
@@ -0,0 +1,42 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassTimeIndex.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassTimeIndex
+#define _DEFINED_HG3D_ClassTimeIndex
+
+#include "ClassPtr.h"
+
+
+// 
+void ogre_tnx_construct(float timePos_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_tnx_hasKeyIndex(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_tnx_getTimePos(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_tnx_getKeyIndex(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+#endif 
diff --git a/include/ClassVertexAnimationTrack.h b/include/ClassVertexAnimationTrack.h
new file mode 100644
--- /dev/null
+++ b/include/ClassVertexAnimationTrack.h
@@ -0,0 +1,58 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassVertexAnimationTrack.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassVertexAnimationTrack
+#define _DEFINED_HG3D_ClassVertexAnimationTrack
+
+#include "ClassPtr.h"
+#include "ClassAnimation.h"
+#include "EnumVertexAnimationType.h"
+#include "ClassTimeIndex.h"
+#include "EnumVertexAnimationTrackTargetMode.h"
+
+
+// Constructor. 
+void ogre_vat_construct(struct hg3dclass_struct * parent_c, unsigned short handle_c, enum EnumVertexAnimationType animType_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_vat_getAnimationType(struct hg3dclass_struct * thisclass_c, enum EnumVertexAnimationType * result_c);
+
+// 
+void ogre_vat_getVertexAnimationIncludesNormals(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_vat_apply(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * timeIndex_c, float weight_c, float scale_c);
+
+// Set the target mode. 
+void ogre_vat_setTargetMode(struct hg3dclass_struct * thisclass_c, enum EnumVertexAnimationTrackTargetMode m_c);
+
+// Get the target mode. 
+void ogre_vat_getTargetMode(struct hg3dclass_struct * thisclass_c, enum EnumVertexAnimationTrackTargetMode * result_c);
+
+// 
+void ogre_vat_hasNonZeroKeyFrames(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_vat_optimise(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassViewport.h b/include/ClassViewport.h
new file mode 100644
--- /dev/null
+++ b/include/ClassViewport.h
@@ -0,0 +1,170 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassViewport.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassViewport
+#define _DEFINED_HG3D_ClassViewport
+
+#include "ClassPtr.h"
+#include "ClassCamera.h"
+#include "ClassRenderTarget.h"
+#include "StructColour.h"
+#include "EnumOrientationMode.h"
+#include "StructVec2.h"
+
+
+// 
+void ogre_vprt_construct(struct hg3dclass_struct * camera_c, struct hg3dclass_struct * target_c, float left_c, float top_c, float width_c, float height_c, int ZOrder_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_vprt_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_vprt_update(struct hg3dclass_struct * thisclass_c);
+
+// 
+void ogre_vprt_clear(struct hg3dclass_struct * thisclass_c, unsigned int buffers_c, struct colourvalue_struct * colour_c, float depth_c, unsigned short stencil_c);
+
+// 
+void ogre_vprt_getTarget(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_vprt_getCamera(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void ogre_vprt_setCamera(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * cam_c);
+
+// 
+void ogre_vprt_getZOrder(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_vprt_getLeft(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_vprt_getTop(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_vprt_getWidth(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_vprt_getHeight(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_vprt_getActualLeft(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_vprt_getActualTop(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_vprt_getActualWidth(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_vprt_getActualHeight(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_vprt_setDimensions(struct hg3dclass_struct * thisclass_c, float left_c, float top_c, float width_c, float height_c);
+
+// 
+void ogre_vprt_setOrientationMode(struct hg3dclass_struct * thisclass_c, enum EnumOrientationMode orientationMode_c, int setDefault_c);
+
+// 
+void ogre_vprt_getOrientationMode(struct hg3dclass_struct * thisclass_c, enum EnumOrientationMode * result_c);
+
+// 
+void ogre_vprt_setBackgroundColour(struct hg3dclass_struct * thisclass_c, struct colourvalue_struct * colour_c);
+
+// 
+void ogre_vprt_getBackgroundColour(struct hg3dclass_struct * thisclass_c, struct colourvalue_struct * result_c);
+
+// 
+void ogre_vprt_setDepthClear(struct hg3dclass_struct * thisclass_c, float depth_c);
+
+// 
+void ogre_vprt_getDepthClear(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 
+void ogre_vprt_setClearEveryFrame(struct hg3dclass_struct * thisclass_c, int clear_c, unsigned int buffers_c);
+
+// 
+void ogre_vprt_getClearEveryFrame(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_vprt_getClearBuffers(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_vprt_setAutoUpdated(struct hg3dclass_struct * thisclass_c, int autoupdate_c);
+
+// 
+void ogre_vprt_isAutoUpdated(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_vprt_setMaterialScheme(struct hg3dclass_struct * thisclass_c, char * schemeName_c);
+
+// 
+void ogre_vprt_getMaterialScheme(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_vprt_getActualDimensions(struct hg3dclass_struct * thisclass_c, int * left_c, int * top_c, int * width_c, int * height_c);
+
+// 
+void ogre_vprt_setOverlaysEnabled(struct hg3dclass_struct * thisclass_c, int enabled_c);
+
+// 
+void ogre_vprt_getOverlaysEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_vprt_setSkiesEnabled(struct hg3dclass_struct * thisclass_c, int enabled_c);
+
+// 
+void ogre_vprt_getSkiesEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_vprt_setShadowsEnabled(struct hg3dclass_struct * thisclass_c, int enabled_c);
+
+// 
+void ogre_vprt_getShadowsEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void ogre_vprt_setVisibilityMask(struct hg3dclass_struct * thisclass_c, unsigned int mask_c);
+
+// 
+void ogre_vprt_getVisibilityMask(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// 
+void ogre_vprt_setRenderQueueInvocationSequenceName(struct hg3dclass_struct * thisclass_c, char * sequenceName_c);
+
+// 
+void ogre_vprt_getRenderQueueInvocationSequenceName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void ogre_vprt_pointOrientedToScreen(struct hg3dclass_struct * thisclass_c, struct vector2_struct * v_c, int orientationMode_c, struct vector2_struct * outv_c);
+
+// 
+void ogre_vprt_pointOrientedToScreen2(struct hg3dclass_struct * thisclass_c, float orientedX_c, float orientedY_c, int orientationMode_c, float * screenX_c, float * screenY_c);
+
+// 
+void ogre_vprt_setDefaultOrientationMode(enum EnumOrientationMode orientationMode_c);
+
+// 
+void ogre_vprt_getDefaultOrientationMode(enum EnumOrientationMode * result_c);
+
+#endif 
diff --git a/include/ClassWindowEventUtilities.h b/include/ClassWindowEventUtilities.h
new file mode 100644
--- /dev/null
+++ b/include/ClassWindowEventUtilities.h
@@ -0,0 +1,33 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassWindowEventUtilities.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassWindowEventUtilities
+#define _DEFINED_HG3D_ClassWindowEventUtilities
+
+#include "ClassPtr.h"
+
+
+// 
+void ogre_weu_messagePump();
+
+#endif 
diff --git a/include/EnumAnimationInterpolationMode.h b/include/EnumAnimationInterpolationMode.h
new file mode 100644
--- /dev/null
+++ b/include/EnumAnimationInterpolationMode.h
@@ -0,0 +1,33 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumAnimationInterpolationMode.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumAnimationInterpolationMode
+#define _DEFINED_HG3D_EnumAnimationInterpolationMode
+
+
+enum EnumAnimationInterpolationMode
+{
+  IM_LINEAR, // 
+  IM_SPLINE // 
+};
+#endif 
diff --git a/include/EnumAnimationRotationInterpolationMode.h b/include/EnumAnimationRotationInterpolationMode.h
new file mode 100644
--- /dev/null
+++ b/include/EnumAnimationRotationInterpolationMode.h
@@ -0,0 +1,33 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumAnimationRotationInterpolationMode.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumAnimationRotationInterpolationMode
+#define _DEFINED_HG3D_EnumAnimationRotationInterpolationMode
+
+
+enum EnumAnimationRotationInterpolationMode
+{
+  RIM_LINEAR, // 
+  RIM_SPHERICAL // 
+};
+#endif 
diff --git a/include/EnumAxisAlignedBoxCorner.h b/include/EnumAxisAlignedBoxCorner.h
new file mode 100644
--- /dev/null
+++ b/include/EnumAxisAlignedBoxCorner.h
@@ -0,0 +1,39 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumAxisAlignedBoxCorner.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumAxisAlignedBoxCorner
+#define _DEFINED_HG3D_EnumAxisAlignedBoxCorner
+
+
+enum EnumAxisAlignedBoxCorner
+{
+  CE_FAR_LEFT_BOTTOM =  0, // 
+  CE_FAR_LEFT_TOP =  1, // 
+  CE_FAR_RIGHT_TOP =  2, // 
+  CE_FAR_RIGHT_BOTTOM =  3, // 
+  CE_NEAR_RIGHT_BOTTOM =  7, // 
+  CE_NEAR_LEFT_BOTTOM =  6, // 
+  CE_NEAR_LEFT_TOP =  5, // 
+  CE_NEAR_RIGHT_TOP =  4 // 
+};
+#endif 
diff --git a/include/EnumAxisAlignedBoxExtent.h b/include/EnumAxisAlignedBoxExtent.h
new file mode 100644
--- /dev/null
+++ b/include/EnumAxisAlignedBoxExtent.h
@@ -0,0 +1,34 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumAxisAlignedBoxExtent.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumAxisAlignedBoxExtent
+#define _DEFINED_HG3D_EnumAxisAlignedBoxExtent
+
+
+enum EnumAxisAlignedBoxExtent
+{
+  EXTENT_NULL, // 
+  EXTENT_FINITE, // 
+  EXTENT_INFINITE // 
+};
+#endif 
diff --git a/include/EnumBillboardChainTexCoordDirection.h b/include/EnumBillboardChainTexCoordDirection.h
new file mode 100644
--- /dev/null
+++ b/include/EnumBillboardChainTexCoordDirection.h
@@ -0,0 +1,33 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumBillboardChainTexCoordDirection.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumBillboardChainTexCoordDirection
+#define _DEFINED_HG3D_EnumBillboardChainTexCoordDirection
+
+
+enum EnumBillboardChainTexCoordDirection
+{
+  TCD_U, // Tex coord in elements is treated as the 'u' texture coordinate. 
+  TCD_V // Tex coord in elements is treated as the 'v' texture coordinate. 
+};
+#endif 
diff --git a/include/EnumBillboardOrigin.h b/include/EnumBillboardOrigin.h
new file mode 100644
--- /dev/null
+++ b/include/EnumBillboardOrigin.h
@@ -0,0 +1,40 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumBillboardOrigin.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumBillboardOrigin
+#define _DEFINED_HG3D_EnumBillboardOrigin
+
+
+enum EnumBillboardOrigin
+{
+  BBO_TOP_LEFT, // 
+  BBO_TOP_CENTER, // 
+  BBO_TOP_RIGHT, // 
+  BBO_CENTER_LEFT, // 
+  BBO_CENTER, // 
+  BBO_CENTER_RIGHT, // 
+  BBO_BOTTOM_LEFT, // 
+  BBO_BOTTOM_CENTER, // 
+  BBO_BOTTOM_RIGHT // 
+};
+#endif 
diff --git a/include/EnumBillboardRotationType.h b/include/EnumBillboardRotationType.h
new file mode 100644
--- /dev/null
+++ b/include/EnumBillboardRotationType.h
@@ -0,0 +1,33 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumBillboardRotationType.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumBillboardRotationType
+#define _DEFINED_HG3D_EnumBillboardRotationType
+
+
+enum EnumBillboardRotationType
+{
+  BBR_VERTEX, // Rotate the billboard's vertices around their facing direction. 
+  BBR_TEXCOORD // Rotate the billboard's texture coordinates. 
+};
+#endif 
diff --git a/include/EnumBillboardType.h b/include/EnumBillboardType.h
new file mode 100644
--- /dev/null
+++ b/include/EnumBillboardType.h
@@ -0,0 +1,36 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumBillboardType.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumBillboardType
+#define _DEFINED_HG3D_EnumBillboardType
+
+
+enum EnumBillboardType
+{
+  BBT_POINT, // Standard point billboard (default), always faces the camera completely and is always upright. 
+  BBT_ORIENTED_COMMON, // Billboards are oriented around a shared direction vector (used as Y axis) and only rotate around this to face the camera. 
+  BBT_ORIENTED_SELF, // Billboards are oriented around their own direction vector (their own Y axis) and only rotate around this to face the camera. 
+  BBT_PERPENDICULAR_COMMON, // Billboards are perpendicular to a shared direction vector (used as Z axis, the facing direction) and X, Y axis are determined by a shared up-vertor. 
+  BBT_PERPENDICULAR_SELF // Billboards are perpendicular to their own direction vector (their own Z axis, the facing direction) and X, Y axis are determined by a shared up-vertor. 
+};
+#endif 
diff --git a/include/EnumDataStreamAccessMode.h b/include/EnumDataStreamAccessMode.h
new file mode 100644
--- /dev/null
+++ b/include/EnumDataStreamAccessMode.h
@@ -0,0 +1,33 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumDataStreamAccessMode.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumDataStreamAccessMode
+#define _DEFINED_HG3D_EnumDataStreamAccessMode
+
+
+enum EnumDataStreamAccessMode
+{
+  AM_READ =  1, // 
+  AM_WRITE =  2 // 
+};
+#endif 
diff --git a/include/EnumEntityVertexDataBindChoice.h b/include/EnumEntityVertexDataBindChoice.h
new file mode 100644
--- /dev/null
+++ b/include/EnumEntityVertexDataBindChoice.h
@@ -0,0 +1,35 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumEntityVertexDataBindChoice.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumEntityVertexDataBindChoice
+#define _DEFINED_HG3D_EnumEntityVertexDataBindChoice
+
+
+enum EnumEntityVertexDataBindChoice
+{
+  BIND_ORIGINAL, // 
+  BIND_SOFTWARE_SKELETAL, // 
+  BIND_SOFTWARE_MORPH, // 
+  BIND_HARDWARE_MORPH // 
+};
+#endif 
diff --git a/include/EnumExceptionCode.h b/include/EnumExceptionCode.h
new file mode 100644
--- /dev/null
+++ b/include/EnumExceptionCode.h
@@ -0,0 +1,41 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumExceptionCode.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumExceptionCode
+#define _DEFINED_HG3D_EnumExceptionCode
+
+
+enum EnumExceptionCode
+{
+  ERR_CANNOT_WRITE_TO_FILE, // 
+  ERR_INVALID_STATE, // 
+  ERR_INVALIDPARAMS, // 
+  ERR_RENDERINGAPI_ERROR, // 
+  ERR_DUPLICATE_ITEM, // 
+  ERR_ITEM_NOT_FOUND, // 
+  ERR_FILE_NOT_FOUND, // 
+  ERR_INTERNAL_ERROR, // 
+  ERR_RT_ASSERTION_FAILED, // 
+  ERR_NOT_IMPLEMENTED // 
+};
+#endif 
diff --git a/include/EnumFrustumPlane.h b/include/EnumFrustumPlane.h
new file mode 100644
--- /dev/null
+++ b/include/EnumFrustumPlane.h
@@ -0,0 +1,37 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumFrustumPlane.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumFrustumPlane
+#define _DEFINED_HG3D_EnumFrustumPlane
+
+
+enum EnumFrustumPlane
+{
+  FRUSTUM_PLANE_NEAR =  0, // 
+  FRUSTUM_PLANE_FAR =  1, // 
+  FRUSTUM_PLANE_LEFT =  2, // 
+  FRUSTUM_PLANE_RIGHT =  3, // 
+  FRUSTUM_PLANE_TOP =  4, // 
+  FRUSTUM_PLANE_BOTTOM =  5 // 
+};
+#endif 
diff --git a/include/EnumGpuProgramType.h b/include/EnumGpuProgramType.h
new file mode 100644
--- /dev/null
+++ b/include/EnumGpuProgramType.h
@@ -0,0 +1,34 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumGpuProgramType.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumGpuProgramType
+#define _DEFINED_HG3D_EnumGpuProgramType
+
+
+enum EnumGpuProgramType
+{
+  GPT_VERTEX_PROGRAM, // 
+  GPT_FRAGMENT_PROGRAM, // 
+  GPT_GEOMETRY_PROGRAM // 
+};
+#endif 
diff --git a/include/EnumLightType.h b/include/EnumLightType.h
new file mode 100644
--- /dev/null
+++ b/include/EnumLightType.h
@@ -0,0 +1,34 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumLightType.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumLightType
+#define _DEFINED_HG3D_EnumLightType
+
+
+enum EnumLightType
+{
+  LT_POINT =  0, // Point light sources give off light equally in all directions, so require only position not direction. 
+  LT_DIRECTIONAL =  1, // Directional lights simulate parallel light beams from a distant source, hence have direction but no position. 
+  LT_SPOTLIGHT =  2 // Spotlights simulate a cone of light from a source so require position and direction, plus extra values for falloff. 
+};
+#endif 
diff --git a/include/EnumLogMessageLevel.h b/include/EnumLogMessageLevel.h
new file mode 100644
--- /dev/null
+++ b/include/EnumLogMessageLevel.h
@@ -0,0 +1,34 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumLogMessageLevel.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumLogMessageLevel
+#define _DEFINED_HG3D_EnumLogMessageLevel
+
+
+enum EnumLogMessageLevel
+{
+  LML_TRIVIAL =  1, // 
+  LML_NORMAL =  2, // 
+  LML_CRITICAL =  3 // 
+};
+#endif 
diff --git a/include/EnumLoggingLevel.h b/include/EnumLoggingLevel.h
new file mode 100644
--- /dev/null
+++ b/include/EnumLoggingLevel.h
@@ -0,0 +1,34 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumLoggingLevel.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumLoggingLevel
+#define _DEFINED_HG3D_EnumLoggingLevel
+
+
+enum EnumLoggingLevel
+{
+  LL_LOW =  1, // 
+  LL_NORMAL =  2, // 
+  LL_BOREME =  3 // 
+};
+#endif 
diff --git a/include/EnumMathAngleUnit.h b/include/EnumMathAngleUnit.h
new file mode 100644
--- /dev/null
+++ b/include/EnumMathAngleUnit.h
@@ -0,0 +1,33 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumMathAngleUnit.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumMathAngleUnit
+#define _DEFINED_HG3D_EnumMathAngleUnit
+
+
+enum EnumMathAngleUnit
+{
+  AU_DEGREE, // 
+  AU_RADIAN // 
+};
+#endif 
diff --git a/include/EnumMeshManagerMeshBuildType.h b/include/EnumMeshManagerMeshBuildType.h
new file mode 100644
--- /dev/null
+++ b/include/EnumMeshManagerMeshBuildType.h
@@ -0,0 +1,34 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumMeshManagerMeshBuildType.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumMeshManagerMeshBuildType
+#define _DEFINED_HG3D_EnumMeshManagerMeshBuildType
+
+
+enum EnumMeshManagerMeshBuildType
+{
+  MBT_PLANE, // 
+  MBT_CURVED_ILLUSION_PLANE, // 
+  MBT_CURVED_PLANE // 
+};
+#endif 
diff --git a/include/EnumNodeTransformSpace.h b/include/EnumNodeTransformSpace.h
new file mode 100644
--- /dev/null
+++ b/include/EnumNodeTransformSpace.h
@@ -0,0 +1,34 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumNodeTransformSpace.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumNodeTransformSpace
+#define _DEFINED_HG3D_EnumNodeTransformSpace
+
+
+enum EnumNodeTransformSpace
+{
+  TS_LOCAL, // Transform is relative to the local space. 
+  TS_PARENT, // Transform is relative to the space of the parent node. 
+  TS_WORLD // Transform is relative to world space. 
+};
+#endif 
diff --git a/include/EnumOrientationMode.h b/include/EnumOrientationMode.h
new file mode 100644
--- /dev/null
+++ b/include/EnumOrientationMode.h
@@ -0,0 +1,38 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumOrientationMode.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumOrientationMode
+#define _DEFINED_HG3D_EnumOrientationMode
+
+
+enum EnumOrientationMode
+{
+  OR_DEGREE_0 =  0, // 
+  OR_DEGREE_90 =  1, // 
+  OR_DEGREE_180 =  2, // 
+  OR_DEGREE_270 =  3, // 
+  OR_PORTRAIT =  OR_DEGREE_0, // 
+  OR_LANDSCAPERIGHT =  OR_DEGREE_90, // 
+  OR_LANDSCAPELEFT =  OR_DEGREE_270 // 
+};
+#endif 
diff --git a/include/EnumProjectionType.h b/include/EnumProjectionType.h
new file mode 100644
--- /dev/null
+++ b/include/EnumProjectionType.h
@@ -0,0 +1,33 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumProjectionType.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumProjectionType
+#define _DEFINED_HG3D_EnumProjectionType
+
+
+enum EnumProjectionType
+{
+  PT_ORTHOGRAPHIC, // 
+  PT_PERSPECTIVE // 
+};
+#endif 
diff --git a/include/EnumRenderOperationOperationType.h b/include/EnumRenderOperationOperationType.h
new file mode 100644
--- /dev/null
+++ b/include/EnumRenderOperationOperationType.h
@@ -0,0 +1,37 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumRenderOperationOperationType.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumRenderOperationOperationType
+#define _DEFINED_HG3D_EnumRenderOperationOperationType
+
+
+enum EnumRenderOperationOperationType
+{
+  OT_POINT_LIST =  1, // A list of points, 1 vertex per point. 
+  OT_LINE_LIST =  2, // A list of lines, 2 vertices per line. 
+  OT_LINE_STRIP =  3, // A strip of connected lines, 1 vertex per line plus 1 start vertex. 
+  OT_TRIANGLE_LIST =  4, // A list of triangles, 3 vertices per triangle. 
+  OT_TRIANGLE_STRIP =  5, // A strip of triangles, 3 vertices for the first triangle, and 1 per triangle after that. 
+  OT_TRIANGLE_FAN =  6 // A fan of triangles, 3 vertices for the first triangle, and 1 per triangle after that. 
+};
+#endif 
diff --git a/include/EnumRenderTargetFrameBuffer.h b/include/EnumRenderTargetFrameBuffer.h
new file mode 100644
--- /dev/null
+++ b/include/EnumRenderTargetFrameBuffer.h
@@ -0,0 +1,34 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumRenderTargetFrameBuffer.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumRenderTargetFrameBuffer
+#define _DEFINED_HG3D_EnumRenderTargetFrameBuffer
+
+
+enum EnumRenderTargetFrameBuffer
+{
+  FB_FRONT, // 
+  FB_BACK, // 
+  FB_AUTO // 
+};
+#endif 
diff --git a/include/EnumRenderTargetStatFlags.h b/include/EnumRenderTargetStatFlags.h
new file mode 100644
--- /dev/null
+++ b/include/EnumRenderTargetStatFlags.h
@@ -0,0 +1,38 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumRenderTargetStatFlags.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumRenderTargetStatFlags
+#define _DEFINED_HG3D_EnumRenderTargetStatFlags
+
+
+enum EnumRenderTargetStatFlags
+{
+  SF_NONE =  0, // 
+  SF_FPS =  1, // 
+  SF_AVG_FPS =  2, // 
+  SF_BEST_FPS =  4, // 
+  SF_WORST_FPS =  8, // 
+  SF_TRIANGLE_COUNT =  16, // 
+  SF_ALL =  0xFFFF // 
+};
+#endif 
diff --git a/include/EnumRootFrameEventTimeType.h b/include/EnumRootFrameEventTimeType.h
new file mode 100644
--- /dev/null
+++ b/include/EnumRootFrameEventTimeType.h
@@ -0,0 +1,36 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumRootFrameEventTimeType.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumRootFrameEventTimeType
+#define _DEFINED_HG3D_EnumRootFrameEventTimeType
+
+
+enum EnumRootFrameEventTimeType
+{
+  FETT_ANY =  0, // 
+  FETT_STARTED =  1, // 
+  FETT_QUEUED =  2, // 
+  FETT_ENDED =  3, // 
+  FETT_COUNT =  4 // 
+};
+#endif 
diff --git a/include/EnumSceneManagerBoxPlane.h b/include/EnumSceneManagerBoxPlane.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSceneManagerBoxPlane.h
@@ -0,0 +1,37 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumSceneManagerBoxPlane.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSceneManagerBoxPlane
+#define _DEFINED_HG3D_EnumSceneManagerBoxPlane
+
+
+enum EnumSceneManagerBoxPlane
+{
+  BP_FRONT =  0, // 
+  BP_BACK =  1, // 
+  BP_LEFT =  2, // 
+  BP_RIGHT =  3, // 
+  BP_UP =  4, // 
+  BP_DOWN =  5 // 
+};
+#endif 
diff --git a/include/EnumSceneManagerIlluminationRenderStage.h b/include/EnumSceneManagerIlluminationRenderStage.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSceneManagerIlluminationRenderStage.h
@@ -0,0 +1,34 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumSceneManagerIlluminationRenderStage.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSceneManagerIlluminationRenderStage
+#define _DEFINED_HG3D_EnumSceneManagerIlluminationRenderStage
+
+
+enum EnumSceneManagerIlluminationRenderStage
+{
+  IRS_NONE, // No special illumination stage. 
+  IRS_RENDER_TO_TEXTURE, // Render to texture stage, used for texture based shadows. 
+  IRS_RENDER_RECEIVER_PASS // Render from shadow texture to receivers stage. 
+};
+#endif 
diff --git a/include/EnumSceneManagerPrefabType.h b/include/EnumSceneManagerPrefabType.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSceneManagerPrefabType.h
@@ -0,0 +1,34 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumSceneManagerPrefabType.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSceneManagerPrefabType
+#define _DEFINED_HG3D_EnumSceneManagerPrefabType
+
+
+enum EnumSceneManagerPrefabType
+{
+  PT_PLANE, // 
+  PT_CUBE, // 
+  PT_SPHERE // 
+};
+#endif 
diff --git a/include/EnumSceneManagerSpecialCaseRenderQueueMode.h b/include/EnumSceneManagerSpecialCaseRenderQueueMode.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSceneManagerSpecialCaseRenderQueueMode.h
@@ -0,0 +1,33 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumSceneManagerSpecialCaseRenderQueueMode.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSceneManagerSpecialCaseRenderQueueMode
+#define _DEFINED_HG3D_EnumSceneManagerSpecialCaseRenderQueueMode
+
+
+enum EnumSceneManagerSpecialCaseRenderQueueMode
+{
+  SCRQM_INCLUDE, // Render only the queues in the special case list. 
+  SCRQM_EXCLUDE // Render all except the queues in the special case list. 
+};
+#endif 
diff --git a/include/EnumSceneType.h b/include/EnumSceneType.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSceneType.h
@@ -0,0 +1,36 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumSceneType.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSceneType
+#define _DEFINED_HG3D_EnumSceneType
+
+
+enum EnumSceneType
+{
+  ST_GENERIC =  1, // 
+  ST_EXTERIOR_CLOSE =  2, // 
+  ST_EXTERIOR_FAR =  4, // 
+  ST_EXTERIOR_REAL_FAR =  8, // 
+  ST_INTERIOR =  16 // 
+};
+#endif 
diff --git a/include/EnumSkeletonAnimationBlendMode.h b/include/EnumSkeletonAnimationBlendMode.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSkeletonAnimationBlendMode.h
@@ -0,0 +1,33 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumSkeletonAnimationBlendMode.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSkeletonAnimationBlendMode
+#define _DEFINED_HG3D_EnumSkeletonAnimationBlendMode
+
+
+enum EnumSkeletonAnimationBlendMode
+{
+  ANIMBLEND_AVERAGE =  0, // Animations are applied by calculating a weighted average of all animations. 
+  ANIMBLEND_CUMULATIVE =  1 // Animations are applied by calculating a weighted cumulative total. 
+};
+#endif 
diff --git a/include/EnumStencilOperation.h b/include/EnumStencilOperation.h
new file mode 100644
--- /dev/null
+++ b/include/EnumStencilOperation.h
@@ -0,0 +1,39 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumStencilOperation.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumStencilOperation
+#define _DEFINED_HG3D_EnumStencilOperation
+
+
+enum EnumStencilOperation
+{
+  SOP_KEEP, // Leave the stencil buffer unchanged. 
+  SOP_ZERO, // Set the stencil value to zero. 
+  SOP_REPLACE, // Set the stencil value to the reference value. 
+  SOP_INCREMENT, // Increase the stencil value by 1, clamping at the maximum value. 
+  SOP_DECREMENT, // Decrease the stencil value by 1, clamping at 0. 
+  SOP_INCREMENT_WRAP, // Increase the stencil value by 1, wrapping back to 0 when incrementing the maximum value. 
+  SOP_DECREMENT_WRAP, // Decrease the stencil value by 1, wrapping when decrementing 0. 
+  SOP_INVERT // Invert the bits of the stencil buffer. 
+};
+#endif 
diff --git a/include/EnumTexCoordCalcMethod.h b/include/EnumTexCoordCalcMethod.h
new file mode 100644
--- /dev/null
+++ b/include/EnumTexCoordCalcMethod.h
@@ -0,0 +1,37 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumTexCoordCalcMethod.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumTexCoordCalcMethod
+#define _DEFINED_HG3D_EnumTexCoordCalcMethod
+
+
+enum EnumTexCoordCalcMethod
+{
+  TEXCALC_NONE, // No calculated texture coordinates. 
+  TEXCALC_ENVIRONMENT_MAP, // Environment map based on vertex normals. 
+  TEXCALC_ENVIRONMENT_MAP_PLANAR, // Environment map based on vertex positions. 
+  TEXCALC_ENVIRONMENT_MAP_REFLECTION, // 
+  TEXCALC_ENVIRONMENT_MAP_NORMAL, // 
+  TEXCALC_PROJECTIVE_TEXTURE // Projective texture. 
+};
+#endif 
diff --git a/include/EnumVertexAnimationTrackTargetMode.h b/include/EnumVertexAnimationTrackTargetMode.h
new file mode 100644
--- /dev/null
+++ b/include/EnumVertexAnimationTrackTargetMode.h
@@ -0,0 +1,33 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumVertexAnimationTrackTargetMode.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumVertexAnimationTrackTargetMode
+#define _DEFINED_HG3D_EnumVertexAnimationTrackTargetMode
+
+
+enum EnumVertexAnimationTrackTargetMode
+{
+  TM_SOFTWARE, // Interpolate vertex positions in software. 
+  TM_HARDWARE // 
+};
+#endif 
diff --git a/include/EnumVertexAnimationType.h b/include/EnumVertexAnimationType.h
new file mode 100644
--- /dev/null
+++ b/include/EnumVertexAnimationType.h
@@ -0,0 +1,34 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumVertexAnimationType.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumVertexAnimationType
+#define _DEFINED_HG3D_EnumVertexAnimationType
+
+
+enum EnumVertexAnimationType
+{
+  VAT_NONE =  0, // No animation. 
+  VAT_MORPH =  1, // Morph animation is made up of many interpolated snapshot keyframes. 
+  VAT_POSE =  2 // Pose animation is made up of a single delta pose keyframe. 
+};
+#endif 
diff --git a/include/HG3DUtilities.h b/include/HG3DUtilities.h
new file mode 100644
--- /dev/null
+++ b/include/HG3DUtilities.h
@@ -0,0 +1,31 @@
+/*
+This source file is part of HGamer3D
+(A project to enable 3D game development in Haskell)
+For the latest info, see http://www.althainz.de/HGamer3D.html
+
+(c) 2011 Peter Althainz
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+#include "Ogre.h"
+
+class HG3DUtilities
+{
+ public:
+     static unsigned int getWindowHandle(Ogre::RenderWindow *window);
+     static void setupCloseEventHandler(Ogre::RenderWindow *window);
+     static int checkQuitReceived();
+     static void buildTangentVectors(Ogre::Entity *entity);
+};
+
diff --git a/include/OgreDllDefines.h b/include/OgreDllDefines.h
new file mode 100644
--- /dev/null
+++ b/include/OgreDllDefines.h
@@ -0,0 +1,41 @@
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+
+// OgreDllDefines.h
+
+#ifndef _HGamer3DOgre032_DLLDEFINES_H_
+#define _HGamer3DOgre032_DLLDEFINES_H_
+
+/* Cmake will define HGamer3DOgre032_EXPORTS on Windows when it
+configures to build a shared library. If you are going to use
+another build system on windows or create the visual studio
+projects by hand you need to define MyLibrary_EXPORTS when
+building a DLL on windows.
+*/
+
+// We are using the Visual Studio Compiler and building Shared libraries
+
+#if (defined (_WIN32)) && !(defined (__GNUC__)) 
+  #if defined(HGamer3DOgre032_EXPORTS)
+    #define  Ogre_LIB_EXPORT __declspec(dllexport)
+  #else
+    #define  Ogre_LIB_EXPORT __declspec(dllimport)
+  #endif /* HGamer3DOgre032_EXPORTS */
+#else /* defined (_WIN32) */
+ #define Ogre_LIB_EXPORT
+#endif
+
+#endif /* _HGamer3DOgre032_DLLDEFINES_H_ */
diff --git a/include/StructColour.h b/include/StructColour.h
new file mode 100644
--- /dev/null
+++ b/include/StructColour.h
@@ -0,0 +1,36 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// StructColour.h
+
+// 
+
+#include "wchar.h"
+
+
+#ifndef _INC_STRUCT_COLOURVALUE
+#define _INC_STRUCT_COLOURVALUE
+
+typedef struct colourvalue_struct {
+	float r;
+	float g;
+	float b;
+	float a;
+} colourvalue_struct;
+
+#endif
diff --git a/include/StructDegrees.h b/include/StructDegrees.h
new file mode 100644
--- /dev/null
+++ b/include/StructDegrees.h
@@ -0,0 +1,34 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// StructDegrees.h
+
+// 
+
+#include "wchar.h"
+
+
+#ifndef _INC_STRUCT_DEGREE
+#define _INC_STRUCT_DEGREE
+
+typedef struct degree_struct {
+	float d;
+} degree_struct;
+
+
+#endif
diff --git a/include/StructHG3DClass.h b/include/StructHG3DClass.h
new file mode 100644
--- /dev/null
+++ b/include/StructHG3DClass.h
@@ -0,0 +1,34 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// StructHG3DClass.h
+
+// 
+
+#include "wchar.h"
+
+
+#ifndef _INC_STRUCT_HG3DCLASS
+#define _INC_STRUCT_HG3DCLASS
+
+typedef struct hg3dclass_struct {
+	void *ptr;
+	void *fptr;
+} hg3dclass_struct;
+
+#endif
diff --git a/include/StructQuaternion.h b/include/StructQuaternion.h
new file mode 100644
--- /dev/null
+++ b/include/StructQuaternion.h
@@ -0,0 +1,36 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// StructQuaternion.h
+
+// 
+
+#include "wchar.h"
+
+
+#ifndef _INC_STRUCT_QUATERNION
+#define _INC_STRUCT_QUATERNION
+
+typedef struct quaternion_struct {
+	float fw;
+	float fx;
+	float fy;
+	float fz;
+} quaternion_struct;
+
+#endif
diff --git a/include/StructRadians.h b/include/StructRadians.h
new file mode 100644
--- /dev/null
+++ b/include/StructRadians.h
@@ -0,0 +1,33 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// StructRadians.h
+
+// 
+
+#include "wchar.h"
+
+
+#ifndef _INC_STRUCT_RADIAN
+#define _INC_STRUCT_RADIAN
+
+typedef struct radian_struct {
+	float r;
+} radian_struct;
+
+#endif
diff --git a/include/StructSharedPtr.h b/include/StructSharedPtr.h
new file mode 100644
--- /dev/null
+++ b/include/StructSharedPtr.h
@@ -0,0 +1,35 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// StructSharedPtr.h
+
+// 
+
+#include "wchar.h"
+
+
+#ifndef _INC_STRUCT_SHAREDPTR
+#define _INC_STRUCT_SHAREDPTR
+
+typedef struct sharedptr_struct {
+	void* pT;
+	void* pCount;
+	void* pFreeFunc;
+} sharedptr_struct;
+
+#endif
diff --git a/include/StructVec2.h b/include/StructVec2.h
new file mode 100644
--- /dev/null
+++ b/include/StructVec2.h
@@ -0,0 +1,34 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// StructVec2.h
+
+// 
+
+#include "wchar.h"
+
+
+#ifndef _INC_STRUCT_VECTOR2
+#define _INC_STRUCT_VECTOR2
+
+typedef struct vector2_struct {
+	float x;
+	float y;
+} vector2_struct;
+
+#endif
diff --git a/include/StructVec3.h b/include/StructVec3.h
new file mode 100644
--- /dev/null
+++ b/include/StructVec3.h
@@ -0,0 +1,35 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// StructVec3.h
+
+// 
+
+#include "wchar.h"
+
+
+#ifndef _INC_STRUCT_VECTOR3
+#define _INC_STRUCT_VECTOR3
+
+typedef struct vector3_struct {
+	float x;
+	float y;
+	float z;
+} vector3_struct;
+
+#endif
diff --git a/include/WindowUtilsHG3D.h b/include/WindowUtilsHG3D.h
deleted file mode 100644
--- a/include/WindowUtilsHG3D.h
+++ /dev/null
@@ -1,66 +0,0 @@
-// WindowUtilsHG3D - special utilities
-
-
-#include <Ogre.h>
-
-// Linux CODE
-// ----------
-
-#ifdef __linux__ 
-
-class WindowUtilsHG3D {
-	
-	public:
-		static void getWindowTopLeft(Ogre::RenderWindow* rwind, int* top, int* bottom, int* left, int* right) {
-		  unsigned int width, height, colourDepth;
-		  int left2, top2;
-		  rwind->getMetrics (width, height, colourDepth, left2, top2);
-		  *left = left2;
-		  *top = top2;
-		  *bottom = (int)(top2 + height);
-		  *right = (int)(left2 + width);
-		};
-		
-		static void showCursor(bool fShow) {
-		};
-	
-};
-
-
-// Windows CODE
-// ------------
-
-#elif _WIN32
-
-#include <windows.h>
-
-class WindowUtilsHG3D {
-	
-	public:
-		static void getWindowTopLeft(Ogre::RenderWindow* rwind, int* top, int* bottom, int* left, int* right) {
-			HWND windowHnd = 0;
-			RECT rect;
-			rwind->getCustomAttribute("WINDOW", &windowHnd);
-			GetWindowRect(windowHnd, &rect);
-			*top = rect.top;
-			*bottom = rect.bottom;
-			*left = rect.left;
-			*right = rect.right;
-		};
-		
-		static void showCursor(bool fShow) {
-			if (fShow) {
-				ShowCursor(TRUE);
-			} else {
-				ShowCursor(FALSE);
-			};
-		};
-	
-};
-
-#else
-
-// CODE if not Windows or Linux
-// ----------------------------
-
-#endif
diff --git a/include/colorvalue_struct.h b/include/colorvalue_struct.h
deleted file mode 100644
--- a/include/colorvalue_struct.h
+++ /dev/null
@@ -1,6 +0,0 @@
-typedef struct colourvalue_struct {
-	float r;
-	float g;
-	float b;
-	float a;
-} colourvalue_struct;
diff --git a/include/degree_struct.h b/include/degree_struct.h
deleted file mode 100644
--- a/include/degree_struct.h
+++ /dev/null
@@ -1,3 +0,0 @@
-typedef struct degree_struct {
-	float d;
-} degree_struct;
diff --git a/include/hg3dstruct.h b/include/hg3dstruct.h
deleted file mode 100644
--- a/include/hg3dstruct.h
+++ /dev/null
@@ -1,4 +0,0 @@
-typedef struct hg3dclass_struct {
-	void *ptr;
-	void *fptr;
-} hg3dclass_struct;
diff --git a/include/quaternion_struct.h b/include/quaternion_struct.h
deleted file mode 100644
--- a/include/quaternion_struct.h
+++ /dev/null
@@ -1,6 +0,0 @@
-typedef struct quaternion_struct {
-	float fw;
-	float fx;
-	float fy;
-	float fz;
-} quaternion_struct;
diff --git a/include/radian_struct.h b/include/radian_struct.h
deleted file mode 100644
--- a/include/radian_struct.h
+++ /dev/null
@@ -1,3 +0,0 @@
-typedef struct radian_struct {
-	float r;
-} radian_struct;
diff --git a/include/sharedptr_struct.h b/include/sharedptr_struct.h
deleted file mode 100644
--- a/include/sharedptr_struct.h
+++ /dev/null
@@ -1,5 +0,0 @@
-typedef struct sharedptr_struct {
-	void* pT;
-	void* pCount;
-	void* pFreeFunc;
-} sharedptr_struct;
diff --git a/include/vector2_struct.h b/include/vector2_struct.h
deleted file mode 100644
--- a/include/vector2_struct.h
+++ /dev/null
@@ -1,4 +0,0 @@
-typedef struct vector2_struct {
-	float x;
-	float y;
-} vector2_struct;
diff --git a/include/vector3_struct.h b/include/vector3_struct.h
deleted file mode 100644
--- a/include/vector3_struct.h
+++ /dev/null
@@ -1,5 +0,0 @@
-typedef struct vector3_struct {
-	float x;
-	float y;
-	float z;
-} vector3_struct;
diff --git a/include/vector4_struct.h b/include/vector4_struct.h
deleted file mode 100644
--- a/include/vector4_struct.h
+++ /dev/null
@@ -1,6 +0,0 @@
-typedef struct vector4_struct {
-	float x;
-	float y;
-	float z;
-	float w;
-} vector4_struct;
