Enzo
Loading...
Searching...
No Matches
ChangeParameterCommand.h
1#pragma once
2
3#include "Engine/Network/NetworkManager.h"
4#include "Engine/Types.h"
5#include "Engine/UndoRedo/UndoCommand.h"
6#include <icecream.hpp>
7#include <string>
8
9namespace enzo::nt {
10
12 public:
13 ChangeParameterCommand(enzo::nt::OpId opId, std::string paramName, enzo::prm::PrmValues before,
14 enzo::prm::PrmValues after)
15 : opId_(opId), paramName_(paramName), before_(before), after_(after) {}
16
17 void undo() override {
18 IC(opId_, paramName_);
19 if (!nm().isValidOp(opId_)) {
20 IC("ChangeParameterCommand::undo — operator not found", opId_);
21 return;
22 }
23 if (auto prm = nm().getGeoOperator(opId_).getParameter(paramName_).lock()) {
24 prm->setValues(before_);
25 } else {
26 IC("ChangeParameterCommand::undo — parameter not found", opId_, paramName_);
27 }
28 }
29
30 void redo() override {
31 IC(opId_, paramName_);
32 if (!nm().isValidOp(opId_)) {
33 IC("ChangeParameterCommand::redo — operator not found", opId_);
34 return;
35 }
36 if (auto prm = nm().getGeoOperator(opId_).getParameter(paramName_).lock()) {
37 prm->setValues(after_);
38 } else {
39 IC("ChangeParameterCommand::redo — parameter not found", opId_, paramName_);
40 }
41 }
42
43 UndoCommandType type() const override { return UndoCommandType::ChangeParameter; }
44
45 private:
46 enzo::nt::OpId opId_;
47 std::string paramName_;
48 enzo::prm::PrmValues before_;
49 enzo::prm::PrmValues after_;
50};
51
52} // 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:87
Definition ChangeParameterCommand.h:11
Definition UndoCommand.h:8