-
Notifications
You must be signed in to change notification settings - Fork 30
/
Copy pathFabricSpliceMayaNode.cpp
92 lines (67 loc) · 2.21 KB
/
FabricSpliceMayaNode.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
#include "FabricSpliceEditorWidget.h"
#include "FabricSpliceMayaNode.h"
#include <maya/MGlobal.h>
#include <maya/MFnDependencyNode.h>
#include <maya/MFnTypedAttribute.h>
#include <maya/MFnNumericAttribute.h>
MTypeId FabricSpliceMayaNode::id(0x0011AE41);
MObject FabricSpliceMayaNode::saveData;
MObject FabricSpliceMayaNode::evalID;
FabricSpliceMayaNode::FabricSpliceMayaNode()
: FabricSpliceBaseInterface()
{
}
void FabricSpliceMayaNode::postConstructor(){
FabricSpliceBaseInterface::constructBaseInterface();
FabricSpliceEditorWidget::postUpdateAll();
}
FabricSpliceMayaNode::~FabricSpliceMayaNode()
{
}
void* FabricSpliceMayaNode::creator(){
return new FabricSpliceMayaNode();
}
MStatus FabricSpliceMayaNode::initialize(){
MFnTypedAttribute typedAttr;
MFnNumericAttribute numericAttr;
saveData = typedAttr.create("saveData", "svd", MFnData::kString);
typedAttr.setHidden(true);
addAttribute(saveData);
evalID = numericAttr.create("evalID", "evalID", MFnNumericData::kInt, 0);
numericAttr.setKeyable(true);
numericAttr.setHidden(true);
numericAttr.setReadable(true);
numericAttr.setWritable(true);
numericAttr.setStorable(false);
numericAttr.setCached(false);
addAttribute(evalID);
return MS::kSuccess;
}
MStatus FabricSpliceMayaNode::compute(const MPlug& plug, MDataBlock& data){
MStatus stat;
MAYASPLICE_CATCH_BEGIN(&stat);
FabricSplice::Logging::AutoTimer timer("Maya::compute()");
if(!_spliceGraph.checkErrors()){
return MStatus::kFailure; // avoid evaluating on errors
}
transferInputValuesToSplice(data);
evaluate();
transferOutputValuesToMaya(data);
MAYASPLICE_CATCH_END(&stat);
return stat;
}
MStatus FabricSpliceMayaNode::setDependentsDirty(MPlug const &inPlug, MPlugArray &affectedPlugs){
MStatus stat;
MAYASPLICE_CATCH_BEGIN(&stat);
FabricSpliceBaseInterface::setDependentsDirty(thisMObject(), inPlug, affectedPlugs);
MAYASPLICE_CATCH_END(&stat);
return stat;
}
MStatus FabricSpliceMayaNode::shouldSave(const MPlug &plug, bool &isSaving){
// guarantee dynamically added attributes are saved
isSaving = true;
return MS::kSuccess;
}
void FabricSpliceMayaNode::copyInternalData(MPxNode *node){
FabricSpliceBaseInterface::copyInternalData(node);
}