HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_AgentUnpack.proto.h
Go to the documentation of this file.
1 /* Automagically Generated by generate_proto.py
2  * Do not Edit
3  */
4 #pragma once
5 
6 #include <SOP/SOP_API.h>
7 #include <SOP/SOP_NodeVerb.h>
8 #include <OP/OP_GraphProxy.h>
9 
10 #include <OP/OP_Utils.h>
11 #include <PRM/PRM_Parm.h>
12 #include <UT/UT_IStream.h>
13 #include <UT/UT_NTStreamUtil.h>
14 #include <UT/UT_Ramp.h>
15 #include <UT/UT_SharedPtr.h>
16 #include <UT/UT_StringHolder.h>
17 #include <UT/UT_StringStream.h>
18 #include <UT/UT_VectorTypes.h>
19 #include <UT/UT_EnvControl.h>
20 #include <SYS/SYS_Types.h>
21 
22 class DEP_MicroNode;
23 namespace SOP_AgentUnpackEnums
24 {
25  enum class GroupType
26  {
27  GUESS = 0,
28  POINTS,
29  PRIMS
30  };
31 
33  getToken(GroupType enum_value)
34  {
35  using namespace UT::Literal;
36  switch (enum_value) {
37  case GroupType::GUESS: return "guess"_sh;
38  case GroupType::POINTS: return "points"_sh;
39  case GroupType::PRIMS: return "prims"_sh;
40  default: UT_ASSERT(false); return ""_sh;
41  }
42  }
43 
44  enum class Output
45  {
46  DEFORMED = 0,
47  REST,
48  JOINTS,
49  SKELETON,
51  };
52 
54  getToken(Output enum_value)
55  {
56  using namespace UT::Literal;
57  switch (enum_value) {
58  case Output::DEFORMED: return "deformed"_sh;
59  case Output::REST: return "rest"_sh;
60  case Output::JOINTS: return "joints"_sh;
61  case Output::SKELETON: return "skeleton"_sh;
62  case Output::MOTIONCLIPS: return "motionclips"_sh;
63  default: UT_ASSERT(false); return ""_sh;
64  }
65  }
66 
67  enum class RestShapesMode
68  {
69  CURRENTLAYERS = 0,
71  ALLLAYERS,
72  SHAPELIB
73  };
74 
76  getToken(RestShapesMode enum_value)
77  {
78  using namespace UT::Literal;
79  switch (enum_value) {
80  case RestShapesMode::CURRENTLAYERS: return "currentlayers"_sh;
81  case RestShapesMode::COLLISIONLAYERS: return "collisionlayers"_sh;
82  case RestShapesMode::ALLLAYERS: return "alllayers"_sh;
83  case RestShapesMode::SHAPELIB: return "shapelib"_sh;
84  default: UT_ASSERT(false); return ""_sh;
85  }
86  }
87 
88 }
89 
90 
92 {
93 public:
94  static int version() { return 1; }
95  struct Filters
96  {
100 
101 
103  {
104  jointnames = ""_UTsh;
105  percentage = 100;
106  seed = 1;
107 
108  }
109 
110  bool operator==(const Filters &src) const
111  {
112  if (jointnames != src.jointnames) return false;
113  if (percentage != src.percentage) return false;
114  if (seed != src.seed) return false;
115 
116  return true;
117  }
118  bool operator!=(const Filters &src) const
119  {
120  return !operator==(src);
121  }
122 
123  };
124 
126  {
128 
129  buf.strcat("[ ");
130  for (int i = 0; i < list.entries(); i++)
131  {
132  if (i)
133  buf.strcat(", ");
134  buf.strcat("( ");
135  buf.append("");
136  { UT_String tmp; tmp = UT_StringWrap(list(i).jointnames).makeQuotedString('"'); buf.strcat(tmp); }
137  buf.append(", ");
138  buf.appendSprintf("%f", (list(i).percentage));
139  buf.append(", ");
140  buf.appendSprintf("%f", (list(i).seed));
141 
142  buf.strcat(" )");
143  }
144  buf.strcat(" ]");
145 
147  return result;
148  }
149 
151  {
152  myGroup = ""_UTsh;
153  myGroupType = 0;
154  myOutput = 0;
155  myUniqueAgentDefinitions = false;
156  myApplyAgentXform = true;
157  myRestShapesMode = 0;
158  myLayerFilter = "*"_UTsh;
159  myShapeFilter = "*"_UTsh;
160  myLimitIterations = true;
161  myIterations = 1;
162  myAddShapeDeformerAttrib = false;
163  myShapeDeformerAttrib = "agentshapedeformer"_UTsh;
164  myAddXformNameAttrib = false;
165  myXformNameAttrib = "agenttransformname"_UTsh;
166  myAddLayerNameAttrib = false;
167  myLayerNameAttrib = "agentlayername"_UTsh;
168  myClipNames = ""_UTsh;
169  myOutputRestPoseAttrib = true;
170  myRestPoseAttrib = "rest_transform"_UTsh;
171  mySkeletonColor = UT_Vector3D(0.0,0.09,1.0);
172  myOutputTransformGroups = false;
173  myTransformGroups = "*"_UTsh;
174  myOutputMetadataAttrib = false;
175  myMetadataAttrib = "agentmetadata"_UTsh;
176  myOutputMetadataJointConfigAttribs = false;
177  myMetadataJointConfigAttribs = "fbik_jointconfig"_UTsh;
178  myFilters.setSize(0);
179  myTransferAttributes = ""_UTsh;
180  myTransferGroups = ""_UTsh;
181  myApplyJointXforms = true;
182 
183  }
184 
185  explicit SOP_AgentUnpackParms(const SOP_AgentUnpackParms &) = default;
187  SOP_AgentUnpackParms(SOP_AgentUnpackParms &&) noexcept = default;
188  SOP_AgentUnpackParms &operator=(SOP_AgentUnpackParms &&) noexcept = default;
189 
190  ~SOP_AgentUnpackParms() override {}
191 
193  {
194  if (myGroup != src.myGroup) return false;
195  if (myGroupType != src.myGroupType) return false;
196  if (myOutput != src.myOutput) return false;
197  if (myUniqueAgentDefinitions != src.myUniqueAgentDefinitions) return false;
198  if (myApplyAgentXform != src.myApplyAgentXform) return false;
199  if (myRestShapesMode != src.myRestShapesMode) return false;
200  if (myLayerFilter != src.myLayerFilter) return false;
201  if (myShapeFilter != src.myShapeFilter) return false;
202  if (myLimitIterations != src.myLimitIterations) return false;
203  if (myIterations != src.myIterations) return false;
204  if (myAddShapeDeformerAttrib != src.myAddShapeDeformerAttrib) return false;
205  if (myShapeDeformerAttrib != src.myShapeDeformerAttrib) return false;
206  if (myAddXformNameAttrib != src.myAddXformNameAttrib) return false;
207  if (myXformNameAttrib != src.myXformNameAttrib) return false;
208  if (myAddLayerNameAttrib != src.myAddLayerNameAttrib) return false;
209  if (myLayerNameAttrib != src.myLayerNameAttrib) return false;
210  if (myClipNames != src.myClipNames) return false;
211  if (myOutputRestPoseAttrib != src.myOutputRestPoseAttrib) return false;
212  if (myRestPoseAttrib != src.myRestPoseAttrib) return false;
213  if (mySkeletonColor != src.mySkeletonColor) return false;
214  if (myOutputTransformGroups != src.myOutputTransformGroups) return false;
215  if (myTransformGroups != src.myTransformGroups) return false;
216  if (myOutputMetadataAttrib != src.myOutputMetadataAttrib) return false;
217  if (myMetadataAttrib != src.myMetadataAttrib) return false;
218  if (myOutputMetadataJointConfigAttribs != src.myOutputMetadataJointConfigAttribs) return false;
219  if (myMetadataJointConfigAttribs != src.myMetadataJointConfigAttribs) return false;
220  if (myFilters != src.myFilters) return false;
221  if (myTransferAttributes != src.myTransferAttributes) return false;
222  if (myTransferGroups != src.myTransferGroups) return false;
223  if (myApplyJointXforms != src.myApplyJointXforms) return false;
224 
225 
226  if (baseGetSignature() != src.baseGetSignature()) return false;
227 
228  return true;
229  }
231  {
232  return !operator==(src);
233  }
237 
238 
239 
240  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
241  {
242  myGroup = ""_UTsh;
243  if (true)
244  graph->evalOpParm(myGroup, nodeidx, "group", time, graph->isDirect()?nullptr:depnode);
245  myGroupType = 0;
246  if (true)
247  graph->evalOpParm(myGroupType, nodeidx, "grouptype", time, graph->isDirect()?nullptr:depnode);
248  myOutput = 0;
249  if (true)
250  graph->evalOpParm(myOutput, nodeidx, "output", time, graph->isDirect()?nullptr:depnode);
251  myUniqueAgentDefinitions = false;
252  if (true && ( (true&&!(((int64(getOutput())!=1))||((int64(getOutput())!=1)))) ) )
253  graph->evalOpParm(myUniqueAgentDefinitions, nodeidx, "uniqueagentdefinitions", time, graph->isDirect()?nullptr:depnode);
254  myApplyAgentXform = true;
255  if (true && ( (true&&!(((int64(getOutput())==4))||((int64(getOutput())==4)))) ) )
256  graph->evalOpParm(myApplyAgentXform, nodeidx, "applyagentxform", time, graph->isDirect()?nullptr:depnode);
257  myRestShapesMode = 0;
258  if (true && ( (true&&!(((int64(getOutput())!=1))||((int64(getOutput())!=1)))) ) )
259  graph->evalOpParm(myRestShapesMode, nodeidx, "unpackrestshapesfrom", time, graph->isDirect()?nullptr:depnode);
260  myLayerFilter = "*"_UTsh;
261  if (true && ( (true&&!(((int64(getOutput())!=0)&&(int64(getOutput())!=1))||((int64(getOutput())==1)&&(int64(getRestShapesMode())==3))||((int64(getOutput())!=0)&&(int64(getOutput())!=1)))) ) )
262  graph->evalOpParm(myLayerFilter, nodeidx, "layerfilter", time, graph->isDirect()?nullptr:depnode);
263  myShapeFilter = "*"_UTsh;
264  if (true && ( (true&&!(((int64(getOutput())!=0)&&(int64(getOutput())!=1))||((int64(getOutput())!=0)&&(int64(getOutput())!=1)))) ) )
265  graph->evalOpParm(myShapeFilter, nodeidx, "shapefilter", time, graph->isDirect()?nullptr:depnode);
266  myLimitIterations = true;
267  if (true && ( (true&&!(((int64(getOutput())!=0)&&(int64(getOutput())!=1))||((int64(getOutput())!=0)&&(int64(getOutput())!=1)))) ) )
268  graph->evalOpParm(myLimitIterations, nodeidx, "limititerations", time, graph->isDirect()?nullptr:depnode);
269  myIterations = 1;
270  if (true && ( (true&&!(((int64(getOutput())!=0)&&(int64(getOutput())!=1))||((getLimitIterations()==0))||((int64(getOutput())!=0)&&(int64(getOutput())!=1)))) ) )
271  graph->evalOpParm(myIterations, nodeidx, "iterations", time, graph->isDirect()?nullptr:depnode);
272  myAddShapeDeformerAttrib = false;
273  if (true && ( (true&&!(((int64(getOutput())!=0)&&(int64(getOutput())!=1))||((int64(getOutput())==1)&&(int64(getRestShapesMode())==3))||((int64(getOutput())!=0)&&(int64(getOutput())!=1)))) ) )
274  graph->evalOpParm(myAddShapeDeformerAttrib, nodeidx, "addshapedeformerattrib", time, graph->isDirect()?nullptr:depnode);
275  myShapeDeformerAttrib = "agentshapedeformer"_UTsh;
276  if (true && ( (true&&!(((int64(getOutput())!=0)&&(int64(getOutput())!=1))||((int64(getOutput())==1)&&(int64(getRestShapesMode())==3))||((getAddShapeDeformerAttrib()==0))||((int64(getOutput())!=0)&&(int64(getOutput())!=1)))) ) )
277  graph->evalOpParm(myShapeDeformerAttrib, nodeidx, "shapedeformerattrib", time, graph->isDirect()?nullptr:depnode);
278  myAddXformNameAttrib = false;
279  if (true && ( (true&&!(((int64(getOutput())!=0)&&(int64(getOutput())!=1))||((int64(getOutput())==1)&&(int64(getRestShapesMode())==3))||((int64(getOutput())!=0)&&(int64(getOutput())!=1)))) ) )
280  graph->evalOpParm(myAddXformNameAttrib, nodeidx, "addxformnameattrib", time, graph->isDirect()?nullptr:depnode);
281  myXformNameAttrib = "agenttransformname"_UTsh;
282  if (true && ( (true&&!(((int64(getOutput())!=0)&&(int64(getOutput())!=1))||((int64(getOutput())==1)&&(int64(getRestShapesMode())==3))||((getAddXformNameAttrib()==0))||((int64(getOutput())!=0)&&(int64(getOutput())!=1)))) ) )
283  graph->evalOpParm(myXformNameAttrib, nodeidx, "xformnameattrib", time, graph->isDirect()?nullptr:depnode);
284  myAddLayerNameAttrib = false;
285  if (true && ( (true&&!(((int64(getOutput())!=0)&&(int64(getOutput())!=1))||((int64(getOutput())==1)&&(int64(getRestShapesMode())==3))||((int64(getOutput())!=0)&&(int64(getOutput())!=1)))) ) )
286  graph->evalOpParm(myAddLayerNameAttrib, nodeidx, "addlayernameattrib", time, graph->isDirect()?nullptr:depnode);
287  myLayerNameAttrib = "agentlayername"_UTsh;
288  if (true && ( (true&&!(((int64(getOutput())!=0)&&(int64(getOutput())!=1))||((int64(getOutput())==1)&&(int64(getRestShapesMode())==3))||((getAddLayerNameAttrib()==0))||((int64(getOutput())!=0)&&(int64(getOutput())!=1)))) ) )
289  graph->evalOpParm(myLayerNameAttrib, nodeidx, "layernameattrib", time, graph->isDirect()?nullptr:depnode);
290  myClipNames = ""_UTsh;
291  if (true && ( (true&&!(((int64(getOutput())!=4))||((int64(getOutput())!=4)))) ) )
292  graph->evalOpParm(myClipNames, nodeidx, "clipnames", time, graph->isDirect()?nullptr:depnode);
293  myOutputRestPoseAttrib = true;
294  if (true && ( (true&&!(((int64(getOutput())!=3)&&(int64(getOutput())!=4))||((int64(getOutput())!=3)&&(int64(getOutput())!=4)))) ) )
295  graph->evalOpParm(myOutputRestPoseAttrib, nodeidx, "outputrestposeattrib", time, graph->isDirect()?nullptr:depnode);
296  myRestPoseAttrib = "rest_transform"_UTsh;
297  if (true && ( (true&&!(((false))||((int64(getOutput())!=3)&&(int64(getOutput())!=4))||((int64(getOutput())!=3)&&(int64(getOutput())!=4)))) ) )
298  graph->evalOpParm(myRestPoseAttrib, nodeidx, "restposeattrib", time, graph->isDirect()?nullptr:depnode);
299  mySkeletonColor = UT_Vector3D(0.0,0.09,1.0);
300  if (true && ( (true&&!(((int64(getOutput())!=3)&&(int64(getOutput())!=4))||((int64(getOutput())!=3)&&(int64(getOutput())!=4)))) ) )
301  graph->evalOpParm(mySkeletonColor, nodeidx, "skeletoncolor", time, graph->isDirect()?nullptr:depnode);
302  myOutputTransformGroups = false;
303  if (true && ( (true&&!(((int64(getOutput())!=3)&&(int64(getOutput())!=4))||((int64(getOutput())!=3)&&(int64(getOutput())!=4)))) ) )
304  graph->evalOpParm(myOutputTransformGroups, nodeidx, "outputtransformgroups", time, graph->isDirect()?nullptr:depnode);
305  myTransformGroups = "*"_UTsh;
306  if (true && ( (true&&!(((getOutputTransformGroups()==0))||((int64(getOutput())!=3)&&(int64(getOutput())!=4))||((int64(getOutput())!=3)&&(int64(getOutput())!=4)))) ) )
307  graph->evalOpParm(myTransformGroups, nodeidx, "transformgroups", time, graph->isDirect()?nullptr:depnode);
308  myOutputMetadataAttrib = false;
309  if (true && ( (true&&!(((int64(getOutput())!=3)&&(int64(getOutput())!=4))||((int64(getOutput())!=3)&&(int64(getOutput())!=4)))) ) )
310  graph->evalOpParm(myOutputMetadataAttrib, nodeidx, "outputmetadataattrib", time, graph->isDirect()?nullptr:depnode);
311  myMetadataAttrib = "agentmetadata"_UTsh;
312  if (true && ( (true&&!(((getOutputMetadataAttrib()==0))||((int64(getOutput())!=3)&&(int64(getOutput())!=4))||((int64(getOutput())!=3)&&(int64(getOutput())!=4)))) ) )
313  graph->evalOpParm(myMetadataAttrib, nodeidx, "metadataattrib", time, graph->isDirect()?nullptr:depnode);
314  myOutputMetadataJointConfigAttribs = false;
315  if (true && ( (true&&!(((int64(getOutput())!=3)&&(int64(getOutput())!=4))||((int64(getOutput())!=3)&&(int64(getOutput())!=4)))) ) )
316  graph->evalOpParm(myOutputMetadataJointConfigAttribs, nodeidx, "outputmetadatajointconfigattribs", time, graph->isDirect()?nullptr:depnode);
317  myMetadataJointConfigAttribs = "fbik_jointconfig"_UTsh;
318  if (true && ( (true&&!(((getOutputMetadataJointConfigAttribs()==0))||((int64(getOutput())!=3)&&(int64(getOutput())!=4))||((int64(getOutput())!=3)&&(int64(getOutput())!=4)))) ) )
319  graph->evalOpParm(myMetadataJointConfigAttribs, nodeidx, "metadatajointconfigattribs", time, graph->isDirect()?nullptr:depnode);
320  if (true && ( (!(((int64(getOutput())!=2))||((int64(getOutput())!=2)))) ) )
321  {
322  int64 length = 0;
323  graph->evalOpParm(length, nodeidx, "numjointfilters", time, graph->isDirect()?nullptr:depnode);
324  if (length < 0) length = 0;
325  myFilters.setSize(length);
326  for (exint i = 0; i < length; i++)
327  {
328  int parmidx[1];
329  int offsets[1];
330  parmidx[0] = i+1;
331  offsets[0] = 1;
332  auto && _curentry = myFilters(i);
333  (void) _curentry;
334  _curentry.jointnames = ""_UTsh;
335  if (true && ( (!(((int64(getOutput())!=2))||((int64(getOutput())!=2)))) ) && ( (true&&!(((int64(getOutput())!=2))||((int64(getOutput())!=2)))) ) )
336  graph->evalOpParmInst(_curentry.jointnames, nodeidx, "jointnames#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
337  _curentry.percentage = 100;
338  if (true && ( (!(((int64(getOutput())!=2))||((int64(getOutput())!=2)))) ) && ( (true&&!(((int64(getOutput())!=2))||((int64(getOutput())!=2)))) ) )
339  graph->evalOpParmInst(_curentry.percentage, nodeidx, "percentage#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
340  _curentry.seed = 1;
341  if (true && ( (!(((int64(getOutput())!=2))||((int64(getOutput())!=2)))) ) && ( (true&&!(((int64(getOutput())!=2))||((int64(getOutput())!=2)))) ) )
342  graph->evalOpParmInst(_curentry.seed, nodeidx, "seed#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
343 
344  }
345  }
346  else
347  myFilters.clear();
348  myTransferAttributes = ""_UTsh;
349  if (true)
350  graph->evalOpParm(myTransferAttributes, nodeidx, "transferattributes", time, graph->isDirect()?nullptr:depnode);
351  myTransferGroups = ""_UTsh;
352  if (true)
353  graph->evalOpParm(myTransferGroups, nodeidx, "transfergroups", time, graph->isDirect()?nullptr:depnode);
354  myApplyJointXforms = true;
355  if (true && ( (true&&!(((int64(getOutput())==0))||((int64(getOutput())==4))||((int64(getOutput())==1)&&(int64(getRestShapesMode())==3))||((int64(getOutput())==0))||((int64(getOutput())==4)))) ) )
356  graph->evalOpParm(myApplyJointXforms, nodeidx, "applyjointxforms", time, graph->isDirect()?nullptr:depnode);
357 
358  }
359 
360 
361  void loadFromOpSubclass(const LoadParms &loadparms) override
362  {
363  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
364  }
365 
366 
367  void copyFrom(const OP_NodeParms *src) override
368  {
369  *this = *((const SOP_AgentUnpackParms *)src);
370  }
371 
372  template <typename T>
373  void
374  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
375  {
376  if (idx.size() < 1)
377  return;
378  UT_ASSERT(idx.size() == instance.size()+1);
379  if (idx.size() != instance.size()+1)
380  return;
381  switch (idx[0])
382  {
383  case 0:
384  coerceValue(value, myGroup);
385  break;
386  case 1:
387  coerceValue(value, myGroupType);
388  break;
389  case 2:
390  coerceValue(value, myOutput);
391  break;
392  case 3:
393  coerceValue(value, myUniqueAgentDefinitions);
394  break;
395  case 4:
396  coerceValue(value, myApplyAgentXform);
397  break;
398  case 5:
399  coerceValue(value, myRestShapesMode);
400  break;
401  case 6:
402  coerceValue(value, myLayerFilter);
403  break;
404  case 7:
405  coerceValue(value, myShapeFilter);
406  break;
407  case 8:
408  coerceValue(value, myLimitIterations);
409  break;
410  case 9:
411  coerceValue(value, myIterations);
412  break;
413  case 10:
414  coerceValue(value, myAddShapeDeformerAttrib);
415  break;
416  case 11:
417  coerceValue(value, myShapeDeformerAttrib);
418  break;
419  case 12:
420  coerceValue(value, myAddXformNameAttrib);
421  break;
422  case 13:
423  coerceValue(value, myXformNameAttrib);
424  break;
425  case 14:
426  coerceValue(value, myAddLayerNameAttrib);
427  break;
428  case 15:
429  coerceValue(value, myLayerNameAttrib);
430  break;
431  case 16:
432  coerceValue(value, myClipNames);
433  break;
434  case 17:
435  coerceValue(value, myOutputRestPoseAttrib);
436  break;
437  case 18:
438  coerceValue(value, myRestPoseAttrib);
439  break;
440  case 19:
441  coerceValue(value, mySkeletonColor);
442  break;
443  case 20:
444  coerceValue(value, myOutputTransformGroups);
445  break;
446  case 21:
447  coerceValue(value, myTransformGroups);
448  break;
449  case 22:
450  coerceValue(value, myOutputMetadataAttrib);
451  break;
452  case 23:
453  coerceValue(value, myMetadataAttrib);
454  break;
455  case 24:
456  coerceValue(value, myOutputMetadataJointConfigAttribs);
457  break;
458  case 25:
459  coerceValue(value, myMetadataJointConfigAttribs);
460  break;
461  case 26:
462  if (idx.size() == 1)
463  coerceValue(value, myFilters.entries());
464  else if (instance[0] < myFilters.entries())
465  {
466  auto && _data = myFilters(instance[0]);
467  switch (idx[1])
468  {
469  case 0:
470  coerceValue(value, _data.jointnames);
471  break;
472  case 1:
473  coerceValue(value, _data.percentage);
474  break;
475  case 2:
476  coerceValue(value, _data.seed);
477  break;
478 
479  }
480  }
481  break;
482  case 27:
483  coerceValue(value, myTransferAttributes);
484  break;
485  case 28:
486  coerceValue(value, myTransferGroups);
487  break;
488  case 29:
489  coerceValue(value, myApplyJointXforms);
490  break;
491 
492  }
493  }
494 
495  bool isParmColorRamp(exint idx) const override
496  {
497  switch (idx)
498  {
499 
500  }
501  return false;
502  }
503 
504  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
505  { doGetParmValue(idx, instance, value); }
506  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
507  { doGetParmValue(idx, instance, value); }
508  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
509  { doGetParmValue(idx, instance, value); }
510  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
511  { doGetParmValue(idx, instance, value); }
512  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
513  { doGetParmValue(idx, instance, value); }
514  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
515  { doGetParmValue(idx, instance, value); }
516  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
517  { doGetParmValue(idx, instance, value); }
518  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
519  { doGetParmValue(idx, instance, value); }
520  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
521  { doGetParmValue(idx, instance, value); }
522  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
523  { doGetParmValue(idx, instance, value); }
524  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
525  { doGetParmValue(idx, instance, value); }
526 
527  template <typename T>
528  void
529  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
530  {
531  if (idx.size() < 1)
532  return;
533  UT_ASSERT(idx.size() == instance.size()+1);
534  if (idx.size() != instance.size()+1)
535  return;
536  switch (idx[0])
537  {
538  case 0:
539  coerceValue(myGroup, ( ( value ) ));
540  break;
541  case 1:
542  coerceValue(myGroupType, clampMinValue(0, clampMaxValue(2, value ) ));
543  break;
544  case 2:
545  coerceValue(myOutput, clampMinValue(0, clampMaxValue(4, value ) ));
546  break;
547  case 3:
548  coerceValue(myUniqueAgentDefinitions, ( ( value ) ));
549  break;
550  case 4:
551  coerceValue(myApplyAgentXform, ( ( value ) ));
552  break;
553  case 5:
554  coerceValue(myRestShapesMode, clampMinValue(0, clampMaxValue(3, value ) ));
555  break;
556  case 6:
557  coerceValue(myLayerFilter, ( ( value ) ));
558  break;
559  case 7:
560  coerceValue(myShapeFilter, ( ( value ) ));
561  break;
562  case 8:
563  coerceValue(myLimitIterations, ( ( value ) ));
564  break;
565  case 9:
566  coerceValue(myIterations, clampMinValue(1, ( value ) ));
567  break;
568  case 10:
569  coerceValue(myAddShapeDeformerAttrib, ( ( value ) ));
570  break;
571  case 11:
572  coerceValue(myShapeDeformerAttrib, ( ( value ) ));
573  break;
574  case 12:
575  coerceValue(myAddXformNameAttrib, ( ( value ) ));
576  break;
577  case 13:
578  coerceValue(myXformNameAttrib, ( ( value ) ));
579  break;
580  case 14:
581  coerceValue(myAddLayerNameAttrib, ( ( value ) ));
582  break;
583  case 15:
584  coerceValue(myLayerNameAttrib, ( ( value ) ));
585  break;
586  case 16:
587  coerceValue(myClipNames, ( ( value ) ));
588  break;
589  case 17:
590  coerceValue(myOutputRestPoseAttrib, ( ( value ) ));
591  break;
592  case 18:
593  coerceValue(myRestPoseAttrib, ( ( value ) ));
594  break;
595  case 19:
596  coerceValue(mySkeletonColor, ( ( value ) ));
597  break;
598  case 20:
599  coerceValue(myOutputTransformGroups, ( ( value ) ));
600  break;
601  case 21:
602  coerceValue(myTransformGroups, ( ( value ) ));
603  break;
604  case 22:
605  coerceValue(myOutputMetadataAttrib, ( ( value ) ));
606  break;
607  case 23:
608  coerceValue(myMetadataAttrib, ( ( value ) ));
609  break;
610  case 24:
611  coerceValue(myOutputMetadataJointConfigAttribs, ( ( value ) ));
612  break;
613  case 25:
614  coerceValue(myMetadataJointConfigAttribs, ( ( value ) ));
615  break;
616  case 26:
617  if (idx.size() == 1)
618  {
619  exint newsize;
620  coerceValue(newsize, value);
621  if (newsize < 0) newsize = 0;
622  myFilters.setSize(newsize);
623  }
624  else
625  {
626  if (instance[0] < 0)
627  return;
628  myFilters.setSizeIfNeeded(instance[0]+1);
629  auto && _data = myFilters(instance[0]);
630  switch (idx[1])
631  {
632  case 0:
633  coerceValue(_data.jointnames, value);
634  break;
635  case 1:
636  coerceValue(_data.percentage, value);
637  break;
638  case 2:
639  coerceValue(_data.seed, value);
640  break;
641 
642  }
643  }
644  break;
645  case 27:
646  coerceValue(myTransferAttributes, ( ( value ) ));
647  break;
648  case 28:
649  coerceValue(myTransferGroups, ( ( value ) ));
650  break;
651  case 29:
652  coerceValue(myApplyJointXforms, ( ( value ) ));
653  break;
654 
655  }
656  }
657 
658  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
659  { doSetParmValue(idx, instance, value); }
660  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
661  { doSetParmValue(idx, instance, value); }
662  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
663  { doSetParmValue(idx, instance, value); }
664  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
665  { doSetParmValue(idx, instance, value); }
666  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
667  { doSetParmValue(idx, instance, value); }
668  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
669  { doSetParmValue(idx, instance, value); }
670  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
671  { doSetParmValue(idx, instance, value); }
672  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
673  { doSetParmValue(idx, instance, value); }
674  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
675  { doSetParmValue(idx, instance, value); }
676  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
677  { doSetParmValue(idx, instance, value); }
678  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
679  { doSetParmValue(idx, instance, value); }
680 
681  exint getNestNumParms(TempIndex idx) const override
682  {
683  if (idx.size() == 0)
684  return 30;
685  switch (idx[0])
686  {
687  case 26:
688  return 3;
689 
690  }
691  // Invalid
692  return 0;
693  }
694 
695  const char *getNestParmName(TempIndex fieldnum) const override
696  {
697  if (fieldnum.size() < 1)
698  return 0;
699  switch (fieldnum[0])
700  {
701  case 0:
702  return "group";
703  case 1:
704  return "grouptype";
705  case 2:
706  return "output";
707  case 3:
708  return "uniqueagentdefinitions";
709  case 4:
710  return "applyagentxform";
711  case 5:
712  return "unpackrestshapesfrom";
713  case 6:
714  return "layerfilter";
715  case 7:
716  return "shapefilter";
717  case 8:
718  return "limititerations";
719  case 9:
720  return "iterations";
721  case 10:
722  return "addshapedeformerattrib";
723  case 11:
724  return "shapedeformerattrib";
725  case 12:
726  return "addxformnameattrib";
727  case 13:
728  return "xformnameattrib";
729  case 14:
730  return "addlayernameattrib";
731  case 15:
732  return "layernameattrib";
733  case 16:
734  return "clipnames";
735  case 17:
736  return "outputrestposeattrib";
737  case 18:
738  return "restposeattrib";
739  case 19:
740  return "skeletoncolor";
741  case 20:
742  return "outputtransformgroups";
743  case 21:
744  return "transformgroups";
745  case 22:
746  return "outputmetadataattrib";
747  case 23:
748  return "metadataattrib";
749  case 24:
750  return "outputmetadatajointconfigattribs";
751  case 25:
752  return "metadatajointconfigattribs";
753  case 26:
754  if (fieldnum.size() == 1)
755  return "numjointfilters";
756  switch (fieldnum[1])
757  {
758  case 0:
759  return "jointnames#";
760  case 1:
761  return "percentage#";
762  case 2:
763  return "seed#";
764 
765  }
766  return 0;
767  case 27:
768  return "transferattributes";
769  case 28:
770  return "transfergroups";
771  case 29:
772  return "applyjointxforms";
773 
774  }
775  return 0;
776  }
777 
778  ParmType getNestParmType(TempIndex fieldnum) const override
779  {
780  if (fieldnum.size() < 1)
781  return PARM_UNSUPPORTED;
782  switch (fieldnum[0])
783  {
784  case 0:
785  return PARM_STRING;
786  case 1:
787  return PARM_INTEGER;
788  case 2:
789  return PARM_INTEGER;
790  case 3:
791  return PARM_INTEGER;
792  case 4:
793  return PARM_INTEGER;
794  case 5:
795  return PARM_INTEGER;
796  case 6:
797  return PARM_STRING;
798  case 7:
799  return PARM_STRING;
800  case 8:
801  return PARM_INTEGER;
802  case 9:
803  return PARM_INTEGER;
804  case 10:
805  return PARM_INTEGER;
806  case 11:
807  return PARM_STRING;
808  case 12:
809  return PARM_INTEGER;
810  case 13:
811  return PARM_STRING;
812  case 14:
813  return PARM_INTEGER;
814  case 15:
815  return PARM_STRING;
816  case 16:
817  return PARM_STRING;
818  case 17:
819  return PARM_INTEGER;
820  case 18:
821  return PARM_STRING;
822  case 19:
823  return PARM_VECTOR3;
824  case 20:
825  return PARM_INTEGER;
826  case 21:
827  return PARM_STRING;
828  case 22:
829  return PARM_INTEGER;
830  case 23:
831  return PARM_STRING;
832  case 24:
833  return PARM_INTEGER;
834  case 25:
835  return PARM_STRING;
836  case 26:
837  if (fieldnum.size() == 1)
838  return PARM_MULTIPARM;
839  switch (fieldnum[1])
840  {
841  case 0:
842  return PARM_STRING;
843  case 1:
844  return PARM_FLOAT;
845  case 2:
846  return PARM_FLOAT;
847 
848  }
849  return PARM_UNSUPPORTED;
850  case 27:
851  return PARM_STRING;
852  case 28:
853  return PARM_STRING;
854  case 29:
855  return PARM_INTEGER;
856 
857  }
858  return PARM_UNSUPPORTED;
859  }
860 
861  // Boiler plate to load individual types.
862  static void loadData(UT_IStream &is, int64 &v)
863  { is.bread(&v, 1); }
864  static void loadData(UT_IStream &is, bool &v)
865  { int64 iv; is.bread(&iv, 1); v = iv; }
866  static void loadData(UT_IStream &is, fpreal64 &v)
867  { is.bread<fpreal64>(&v, 1); }
868  static void loadData(UT_IStream &is, UT_Vector2D &v)
869  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
870  static void loadData(UT_IStream &is, UT_Vector3D &v)
871  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
872  is.bread<fpreal64>(&v.z(), 1); }
873  static void loadData(UT_IStream &is, UT_Vector4D &v)
874  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
875  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
876  static void loadData(UT_IStream &is, UT_Matrix2D &v)
877  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
878  static void loadData(UT_IStream &is, UT_Matrix3D &v)
879  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
880  static void loadData(UT_IStream &is, UT_Matrix4D &v)
881  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
882  static void loadData(UT_IStream &is, UT_Vector2I &v)
883  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
884  static void loadData(UT_IStream &is, UT_Vector3I &v)
885  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
886  is.bread<int64>(&v.z(), 1); }
887  static void loadData(UT_IStream &is, UT_Vector4I &v)
888  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
889  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
891  { is.bread(v); }
893  { UT_StringHolder rampdata;
894  loadData(is, rampdata);
895  if (rampdata.isstring())
896  {
897  v.reset(new UT_Ramp());
898  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
899  v->load(istr);
900  }
901  else v.reset();
902  }
905  loadData(is, data);
906  if (data.isstring())
907  {
908  // Find the data type.
909  const char *colon = UT_StringWrap(data).findChar(':');
910  if (colon)
911  {
912  int typelen = colon - data.buffer();
914  type.strncpy(data.buffer(), typelen);
915  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
916 
917  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
918  }
919  }
920  else v.reset();
921  }
922 
923  static void saveData(std::ostream &os, int64 v)
924  { UTwrite(os, &v); }
925  static void saveData(std::ostream &os, bool v)
926  { int64 iv = v; UTwrite(os, &iv); }
927  static void saveData(std::ostream &os, fpreal64 v)
928  { UTwrite<fpreal64>(os, &v); }
929  static void saveData(std::ostream &os, UT_Vector2D v)
930  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
931  static void saveData(std::ostream &os, UT_Vector3D v)
932  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
933  UTwrite<fpreal64>(os, &v.z()); }
934  static void saveData(std::ostream &os, UT_Vector4D v)
935  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
936  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
937  static void saveData(std::ostream &os, UT_Matrix2D v)
939  static void saveData(std::ostream &os, UT_Matrix3D v)
941  static void saveData(std::ostream &os, UT_Matrix4D v)
943  static void saveData(std::ostream &os, UT_StringHolder s)
944  { UT_StringWrap(s).saveBinary(os); }
945  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
947  UT_OStringStream ostr;
948  if (s) s->save(ostr);
949  result = ostr.str();
950  saveData(os, result);
951  }
952  static void saveData(std::ostream &os, PRM_DataItemHandle s)
954  UT_OStringStream ostr;
955  if (s)
956  {
957  ostr << s->getDataTypeToken();
958  ostr << ":";
959  s->saveBinary(ostr);
960  }
961  result = ostr.str();
962  saveData(os, result);
963  }
964 
965 
966  void save(std::ostream &os) const
967  {
968  int32 v = version();
969  UTwrite(os, &v);
970  saveData(os, myGroup);
971  saveData(os, myGroupType);
972  saveData(os, myOutput);
973  saveData(os, myUniqueAgentDefinitions);
974  saveData(os, myApplyAgentXform);
975  saveData(os, myRestShapesMode);
976  saveData(os, myLayerFilter);
977  saveData(os, myShapeFilter);
978  saveData(os, myLimitIterations);
979  saveData(os, myIterations);
980  saveData(os, myAddShapeDeformerAttrib);
981  saveData(os, myShapeDeformerAttrib);
982  saveData(os, myAddXformNameAttrib);
983  saveData(os, myXformNameAttrib);
984  saveData(os, myAddLayerNameAttrib);
985  saveData(os, myLayerNameAttrib);
986  saveData(os, myClipNames);
987  saveData(os, myOutputRestPoseAttrib);
988  saveData(os, myRestPoseAttrib);
989  saveData(os, mySkeletonColor);
990  saveData(os, myOutputTransformGroups);
991  saveData(os, myTransformGroups);
992  saveData(os, myOutputMetadataAttrib);
993  saveData(os, myMetadataAttrib);
994  saveData(os, myOutputMetadataJointConfigAttribs);
995  saveData(os, myMetadataJointConfigAttribs);
996  {
997  int64 length = myFilters.entries();
998  UTwrite(os, &length);
999  for (exint i = 0; i < length; i++)
1000  {
1001  auto && _curentry = myFilters(i);
1002  (void) _curentry;
1003  saveData(os, _curentry.jointnames);
1004  saveData(os, _curentry.percentage);
1005  saveData(os, _curentry.seed);
1006 
1007  }
1008  }
1009  saveData(os, myTransferAttributes);
1010  saveData(os, myTransferGroups);
1011  saveData(os, myApplyJointXforms);
1012 
1013  }
1014 
1015  bool load(UT_IStream &is)
1016  {
1017  int32 v;
1018  is.bread(&v, 1);
1019  if (version() != v)
1020  {
1021  // Fail incompatible versions
1022  return false;
1023  }
1024  loadData(is, myGroup);
1025  loadData(is, myGroupType);
1026  loadData(is, myOutput);
1027  loadData(is, myUniqueAgentDefinitions);
1028  loadData(is, myApplyAgentXform);
1029  loadData(is, myRestShapesMode);
1030  loadData(is, myLayerFilter);
1031  loadData(is, myShapeFilter);
1032  loadData(is, myLimitIterations);
1033  loadData(is, myIterations);
1034  loadData(is, myAddShapeDeformerAttrib);
1035  loadData(is, myShapeDeformerAttrib);
1036  loadData(is, myAddXformNameAttrib);
1037  loadData(is, myXformNameAttrib);
1038  loadData(is, myAddLayerNameAttrib);
1039  loadData(is, myLayerNameAttrib);
1040  loadData(is, myClipNames);
1041  loadData(is, myOutputRestPoseAttrib);
1042  loadData(is, myRestPoseAttrib);
1043  loadData(is, mySkeletonColor);
1044  loadData(is, myOutputTransformGroups);
1045  loadData(is, myTransformGroups);
1046  loadData(is, myOutputMetadataAttrib);
1047  loadData(is, myMetadataAttrib);
1048  loadData(is, myOutputMetadataJointConfigAttribs);
1049  loadData(is, myMetadataJointConfigAttribs);
1050  {
1051  int64 length;
1052  is.read(&length, 1);
1053  myFilters.setSize(length);
1054  for (exint i = 0; i < length; i++)
1055  {
1056  auto && _curentry = myFilters(i);
1057  (void) _curentry;
1058  loadData(is, _curentry.jointnames);
1059  loadData(is, _curentry.percentage);
1060  loadData(is, _curentry.seed);
1061 
1062  }
1063  }
1064  loadData(is, myTransferAttributes);
1065  loadData(is, myTransferGroups);
1066  loadData(is, myApplyJointXforms);
1067 
1068  return true;
1069  }
1070 
1071  const UT_StringHolder & getGroup() const { return myGroup; }
1072  void setGroup(const UT_StringHolder & val) { myGroup = val; }
1074  {
1075  SOP_Node *thissop = cookparms.getNode();
1076  if (!thissop) return getGroup();
1078  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
1079  return result;
1080  }
1081  GroupType getGroupType() const { return GroupType(myGroupType); }
1082  void setGroupType(GroupType val) { myGroupType = int64(val); }
1084  {
1085  SOP_Node *thissop = cookparms.getNode();
1086  if (!thissop) return getGroupType();
1087  int64 result;
1088  OP_Utils::evalOpParm(result, thissop, "grouptype", cookparms.getCookTime(), 0);
1089  return GroupType(result);
1090  }
1091  Output getOutput() const { return Output(myOutput); }
1092  void setOutput(Output val) { myOutput = int64(val); }
1093  Output opOutput(const SOP_NodeVerb::CookParms &cookparms) const
1094  {
1095  SOP_Node *thissop = cookparms.getNode();
1096  if (!thissop) return getOutput();
1097  int64 result;
1098  OP_Utils::evalOpParm(result, thissop, "output", cookparms.getCookTime(), 0);
1099  return Output(result);
1100  }
1101  bool getUniqueAgentDefinitions() const { return myUniqueAgentDefinitions; }
1102  void setUniqueAgentDefinitions(bool val) { myUniqueAgentDefinitions = val; }
1104  {
1105  SOP_Node *thissop = cookparms.getNode();
1106  if (!thissop) return getUniqueAgentDefinitions();
1107  bool result;
1108  OP_Utils::evalOpParm(result, thissop, "uniqueagentdefinitions", cookparms.getCookTime(), 0);
1109  return result;
1110  }
1111  bool getApplyAgentXform() const { return myApplyAgentXform; }
1112  void setApplyAgentXform(bool val) { myApplyAgentXform = val; }
1113  bool opApplyAgentXform(const SOP_NodeVerb::CookParms &cookparms) const
1114  {
1115  SOP_Node *thissop = cookparms.getNode();
1116  if (!thissop) return getApplyAgentXform();
1117  bool result;
1118  OP_Utils::evalOpParm(result, thissop, "applyagentxform", cookparms.getCookTime(), 0);
1119  return result;
1120  }
1121  RestShapesMode getRestShapesMode() const { return RestShapesMode(myRestShapesMode); }
1122  void setRestShapesMode(RestShapesMode val) { myRestShapesMode = int64(val); }
1124  {
1125  SOP_Node *thissop = cookparms.getNode();
1126  if (!thissop) return getRestShapesMode();
1127  int64 result;
1128  OP_Utils::evalOpParm(result, thissop, "unpackrestshapesfrom", cookparms.getCookTime(), 0);
1129  return RestShapesMode(result);
1130  }
1131  const UT_StringHolder & getLayerFilter() const { return myLayerFilter; }
1132  void setLayerFilter(const UT_StringHolder & val) { myLayerFilter = val; }
1134  {
1135  SOP_Node *thissop = cookparms.getNode();
1136  if (!thissop) return getLayerFilter();
1138  OP_Utils::evalOpParm(result, thissop, "layerfilter", cookparms.getCookTime(), 0);
1139  return result;
1140  }
1141  const UT_StringHolder & getShapeFilter() const { return myShapeFilter; }
1142  void setShapeFilter(const UT_StringHolder & val) { myShapeFilter = val; }
1144  {
1145  SOP_Node *thissop = cookparms.getNode();
1146  if (!thissop) return getShapeFilter();
1148  OP_Utils::evalOpParm(result, thissop, "shapefilter", cookparms.getCookTime(), 0);
1149  return result;
1150  }
1151  bool getLimitIterations() const { return myLimitIterations; }
1152  void setLimitIterations(bool val) { myLimitIterations = val; }
1153  bool opLimitIterations(const SOP_NodeVerb::CookParms &cookparms) const
1154  {
1155  SOP_Node *thissop = cookparms.getNode();
1156  if (!thissop) return getLimitIterations();
1157  bool result;
1158  OP_Utils::evalOpParm(result, thissop, "limititerations", cookparms.getCookTime(), 0);
1159  return result;
1160  }
1161  int64 getIterations() const { return myIterations; }
1162  void setIterations(int64 val) { myIterations = val; }
1164  {
1165  SOP_Node *thissop = cookparms.getNode();
1166  if (!thissop) return getIterations();
1167  int64 result;
1168  OP_Utils::evalOpParm(result, thissop, "iterations", cookparms.getCookTime(), 0);
1169  return result;
1170  }
1171  bool getAddShapeDeformerAttrib() const { return myAddShapeDeformerAttrib; }
1172  void setAddShapeDeformerAttrib(bool val) { myAddShapeDeformerAttrib = val; }
1174  {
1175  SOP_Node *thissop = cookparms.getNode();
1176  if (!thissop) return getAddShapeDeformerAttrib();
1177  bool result;
1178  OP_Utils::evalOpParm(result, thissop, "addshapedeformerattrib", cookparms.getCookTime(), 0);
1179  return result;
1180  }
1181  const UT_StringHolder & getShapeDeformerAttrib() const { return myShapeDeformerAttrib; }
1182  void setShapeDeformerAttrib(const UT_StringHolder & val) { myShapeDeformerAttrib = val; }
1184  {
1185  SOP_Node *thissop = cookparms.getNode();
1186  if (!thissop) return getShapeDeformerAttrib();
1188  OP_Utils::evalOpParm(result, thissop, "shapedeformerattrib", cookparms.getCookTime(), 0);
1189  return result;
1190  }
1191  bool getAddXformNameAttrib() const { return myAddXformNameAttrib; }
1192  void setAddXformNameAttrib(bool val) { myAddXformNameAttrib = val; }
1193  bool opAddXformNameAttrib(const SOP_NodeVerb::CookParms &cookparms) const
1194  {
1195  SOP_Node *thissop = cookparms.getNode();
1196  if (!thissop) return getAddXformNameAttrib();
1197  bool result;
1198  OP_Utils::evalOpParm(result, thissop, "addxformnameattrib", cookparms.getCookTime(), 0);
1199  return result;
1200  }
1201  const UT_StringHolder & getXformNameAttrib() const { return myXformNameAttrib; }
1202  void setXformNameAttrib(const UT_StringHolder & val) { myXformNameAttrib = val; }
1204  {
1205  SOP_Node *thissop = cookparms.getNode();
1206  if (!thissop) return getXformNameAttrib();
1208  OP_Utils::evalOpParm(result, thissop, "xformnameattrib", cookparms.getCookTime(), 0);
1209  return result;
1210  }
1211  bool getAddLayerNameAttrib() const { return myAddLayerNameAttrib; }
1212  void setAddLayerNameAttrib(bool val) { myAddLayerNameAttrib = val; }
1213  bool opAddLayerNameAttrib(const SOP_NodeVerb::CookParms &cookparms) const
1214  {
1215  SOP_Node *thissop = cookparms.getNode();
1216  if (!thissop) return getAddLayerNameAttrib();
1217  bool result;
1218  OP_Utils::evalOpParm(result, thissop, "addlayernameattrib", cookparms.getCookTime(), 0);
1219  return result;
1220  }
1221  const UT_StringHolder & getLayerNameAttrib() const { return myLayerNameAttrib; }
1222  void setLayerNameAttrib(const UT_StringHolder & val) { myLayerNameAttrib = val; }
1224  {
1225  SOP_Node *thissop = cookparms.getNode();
1226  if (!thissop) return getLayerNameAttrib();
1228  OP_Utils::evalOpParm(result, thissop, "layernameattrib", cookparms.getCookTime(), 0);
1229  return result;
1230  }
1231  const UT_StringHolder & getClipNames() const { return myClipNames; }
1232  void setClipNames(const UT_StringHolder & val) { myClipNames = val; }
1234  {
1235  SOP_Node *thissop = cookparms.getNode();
1236  if (!thissop) return getClipNames();
1238  OP_Utils::evalOpParm(result, thissop, "clipnames", cookparms.getCookTime(), 0);
1239  return result;
1240  }
1241  bool getOutputRestPoseAttrib() const { return myOutputRestPoseAttrib; }
1242  void setOutputRestPoseAttrib(bool val) { myOutputRestPoseAttrib = val; }
1244  {
1245  SOP_Node *thissop = cookparms.getNode();
1246  if (!thissop) return getOutputRestPoseAttrib();
1247  bool result;
1248  OP_Utils::evalOpParm(result, thissop, "outputrestposeattrib", cookparms.getCookTime(), 0);
1249  return result;
1250  }
1251  const UT_StringHolder & getRestPoseAttrib() const { return myRestPoseAttrib; }
1252  void setRestPoseAttrib(const UT_StringHolder & val) { myRestPoseAttrib = val; }
1254  {
1255  SOP_Node *thissop = cookparms.getNode();
1256  if (!thissop) return getRestPoseAttrib();
1258  OP_Utils::evalOpParm(result, thissop, "restposeattrib", cookparms.getCookTime(), 0);
1259  return result;
1260  }
1261  UT_Vector3D getSkeletonColor() const { return mySkeletonColor; }
1262  void setSkeletonColor(UT_Vector3D val) { mySkeletonColor = val; }
1264  {
1265  SOP_Node *thissop = cookparms.getNode();
1266  if (!thissop) return getSkeletonColor();
1268  OP_Utils::evalOpParm(result, thissop, "skeletoncolor", cookparms.getCookTime(), 0);
1269  return result;
1270  }
1271  bool getOutputTransformGroups() const { return myOutputTransformGroups; }
1272  void setOutputTransformGroups(bool val) { myOutputTransformGroups = val; }
1274  {
1275  SOP_Node *thissop = cookparms.getNode();
1276  if (!thissop) return getOutputTransformGroups();
1277  bool result;
1278  OP_Utils::evalOpParm(result, thissop, "outputtransformgroups", cookparms.getCookTime(), 0);
1279  return result;
1280  }
1281  const UT_StringHolder & getTransformGroups() const { return myTransformGroups; }
1282  void setTransformGroups(const UT_StringHolder & val) { myTransformGroups = val; }
1284  {
1285  SOP_Node *thissop = cookparms.getNode();
1286  if (!thissop) return getTransformGroups();
1288  OP_Utils::evalOpParm(result, thissop, "transformgroups", cookparms.getCookTime(), 0);
1289  return result;
1290  }
1291  bool getOutputMetadataAttrib() const { return myOutputMetadataAttrib; }
1292  void setOutputMetadataAttrib(bool val) { myOutputMetadataAttrib = val; }
1294  {
1295  SOP_Node *thissop = cookparms.getNode();
1296  if (!thissop) return getOutputMetadataAttrib();
1297  bool result;
1298  OP_Utils::evalOpParm(result, thissop, "outputmetadataattrib", cookparms.getCookTime(), 0);
1299  return result;
1300  }
1301  const UT_StringHolder & getMetadataAttrib() const { return myMetadataAttrib; }
1302  void setMetadataAttrib(const UT_StringHolder & val) { myMetadataAttrib = val; }
1304  {
1305  SOP_Node *thissop = cookparms.getNode();
1306  if (!thissop) return getMetadataAttrib();
1308  OP_Utils::evalOpParm(result, thissop, "metadataattrib", cookparms.getCookTime(), 0);
1309  return result;
1310  }
1311  bool getOutputMetadataJointConfigAttribs() const { return myOutputMetadataJointConfigAttribs; }
1312  void setOutputMetadataJointConfigAttribs(bool val) { myOutputMetadataJointConfigAttribs = val; }
1314  {
1315  SOP_Node *thissop = cookparms.getNode();
1316  if (!thissop) return getOutputMetadataJointConfigAttribs();
1317  bool result;
1318  OP_Utils::evalOpParm(result, thissop, "outputmetadatajointconfigattribs", cookparms.getCookTime(), 0);
1319  return result;
1320  }
1321  const UT_StringHolder & getMetadataJointConfigAttribs() const { return myMetadataJointConfigAttribs; }
1322  void setMetadataJointConfigAttribs(const UT_StringHolder & val) { myMetadataJointConfigAttribs = val; }
1324  {
1325  SOP_Node *thissop = cookparms.getNode();
1326  if (!thissop) return getMetadataJointConfigAttribs();
1328  OP_Utils::evalOpParm(result, thissop, "metadatajointconfigattribs", cookparms.getCookTime(), 0);
1329  return result;
1330  }
1331  const UT_Array<Filters> &getFilters() const { return myFilters; }
1332 void setFilters(const UT_Array<Filters> &val) { myFilters = val; }
1333  exint opFilters(const SOP_NodeVerb::CookParms &cookparms) const
1334  {
1335  SOP_Node *thissop = cookparms.getNode();
1336  if (!thissop) return getFilters().entries();
1337  exint result;
1338  OP_Utils::evalOpParm(result, thissop, "numjointfilters", cookparms.getCookTime(), 0);
1339  return result;
1340  }
1342  { return opinstFilters_jointnames(cookparms, &_idx); }
1343  UT_StringHolder opinstFilters_jointnames(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1344  {
1345  SOP_Node *thissop = cookparms.getNode();
1346  if (!thissop) return (myFilters(_idx[0]).jointnames);
1347  int _parmidx[2-1];
1348  _parmidx[1-1] = _idx[1-1] + 1;
1349 
1351  OP_Utils::evalOpParmInst(result, thissop, "jointnames#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1352  return (result);
1353  }
1354  fpreal64 opFilters_percentage(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1355  { return opinstFilters_percentage(cookparms, &_idx); }
1356  fpreal64 opinstFilters_percentage(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1357  {
1358  SOP_Node *thissop = cookparms.getNode();
1359  if (!thissop) return (myFilters(_idx[0]).percentage);
1360  int _parmidx[2-1];
1361  _parmidx[1-1] = _idx[1-1] + 1;
1362 
1363  fpreal64 result;
1364  OP_Utils::evalOpParmInst(result, thissop, "percentage#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1365  return (result);
1366  }
1367  fpreal64 opFilters_seed(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1368  { return opinstFilters_seed(cookparms, &_idx); }
1369  fpreal64 opinstFilters_seed(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1370  {
1371  SOP_Node *thissop = cookparms.getNode();
1372  if (!thissop) return (myFilters(_idx[0]).seed);
1373  int _parmidx[2-1];
1374  _parmidx[1-1] = _idx[1-1] + 1;
1375 
1376  fpreal64 result;
1377  OP_Utils::evalOpParmInst(result, thissop, "seed#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1378  return (result);
1379  }
1380 
1381  const UT_StringHolder & getTransferAttributes() const { return myTransferAttributes; }
1382  void setTransferAttributes(const UT_StringHolder & val) { myTransferAttributes = val; }
1384  {
1385  SOP_Node *thissop = cookparms.getNode();
1386  if (!thissop) return getTransferAttributes();
1388  OP_Utils::evalOpParm(result, thissop, "transferattributes", cookparms.getCookTime(), 0);
1389  return result;
1390  }
1391  const UT_StringHolder & getTransferGroups() const { return myTransferGroups; }
1392  void setTransferGroups(const UT_StringHolder & val) { myTransferGroups = val; }
1394  {
1395  SOP_Node *thissop = cookparms.getNode();
1396  if (!thissop) return getTransferGroups();
1398  OP_Utils::evalOpParm(result, thissop, "transfergroups", cookparms.getCookTime(), 0);
1399  return result;
1400  }
1401  bool getApplyJointXforms() const { return myApplyJointXforms; }
1402  void setApplyJointXforms(bool val) { myApplyJointXforms = val; }
1403  bool opApplyJointXforms(const SOP_NodeVerb::CookParms &cookparms) const
1404  {
1405  SOP_Node *thissop = cookparms.getNode();
1406  if (!thissop) return getApplyJointXforms();
1407  bool result;
1408  OP_Utils::evalOpParm(result, thissop, "applyjointxforms", cookparms.getCookTime(), 0);
1409  return result;
1410  }
1411 
1412 private:
1413  UT_StringHolder myGroup;
1414  int64 myGroupType;
1415  int64 myOutput;
1416  bool myUniqueAgentDefinitions;
1417  bool myApplyAgentXform;
1418  int64 myRestShapesMode;
1419  UT_StringHolder myLayerFilter;
1420  UT_StringHolder myShapeFilter;
1421  bool myLimitIterations;
1422  int64 myIterations;
1423  bool myAddShapeDeformerAttrib;
1424  UT_StringHolder myShapeDeformerAttrib;
1425  bool myAddXformNameAttrib;
1426  UT_StringHolder myXformNameAttrib;
1427  bool myAddLayerNameAttrib;
1428  UT_StringHolder myLayerNameAttrib;
1429  UT_StringHolder myClipNames;
1430  bool myOutputRestPoseAttrib;
1431  UT_StringHolder myRestPoseAttrib;
1432  UT_Vector3D mySkeletonColor;
1433  bool myOutputTransformGroups;
1434  UT_StringHolder myTransformGroups;
1435  bool myOutputMetadataAttrib;
1436  UT_StringHolder myMetadataAttrib;
1437  bool myOutputMetadataJointConfigAttribs;
1438  UT_StringHolder myMetadataJointConfigAttribs;
1439  UT_Array<Filters> myFilters;
1440  UT_StringHolder myTransferAttributes;
1441  UT_StringHolder myTransferGroups;
1442  bool myApplyJointXforms;
1443 
1444 };
type
Definition: core.h:556
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
void setFilters(const UT_Array< Filters > &val)
bool opOutputTransformGroups(const SOP_NodeVerb::CookParms &cookparms) const
Output opOutput(const SOP_NodeVerb::CookParms &cookparms) const
bool isParmColorRamp(exint idx) const override
bool opOutputMetadataJointConfigAttribs(const SOP_NodeVerb::CookParms &cookparms) const
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glcorearb.h:2540
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
const UT_StringHolder & getTransferGroups() const
UT_StringHolder opinstFilters_jointnames(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:403
static void loadData(UT_IStream &is, UT_Matrix4D &v)
const UT_StringHolder & getTransformGroups() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
bool operator!=(const SOP_AgentUnpackParms &src) const
fpreal64 opFilters_seed(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setClipNames(const UT_StringHolder &val)
UT_StringHolder opShapeFilter(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
static void saveData(std::ostream &os, UT_Matrix3D v)
const UT_Array< Filters > & getFilters() const
void setMetadataAttrib(const UT_StringHolder &val)
void setOutputMetadataAttrib(bool val)
void
Definition: png.h:1083
RestShapesMode opRestShapesMode(const SOP_NodeVerb::CookParms &cookparms) const
GLboolean * data
Definition: glcorearb.h:131
GT_API const UT_StringHolder time
static void loadData(UT_IStream &is, UT_Vector4I &v)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:495
UT_StringHolder opTransformGroups(const SOP_NodeVerb::CookParms &cookparms) const
const GLdouble * v
Definition: glcorearb.h:837
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
fpreal getTime() const
Definition: OP_Context.h:63
GLsizei const GLfloat * value
Definition: glcorearb.h:824
const UT_StringHolder & getLayerNameAttrib() const
const UT_StringHolder & getShapeDeformerAttrib() const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
UT_String makeQuotedString(char delimiter='\'', bool escape_nonprinting=false) const
const OP_Context & context() const
Definition: OP_NodeParms.h:97
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
bool getOutputRestPoseAttrib() const
bool opApplyJointXforms(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const Filters &src) const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:669
int64 exint
Definition: SYS_Types.h:125
static void saveData(std::ostream &os, fpreal64 v)
void setAddLayerNameAttrib(bool val)
SYS_FORCE_INLINE const char * buffer() const
void setApplyJointXforms(bool val)
GLdouble s
Definition: glad.h:3009
GLuint GLsizei GLsizei * length
Definition: glcorearb.h:795
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
exint getNestNumParms(TempIndex idx) const override
An output stream object that owns its own string buffer storage.
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
static void loadData(UT_IStream &is, UT_Vector3I &v)
void setTransferAttributes(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Vector2I &v)
fpreal64 opinstFilters_percentage(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
UT_StringHolder opTransferAttributes(const SOP_NodeVerb::CookParms &cookparms) const
**But if you need a result
Definition: thread.h:622
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
UT_StringHolder opMetadataJointConfigAttribs(const SOP_NodeVerb::CookParms &cookparms) const
void setGroup(const UT_StringHolder &val)
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
bool opAddXformNameAttrib(const SOP_NodeVerb::CookParms &cookparms) const
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
fpreal64 opFilters_percentage(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
exint opFilters(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:493
static void saveData(std::ostream &os, UT_Vector3D v)
void setAddXformNameAttrib(bool val)
UT_StringHolder opClipNames(const SOP_NodeVerb::CookParms &cookparms) const
GLuint GLsizei const GLuint const GLintptr * offsets
Definition: glcorearb.h:2621
double fpreal64
Definition: SYS_Types.h:201
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: APEX_Include.h:55
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:426
void setRestPoseAttrib(const UT_StringHolder &val)
static void saveData(std::ostream &os, PRM_DataItemHandle s)
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
bool getOutputTransformGroups() const
const UT_StringHolder & getTransferAttributes() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
const UT_StringHolder & getXformNameAttrib() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void setGroupType(GroupType val)
void setLayerNameAttrib(const UT_StringHolder &val)
const UT_StringHolder & getGroup() const
UT_Vector3D opSkeletonColor(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
bool load(UT_IStream &is)
UT_StringHolder opMetadataAttrib(const SOP_NodeVerb::CookParms &cookparms) const
exint length() const
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
bool opOutputRestPoseAttrib(const SOP_NodeVerb::CookParms &cookparms) const
bool getOutputMetadataAttrib() const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:497
void setLayerFilter(const UT_StringHolder &val)
exint read(bool *array, exint sz=1)
Definition: UT_IStream.h:271
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
GroupType opGroupType(const SOP_NodeVerb::CookParms &cookparms) const
int64 opIterations(const SOP_NodeVerb::CookParms &cookparms) const
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
void loadFromOpSubclass(const LoadParms &loadparms) override
static void loadData(UT_IStream &is, int64 &v)
RestShapesMode getRestShapesMode() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
void setShapeFilter(const UT_StringHolder &val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
virtual void evalOpParmInst(int64 &v, NodeIdx node, const char *parmname, const int *inst, const int *offsets, fpreal time, DEP_MicroNode *depnode, int nestlevel=1) const =0
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
long long int64
Definition: SYS_Types.h:116
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
static void saveData(std::ostream &os, bool v)
static void saveData(std::ostream &os, int64 v)
static void saveData(std::ostream &os, UT_Vector4D v)
UT_Vector3T< fpreal64 > UT_Vector3D
const UT_StringHolder & getLayerFilter() const
void save(std::ostream &os) const
GroupType getGroupType() const
const UT_StringHolder & getShapeFilter() const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
static void loadData(UT_IStream &is, UT_Matrix3D &v)
bool opOutputMetadataAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix2D v)
bool opUniqueAgentDefinitions(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE void strcat(const char *src)
UT_StringHolder opRestPoseAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:306
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
bool getOutputMetadataJointConfigAttribs() const
GT_API const UT_StringHolder version
static void saveData(std::ostream &os, UT_StringHolder s)
exint entries() const
Alias of size(). size() is preferred.
Definition: UT_Array.h:669
void setSkeletonColor(UT_Vector3D val)
void setRestShapesMode(RestShapesMode val)
void copyFrom(const OP_NodeParms *src) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
int int appendSprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
const UT_StringHolder & getMetadataAttrib() const
static void loadData(UT_IStream &is, bool &v)
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
bool operator!=(const Filters &src) const
static void loadData(UT_IStream &is, fpreal64 &v)
fpreal64 fpreal
Definition: SYS_Types.h:283
static void loadData(UT_IStream &is, UT_Vector3D &v)
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
UT_StringHolder opLayerNameAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4D &v)
void setMetadataJointConfigAttribs(const UT_StringHolder &val)
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:96
bool opAddLayerNameAttrib(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getMetadataJointConfigAttribs() const
UT_StringHolder opFilters_jointnames(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:499
SYS_FORCE_INLINE void append(char character)
void setTransferGroups(const UT_StringHolder &val)
const UT_StringHolder & getClipNames() const
static void saveData(std::ostream &os, UT_Matrix4D v)
GLuint GLfloat * val
Definition: glcorearb.h:1608
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
void setXformNameAttrib(const UT_StringHolder &val)
#define SOP_API
Definition: SOP_API.h:10
bool operator==(const SOP_AgentUnpackParms &src) const
UT_StringHolder createString(const UT_Array< Filters > &list) const
bool getAddShapeDeformerAttrib() const
bool opAddShapeDeformerAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setShapeDeformerAttrib(const UT_StringHolder &val)
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:432
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
fpreal64 opinstFilters_seed(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
const char * findChar(int c) const
Definition: UT_String.h:1421
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:165
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
GLboolean r
Definition: glcorearb.h:1222
void setAddShapeDeformerAttrib(bool val)
UT_Vector3D getSkeletonColor() const
exint bread(uint8 *buffer, exint asize=1)
bool opLimitIterations(const SOP_NodeVerb::CookParms &cookparms) const
bool opApplyAgentXform(const SOP_NodeVerb::CookParms &cookparms) const
const char * getNestParmName(TempIndex fieldnum) const override
void setUniqueAgentDefinitions(bool val)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:667
SYS_FORCE_INLINE UT_StringHolder getToken(GroupType enum_value)
void setOutputRestPoseAttrib(bool val)
static void loadData(UT_IStream &is, UT_Vector2D &v)
UT_StringHolder opTransferGroups(const SOP_NodeVerb::CookParms &cookparms) const
void setTransformGroups(const UT_StringHolder &val)
UT_StringHolder opShapeDeformerAttrib(const SOP_NodeVerb::CookParms &cookparms) const
bool getUniqueAgentDefinitions() const
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
UT_StringHolder opXformNameAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setOutputMetadataJointConfigAttribs(bool val)
static void loadData(UT_IStream &is, UT_Matrix2D &v)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:428
SYS_FORCE_INLINE bool isstring() const
static void saveData(std::ostream &os, UT_Vector2D v)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
UT_StringHolder opLayerFilter(const SOP_NodeVerb::CookParms &cookparms) const
ParmType getNestParmType(TempIndex fieldnum) const override
void setOutputTransformGroups(bool val)
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:665
const UT_StringHolder & getRestPoseAttrib() const
static void loadData(UT_IStream &is, UT_StringHolder &v)