packages feed

HGamer3D-0.9.5: HGamer3D/Graphics3D/Scene.hs

module HGamer3D.Graphics3D.Scene where

import Fresco

import Data.Binary.Serialise.CBOR
import Data.Binary.Serialise.CBOR.Encoding
import Data.Binary.Serialise.CBOR.Decoding

import Data.Text
import Data.Monoid
import Control.Applicative


data Scene = XmlScene Text
    | BinaryScene Text
    deriving (Eq, Read, Show)

ctScene :: ComponentType Scene
ctScene = ComponentType 0x829863cdd141007e

instance Serialise Scene where
    encode (XmlScene v1) = encodeListLen 2 <>  encode (0::Int) <> encode v1
    encode (BinaryScene v1) = encodeListLen 2 <>  encode (1::Int) <> encode v1
    decode = do
        decodeListLen
        i <- decode :: Decoder s Int
        case i of
            0 -> (XmlScene <$> decode)
            1 -> (BinaryScene <$> decode)