-
Notifications
You must be signed in to change notification settings - Fork 47
/
PatchModule.cpp
113 lines (87 loc) · 4.08 KB
/
PatchModule.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include "PatchModule.h"
#include "ifilter.h"
#include "ilayer.h"
#include "imap.h"
#include "ieventmanager.h"
#include "ipreferencesystem.h"
#include "itextstream.h"
#include "i18n.h"
#include "PatchNode.h"
#include "patch/algorithm/Prefab.h"
#include "patch/algorithm/General.h"
#include "selection/algorithm/Patch.h"
#include "module/StaticModule.h"
namespace patch
{
namespace
{
const char* const RKEY_PATCH_SUBDIVIDE_THRESHOLD = "user/ui/patch/subdivideThreshold";
}
scene::INodePtr PatchModule::createPatch(PatchDefType type)
{
scene::INodePtr node = std::make_shared<PatchNode>(type);
if (GlobalMapModule().getRoot())
{
// All patches are created in the active layer by default
node->moveToLayer(GlobalMapModule().getRoot()->getLayerManager().getActiveLayer());
}
return node;
}
IPatchSettings& PatchModule::getSettings()
{
return *_settings;
}
const std::string& PatchModule::getName() const
{
static std::string _name(MODULE_PATCH);
return _name;
}
const StringSet& PatchModule::getDependencies() const
{
static StringSet _dependencies;
if (_dependencies.empty())
{
_dependencies.insert(MODULE_PREFERENCESYSTEM);
_dependencies.insert(MODULE_RENDERSYSTEM);
}
return _dependencies;
}
void PatchModule::initialiseModule(const ApplicationContext& ctx)
{
rMessage() << getName() << "::initialiseModule called." << std::endl;
_settings.reset(new PatchSettings);
registerPatchCommands();
// Construct and Register the patch-related preferences
IPreferencePage& page = GlobalPreferenceSystem().getPage(_("Settings/Patch"));
page.appendEntry(_("Patch Subdivide Threshold"), RKEY_PATCH_SUBDIVIDE_THRESHOLD);
}
void PatchModule::registerPatchCommands()
{
// First connect the commands to the code
GlobalCommandSystem().addCommand("CreatePatchPrefab", patch::algorithm::createPrefab, { cmd::ARGTYPE_STRING });
// Two optional integer arguments
GlobalCommandSystem().addCommand("SimplePatchMesh", patch::algorithm::createSimplePatch,
{ cmd::ARGTYPE_INT | cmd::ARGTYPE_OPTIONAL, cmd::ARGTYPE_INT | cmd::ARGTYPE_OPTIONAL });
GlobalCommandSystem().addCommand("PatchInsertColumnEnd", selection::algorithm::insertPatchColumnsAtEnd);
GlobalCommandSystem().addCommand("PatchInsertColumnBeginning", selection::algorithm::insertPatchColumnsAtBeginning);
GlobalCommandSystem().addCommand("PatchInsertRowEnd", selection::algorithm::insertPatchRowsAtEnd);
GlobalCommandSystem().addCommand("PatchInsertRowBeginning", selection::algorithm::insertPatchRowsAtBeginning);
GlobalCommandSystem().addCommand("PatchDeleteColumnBeginning", selection::algorithm::deletePatchColumnsFromBeginning);
GlobalCommandSystem().addCommand("PatchDeleteColumnEnd", selection::algorithm::deletePatchColumnsFromEnd);
GlobalCommandSystem().addCommand("PatchDeleteRowBeginning", selection::algorithm::deletePatchRowsFromBeginning);
GlobalCommandSystem().addCommand("PatchDeleteRowEnd", selection::algorithm::deletePatchRowsFromEnd);
GlobalCommandSystem().addCommand("PatchAppendColumnBeginning", selection::algorithm::appendPatchColumnsAtBeginning);
GlobalCommandSystem().addCommand("PatchAppendColumnEnd", selection::algorithm::appendPatchColumnsAtEnd);
GlobalCommandSystem().addCommand("PatchAppendRowBeginning", selection::algorithm::appendPatchRowsAtBeginning);
GlobalCommandSystem().addCommand("PatchAppendRowEnd", selection::algorithm::appendPatchRowsAtEnd);
GlobalCommandSystem().addCommand("InvertCurve", selection::algorithm::invertPatch);
GlobalCommandSystem().addCommand("RedisperseRows", selection::algorithm::redispersePatchRows);
GlobalCommandSystem().addCommand("RedisperseCols", selection::algorithm::redispersePatchCols);
GlobalCommandSystem().addCommand("MatrixTranspose", selection::algorithm::transposePatch);
GlobalCommandSystem().addCommand("CapCurrentCurve", selection::algorithm::capPatch);
GlobalCommandSystem().addCommand("ThickenPatch", selection::algorithm::thickenPatches);
GlobalCommandSystem().addCommand("StitchPatchTexture", patch::algorithm::stitchTextures);
GlobalCommandSystem().addCommand("BulgePatch", patch::algorithm::bulge, { cmd::ARGTYPE_DOUBLE });
}
module::StaticModule<PatchModule> patchModule;
}