packages feed

HGamer3D-Data 0.3.2 → 0.5.0

raw patch · 20 files changed

Files

HGamer3D-Data.cabal view
@@ -1,32 +1,33 @@-Name:                HGamer3D-Data
-Version:             0.3.2
-Synopsis:            Game Engine for the Haskell Programmer - Data Definitions and Utilities
-Description:         
-	HGamer3D is a game engine for developing 3D games in the programming 
-	language Haskell. HGamer3D is available on Windows and Linux. This 
-	package provides common data definitions and utility functions for HGamer3D.
-
-License:             OtherLicense
-License-file:        LICENSE
-Author:              Peter Althainz
-Maintainer:          althainz@gmail.com
-Build-Type:          Simple
-Cabal-Version:       >=1.4
-Homepage:            http://www.hgamer3d.org
-Category:            Game Engine
-Extra-source-files:  Setup.hs 
-
-Library
-  Build-Depends:     base >= 3 && < 5, FindBin, directory, filepath, vect
-
-  Exposed-modules:   HGamer3D.Data.Vector,HGamer3D.Data.Vector.Instances,HGamer3D.Data.Colour,HGamer3D.Data.HG3DClass,HGamer3D.Data.Angle,HGamer3D.Data.TimeMS,HGamer3D.Data.Operation3D,HGamer3D.Data.ScreenGeometry,HGamer3D.Util.FileLocation, HGamer3D.Util.UniqueName, HGamer3D.Data, HGamer3D.Util
-  Other-modules:     
-
-  c-sources:         
-  
-  ghc-options:       
-  cc-options:        -Wno-attributes 
-  hs-source-dirs:    .
-  Include-dirs:      . 
-  build-depends:     
-  extra-libraries:   
+Name:                HGamer3D-Data+Version:             0.5.0+Synopsis:            Toolset for the Haskell Game Programmer - Data Definitions+Description:         +	HGamer3D is a toolset for developing 3D games in the programming +	language Haskell. HGamer3D is available on Windows and Linux. This +	package provides common data definitions and utility functions for HGamer3D.+	Also in this package, the Entity Component System is placed.++License:             OtherLicense+License-file:        LICENSE+Author:              Peter Althainz+Maintainer:          althainz@gmail.com+Build-Type:          Simple+Cabal-Version:       >=1.4+Homepage:            http://www.hgamer3d.org+Category:            Game Engine+Extra-source-files:  Setup.hs ++Library+  Build-Depends:     base >= 3 && < 5, FindBin, directory, filepath, vect, clock, stm, containers++  Exposed-modules:   HGamer3D.Data.TypeSynonyms, HGamer3D.Data.Vector,HGamer3D.Data.Colour,HGamer3D.Data.HG3DClass,HGamer3D.Data.Angle,HGamer3D.Data.GameTime,HGamer3D.Data.Transform3D,HGamer3D.Data.Geometry2D,HGamer3D.Data.Window,HGamer3D.Data+  Other-modules:     ++  c-sources:         +  +  ghc-options:       -O2+  cc-options:        -Wno-attributes +  hs-source-dirs:    .+  Include-dirs:      . +  build-depends:     +  extra-libraries:   
HGamer3D/Data.hs view
@@ -1,44 +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 - 2013 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.
--- 
--- Data.hs
--- 
-
--- | Common data definitions for HGamer3D 
-module HGamer3D.Data 
-
-(
-    module HGamer3D.Data.HG3DClass,
-    module HGamer3D.Data.Angle,
-    module HGamer3D.Data.Colour,
-    module HGamer3D.Data.Operation3D,
-    module HGamer3D.Data.TimeMS,
-    module HGamer3D.Data.Vector,
-    module HGamer3D.Data.ScreenGeometry
-)
-
-where
-
-import HGamer3D.Data.HG3DClass
-import HGamer3D.Data.Angle
-import HGamer3D.Data.Colour
-import HGamer3D.Data.Operation3D
-import HGamer3D.Data.TimeMS
-import HGamer3D.Data.Vector
-import HGamer3D.Data.ScreenGeometry
-
+-- 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 - 2013 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.+-- +-- Data.hs+-- ++-- | Common data definitions for HGamer3D +module HGamer3D.Data ++(+    module HGamer3D.Data.Angle,+    module HGamer3D.Data.Colour,+    module HGamer3D.Data.Transform3D,+    module HGamer3D.Data.GameTime,+    module HGamer3D.Data.Vector,+    module HGamer3D.Data.Geometry2D,+    module HGamer3D.Data.TypeSynonyms,+    Window,+)++where++import HGamer3D.Data.Angle+import HGamer3D.Data.Colour+import HGamer3D.Data.Transform3D+import HGamer3D.Data.GameTime+import HGamer3D.Data.Vector+import HGamer3D.Data.Geometry2D+import HGamer3D.Data.Window+import HGamer3D.Data.TypeSynonyms+
HGamer3D/Data/Angle.hs view
@@ -1,100 +1,100 @@--- 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-2013 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.
-
--- Angle.hs
-
--- | Angles as Degrees or Radians, based on Float datatype
-module HGamer3D.Data.Angle 
-
-(
-	-- * Data definitions and conversions
-	Angle (..),
-	Radians (..),
-	Degrees (..),
-	fromAngle,
-        
-        -- * Mathematical functions
-	addA,
-	subA,
-	mulA,
-	divA,
-	sinA,
-	cosA,
-	tanA,
-	asinA,
-	acosA,
-	atanA,
-)
-
-where
-
-
-data Angle = Rad Float | Deg Float deriving (Eq, Ord, Show)
-
-sinA :: Angle -> Float
-sinA = sin . fromAngle
-
-cosA :: Angle -> Float
-cosA = cos . fromAngle
-
-tanA :: Angle -> Float
-tanA = tan . fromAngle
-
-asinA :: Float -> Angle
-asinA = Rad . asin
-
-acosA :: Float -> Angle
-acosA = Rad . acos
-
-atanA :: Float -> Angle
-atanA = Rad . atan
-
-addA :: Angle -> Angle -> Angle
-addA a b = Rad $ (fromAngle a) + (fromAngle b)
-
-subA :: Angle -> Angle -> Angle
-subA a b = Rad $ (fromAngle a) - (fromAngle b)
-
-mulA :: Angle -> Float -> Angle
-mulA a b = Rad $ (fromAngle a) * b
-
-divA :: Angle -> Float -> Angle
-divA a b = Rad $ (fromAngle a) / b
-
-data Radians = Radians Float deriving (Eq, Ord, Show)
-data Degrees = Degrees Float deriving (Eq, Ord, Show)
-
-class Angles a where
-	toAngle :: a -> Angle
-	fromAngle :: Angle -> a
-	
-instance Angles Float where
-	toAngle r = Rad r
-	fromAngle (Rad r) = r
-	fromAngle (Deg d) = d/180*pi
-	
-instance Angles Radians where
-	toAngle (Radians r) = Rad r
-	fromAngle (Rad r) = (Radians r)
-	fromAngle (Deg d) = (Radians (d/180*pi))
-	
-instance Angles Degrees where
-	toAngle (Degrees d) = Deg d
-	fromAngle (Deg d) = (Degrees d)
-	fromAngle (Rad r) = (Degrees (r/pi*180))
-	
+-- 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-2013 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.++-- Angle.hs++-- | Angles as Degrees or Radians, based on Float datatype+module HGamer3D.Data.Angle ++(+	-- * Data definitions and conversions+	Angle (..),+	Radians (..),+	Degrees (..),+	fromAngle,+        +        -- * Mathematical functions+	addA,+	subA,+	mulA,+	divA,+	sinA,+	cosA,+	tanA,+	asinA,+	acosA,+	atanA,+)++where+++data Angle = Rad Float | Deg Float deriving (Eq, Ord, Show)++sinA :: Angle -> Float+sinA = sin . fromAngle++cosA :: Angle -> Float+cosA = cos . fromAngle++tanA :: Angle -> Float+tanA = tan . fromAngle++asinA :: Float -> Angle+asinA = Rad . asin++acosA :: Float -> Angle+acosA = Rad . acos++atanA :: Float -> Angle+atanA = Rad . atan++addA :: Angle -> Angle -> Angle+addA a b = Rad $ (fromAngle a) + (fromAngle b)++subA :: Angle -> Angle -> Angle+subA a b = Rad $ (fromAngle a) - (fromAngle b)++mulA :: Angle -> Float -> Angle+mulA a b = Rad $ (fromAngle a) * b++divA :: Angle -> Float -> Angle+divA a b = Rad $ (fromAngle a) / b++data Radians = Radians Float deriving (Eq, Ord, Show)+data Degrees = Degrees Float deriving (Eq, Ord, Show)++class Angles a where+	toAngle :: a -> Angle+	fromAngle :: Angle -> a+	+instance Angles Float where+	toAngle r = Rad r+	fromAngle (Rad r) = r+	fromAngle (Deg d) = d/180*pi+	+instance Angles Radians where+	toAngle (Radians r) = Rad r+	fromAngle (Rad r) = (Radians r)+	fromAngle (Deg d) = (Radians (d/180*pi))+	+instance Angles Degrees where+	toAngle (Degrees d) = Deg d+	fromAngle (Deg d) = (Degrees d)+	fromAngle (Rad r) = (Degrees (r/pi*180))+	
HGamer3D/Data/Colour.hs view
@@ -1,35 +1,74 @@--- 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-2013 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.
-
--- ColourValue.hs
-
--- | HGamer3D colour type
-module HGamer3D.Data.Colour 
-
-(
-	Colour (Colour, cRed, cGreen, cBlue, cAlpha),
-)
-
-where
-data Colour = Colour {
-  cRed :: Float,
-  cGreen :: Float,
-  cBlue :: Float,
-  cAlpha :: Float
-   } deriving (Eq, Show)
-
+-- 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-2013 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.++-- ColourValue.hs++-- | Module providing the Colour type and some standard colours+module HGamer3D.Data.Colour ++(+	Colour (Colour, cRed, cGreen, cBlue, cAlpha),+        white,+        silver,+        grey,+	darkgrey,+        black,+        red,+        maroon,+        yellow,+        olive,+        lime,+        green,+        aqua,+        teal,+        blue,+        navy,+        fuchsia,+        purple+)++where++-- | HGamer3D colour type+data Colour = Colour {+  cRed :: Float,   -- ^ red component ranging from 0.0 to 1.0+  cGreen :: Float, -- ^ green component ranging from 0.0 to 1.0+  cBlue :: Float,  -- ^ blue component ranging from 0.0 to 1.0+  cAlpha :: Float  -- ^ alpha component ranging from 0.0 to 1.0 with 1.0 being fully opaque+   } deriving (Eq, Show)++white = Colour 1.0 1.0 1.0 1.0 +silver  = Colour 0.75 0.75 0.75 1.0+grey = Colour 0.5 0.5 0.5 1.0+darkgrey = Colour 0.25 0.25 0.25 1.0+black = Colour 0.0 0.0 0.0 1.0+red = Colour 1.0 0.0 0.0 1.0+maroon = Colour 0.5 0.0 0.0 1.0+yellow = Colour 1.0 1.0 0.0 1.0+olive = Colour 0.5 0.5 0.0 1.0+lime = Colour 0.0 1.0 0.0 1.0+green = Colour 0.0 0.5 0.0 1.0+aqua = Colour 0.0 1.0 1.0 1.0+teal = Colour 0.0 0.5 0.5 1.0+blue = Colour 0.0 0.0 1.0 1.0 +navy = Colour 0.0 0.0 0.5 1.0+fuchsia = Colour 1.0 0.0 1.0 1.0+purple = Colour 0.5 0.0 0.5 1.0+++
+ HGamer3D/Data/GameTime.hs view
@@ -0,0 +1,98 @@+{-# LANGUAGE TypeSynonymInstances #-}+-- 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-2013 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.++-- TimeMS.hs++-- | Module providing the time type for HGamer3D+module HGamer3D.Data.GameTime++(+  GameTime,+  sec,+  msec,+  usec,+  +  secT,+  msecT,+  usecT,+  +  getTime,+  getThreadCPUTime,+  getProcessCPUTime,++  sleepFor+)++where++import Control.Concurrent+import qualified System.Clock as C++type GameTime = C.TimeSpec++_toInteger :: C.TimeSpec -> Integer+_toInteger ts = let+  s = (fromIntegral (C.sec ts)) :: Integer+  ns = (fromIntegral (C.nsec ts)) :: Integer+  in s * 1000000000 + ns++_fromInteger :: Integer -> C.TimeSpec+_fromInteger i = let+  s = fromIntegral (i `quot` 1000000000)+  ns = fromIntegral (i `rem` 1000000000)+  in C.TimeSpec s ns++instance Num GameTime where+  (+) a b = _fromInteger((_toInteger a) Prelude.+ (_toInteger b)  )+  (-) a b = _fromInteger((_toInteger a) Prelude.- (_toInteger b)  )+  (*) a b = _fromInteger((_toInteger a) Prelude.* (_toInteger b)  )+  abs a = _fromInteger( Prelude.abs (_toInteger a))+  signum a = _fromInteger( Prelude.signum (_toInteger a))+  fromInteger i = _fromInteger i++sec :: C.TimeSpec -> Int+sec ts = fromIntegral ((_toInteger ts) `quot` 1000000000)++msec :: C.TimeSpec -> Int+msec ts = fromIntegral ((_toInteger ts) `quot` 1000000)++usec :: C.TimeSpec -> Int+usec ts = fromIntegral ((_toInteger ts) `quot` 1000)++secT :: Int -> C.TimeSpec+secT i = _fromInteger ((fromIntegral i) * 1000000000)++msecT :: Int -> C.TimeSpec+msecT i = _fromInteger ((fromIntegral i) * 1000000)++usecT :: Int -> C.TimeSpec+usecT i = _fromInteger ((fromIntegral i) * 1000)++getTime :: IO GameTime+getTime = C.getTime C.Realtime++getThreadCPUTime :: IO GameTime+getThreadCPUTime = C.getTime C.ThreadCPUTime++getProcessCPUTime :: IO GameTime+getProcessCPUTime = C.getTime C.ProcessCPUTime++sleepFor :: GameTime -> IO ()+sleepFor gt = threadDelay (usec gt)+
+ HGamer3D/Data/Geometry2D.hs view
@@ -0,0 +1,64 @@+-- 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) 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.++-- Rectangle.hs++-- | Type definitions for 2D geometry +module HGamer3D.Data.Geometry2D+(+  -- * Geometry+  Point (..),+  Rectangle (..),+  rectFromPoints,+  pointsFromRect+  +) where+  +import HGamer3D.Data.Vector++-- | A point has two coordinates an x and y one+data Point a = Point {+  ptX :: a,+  ptY :: a+  }+                      +-- | A rectangle has an a position as x and y and widht and height+data Num a => Rectangle a = Rectangle {+  rectX :: a,+  rectY :: a,+  rectWidth :: a,+  rectHeight :: a } deriving (Eq, Show)++-- | derive a rectangle from upper left and lower right points+rectFromPoints :: Num a => Point a -> Point a -> Rectangle a+rectFromPoints upperLeft lowerRight = Rectangle rx ry rw rh where+  rx = ptX upperLeft+  ry = ptY upperLeft+  rw = (ptY lowerRight) - rx+  rh = (ptY lowerRight) - ry+  +-- | get upper left and lower right point from a rect+pointsFromRect :: Num a => Rectangle a -> (Point a, Point a)+pointsFromRect rect = (ul, lr) where+  rx = rectX rect+  ry = rectY rect+  rx' = rx + (rectWidth rect)+  ry' = ry + (rectHeight rect)+  ul = Point rx ry+  lr = Point rx' ry'+  
HGamer3D/Data/HG3DClass.hs view
@@ -1,59 +1,59 @@-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-
--- 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-2013 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.
--- 
--- HG3DClass.hs
--- 
-
--- | Utility class to encapsulate class pointers
-module HGamer3D.Data.HG3DClass where
-
--- import C2HS
-import Foreign
-import Foreign.Ptr
-import Foreign.C
-import Foreign.Storable
-
-
-import Data.Bits
-
-data HG3DClass = HG3DClass {
-  ocPtr :: Ptr (),
-  ocFptr :: Ptr ()
-   } deriving (Eq, Show)
-
-instance Storable HG3DClass where
-  alignment _ = alignment (undefined :: CDouble)
-  sizeOf _ = 2 * (sizeOf nullPtr)
-  
-  peek p = do
-	ptr <- (\ptr -> do {peekByteOff ptr 0 ::IO (Ptr ())}) p
-	fptr <- (\ptr -> do {peekByteOff ptr (sizeOf nullPtr) ::IO (Ptr ())}) p
-	let hc = HG3DClass (ptr) (fptr)
-	return hc
-	
-  poke p (HG3DClass ptr fptr) = do
-    (\ptr val -> do {pokeByteOff ptr 0 (val::(Ptr ()))}) p (ptr)
-    (\ptr val -> do {pokeByteOff ptr (sizeOf nullPtr) (val::(Ptr ()))}) p (fptr)
-    
-
-
-
- 
+{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE TypeSynonymInstances #-}++-- 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-2013 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.+-- +-- HG3DClass.hs+-- ++-- | Utility class to encapsulate class pointers+module HGamer3D.Data.HG3DClass where++-- import C2HS+import Foreign+import Foreign.Ptr+import Foreign.C+import Foreign.Storable+++import Data.Bits++data HG3DClass = HG3DClass {+  ocPtr :: Ptr (),+  ocFptr :: Ptr ()+   } deriving (Eq, Show)++instance Storable HG3DClass where+  alignment _ = alignment (undefined :: CDouble)+  sizeOf _ = 2 * (sizeOf nullPtr)+  +  peek p = do+	ptr <- (\ptr -> do {peekByteOff ptr 0 ::IO (Ptr ())}) p+	fptr <- (\ptr -> do {peekByteOff ptr (sizeOf nullPtr) ::IO (Ptr ())}) p+	let hc = HG3DClass (ptr) (fptr)+	return hc+	+  poke p (HG3DClass ptr fptr) = do+    (\ptr val -> do {pokeByteOff ptr 0 (val::(Ptr ()))}) p (ptr)+    (\ptr val -> do {pokeByteOff ptr (sizeOf nullPtr) (val::(Ptr ()))}) p (fptr)+    ++++ 
− HGamer3D/Data/Operation3D.hs
@@ -1,101 +0,0 @@--- 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-2013 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.
-
--- Operation3D.hs
-
--- | Typeclasses for basic 3D operations
-module HGamer3D.Data.Operation3D
-(
-        -- * Types
-	Position3D (..),
-	Scale3D (..),
-	Direction3D (..),
-	Orientation3D (..),
-        
-        -- * Functions
-	translate3D,
-        yaw3D,
-        pitch3D,
-        roll3D
-)
-
-where
-
-import HGamer3D.Data.Vector
-import HGamer3D.Data.Angle
-
--- | a type with a Position3D instance can be positioned
-class Position3D t where
-
-        -- | get position function
-	position3D :: t -> IO Vec3
-        -- | set position function
-	positionTo3D :: t -> Vec3 -> IO ()
-	
--- | move position function
-translate3D :: Position3D t => t -> Vec3 -> IO ()
-translate3D t v = do
-	p <- position3D t
-	positionTo3D t ( v &+ p )
-	return ()
-
--- | a type with a Scale3D instance can be scaled
-class Scale3D t where	
-	
-        -- | get scale function
-	scale3D :: t -> IO Vec3
-        -- | set scale function
-	scaleTo3D :: t -> Vec3 -> IO ()
-
--- | a type with a Direction3D instance can be oriented towards a point (Camera for example)
-class Direction3D t where
-        -- | get direction function
-	direction3D :: t -> IO Vec3
-        -- | set direction function
-	directionTo3D :: t -> Vec3 -> IO ()
-
--- | a type with an Orientation3D instance can be oriented in space
-class Orientation3D t where
-        -- | get orientation function
-	orientation3D :: t -> IO UnitQuaternion
-        -- | set orientation function
-	orientationTo3D :: t -> UnitQuaternion -> IO ()
-
--- yaw, roll, pitch functions
--- functions, to rotate on axis, relative to object
-rotRelativeToObjectAxis :: Orientation3D t => t -> Vec3 -> Float -> IO ()
-rotRelativeToObjectAxis object axis val = do
-	qob <- orientation3D object
-	let odir = actU qob axis
-	let qrot = rotU odir val
-	let nrot = qrot .*. qob
-	orientationTo3D object nrot
-	return ()
-	
--- | rotate object on own axis (yaw) by angle
-yaw3D :: Orientation3D t => t -> Angle -> IO ()
-yaw3D object val = rotRelativeToObjectAxis object (Vec3 0.0 1.0 0.0) (fromAngle val)
-
--- | rotate object on own axis (roll) by angle
-roll3D :: Orientation3D t => t -> Angle -> IO ()
-roll3D object val = rotRelativeToObjectAxis object (Vec3 0.0 0.0 1.0) (fromAngle val)
-
--- | rotate object on own axis (pitch) by angle
-pitch3D :: Orientation3D t => t -> Angle -> IO ()
-pitch3D object val = rotRelativeToObjectAxis object (Vec3 1.0 0.0 0.0) (fromAngle val)
-
− HGamer3D/Data/ScreenGeometry.hs
@@ -1,67 +0,0 @@--- 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) 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.---- Rectangle.hs---- | Type definitions for 2D geometry and windows-module HGamer3D.Data.ScreenGeometry-(-  -- * Windowing-  Window (..),-  -  -- * Geometry-  Point (..),-  Rectangle (..),-  rectFromPoints,-  pointsFromRect-  -) where-  --- | A window is simply represented by it's window id, an unsigned C int-data Window = Window Int---- | A point has two coordinates an x and y one-data Point = Point {-  ptX::Int, -  ptY::Int } deriving (Eq, Show)-                      --- | A rectangle has an a position as x and y and widht and height-data Rectangle = Rectangle {-  rectX :: Int,-  rectY :: Int,-  rectWidth :: Int,-  rectHeight :: Int } deriving (Eq, Show)---- | derive a rectangle from upper left and lower right points-rectFromPoints :: Point -> Point -> Rectangle-rectFromPoints upperLeft lowerRight = Rectangle x y w h where-  x = ptX upperLeft-  y = ptY upperLeft-  w = (ptX lowerRight) - x-  h = (ptY lowerRight) - y-  --- | get upper left and lower right point from a rect-pointsFromRect :: Rectangle -> (Point, Point)-pointsFromRect rect = (ul, lr) where-  x = rectX rect-  y = rectY rect-  x' = x + (rectWidth rect)-  y' = y + (rectHeight rect)-  ul = Point x y-  lr = Point x' y'-  
− HGamer3D/Data/TimeMS.hs
@@ -1,34 +0,0 @@--- 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-2013 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.
-
--- TimeMS.hs
-
--- | Module providing the time type for HGamer3D
-module HGamer3D.Data.TimeMS
-
-(
-  TimeMS (..)
-)
-
-where
-
--- | the time type of HGamer3D (in milliseconds)
-data TimeMS = TimeMS Int deriving (Eq)			-- time in milliseconds
-
-instance Show TimeMS where
-	show (TimeMS s) = (show s) ++ " Milliseconds"
+ HGamer3D/Data/Transform3D.hs view
@@ -0,0 +1,96 @@+-- 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-2013 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.++-- Transform3D.hs++-- | Typeclasses for basic 3D transformations++module HGamer3D.Data.Transform3D+(+        -- * Types+	HasPosition (..),+	HasSize (..),+	HasOrientation (..),+        +        -- * Functions+	translate,+        scale, +        yaw,+        pitch,+        roll+)++where++import HGamer3D.Data.Vector+import HGamer3D.Data.Angle+import HGamer3D.Data.TypeSynonyms++-- | a type with a HasPosition instance has a Position+class HasPosition t where++        -- | get position function+	position :: t -> IO Position+        -- | set position function+	positionTo :: t -> Position -> IO ()++-- | a type with a HasSize instance has a Size+class HasSize t where	+	+        -- | get scale function+	size :: t -> IO Size+        -- | set scale function+	sizeTo :: t -> Size -> IO ()++-- | a type with an HasOrientation instance has an oriented in space+class HasOrientation t where+        -- | get orientation function+	orientation :: t -> IO Orientation+        -- | set orientation function+	orientationTo :: t -> Orientation -> IO ()+++-- | move the position +translate :: Position -> Position -> Position+translate = (&+)++-- | scale the size+scale :: Size -> Vec3 -> Size+scale  = (&!)++-- yaw, roll, pitch functions+-- functions, to rotate on axis, relative to object+rotRelativeToObjectAxis :: Orientation -> Vec3 -> Float -> Orientation+rotRelativeToObjectAxis ori axis val = let+  odir = actU ori axis+  qrot = rotU odir val+  nrot = qrot .*. ori+  in nrot+	+-- | rotate object on own axis (yaw) by angle+yaw :: Orientation -> Angle -> Orientation+yaw ori val = rotRelativeToObjectAxis ori vec3Y (fromAngle val)++-- | rotate object on own axis (roll) by angle+roll :: Orientation -> Angle -> Orientation+roll ori val = rotRelativeToObjectAxis ori vec3Z (fromAngle val)++-- | rotate object on own axis (pitch) by angle+pitch :: Orientation -> Angle -> Orientation+pitch ori val = rotRelativeToObjectAxis ori vec3X (fromAngle val)+
+ HGamer3D/Data/TypeSynonyms.hs view
@@ -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.++-- HGamer3D/Data/TypeSynonyms.hs++-- | Module providing better type names for standard types in HGamer3D+module HGamer3D.Data.TypeSynonyms++where++import HGamer3D.Data.Vector+  +-- | the Size, Position and Orientation types, implemented as a Vec3 and UnitQuaternion+type Size = Vec3+type Position = Vec3+type Orientation = UnitQuaternion++
HGamer3D/Data/Vector.hs view
@@ -1,36 +1,70 @@--- 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-2013 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.
-
--- Vector2.hs
-
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-
--- book: math3d vector lib
--- |Includes the right pieces of the Vect libray of Balazs Komuves.
--- see: <http://hackage.haskell.org/package/vect>
-module HGamer3D.Data.Vector
-(
-	module Data.Vect.Float,
-	module Data.Vect.Float.Util.Quaternion
-)
-
-where
-
-import Data.Vect.Float
-import Data.Vect.Float.Util.Quaternion
--- book: end
+{-# LANGUAGE GeneralizedNewtypeDeriving, StandaloneDeriving, DeriveDataTypeable #-}++-- 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.++-- HGamer3D/Data/Vector.hs+++-- | Vector library for HGamer3D+module HGamer3D.Data.Vector+(+	+        -- * the Vect libray of Balazs Komuves, see: <http://hackage.haskell.org/package/vect>+        +        module Data.Vect.Float,+	module Data.Vect.Float.Util.Quaternion,++        -- * some constants++        zeroVec3,+        unitVec2,++        zeroVec3,+        unitVec3++)++where++import Data.Typeable+import Data.Vect.Float+import Data.Vect.Float.Util.Quaternion++deriving instance Eq UnitQuaternion+deriving instance Eq Vec2+deriving instance Eq Vec3+deriving instance Eq Vec4++deriving instance Typeable UnitQuaternion+deriving instance Typeable Vec2+deriving instance Typeable Vec3+deriving instance Typeable Vec4++-- | the 2d zero vector+zeroVec2 = Vec2 0.0 0.0++-- | the 2d unity vector+unitVec2 = Vec2 1.0 1.0++-- | the 3d Zero vector+zeroVec3 = Vec3 0.0 0.0 0.0++-- | the 3d Unity vector+unitVec3 = Vec3 1.0 1.0 1.0+
− HGamer3D/Data/Vector/Instances.hs
@@ -1,35 +0,0 @@--- 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-2013 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.
-
--- Vector2.hs
-
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-
--- book: math3d vector lib
--- |Includes the right pieces of the Vect libray of Balazs Komuves.
--- see: <http://hackage.haskell.org/package/vect>
-
-module HGamer3D.Data.Vector.Instances
-(
-	module Data.Vect.Float.Instances,
-)
-
-where
-
-import Data.Vect.Float.Instances
--- book: end
+ HGamer3D/Data/Window.hs view
@@ -0,0 +1,32 @@+-- 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) 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.++-- Rectangle.hs++-- | Type definitions for 2D window+module HGamer3D.Data.Window+(+  -- * Windowing+  Window (..),+  +  +) where++-- | A window is simply represented by it's window id, an unsigned C int+data Window = Window Int+
− HGamer3D/Util.hs
@@ -1,34 +0,0 @@--- 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 - 2013 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.--- --- Util.hs--- ---- | Common utilities for HGamer3D-module HGamer3D.Util--(-    module HGamer3D.Util.FileLocation,-    module HGamer3D.Util.UniqueName-)--where--import HGamer3D.Util.FileLocation-import HGamer3D.Util.UniqueName-
− HGamer3D/Util/FileLocation.hs
@@ -1,92 +0,0 @@--- 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-2013 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.---- Util.hs---- | Utility to provide file location information to other parts of HGamer3D-module HGamer3D.Util.FileLocation--(-  -        -- * Directories relative to the user-related application directory for HGamer3D-        getAppMediaDirectory,-        getAppConfigDirectory,-        getAppLibDirectory,-        -        -- * Directories relative to the executable (prog path)-        getExeMediaDirectory,-        getExeConfigDirectory,-        getExeLibDirectory,-        -        -- * General utilities for path handling and finding files-        osSep,-        createDir,-        findFileInDirs-)--where--import Control.Monad-import Control.Exception-import System.Directory-import System.FilePath-import System.Environment.FindBin--_getHG3DDirectory subdir = do-  appdir <- getAppUserDataDirectory "HGamer3D" -  let ndir = appdir ++ [pathSeparator] ++ subdir-  createDirectoryIfMissing True ndir-  return ndir-  --- | path of media, relative to user app dir for HGamer3D-getAppMediaDirectory  = _getHG3DDirectory "media"---- | path of configuration, relative to user app dir for HGamer3D-getAppConfigDirectory  = _getHG3DDirectory "config"---- | path of libraries, relative to user app dir for HGamer3D-getAppLibDirectory = _getHG3DDirectory "lib"-  -_getBinDir subdir = do-  bdir <- try getProgPath :: IO (Either SomeException FilePath)-  let bdir' = case bdir of-        Left _ -> "."-        Right path -> path-  let ndir = bdir' ++ [pathSeparator] ++ ".HGamer3D" ++ [pathSeparator] ++ subdir-  return ndir---- | path of media, relative to executable-getExeMediaDirectory = _getBinDir "media"---- | path of configuration, relative to executable-getExeConfigDirectory = _getBinDir "config"---- | path of libraries, relative to executable-getExeLibDirectory = _getBinDir "lib"---- | path separator for the filesystem-osSep = [pathSeparator]---- | create a directory-createDir dir = createDirectoryIfMissing True dir---- | find a file by searching in multiple directories-findFileInDirs filename listOfDirs = do-  let files = fmap (\d -> d ++ [pathSeparator] ++ filename) listOfDirs-  res <- filterM doesFileExist files-  if length res > 0 then return $ Just (res !! 0) else return Nothing
− HGamer3D/Util/UniqueName.hs
@@ -1,48 +0,0 @@--- 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-2013 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.---- UniqueName.hs---- | Utility to provide a unique name, carries internal state in a IORef-module HGamer3D.Util.UniqueName-(-  -  UniqueName,-  createUniqueName,-  nextUniqueName-  -) where--import Data.IORef--data UniqueName = UniqueName String (IORef [Int])---- | creates a unique name holder-createUniqueName :: String -> IO UniqueName-createUniqueName baseName = do-  ref <- newIORef [0..]-  return $ UniqueName baseName ref-  --- | delivers the next unique name from the name holder-nextUniqueName :: UniqueName -> IO String-nextUniqueName (UniqueName baseName ref) = do-  name <- atomicModifyIORef ref (\ilist -> (tail ilist, baseName ++ (show (head ilist))))-  return name-  -  -                   
LICENSE view
@@ -1,34 +1,34 @@-LICENSE
--------
-
-(c) 2011-2014 Peter Althainz
-
-
-HGamer3D (http://www.hgamer3d.org)
-----------------------------------
-
-HGamer3D is licensed under the Apache License, Version 2.0 (the "License"); you may not use this software 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.
-
-
-Source Code
------------
-You can obtain the latest version of the source code under http://www.bitbucket.org/althainz/HGamer3D
-
-
-Open Source Software Used - Module HGamer3D.Data
-------------------------------------------------
-
-HGamer3D uses a number of open source software libraries. You are responsible to comply to the licenses of those packages and the licenses of software used by those packages if you use HGamer3D. 
-
-The HGamer3D.Data module uses the following Haskell libraries from Hackage:
-
-base, license: BSD3
-FindBin, license: BSD3
-directory, license: BSD3
-filepath, license: BSD3
-vect, license: license: BSD3
-
+LICENSE+-------++(c) 2011-2014 Peter Althainz+++HGamer3D (http://www.hgamer3d.org)+----------------------------------++HGamer3D is licensed under the Apache License, Version 2.0 (the "License"); you may not use this software 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.+++Source Code+-----------+You can obtain the latest version of the source code under http://www.bitbucket.org/althainz/HGamer3D+++Open Source Software Used - Module HGamer3D.Data+------------------------------------------------++HGamer3D uses a number of open source software libraries. You are responsible to comply to the licenses of those packages and the licenses of software used by those packages if you use HGamer3D. ++The HGamer3D.Data module uses the following Haskell libraries from Hackage:++base, license: BSD3+FindBin, license: BSD3+directory, license: BSD3+filepath, license: BSD3+vect, license: license: BSD3+
Setup.hs view
@@ -1,22 +1,22 @@--- 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-2013 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.
-
--- Setup.hs
-
-import Distribution.Simple
-main = defaultMain
+-- 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-2013 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.++-- Setup.hs++import Distribution.Simple+main = defaultMain