summaryrefslogtreecommitdiff
path: root/LoadMesh.hs
diff options
context:
space:
mode:
Diffstat (limited to 'LoadMesh.hs')
-rw-r--r--LoadMesh.hs8
1 files changed, 3 insertions, 5 deletions
diff --git a/LoadMesh.hs b/LoadMesh.hs
index bb0f5b0..423630f 100644
--- a/LoadMesh.hs
+++ b/LoadMesh.hs
@@ -12,15 +12,12 @@ import MtlParser
12 12
13import Control.Arrow 13import Control.Arrow
14import Control.Monad 14import Control.Monad
15import Data.Functor
16import Data.Int
17import Data.List as List 15import Data.List as List
18import Data.Maybe 16import Data.Maybe
19import Data.Map (Map) 17import Data.Map (Map)
20import qualified Data.Map as Map 18import qualified Data.Map as Map
21import qualified Data.Vector as V 19import qualified Data.Vector as V
22import qualified Data.Vector.Storable as StorableV 20import qualified Data.Vector.Storable as StorableV
23import qualified Data.ByteString as SB
24import qualified Data.ByteString.Lazy.Char8 as L 21import qualified Data.ByteString.Lazy.Char8 as L
25import Data.Text (unpack,Text,pack) 22import Data.Text (unpack,Text,pack)
26import Data.List (groupBy,nub) 23import Data.List (groupBy,nub)
@@ -30,7 +27,6 @@ import System.FilePath
30import Codec.Picture as Juicy 27import Codec.Picture as Juicy
31import Wavefront 28import Wavefront
32import Wavefront.Types 29import Wavefront.Types
33import Data.Aeson
34import Mask 30import Mask
35 31
36data MaterialMesh m = MaterialMesh 32data MaterialMesh m = MaterialMesh
@@ -251,8 +247,10 @@ elementIndices els = (spans,map snd ts)
251 ts = map ((elGroups &&& elValue) . fmap triangulate) els 247 ts = map ((elGroups &&& elValue) . fmap triangulate) els
252 rs = List.scanl' go ((0,0),[]) ts -- scanl :: (b -> a -> b) -> b -> [a] -> [b] 248 rs = List.scanl' go ((0,0),[]) ts -- scanl :: (b -> a -> b) -> b -> [a] -> [b]
253 go ((start,len),_) (gs,vs) = ((start+len,length vs),gs) 249 go ((start,len),_) (gs,vs) = ((start+len,length vs),gs)
254 spans = fmap (Mask . map (fromIntegral***fromIntegral)) 250 spans = fmap (foldr (maskPlus . Mask . (:[])) (Mask [])
251 . map (fromIntegral***fromIntegral))
255 $ foldr (Map.unionWith (++)) Map.empty $ map singletonSpan rs 252 $ foldr (Map.unionWith (++)) Map.empty $ map singletonSpan rs
253
256 singletonSpan (span,gnames) = Map.fromList $ map (, [span]) gnames 254 singletonSpan (span,gnames) = Map.fromList $ map (, [span]) gnames
257 255
258 256