2025-12-25 17:18:28 +03:00
# include "DrawingProgramLayerManager.hpp"
# include "../../World.hpp"
DrawingProgramLayerManager : : DrawingProgramLayerManager ( DrawingProgram & drawProg ) :
drawP ( drawProg ) , // initialize drawP first for next objects to be initialized properly
listGUI ( * this )
{ }
void DrawingProgramLayerManager : : init ( ) {
2025-12-26 10:10:19 +03:00
if ( drawP . world . netObjMan . is_server ( ) ) {
2025-12-25 17:18:28 +03:00
layerTreeRoot = drawP . world . netObjMan . make_obj_from_ptr < DrawingProgramLayerListItem > ( new DrawingProgramLayerListItem ( drawP . world . netObjMan , " ROOT " , true ) ) ;
2025-12-26 10:10:19 +03:00
layerTreeRoot - > get_folder ( ) . set_component_list_callbacks ( * this ) ; // Only need to call set_component_list_callbacks on root, and the rest will get the callbacks set as well
editingLayer = layerTreeRoot - > get_folder ( ) . folderList - > emplace_back_direct ( layerTreeRoot - > get_folder ( ) . folderList , drawP . world . netObjMan , " First Layer " , false ) - > obj ;
}
2025-12-25 17:18:28 +03:00
}
void DrawingProgramLayerManager : : write_components_server ( cereal : : PortableBinaryOutputArchive & a ) {
layerTreeRoot . write_create_message ( a ) ;
}
void DrawingProgramLayerManager : : read_components_client ( cereal : : PortableBinaryInputArchive & a ) {
layerTreeRoot = drawP . world . netObjMan . read_create_message < DrawingProgramLayerListItem > ( a , nullptr ) ;
2025-12-26 10:10:19 +03:00
layerTreeRoot - > commit_update_dont_invalidate_cache ( * this ) ;
layerTreeRoot - > set_component_list_callbacks ( * this ) ;
}
bool DrawingProgramLayerManager : : is_a_layer_being_edited ( ) {
return ! editingLayer . expired ( ) ;
}
void DrawingProgramLayerManager : : draw ( SkCanvas * canvas , const DrawData & drawData ) {
if ( layerTreeRoot )
layerTreeRoot - > draw ( canvas , drawData ) ;
2025-12-25 17:18:28 +03:00
}