diff options
Diffstat (limited to 'MeshSketch.hs')
-rw-r--r-- | MeshSketch.hs | 22 |
1 files changed, 0 insertions, 22 deletions
diff --git a/MeshSketch.hs b/MeshSketch.hs index 87d9763..d9290fd 100644 --- a/MeshSketch.hs +++ b/MeshSketch.hs | |||
@@ -141,28 +141,6 @@ realToFracVector :: ( Real a | |||
141 | ) => Vector a -> Vector b | 141 | ) => Vector a -> Vector b |
142 | realToFracVector v = Math.fromList $ map realToFrac $ Math.toList v | 142 | realToFracVector v = Math.fromList $ map realToFrac $ Math.toList v |
143 | 143 | ||
144 | data MaskableObject = MaskableObject | ||
145 | { maskableObject :: LC.Object | ||
146 | , groupMasks :: Map Text Mask | ||
147 | } | ||
148 | |||
149 | objSpan :: LC.Object -> Mask | ||
150 | objSpan obj = case Map.elems (objAttributes obj) of | ||
151 | Stream { streamLength = x }:_ -> Mask [(0,fromIntegral x)] | ||
152 | _ -> Mask [(0,1)] | ||
153 | |||
154 | addOBJToObjectArray :: GLStorage -> String -> [(GPUMesh, Maybe Text)] -> Map Text (ObjMaterial,TextureData) | ||
155 | -> IO [MaskableObject] | ||
156 | addOBJToObjectArray storage slotName objMesh mtlLib = forM objMesh $ \(mesh,mat) -> do | ||
157 | obj <- LC.addMeshToObjectArray storage slotName ["diffuseTexture","diffuseColor"] mesh | ||
158 | -- diffuseTexture and diffuseColor values can change on each model | ||
159 | case mat >>= flip Map.lookup mtlLib of | ||
160 | Nothing -> return () | ||
161 | Just (ObjMaterial{..},t) -> LC.updateObjectUniforms obj $ do | ||
162 | "diffuseTexture" @= return t -- set model's diffuse texture | ||
163 | "diffuseColor" @= let (r,g,b) = mtl_Kd in return (V4 r g b mtl_Tr) | ||
164 | return $ MaskableObject obj $ maybe Map.empty (`Map.singleton` objSpan obj) mat | ||
165 | |||
166 | mkFullscreenToggle :: IsWindow a => a -> IO (IO ()) | 144 | mkFullscreenToggle :: IsWindow a => a -> IO (IO ()) |
167 | mkFullscreenToggle w = do | 145 | mkFullscreenToggle w = do |
168 | full <- newIORef False | 146 | full <- newIORef False |