blob: 725ccedf90548f27fb989f395f878ea100849212 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
-- generated file, do not modify!
-- 2016-01-18T14:30:08.223471Z
module Mesh where
import Prelude
import Data.Generic
import Data.Maybe (Maybe(..))
import Data.StrMap (StrMap(..))
import Data.Map (Map(..))
import Data.List (List(..))
import Linear
import Data.Argonaut.Combinators ((~>), (:=), (.?))
import Data.Argonaut.Core (jsonEmptyObject)
import Data.Argonaut.Printer (printJson)
import Data.Argonaut.Encode (EncodeJson, encodeJson)
import Data.Argonaut.Decode (DecodeJson, decodeJson)
data MeshAttribute
= A_Float (Array Float)
| A_V2F (Array V2F)
| A_V3F (Array V3F)
| A_V4F (Array V4F)
| A_M22F (Array M22F)
| A_M33F (Array M33F)
| A_M44F (Array M44F)
| A_Int (Array Int32)
| A_Word (Array Word32)
data MeshPrimitive
= P_Points
| P_TriangleStrip
| P_Triangles
| P_TriangleStripI (Array Int32)
| P_TrianglesI (Array Int32)
data Mesh
= Mesh
{ mAttributes :: StrMap MeshAttribute
, mPrimitive :: MeshPrimitive
}
instance encodeJsonMeshAttribute :: EncodeJson MeshAttribute where
encodeJson v = case v of
A_Float arg0 -> "tag" := "A_Float" ~> "arg0" := arg0 ~> jsonEmptyObject
A_V2F arg0 -> "tag" := "A_V2F" ~> "arg0" := arg0 ~> jsonEmptyObject
A_V3F arg0 -> "tag" := "A_V3F" ~> "arg0" := arg0 ~> jsonEmptyObject
A_V4F arg0 -> "tag" := "A_V4F" ~> "arg0" := arg0 ~> jsonEmptyObject
A_M22F arg0 -> "tag" := "A_M22F" ~> "arg0" := arg0 ~> jsonEmptyObject
A_M33F arg0 -> "tag" := "A_M33F" ~> "arg0" := arg0 ~> jsonEmptyObject
A_M44F arg0 -> "tag" := "A_M44F" ~> "arg0" := arg0 ~> jsonEmptyObject
A_Int arg0 -> "tag" := "A_Int" ~> "arg0" := arg0 ~> jsonEmptyObject
A_Word arg0 -> "tag" := "A_Word" ~> "arg0" := arg0 ~> jsonEmptyObject
instance decodeJsonMeshAttribute :: DecodeJson MeshAttribute where
decodeJson json = do
obj <- decodeJson json
tag <- obj .? "tag"
case tag of
"A_Float" -> A_Float <$> obj .? "arg0"
"A_V2F" -> A_V2F <$> obj .? "arg0"
"A_V3F" -> A_V3F <$> obj .? "arg0"
"A_V4F" -> A_V4F <$> obj .? "arg0"
"A_M22F" -> A_M22F <$> obj .? "arg0"
"A_M33F" -> A_M33F <$> obj .? "arg0"
"A_M44F" -> A_M44F <$> obj .? "arg0"
"A_Int" -> A_Int <$> obj .? "arg0"
"A_Word" -> A_Word <$> obj .? "arg0"
instance encodeJsonMeshPrimitive :: EncodeJson MeshPrimitive where
encodeJson v = case v of
P_Points -> "tag" := "P_Points" ~> jsonEmptyObject
P_TriangleStrip -> "tag" := "P_TriangleStrip" ~> jsonEmptyObject
P_Triangles -> "tag" := "P_Triangles" ~> jsonEmptyObject
P_TriangleStripI arg0 -> "tag" := "P_TriangleStripI" ~> "arg0" := arg0 ~> jsonEmptyObject
P_TrianglesI arg0 -> "tag" := "P_TrianglesI" ~> "arg0" := arg0 ~> jsonEmptyObject
instance decodeJsonMeshPrimitive :: DecodeJson MeshPrimitive where
decodeJson json = do
obj <- decodeJson json
tag <- obj .? "tag"
case tag of
"P_Points" -> pure P_Points
"P_TriangleStrip" -> pure P_TriangleStrip
"P_Triangles" -> pure P_Triangles
"P_TriangleStripI" -> P_TriangleStripI <$> obj .? "arg0"
"P_TrianglesI" -> P_TrianglesI <$> obj .? "arg0"
instance encodeJsonMesh :: EncodeJson Mesh where
encodeJson v = case v of
Mesh r ->
"tag" := "Mesh" ~>
"mAttributes" := r.mAttributes ~>
"mPrimitive" := r.mPrimitive ~>
jsonEmptyObject
instance decodeJsonMesh :: DecodeJson Mesh where
decodeJson json = do
obj <- decodeJson json
tag <- obj .? "tag"
case tag of
"Mesh" -> do
mAttributes <- obj .? "mAttributes"
mPrimitive <- obj .? "mPrimitive"
pure $ Mesh
{ mAttributes:mAttributes
, mPrimitive:mPrimitive
}
|