diff options
Diffstat (limited to 'MtlParser.hs')
-rw-r--r-- | MtlParser.hs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/MtlParser.hs b/MtlParser.hs index b57a7f0..ed952d0 100644 --- a/MtlParser.hs +++ b/MtlParser.hs | |||
@@ -3,6 +3,7 @@ module MtlParser | |||
3 | , MtlLib | 3 | , MtlLib |
4 | , parseMtl | 4 | , parseMtl |
5 | , readMtl | 5 | , readMtl |
6 | , readMtlWithFallback | ||
6 | ) where | 7 | ) where |
7 | 8 | ||
8 | import Data.Map (Map) | 9 | import Data.Map (Map) |
@@ -11,6 +12,7 @@ import Data.Maybe | |||
11 | import Control.Monad.State.Strict | 12 | import Control.Monad.State.Strict |
12 | import Control.Monad.Writer | 13 | import Control.Monad.Writer |
13 | import Data.Text (pack,Text) | 14 | import Data.Text (pack,Text) |
15 | import System.IO.Error | ||
14 | 16 | ||
15 | type Vec3 = (Float,Float,Float) | 17 | type Vec3 = (Float,Float,Float) |
16 | 18 | ||
@@ -72,3 +74,8 @@ parseMtl src = Map.fromList [(mtl_Name m,m) | m <- evalState (execWriterT (mapM_ | |||
72 | 74 | ||
73 | readMtl :: String -> IO MtlLib | 75 | readMtl :: String -> IO MtlLib |
74 | readMtl fname = parseMtl <$> readFile fname | 76 | readMtl fname = parseMtl <$> readFile fname |
77 | |||
78 | readMtlWithFallback :: String -> IO MtlLib | ||
79 | readMtlWithFallback fname = do | ||
80 | catchIOError (readMtl fname) | ||
81 | (\_ -> return $ let n = pack fname in Map.singleton mempty (newMaterial n)) | ||