Added multi command block

This commit is contained in:
Yousef Khadadeh 2026-06-02 21:57:53 +03:00
parent 6889eeff60
commit 279a9317a4
14 changed files with 173 additions and 106 deletions

View file

@ -127,7 +127,7 @@ void DrawingProgramLayerManager::push_components_to(const std::vector<CanvasComp
auto& undoMan = drawP.world.undo;
drawP.world.netObjMan.send_multi_update_messsage([&]() {
drawP.world.send_reliable_multi_command_to_all([&]() {
std::unordered_map<DrawingProgramLayerListItem*, std::vector<CanvasComponentContainer::ObjInfo*>> toEraseMap;
std::vector<NetObjOwnerPtr<DrawingProgramLayerListItem>> toInsertObjPtrs;
@ -168,7 +168,7 @@ void DrawingProgramLayerManager::push_components_to(const std::vector<CanvasComp
toEraseList.emplace_back(obj->obj->objInfo);
}
commitMoveOnLayer();
}, NetObjManager::SendUpdateType::SEND_TO_ALL, nullptr);
});
class MoveComponentsUndoAction : public WorldUndoAction {
public:
@ -376,12 +376,12 @@ void DrawingProgramLayerManager::add_undo_place_component(CanvasComponentContain
void DrawingProgramLayerManager::erase_component_map(const std::unordered_map<DrawingProgramLayerListItem*, std::vector<CanvasComponentContainer::ObjInfoIterator>>& eraseMap, bool newUndo) {
add_undo_erase_components(eraseMap, newUndo);
drawP.world.netObjMan.send_multi_update_messsage([&]() {
drawP.world.send_reliable_multi_command_to_all([&]() {
for(auto& [layerListItem, netObjSetToErase] : eraseMap) {
auto& layerComponentList = layerListItem->get_layer().components;
layerComponentList->erase_list(layerComponentList, netObjSetToErase);
}
}, NetworkingObjects::NetObjManager::SendUpdateType::SEND_TO_ALL, nullptr);
});
}
void DrawingProgramLayerManager::add_undo_erase_components(const std::unordered_map<DrawingProgramLayerListItem*, std::vector<CanvasComponentContainer::ObjInfoIterator>>& eraseMap, bool newUndo) {

View file

@ -23,6 +23,7 @@
#include "../../MainProgram.hpp"
#include "DrawingProgramToolBase.hpp"
#include "../../CanvasComponents/MeshCanvasComponent.hpp"
#include "Helpers/Networking/NetLibrary.hpp"
#include "Helpers/NetworkingObjects/NetObjTemporaryPtr.decl.hpp"
#include "../../CanvasComponents/CanvasComponentContainer.hpp"
#include "../../GUIStuff/ElementHelpers/TextLabelHelpers.hpp"
@ -85,10 +86,10 @@ void BrushTool::commit_data(bool final) {
}
containerPtr->commit_update(drawP);
if(final) {
drawP.world.netObjMan.send_multi_update_messsage([&]() {
drawP.world.send_reliable_multi_command_to_all([&]() {
drawP.send_transforms_for({objInfoBeingEdited});
containerPtr->send_comp_update(drawP, final);
}, NetworkingObjects::NetObjManager::SendUpdateType::SEND_TO_ALL, nullptr);
containerPtr->send_comp_update(drawP, true);
});
}
else
containerPtr->send_comp_update(drawP, final);

View file

@ -242,7 +242,7 @@ void EraserTool::commit_erase() {
return false;
});
drawP.world.netObjMan.send_multi_update_messsage([&]() {
drawP.world.send_reliable_multi_command_to_all([&]() {
bool firstPlacement = true;
for(auto& [layer, compMap] : newObjectsToPlace) {
layer->get_layer().components->sort_netobj_ordered_list_iterator_insert_list(layer->get_layer().components, compMap);
@ -269,7 +269,7 @@ void EraserTool::commit_erase() {
else
drawP.world.undo.push_on_last(std::make_unique<EditTransformCanvasComponentWorldUndoAction>(std::move(oldData.copyData->obj), oldData.copyData->coords, drawP.world.undo.get_undoid_from_netid(comp->obj.get_net_id())));
}
}, NetworkingObjects::NetObjManager::SendUpdateType::SEND_TO_ALL, nullptr);
});
erasedComponents.clear();
updatedComponents.clear();
}

View file

@ -59,10 +59,10 @@ void LineDrawTool::commit_data(bool final) {
}
containerPtr->commit_update(drawP);
if(final) {
drawP.world.netObjMan.send_multi_update_messsage([&]() {
drawP.world.send_reliable_multi_command_to_all([&]() {
drawP.send_transforms_for({objInfoBeingEdited});
containerPtr->send_comp_update(drawP, final);
}, NetworkingObjects::NetObjManager::SendUpdateType::SEND_TO_ALL, nullptr);
});
}
else
containerPtr->send_comp_update(drawP, final);