Enzo
Loading...
Searching...
No Matches
ChangePrimaryNodeCommand.h
1#pragma once
2
3#include "Engine/Core/Types.h"
4#include "Engine/Network/NetworkManager.h"
5#include "Engine/UndoRedo/UndoCommand.h"
6#include <optional>
7
8namespace enzo::nt {
9
11{
12 public:
13 ChangePrimaryNodeCommand(std::optional<NodeId> prev, NodeId next) : prev_(prev), next_(next) {}
14
15 void undo() override
16 {
17 if (prev_.has_value())
18 {
19 if (!nm().isValidNode(*prev_)) return;
20 nm().setPrimaryNode(*prev_);
21 }
22 else
23 {
24 nm().clearPrimaryNode();
25 }
26 }
27
28 void redo() override
29 {
30 if (!nm().isValidNode(next_)) return;
31 nm().setPrimaryNode(next_);
32 }
33
34 UndoCommandType type() const override { return UndoCommandType::ChangePrimaryNode; }
35
36 private:
37 std::optional<NodeId> prev_;
38 NodeId next_;
39};
40
41} // namespace enzo::nt
Basic attribute, parameter, and node types for Enzo.
uint64_t NodeId
The unique ID assigned to each node in the network.
Definition Types.h:306
Definition ChangePrimaryNodeCommand.h:11
void clearPrimaryNode()
Clears the primary node so none is primary.
Definition NetworkManager.cpp:165
void setPrimaryNode(NodeId nodeId)
Sets the given NodeId as the primary node, releasing the previous one.
Definition NetworkManager.cpp:154
Definition UndoCommand.h:8