#ifndef PKE_SERIALIZATION_HPP #define PKE_SERIALIZATION_HPP #include "pk.h" #include "components.hpp" #include "scene-types.hpp" inline const char* const SRLZTN_FILE_BEGIN = ":PKFB:"; inline const char* const SRLZTN_FILE_END = ":PKFE:"; inline const char* const SRLZTN_FILE_VERSION = ":0:"; inline const char* const SRLZTN_OBJ_END = ""; inline const char* const SRLZTN_OBJ_INSTANCE = "Instance:"; inline const char* const SRLZTN_OBJ_CAMERA = "Camera:"; inline const char* const SRLZTN_POSROT_POS = "Position: "; inline const char* const SRLZTN_POSROT_ROT = "Rotation: "; inline const char* const SRLZTN_POSROT_SCALE = "Scale: "; inline const char* const SRLZTN_INSTANCE_COMPONENT_HANDLE = "InstanceHandle: "; inline const char* const SRLZTN_INSTANCE_COMPONENT_ENTITY_HANDLE = "EntityHandle: "; inline const char* const SRLZTN_INSTANCE_COMPONENT_ENTITY_TYPE_CODE = "EntityTypeCode: "; inline const char* const SRLZTN_INSTANCE_COMPONENT_UUID = "UUID: "; inline const char* const SRLZTN_INSTANCE_COMPONENT_MASS = "Mass: "; inline const char* const SRLZTN_INSTANCE_COMPONENT_COLLISION_LAYER = "CollisionLayer: "; inline const char* const SRLZTN_INSTANCE_COMPONENT_COLLISION_MASK = "CollisionMask: "; inline const char* const SRLZTN_INSTANCE_COMPONENT_COLLISION_CB_SIGNATURE = "CollisionCBSignature: "; inline const char* const SRLZTN_CAMERA_TARGET = "Target: "; inline const char* const SRLZTN_CAMERA_TYPE = "Type: "; inline const char* const SRLZTN_CAMERA_UUID = "UUID: "; inline const char* const SRLZTN_CAMERA_ORIENTATION = "Orientation: "; inline const char* const SRLZTN_CAMERA_INSTANCE_HANDLE = "InstanceHandle: "; inline const char* const SRLZTN_CAMERA_TARGET_INSTANCE_UUID = "TargetUUID: "; inline const char* const SRLZTN_CAMERA_IS_PRIMARY = "IsPrimary: "; struct srlztn_instance_mapping { pk_uuid serialized_uuid = pk_uuid_zed; Entity_Base *created_entity = nullptr; CompInstance *created_instance = nullptr; }; struct srlztn_serialize_helper { pk_membucket *bkt; std::ostringstream o; }; struct srlztn_deserialize_helper { size_t read_line_len = 256; pke_scene *scene; pk_membucket *bkt; char *read_line; std::istream *i; pk_arr_t mapping; }; srlztn_serialize_helper *pke_serialize_init(pk_membucket *bkt); srlztn_deserialize_helper *pke_deserialize_init(pk_membucket *bkt); void pke_serialize_teardown(srlztn_serialize_helper *helper); void pke_deserialize_teardown(srlztn_deserialize_helper *helper); void pke_serialize_file_project(srlztn_serialize_helper *helper); void pke_deserialize_file_project(srlztn_deserialize_helper *helper); void pke_serialize_file_scene(srlztn_serialize_helper *helper); void pke_deserialize_file_scene(srlztn_deserialize_helper *helper); void pke_serialize_file_level(srlztn_serialize_helper *helper); void pke_deserialize_file_level(srlztn_deserialize_helper *helper); #endif /* PKE_SERIALIZATION_HPP */