addded parse of mesh-line in sce.
This commit is contained in:
parent
a1157e2ec4
commit
ff38526158
@ -40,9 +40,9 @@ parseScene s = parseOnly (many parseObject) (preprocess s)
|
|||||||
|
|
||||||
parseObject :: Parser ObjectParser
|
parseObject :: Parser ObjectParser
|
||||||
parseObject = do
|
parseObject = do
|
||||||
t <- string "camera" <|>
|
t <- string "camera" <|>
|
||||||
string "depth" <|>
|
string "depth" <|>
|
||||||
string "background" <|>
|
string "background" <|>
|
||||||
string "ambience" <|>
|
string "ambience" <|>
|
||||||
string "light" <|>
|
string "light" <|>
|
||||||
string "sphere" <|>
|
string "sphere" <|>
|
||||||
@ -68,13 +68,14 @@ parseObject = do
|
|||||||
skipSpace
|
skipSpace
|
||||||
c <- parseVector
|
c <- parseVector
|
||||||
intensity <- double <|> return 0
|
intensity <- double <|> return 0
|
||||||
i <- return $ if intensity == 0
|
i <- return $ if intensity == 0
|
||||||
then Nothing
|
then Nothing
|
||||||
else Just (fromRational . toRational $ intensity)
|
else Just (fromRational . toRational $ intensity)
|
||||||
endOfLine
|
endOfLine
|
||||||
return $ OpL (Light p c i)
|
return $ OpL (Light p c i)
|
||||||
"sphere" -> parseSphere
|
"sphere" -> parseSphere
|
||||||
"plane" -> parsePlane
|
"plane" -> parsePlane
|
||||||
|
"mesh" -> parseMesh
|
||||||
_ -> undefined
|
_ -> undefined
|
||||||
|
|
||||||
parseCamera :: Parser ObjectParser
|
parseCamera :: Parser ObjectParser
|
||||||
@ -111,8 +112,6 @@ parseCamera = do
|
|||||||
, xDir = xDir'
|
, xDir = xDir'
|
||||||
, yDir = yDir'
|
, yDir = yDir'
|
||||||
}
|
}
|
||||||
where
|
|
||||||
|
|
||||||
|
|
||||||
parsePlane :: Parser ObjectParser
|
parsePlane :: Parser ObjectParser
|
||||||
parsePlane = do
|
parsePlane = do
|
||||||
@ -167,3 +166,20 @@ parseVector = do
|
|||||||
return $ V3 (f a) (f b) (f c)
|
return $ V3 (f a) (f b) (f c)
|
||||||
where
|
where
|
||||||
f = fromRational . toRational --convert Double to Float
|
f = fromRational . toRational --convert Double to Float
|
||||||
|
|
||||||
|
parseMesh :: Parser ObjectParser
|
||||||
|
parseMesh = do
|
||||||
|
name <- takeTill isSpace
|
||||||
|
skipSpace
|
||||||
|
shading <- string "FLAT" <|> string "PHONG"
|
||||||
|
skipSpace
|
||||||
|
mat <- parseMaterial
|
||||||
|
let shading' = case shading of
|
||||||
|
"FLAT" = Flat
|
||||||
|
"PHONG" = Phong
|
||||||
|
return $ OpM Mesh
|
||||||
|
{ meshFilename = name
|
||||||
|
, meshShading = shading'
|
||||||
|
, material = mat
|
||||||
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user