Enzo
Loading...
Searching...
No Matches
ChangeConnectionCommand.h
1#pragma once
2
3#include "Engine/Core/Types.h"
4#include "Engine/Network/NetworkManager.h"
5#include "Engine/UndoRedo/UndoCommand.h"
6
7namespace enzo::nt {
8
10{
11 public:
12 enum class Action
13 {
14 Connect,
15 Disconnect
16 };
17
19 NodeId inputNodeId,
20 unsigned int inputIndex,
21 NodeId outputNodeId,
22 unsigned int outputIndex,
23 Action action
24 )
25 : inputNodeId_(inputNodeId), inputIndex_(inputIndex), outputNodeId_(outputNodeId),
26 outputIndex_(outputIndex), action_(action)
27 {
28 }
29
30 void undo() override
31 {
32 if (action_ == Action::Connect)
33 disconnect();
34 else
35 connect();
36 }
37
38 void redo() override
39 {
40 if (action_ == Action::Connect)
41 connect();
42 else
43 disconnect();
44 }
45
46 UndoCommandType type() const override { return UndoCommandType::ChangeConnection; }
47
48 private:
49 void connect() { nm().connectNodes(inputNodeId_, inputIndex_, outputNodeId_, outputIndex_); }
50
51 void disconnect()
52 {
53 nm().disconnectNodes({inputNodeId_, inputIndex_, outputNodeId_, outputIndex_});
54 }
55
56 NodeId inputNodeId_;
57 unsigned int inputIndex_;
58 NodeId outputNodeId_;
59 unsigned int outputIndex_;
60 Action action_;
61};
62
63} // 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 ChangeConnectionCommand.h:10
void disconnectNodes(const nt::Connection &connection)
Removes a wired connection between two nodes.
Definition NetworkManager.cpp:397
nt::Connection connectNodes(NodeId inputNodeId, unsigned int inputIndex, NodeId outputNodeId, unsigned int outputIndex)
Wires one node's output into another node's input.
Definition NetworkManager.cpp:356
Definition UndoCommand.h:8