summaryrefslogtreecommitdiff
path: root/MtlParser.hs
diff options
context:
space:
mode:
authorJoe Crayne <joe@jerkface.net>2019-06-18 00:35:19 -0400
committerJoe Crayne <joe@jerkface.net>2019-06-18 00:35:19 -0400
commit811dec27f1ca7eedca4dc25c100da51659639c8f (patch)
tree6bdee51fc2040519f192701699e7263f6e7431f4 /MtlParser.hs
parent40b339a401a82610d16601e9a1ce34af9b159d56 (diff)
Materials and textures are relative to object file.
Diffstat (limited to 'MtlParser.hs')
-rw-r--r--MtlParser.hs7
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
8import Data.Map (Map) 9import Data.Map (Map)
@@ -11,6 +12,7 @@ import Data.Maybe
11import Control.Monad.State.Strict 12import Control.Monad.State.Strict
12import Control.Monad.Writer 13import Control.Monad.Writer
13import Data.Text (pack,Text) 14import Data.Text (pack,Text)
15import System.IO.Error
14 16
15type Vec3 = (Float,Float,Float) 17type Vec3 = (Float,Float,Float)
16 18
@@ -72,3 +74,8 @@ parseMtl src = Map.fromList [(mtl_Name m,m) | m <- evalState (execWriterT (mapM_
72 74
73readMtl :: String -> IO MtlLib 75readMtl :: String -> IO MtlLib
74readMtl fname = parseMtl <$> readFile fname 76readMtl fname = parseMtl <$> readFile fname
77
78readMtlWithFallback :: String -> IO MtlLib
79readMtlWithFallback fname = do
80 catchIOError (readMtl fname)
81 (\_ -> return $ let n = pack fname in Map.singleton mempty (newMaterial n))