hw/examples/example02/Types.hs

61 lines
1.5 KiB
Haskell
Raw Normal View History

2017-11-07 21:22:46 +00:00
module Types where
import qualified Graphics.Rendering.OpenGL as GL
import qualified Graphics.GLUtil as GLU
2021-09-10 22:15:31 +00:00
import Control.Concurrent.STM.TVar
2017-11-07 21:22:46 +00:00
import Linear as L
import SpatialMath
import Physics.Bullet.Raw as Bullet
data StateData = StateData
2021-09-10 22:15:31 +00:00
{ ships :: TVar [Ship]
, planet :: TVar Ship
, oplanets :: TVar [Ship]
, camera :: TVar Camera
, proj :: TVar (M44 Float)
, program :: TVar GLU.ShaderProgram
, program2 :: TVar GLU.ShaderProgram
, physics :: TVar Physics
, physicsObjects :: TVar PhysicsObjects
, focusIndex :: TVar Int
, nextStep :: TVar Bool
2017-11-07 21:22:46 +00:00
}
data Ship = Ship
{ shipVao :: GL.VertexArrayObject
, shipVaoLen :: Int
, shipPos :: V3 Float
, shipRot :: Quaternion Float
}
data Camera = Camera
{ cameraFocus :: V3 Float
, cameraRot :: Euler Float
, cameraDist :: Float
}
data Physics = Physics
{ pBroadphase :: DbvtBroadphase
, pConfig :: DefaultCollisionConfiguration
, pDispatcher :: CollisionDispatcher
, pSolver :: SequentialImpulseConstraintSolver
, pWorld :: DiscreteDynamicsWorld
}
data PhysicsObjects = PhysicsObjects
{ poBigBall :: PhysBody SphereShape
, poSmallBalls :: [PhysBody SphereShape]
2018-05-17 21:42:07 +00:00
, poBigBalls :: [PhysBody SphereShape]
2017-11-07 21:22:46 +00:00
}
data PhysBody a = PhysBody
{ bodyShape :: a
, bodyMotionState :: MotionState
, bodyRigidBody :: RigidBody
, bodyMass :: Double
} deriving (Eq)