 {#pointer *aiLogStream as LogStreamPtr -> LogStream#}
 
 data Quaternion = Quaternion {
-    w'Quaternion :: Float
-  , x'Quaternion :: Float
-  , y'Quaternion :: Float
-  , z'Quaternion :: Float
+    quaternionW :: Float
+  , quaternionX :: Float
+  , quaternionY :: Float
+  , quaternionZ :: Float
   } deriving (Show)
 {#pointer *aiQuaternion as QuaternionPtr -> Quaternion#}
 
 data Vector2D = Vector2D {
-    x'Vector2D :: Float
-  , y'Vector2D :: Float
+    vector2dX :: Float
+  , vector2dY :: Float
   } deriving (Show)
 {#pointer *aiVector2D as Vector2DPtr -> Vector2D#}
 
 data Vector3D = Vector3D {
-    x'Vector3D :: Float
-  , y'Vector3D :: Float
-  , z'Vector3D :: Float
+    vector3dX :: Float
+  , vector3dY :: Float
+  , vector3dZ :: Float
   } deriving (Show)
 {#pointer *aiVector3D as Vector3DPtr -> Vector3D#}
 

{#pointer *aiMaterialProperty as MaterialPropertyPtr -> MaterialProperty#}

data Material = Material {
    mProperties'Material :: [MaterialProperty]
  } deriving (Show)
{#pointer *aiMaterial as MaterialPtr -> Material#}


 - its parents.
-}
data Node = Node
  { nodeMName       :: String
  , mTransformation :: Matrix4x4
  , mParent         :: Maybe Node
  , mChildren       :: [Node]
  , nodeMMeshes     :: [CUInt] -- Holds indices defining the node
  } deriving (Show)
{#pointer *aiNode as NodePtr -> Node#}

data Face = Face
  {
    mIndices :: [CUInt] -- Holds indices defining the face
  } deriving (Show)
{#pointer *aiFace as FacePtr -> Face#}

data VertexWeight = VertexWeight
  { mVertexId :: CUInt
  , mWeight   :: CFloat
  } deriving (Show)
{#pointer *aiVertexWeight as VertexWeightPtr -> VertexWeight#}

data Bone = Bone
  { boneMName          :: String
  , mWeights       :: [VertexWeight]
  , mOffpokeMatrix :: Matrix4x4
  } deriving (Show)
{#pointer *aiBone as BonePtr -> Bone#}

data Mesh = Mesh
  { mPrimitiveTypes  :: [PrimitiveType]
  , mVertices        :: [Vector3D]
  , mNormals         :: [Vector3D]
  , mTangents        :: [Vector3D]
  , mBitangents      :: [Vector3D]
  , mColors          :: [Color4D]
  , mTextureCoords   :: [Vector3D]
  , mNumUVComponents :: CUInt
  , mFaces           :: [Face]
  , mBones           :: [Bone]
  , mMaterialIndex   :: CUInt
  , meshMName        :: String
  } deriving (Show)
{#pointer *aiMesh as MeshPtr -> Mesh#}

