#pragma once #include #include #include #include "DrawingProgramLayerFolder.hpp" #include "DrawingProgramLayer.hpp" class DrawingProgramLayerFolder; class DrawingProgramLayer; class World; class DrawingProgramLayerListItem { public: DrawingProgramLayerListItem(); DrawingProgramLayerListItem(NetworkingObjects::NetObjManager& netObjMan, const std::string& initName, bool isFolder); bool is_folder() const; DrawingProgramLayerFolder& get_folder() const; DrawingProgramLayer& get_layer() const; static void register_class(World& w); void reassign_netobj_ids_call(); void set_name(NetworkingObjects::DelayUpdateSerializedClassManager& delayedNetObjMan, const std::string& newName) const; const std::string& get_name() const; void set_alpha(NetworkingObjects::DelayUpdateSerializedClassManager& delayedNetObjMan, float newAlpha) const; float get_alpha() const; void set_visible(NetworkingObjects::DelayUpdateSerializedClassManager& delayedNetObjMan, bool newVisible) const; bool get_visible() const; private: static void write_constructor_func(const NetworkingObjects::NetObjTemporaryPtr& o, cereal::PortableBinaryOutputArchive& a); static void read_constructor_func(const NetworkingObjects::NetObjTemporaryPtr& o, cereal::PortableBinaryInputArchive& a, const std::shared_ptr& c); std::unique_ptr folderData; std::unique_ptr layerData; struct NameData { std::string name; template void serialize(Archive& a) { a(name); } }; struct DisplayData { float alpha = 1.0f; bool visible = true; template void serialize(Archive& a) { a(alpha, visible); } }; NetworkingObjects::NetObjOwnerPtr nameData; NetworkingObjects::NetObjOwnerPtr displayData; };