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 OpId inputOpId,
20 unsigned int inputIndex,
21 OpId outputOpId,
22 unsigned int outputIndex,
23 Action action
24 )
25 : inputOpId_(inputOpId), inputIndex_(inputIndex), outputOpId_(outputOpId),
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(inputOpId_, inputIndex_, outputOpId_, outputIndex_); }
50
51 void disconnect()
52 {
53 nm().disconnectNodes({inputOpId_, inputIndex_, outputOpId_, outputIndex_});
54 }
55
56 OpId inputOpId_;
57 unsigned int inputIndex_;
58 OpId outputOpId_;
59 unsigned int outputIndex_;
60 Action action_;
61};
62
63} // namespace enzo::nt
Basic attribute, parameter, and node types for Enzo.
uint64_t OpId
The unique ID assigned to each node in the network.
Definition Types.h:137
Definition ChangeConnectionCommand.h:10
nt::Connection connectNodes(OpId inputOpId, unsigned int inputIndex, OpId outputOpId, unsigned int outputIndex)
Wires one node's output into another node's input.
Definition NetworkManager.cpp:312
void disconnectNodes(const nt::Connection &connection)
Removes a wired connection between two nodes.
Definition NetworkManager.cpp:345
Definition UndoCommand.h:8