Transformation<real> SceneImporter<real>::ReadTransformation( std::istream& stream ) { Transformation<real> transformation; ReadNextExactToken( stream, "Transformation" ); ReadNextExactToken( stream, "(" ); if ( TryReadClosingParenthesis( stream ) ) return transformation; Vector3<real> rotation = ReadVector3( stream ); ReadNextExactToken( stream, "," ); Vector3<real> translation = ReadVector3( stream ); ReadNextExactToken( stream, "," ); Vector3<real> scale = ReadVector3( stream ); ReadNextExactToken( stream, ")" ); transformation.RotateX( rotation.X() ); transformation.RotateY( rotation.Y() ); transformation.RotateZ( rotation.Z() ); transformation.SetTranslation( translation ); transformation.SetScaleX( scale.X() ); transformation.SetScaleY( scale.Y() ); transformation.SetScaleZ( scale.Z() ); return transformation; }
BoundingBox Deserializer::ReadBoundingBox() { BoundingBox ret; ret.min_ = ReadVector3(); ret.max_ = ReadVector3(); ret.defined_ = true; return ret; }
Camera<real>* SceneImporter<real>::ReadTurntableCamera( std::istream& stream, const std::string& name ) { TurntableCamera<real>* camera = new TurntableCamera<real>(); camera->SetName( name ); ReadCameraHeader( stream, camera ); ReadNextExactToken( stream, "," ); camera->SetCenter( ReadVector3( stream ) ); ReadNextExactToken( stream, "," ); camera->SetRotationThetaAxis( ReadVector3( stream ) ); ReadNextExactToken( stream, "," ); camera->SetRotationPhiAxis( ReadVector3( stream ) ); ReadNextExactToken( stream, "," ); camera->SetRotationPhi( ReadReal( stream ) ); ReadNextExactToken( stream, "," ); camera->SetRotationTheta( ReadReal( stream ) ); ReadNextExactToken( stream, "," ); camera->SetDistance( ReadReal( stream ) ); return camera; }
Variant Deserializer::ReadVariant(VariantType type) { switch (type) { case VAR_INT: return Variant(ReadInt()); case VAR_BOOL: return Variant(ReadBool()); case VAR_FLOAT: return Variant(ReadFloat()); case VAR_VECTOR2: return Variant(ReadVector2()); case VAR_VECTOR3: return Variant(ReadVector3()); case VAR_VECTOR4: return Variant(ReadVector4()); case VAR_QUATERNION: return Variant(ReadQuaternion()); case VAR_COLOR: return Variant(ReadColor()); case VAR_STRING: return Variant(ReadString()); case VAR_BUFFER: return Variant(ReadBuffer()); case VAR_PTR: ReadUInt(); return Variant((void*)0); case VAR_RESOURCEREF: return Variant(ReadResourceRef()); case VAR_RESOURCEREFLIST: return Variant(ReadResourceRefList()); case VAR_VARIANTVECTOR: return Variant(ReadVariantVector()); case VAR_VARIANTMAP: return Variant(ReadVariantMap()); case VAR_INTRECT: return Variant(ReadIntRect()); case VAR_INTVECTOR2: return Variant(ReadIntVector2()); default: return Variant(); } }
Light<real>* SceneImporter<real>::ReadDirectionalLight( std::istream& stream, const std::string& name ) { DirectionalLight<real>* light = new DirectionalLight<real>; light->SetName( name ); ReadLightHeader( stream, light ); ReadNextExactToken( stream, "," ); light->SetDirection( ReadVector3( stream ) ); return light; }
Variant Deserializer::ReadVariant(VariantType type) { switch (type) { case VAR_INT: return Variant(ReadInt()); case VAR_BOOL: return Variant(ReadBool()); case VAR_FLOAT: return Variant(ReadFloat()); case VAR_VECTOR2: return Variant(ReadVector2()); case VAR_VECTOR3: return Variant(ReadVector3()); case VAR_VECTOR4: return Variant(ReadVector4()); case VAR_QUATERNION: return Variant(ReadQuaternion()); case VAR_COLOR: return Variant(ReadColor()); case VAR_STRING: return Variant(ReadString()); case VAR_BUFFER: return Variant(ReadBuffer()); // Deserializing pointers is not supported. Return null case VAR_VOIDPTR: case VAR_PTR: ReadUInt(); return Variant((void*)0); case VAR_RESOURCEREF: return Variant(ReadResourceRef()); case VAR_RESOURCEREFLIST: return Variant(ReadResourceRefList()); case VAR_VARIANTVECTOR: return Variant(ReadVariantVector()); case VAR_STRINGVECTOR: return Variant(ReadStringVector()); case VAR_VARIANTMAP: return Variant(ReadVariantMap()); case VAR_INTRECT: return Variant(ReadIntRect()); case VAR_INTVECTOR2: return Variant(ReadIntVector2()); case VAR_MATRIX3: return Variant(ReadMatrix3()); case VAR_MATRIX3X4: return Variant(ReadMatrix3x4()); case VAR_MATRIX4: return Variant(ReadMatrix4()); case VAR_DOUBLE: return Variant(ReadDouble()); default: return Variant(); } }