module Codec.GlTF.Node
( NodeIx(..)
, Node(..)
, NodeMatrix(..)
, SkinIx(..)
, Skin(..)
) where
import Codec.GlTF.Prelude
import Codec.GlTF.Accessor (AccessorIx)
import Codec.GlTF.Camera (CameraIx)
import Codec.GlTF.Mesh (MeshIx)
newtype NodeIx = NodeIx { NodeIx -> Int
unNodeIx :: Int }
deriving (NodeIx -> NodeIx -> Bool
(NodeIx -> NodeIx -> Bool)
-> (NodeIx -> NodeIx -> Bool) -> Eq NodeIx
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: NodeIx -> NodeIx -> Bool
== :: NodeIx -> NodeIx -> Bool
$c/= :: NodeIx -> NodeIx -> Bool
/= :: NodeIx -> NodeIx -> Bool
Eq, Eq NodeIx
Eq NodeIx =>
(NodeIx -> NodeIx -> Ordering)
-> (NodeIx -> NodeIx -> Bool)
-> (NodeIx -> NodeIx -> Bool)
-> (NodeIx -> NodeIx -> Bool)
-> (NodeIx -> NodeIx -> Bool)
-> (NodeIx -> NodeIx -> NodeIx)
-> (NodeIx -> NodeIx -> NodeIx)
-> Ord NodeIx
NodeIx -> NodeIx -> Bool
NodeIx -> NodeIx -> Ordering
NodeIx -> NodeIx -> NodeIx
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: NodeIx -> NodeIx -> Ordering
compare :: NodeIx -> NodeIx -> Ordering
$c< :: NodeIx -> NodeIx -> Bool
< :: NodeIx -> NodeIx -> Bool
$c<= :: NodeIx -> NodeIx -> Bool
<= :: NodeIx -> NodeIx -> Bool
$c> :: NodeIx -> NodeIx -> Bool
> :: NodeIx -> NodeIx -> Bool
$c>= :: NodeIx -> NodeIx -> Bool
>= :: NodeIx -> NodeIx -> Bool
$cmax :: NodeIx -> NodeIx -> NodeIx
max :: NodeIx -> NodeIx -> NodeIx
$cmin :: NodeIx -> NodeIx -> NodeIx
min :: NodeIx -> NodeIx -> NodeIx
Ord, Int -> NodeIx -> ShowS
[NodeIx] -> ShowS
NodeIx -> String
(Int -> NodeIx -> ShowS)
-> (NodeIx -> String) -> ([NodeIx] -> ShowS) -> Show NodeIx
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> NodeIx -> ShowS
showsPrec :: Int -> NodeIx -> ShowS
$cshow :: NodeIx -> String
show :: NodeIx -> String
$cshowList :: [NodeIx] -> ShowS
showList :: [NodeIx] -> ShowS
Show, Value -> Parser [NodeIx]
Value -> Parser NodeIx
(Value -> Parser NodeIx)
-> (Value -> Parser [NodeIx]) -> FromJSON NodeIx
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser NodeIx
parseJSON :: Value -> Parser NodeIx
$cparseJSONList :: Value -> Parser [NodeIx]
parseJSONList :: Value -> Parser [NodeIx]
FromJSON, [NodeIx] -> Value
[NodeIx] -> Encoding
NodeIx -> Value
NodeIx -> Encoding
(NodeIx -> Value)
-> (NodeIx -> Encoding)
-> ([NodeIx] -> Value)
-> ([NodeIx] -> Encoding)
-> ToJSON NodeIx
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: NodeIx -> Value
toJSON :: NodeIx -> Value
$ctoEncoding :: NodeIx -> Encoding
toEncoding :: NodeIx -> Encoding
$ctoJSONList :: [NodeIx] -> Value
toJSONList :: [NodeIx] -> Value
$ctoEncodingList :: [NodeIx] -> Encoding
toEncodingList :: [NodeIx] -> Encoding
ToJSON, (forall x. NodeIx -> Rep NodeIx x)
-> (forall x. Rep NodeIx x -> NodeIx) -> Generic NodeIx
forall x. Rep NodeIx x -> NodeIx
forall x. NodeIx -> Rep NodeIx x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. NodeIx -> Rep NodeIx x
from :: forall x. NodeIx -> Rep NodeIx x
$cto :: forall x. Rep NodeIx x -> NodeIx
to :: forall x. Rep NodeIx x -> NodeIx
Generic)
data Node = Node
{ Node -> Maybe CameraIx
camera :: Maybe CameraIx
, Node -> Maybe (Vector NodeIx)
children :: Maybe (Vector NodeIx)
, Node -> Maybe SkinIx
skin :: Maybe SkinIx
, Node -> Maybe NodeMatrix
matrix :: Maybe NodeMatrix
, Node -> Maybe MeshIx
mesh :: Maybe MeshIx
, Node -> Maybe (Float, Float, Float, Float)
rotation :: Maybe (Float, Float, Float, Float)
, Node -> Maybe (Float, Float, Float)
scale :: Maybe (Float, Float, Float)
, Node -> Maybe (Float, Float, Float)
translation :: Maybe (Float, Float, Float)
, Node -> Maybe (Vector Float)
weights :: Maybe (Vector Float)
, Node -> Maybe Text
name :: Maybe Text
, Node -> Maybe Object
extensions :: Maybe Object
, :: Maybe Value
} deriving (Node -> Node -> Bool
(Node -> Node -> Bool) -> (Node -> Node -> Bool) -> Eq Node
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Node -> Node -> Bool
== :: Node -> Node -> Bool
$c/= :: Node -> Node -> Bool
/= :: Node -> Node -> Bool
Eq, Int -> Node -> ShowS
[Node] -> ShowS
Node -> String
(Int -> Node -> ShowS)
-> (Node -> String) -> ([Node] -> ShowS) -> Show Node
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Node -> ShowS
showsPrec :: Int -> Node -> ShowS
$cshow :: Node -> String
show :: Node -> String
$cshowList :: [Node] -> ShowS
showList :: [Node] -> ShowS
Show, (forall x. Node -> Rep Node x)
-> (forall x. Rep Node x -> Node) -> Generic Node
forall x. Rep Node x -> Node
forall x. Node -> Rep Node x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Node -> Rep Node x
from :: forall x. Node -> Rep Node x
$cto :: forall x. Rep Node x -> Node
to :: forall x. Rep Node x -> Node
Generic)
instance FromJSON Node
instance ToJSON Node
newtype NodeMatrix = NodeMatrix { NodeMatrix -> Vector Float
unNodeMatrix :: Vector Float }
deriving (NodeMatrix -> NodeMatrix -> Bool
(NodeMatrix -> NodeMatrix -> Bool)
-> (NodeMatrix -> NodeMatrix -> Bool) -> Eq NodeMatrix
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: NodeMatrix -> NodeMatrix -> Bool
== :: NodeMatrix -> NodeMatrix -> Bool
$c/= :: NodeMatrix -> NodeMatrix -> Bool
/= :: NodeMatrix -> NodeMatrix -> Bool
Eq, Eq NodeMatrix
Eq NodeMatrix =>
(NodeMatrix -> NodeMatrix -> Ordering)
-> (NodeMatrix -> NodeMatrix -> Bool)
-> (NodeMatrix -> NodeMatrix -> Bool)
-> (NodeMatrix -> NodeMatrix -> Bool)
-> (NodeMatrix -> NodeMatrix -> Bool)
-> (NodeMatrix -> NodeMatrix -> NodeMatrix)
-> (NodeMatrix -> NodeMatrix -> NodeMatrix)
-> Ord NodeMatrix
NodeMatrix -> NodeMatrix -> Bool
NodeMatrix -> NodeMatrix -> Ordering
NodeMatrix -> NodeMatrix -> NodeMatrix
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: NodeMatrix -> NodeMatrix -> Ordering
compare :: NodeMatrix -> NodeMatrix -> Ordering
$c< :: NodeMatrix -> NodeMatrix -> Bool
< :: NodeMatrix -> NodeMatrix -> Bool
$c<= :: NodeMatrix -> NodeMatrix -> Bool
<= :: NodeMatrix -> NodeMatrix -> Bool
$c> :: NodeMatrix -> NodeMatrix -> Bool
> :: NodeMatrix -> NodeMatrix -> Bool
$c>= :: NodeMatrix -> NodeMatrix -> Bool
>= :: NodeMatrix -> NodeMatrix -> Bool
$cmax :: NodeMatrix -> NodeMatrix -> NodeMatrix
max :: NodeMatrix -> NodeMatrix -> NodeMatrix
$cmin :: NodeMatrix -> NodeMatrix -> NodeMatrix
min :: NodeMatrix -> NodeMatrix -> NodeMatrix
Ord, Int -> NodeMatrix -> ShowS
[NodeMatrix] -> ShowS
NodeMatrix -> String
(Int -> NodeMatrix -> ShowS)
-> (NodeMatrix -> String)
-> ([NodeMatrix] -> ShowS)
-> Show NodeMatrix
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> NodeMatrix -> ShowS
showsPrec :: Int -> NodeMatrix -> ShowS
$cshow :: NodeMatrix -> String
show :: NodeMatrix -> String
$cshowList :: [NodeMatrix] -> ShowS
showList :: [NodeMatrix] -> ShowS
Show, Value -> Parser [NodeMatrix]
Value -> Parser NodeMatrix
(Value -> Parser NodeMatrix)
-> (Value -> Parser [NodeMatrix]) -> FromJSON NodeMatrix
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser NodeMatrix
parseJSON :: Value -> Parser NodeMatrix
$cparseJSONList :: Value -> Parser [NodeMatrix]
parseJSONList :: Value -> Parser [NodeMatrix]
FromJSON, [NodeMatrix] -> Value
[NodeMatrix] -> Encoding
NodeMatrix -> Value
NodeMatrix -> Encoding
(NodeMatrix -> Value)
-> (NodeMatrix -> Encoding)
-> ([NodeMatrix] -> Value)
-> ([NodeMatrix] -> Encoding)
-> ToJSON NodeMatrix
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: NodeMatrix -> Value
toJSON :: NodeMatrix -> Value
$ctoEncoding :: NodeMatrix -> Encoding
toEncoding :: NodeMatrix -> Encoding
$ctoJSONList :: [NodeMatrix] -> Value
toJSONList :: [NodeMatrix] -> Value
$ctoEncodingList :: [NodeMatrix] -> Encoding
toEncodingList :: [NodeMatrix] -> Encoding
ToJSON, (forall x. NodeMatrix -> Rep NodeMatrix x)
-> (forall x. Rep NodeMatrix x -> NodeMatrix) -> Generic NodeMatrix
forall x. Rep NodeMatrix x -> NodeMatrix
forall x. NodeMatrix -> Rep NodeMatrix x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. NodeMatrix -> Rep NodeMatrix x
from :: forall x. NodeMatrix -> Rep NodeMatrix x
$cto :: forall x. Rep NodeMatrix x -> NodeMatrix
to :: forall x. Rep NodeMatrix x -> NodeMatrix
Generic)
newtype SkinIx = SkinIx { SkinIx -> Int
unSkinIx :: Int }
deriving (SkinIx -> SkinIx -> Bool
(SkinIx -> SkinIx -> Bool)
-> (SkinIx -> SkinIx -> Bool) -> Eq SkinIx
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SkinIx -> SkinIx -> Bool
== :: SkinIx -> SkinIx -> Bool
$c/= :: SkinIx -> SkinIx -> Bool
/= :: SkinIx -> SkinIx -> Bool
Eq, Eq SkinIx
Eq SkinIx =>
(SkinIx -> SkinIx -> Ordering)
-> (SkinIx -> SkinIx -> Bool)
-> (SkinIx -> SkinIx -> Bool)
-> (SkinIx -> SkinIx -> Bool)
-> (SkinIx -> SkinIx -> Bool)
-> (SkinIx -> SkinIx -> SkinIx)
-> (SkinIx -> SkinIx -> SkinIx)
-> Ord SkinIx
SkinIx -> SkinIx -> Bool
SkinIx -> SkinIx -> Ordering
SkinIx -> SkinIx -> SkinIx
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: SkinIx -> SkinIx -> Ordering
compare :: SkinIx -> SkinIx -> Ordering
$c< :: SkinIx -> SkinIx -> Bool
< :: SkinIx -> SkinIx -> Bool
$c<= :: SkinIx -> SkinIx -> Bool
<= :: SkinIx -> SkinIx -> Bool
$c> :: SkinIx -> SkinIx -> Bool
> :: SkinIx -> SkinIx -> Bool
$c>= :: SkinIx -> SkinIx -> Bool
>= :: SkinIx -> SkinIx -> Bool
$cmax :: SkinIx -> SkinIx -> SkinIx
max :: SkinIx -> SkinIx -> SkinIx
$cmin :: SkinIx -> SkinIx -> SkinIx
min :: SkinIx -> SkinIx -> SkinIx
Ord, Int -> SkinIx -> ShowS
[SkinIx] -> ShowS
SkinIx -> String
(Int -> SkinIx -> ShowS)
-> (SkinIx -> String) -> ([SkinIx] -> ShowS) -> Show SkinIx
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SkinIx -> ShowS
showsPrec :: Int -> SkinIx -> ShowS
$cshow :: SkinIx -> String
show :: SkinIx -> String
$cshowList :: [SkinIx] -> ShowS
showList :: [SkinIx] -> ShowS
Show, Value -> Parser [SkinIx]
Value -> Parser SkinIx
(Value -> Parser SkinIx)
-> (Value -> Parser [SkinIx]) -> FromJSON SkinIx
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser SkinIx
parseJSON :: Value -> Parser SkinIx
$cparseJSONList :: Value -> Parser [SkinIx]
parseJSONList :: Value -> Parser [SkinIx]
FromJSON, [SkinIx] -> Value
[SkinIx] -> Encoding
SkinIx -> Value
SkinIx -> Encoding
(SkinIx -> Value)
-> (SkinIx -> Encoding)
-> ([SkinIx] -> Value)
-> ([SkinIx] -> Encoding)
-> ToJSON SkinIx
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: SkinIx -> Value
toJSON :: SkinIx -> Value
$ctoEncoding :: SkinIx -> Encoding
toEncoding :: SkinIx -> Encoding
$ctoJSONList :: [SkinIx] -> Value
toJSONList :: [SkinIx] -> Value
$ctoEncodingList :: [SkinIx] -> Encoding
toEncodingList :: [SkinIx] -> Encoding
ToJSON, (forall x. SkinIx -> Rep SkinIx x)
-> (forall x. Rep SkinIx x -> SkinIx) -> Generic SkinIx
forall x. Rep SkinIx x -> SkinIx
forall x. SkinIx -> Rep SkinIx x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SkinIx -> Rep SkinIx x
from :: forall x. SkinIx -> Rep SkinIx x
$cto :: forall x. Rep SkinIx x -> SkinIx
to :: forall x. Rep SkinIx x -> SkinIx
Generic)
data Skin = Skin
{ Skin -> Vector NodeIx
joints :: Vector (NodeIx)
, Skin -> Maybe NodeIx
skeleton :: Maybe NodeIx
, Skin -> Maybe AccessorIx
inverseBindMatrices :: Maybe AccessorIx
, Skin -> Maybe Text
name :: Maybe Text
, Skin -> Maybe Object
extensions :: Maybe Object
, :: Maybe Value
} deriving (Skin -> Skin -> Bool
(Skin -> Skin -> Bool) -> (Skin -> Skin -> Bool) -> Eq Skin
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Skin -> Skin -> Bool
== :: Skin -> Skin -> Bool
$c/= :: Skin -> Skin -> Bool
/= :: Skin -> Skin -> Bool
Eq, Int -> Skin -> ShowS
[Skin] -> ShowS
Skin -> String
(Int -> Skin -> ShowS)
-> (Skin -> String) -> ([Skin] -> ShowS) -> Show Skin
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Skin -> ShowS
showsPrec :: Int -> Skin -> ShowS
$cshow :: Skin -> String
show :: Skin -> String
$cshowList :: [Skin] -> ShowS
showList :: [Skin] -> ShowS
Show, (forall x. Skin -> Rep Skin x)
-> (forall x. Rep Skin x -> Skin) -> Generic Skin
forall x. Rep Skin x -> Skin
forall x. Skin -> Rep Skin x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Skin -> Rep Skin x
from :: forall x. Skin -> Rep Skin x
$cto :: forall x. Rep Skin x -> Skin
to :: forall x. Rep Skin x -> Skin
Generic)
instance FromJSON Skin
instance ToJSON Skin