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 <SOP/SOP_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  enum class Output
32  {
33  DEFORMED = 0,
34  REST,
35  JOINTS,
36  SKELETON,
38  };
39  enum class RestShapesMode
40  {
41  CURRENTLAYERS = 0,
43  ALLLAYERS,
44  SHAPELIB
45  };
46 }
47 
48 
50 {
51 public:
52  static int version() { return 1; }
53  struct Filters
54  {
58 
59 
61  {
62  jointnames = ""_UTsh;
63  percentage = 100;
64  seed = 1;
65 
66  }
67 
68  bool operator==(const Filters &src) const
69  {
70  if (jointnames != src.jointnames) return false;
71  if (percentage != src.percentage) return false;
72  if (seed != src.seed) return false;
73 
74  return true;
75  }
76  bool operator!=(const Filters &src) const
77  {
78  return !operator==(src);
79  }
80 
81  };
82 
84  {
86 
87  buf.strcat("[ ");
88  for (int i = 0; i < list.entries(); i++)
89  {
90  if (i)
91  buf.strcat(", ");
92  buf.strcat("( ");
93  buf.append("");
94  { UT_String tmp; tmp = UT_StringWrap(list(i).jointnames).makeQuotedString('"'); buf.strcat(tmp); }
95  buf.append(", ");
96  buf.appendSprintf("%f", (list(i).percentage));
97  buf.append(", ");
98  buf.appendSprintf("%f", (list(i).seed));
99 
100  buf.strcat(" )");
101  }
102  buf.strcat(" ]");
103 
105  return result;
106  }
107 
109  {
110  myGroup = ""_UTsh;
111  myGroupType = 0;
112  myOutput = 0;
113  myUniqueAgentDefinitions = false;
114  myApplyAgentXform = true;
115  myRestShapesMode = 0;
116  myLayerFilter = "*"_UTsh;
117  myShapeFilter = "*"_UTsh;
118  myLimitIterations = true;
119  myIterations = 1;
120  myAddShapeDeformerAttrib = false;
121  myShapeDeformerAttrib = "agentshapedeformer"_UTsh;
122  myAddXformNameAttrib = false;
123  myXformNameAttrib = "agenttransformname"_UTsh;
124  myAddLayerNameAttrib = false;
125  myLayerNameAttrib = "agentlayername"_UTsh;
126  myClipNames = ""_UTsh;
127  myTransferAttributes = ""_UTsh;
128  myTransferGroups = ""_UTsh;
129  myFilters.setSize(0);
130  mySkeletonColor = UT_Vector3D(0.0,0.09,1.0);
131  myApplyJointXforms = true;
132 
133  }
134 
135  explicit SOP_AgentUnpackParms(const SOP_AgentUnpackParms &) = default;
137  SOP_AgentUnpackParms(SOP_AgentUnpackParms &&) noexcept = default;
138  SOP_AgentUnpackParms &operator=(SOP_AgentUnpackParms &&) noexcept = default;
139 
140  ~SOP_AgentUnpackParms() override {}
141 
143  {
144  if (myGroup != src.myGroup) return false;
145  if (myGroupType != src.myGroupType) return false;
146  if (myOutput != src.myOutput) return false;
147  if (myUniqueAgentDefinitions != src.myUniqueAgentDefinitions) return false;
148  if (myApplyAgentXform != src.myApplyAgentXform) return false;
149  if (myRestShapesMode != src.myRestShapesMode) return false;
150  if (myLayerFilter != src.myLayerFilter) return false;
151  if (myShapeFilter != src.myShapeFilter) return false;
152  if (myLimitIterations != src.myLimitIterations) return false;
153  if (myIterations != src.myIterations) return false;
154  if (myAddShapeDeformerAttrib != src.myAddShapeDeformerAttrib) return false;
155  if (myShapeDeformerAttrib != src.myShapeDeformerAttrib) return false;
156  if (myAddXformNameAttrib != src.myAddXformNameAttrib) return false;
157  if (myXformNameAttrib != src.myXformNameAttrib) return false;
158  if (myAddLayerNameAttrib != src.myAddLayerNameAttrib) return false;
159  if (myLayerNameAttrib != src.myLayerNameAttrib) return false;
160  if (myClipNames != src.myClipNames) return false;
161  if (myTransferAttributes != src.myTransferAttributes) return false;
162  if (myTransferGroups != src.myTransferGroups) return false;
163  if (myFilters != src.myFilters) return false;
164  if (mySkeletonColor != src.mySkeletonColor) return false;
165  if (myApplyJointXforms != src.myApplyJointXforms) return false;
166 
167  return true;
168  }
170  {
171  return !operator==(src);
172  }
176 
177 
178 
179  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
180  {
181  myGroup = ""_UTsh;
182  if (true)
183  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
184  myGroupType = 0;
185  if (true)
186  graph->evalOpParm(myGroupType, nodeidx, "grouptype", time, 0);
187  myOutput = 0;
188  if (true)
189  graph->evalOpParm(myOutput, nodeidx, "output", time, 0);
190  myUniqueAgentDefinitions = false;
191  if (true && ( (true&&!(((int64(getOutput())!=1))||((int64(getOutput())!=1)))) ) )
192  graph->evalOpParm(myUniqueAgentDefinitions, nodeidx, "uniqueagentdefinitions", time, 0);
193  myApplyAgentXform = true;
194  if (true && ( (true&&!(((int64(getOutput())==4))||((int64(getOutput())==4)))) ) )
195  graph->evalOpParm(myApplyAgentXform, nodeidx, "applyagentxform", time, 0);
196  myRestShapesMode = 0;
197  if (true && ( (true&&!(((int64(getOutput())!=1))||((int64(getOutput())!=1)))) ) )
198  graph->evalOpParm(myRestShapesMode, nodeidx, "unpackrestshapesfrom", time, 0);
199  myLayerFilter = "*"_UTsh;
200  if (true && ( (true&&!(((int64(getOutput())!=0)&&(int64(getOutput())!=1))||((int64(getOutput())==1)&&(int64(getRestShapesMode())==3))||((int64(getOutput())!=0)&&(int64(getOutput())!=1)))) ) )
201  graph->evalOpParm(myLayerFilter, nodeidx, "layerfilter", time, 0);
202  myShapeFilter = "*"_UTsh;
203  if (true && ( (true&&!(((int64(getOutput())!=0)&&(int64(getOutput())!=1))||((int64(getOutput())!=0)&&(int64(getOutput())!=1)))) ) )
204  graph->evalOpParm(myShapeFilter, nodeidx, "shapefilter", time, 0);
205  myLimitIterations = true;
206  if (true && ( (true&&!(((int64(getOutput())!=0)&&(int64(getOutput())!=1))||((int64(getOutput())!=0)&&(int64(getOutput())!=1)))) ) )
207  graph->evalOpParm(myLimitIterations, nodeidx, "limititerations", time, 0);
208  myIterations = 1;
209  if (true && ( (true&&!(((int64(getOutput())!=0)&&(int64(getOutput())!=1))||((getLimitIterations()==0))||((int64(getOutput())!=0)&&(int64(getOutput())!=1)))) ) )
210  graph->evalOpParm(myIterations, nodeidx, "iterations", time, 0);
211  myAddShapeDeformerAttrib = false;
212  if (true && ( (true&&!(((int64(getOutput())!=0)&&(int64(getOutput())!=1))||((int64(getOutput())==1)&&(int64(getRestShapesMode())==3))||((int64(getOutput())!=0)&&(int64(getOutput())!=1)))) ) )
213  graph->evalOpParm(myAddShapeDeformerAttrib, nodeidx, "addshapedeformerattrib", time, 0);
214  myShapeDeformerAttrib = "agentshapedeformer"_UTsh;
215  if (true && ( (true&&!(((int64(getOutput())!=0)&&(int64(getOutput())!=1))||((int64(getOutput())==1)&&(int64(getRestShapesMode())==3))||((getAddShapeDeformerAttrib()==0))||((int64(getOutput())!=0)&&(int64(getOutput())!=1)))) ) )
216  graph->evalOpParm(myShapeDeformerAttrib, nodeidx, "shapedeformerattrib", time, 0);
217  myAddXformNameAttrib = false;
218  if (true && ( (true&&!(((int64(getOutput())!=0)&&(int64(getOutput())!=1))||((int64(getOutput())==1)&&(int64(getRestShapesMode())==3))||((int64(getOutput())!=0)&&(int64(getOutput())!=1)))) ) )
219  graph->evalOpParm(myAddXformNameAttrib, nodeidx, "addxformnameattrib", time, 0);
220  myXformNameAttrib = "agenttransformname"_UTsh;
221  if (true && ( (true&&!(((int64(getOutput())!=0)&&(int64(getOutput())!=1))||((int64(getOutput())==1)&&(int64(getRestShapesMode())==3))||((getAddXformNameAttrib()==0))||((int64(getOutput())!=0)&&(int64(getOutput())!=1)))) ) )
222  graph->evalOpParm(myXformNameAttrib, nodeidx, "xformnameattrib", time, 0);
223  myAddLayerNameAttrib = false;
224  if (true && ( (true&&!(((int64(getOutput())!=0)&&(int64(getOutput())!=1))||((int64(getOutput())==1)&&(int64(getRestShapesMode())==3))||((int64(getOutput())!=0)&&(int64(getOutput())!=1)))) ) )
225  graph->evalOpParm(myAddLayerNameAttrib, nodeidx, "addlayernameattrib", time, 0);
226  myLayerNameAttrib = "agentlayername"_UTsh;
227  if (true && ( (true&&!(((int64(getOutput())!=0)&&(int64(getOutput())!=1))||((int64(getOutput())==1)&&(int64(getRestShapesMode())==3))||((getAddLayerNameAttrib()==0))||((int64(getOutput())!=0)&&(int64(getOutput())!=1)))) ) )
228  graph->evalOpParm(myLayerNameAttrib, nodeidx, "layernameattrib", time, 0);
229  myClipNames = ""_UTsh;
230  if (true && ( (true&&!(((int64(getOutput())!=4))||((int64(getOutput())!=4)))) ) )
231  graph->evalOpParm(myClipNames, nodeidx, "clipnames", time, 0);
232  myTransferAttributes = ""_UTsh;
233  if (true)
234  graph->evalOpParm(myTransferAttributes, nodeidx, "transferattributes", time, 0);
235  myTransferGroups = ""_UTsh;
236  if (true)
237  graph->evalOpParm(myTransferGroups, nodeidx, "transfergroups", time, 0);
238  if (true && ( (!(((int64(getOutput())!=2))||((int64(getOutput())!=2)))) ) )
239  {
240  int64 length = 0;
241  graph->evalOpParm(length, nodeidx, "numjointfilters", time, 0);
242  if (length < 0) length = 0;
243  myFilters.setSize(length);
244  for (exint i = 0; i < length; i++)
245  {
246  int parmidx[1];
247  int offsets[1];
248  parmidx[0] = i+1;
249  offsets[0] = 1;
250  auto && _curentry = myFilters(i);
251  (void) _curentry;
252  _curentry.jointnames = ""_UTsh;
253  if (true && ( (!(((int64(getOutput())!=2))||((int64(getOutput())!=2)))) ) && ( (true&&!(((int64(getOutput())!=2))||((int64(getOutput())!=2)))) ) )
254  graph->evalOpParmInst(_curentry.jointnames, nodeidx, "jointnames#", parmidx, offsets, time, 0, 2-1);
255  _curentry.percentage = 100;
256  if (true && ( (!(((int64(getOutput())!=2))||((int64(getOutput())!=2)))) ) && ( (true&&!(((int64(getOutput())!=2))||((int64(getOutput())!=2)))) ) )
257  graph->evalOpParmInst(_curentry.percentage, nodeidx, "percentage#", parmidx, offsets, time, 0, 2-1);
258  _curentry.seed = 1;
259  if (true && ( (!(((int64(getOutput())!=2))||((int64(getOutput())!=2)))) ) && ( (true&&!(((int64(getOutput())!=2))||((int64(getOutput())!=2)))) ) )
260  graph->evalOpParmInst(_curentry.seed, nodeidx, "seed#", parmidx, offsets, time, 0, 2-1);
261 
262  }
263  }
264  else
265  myFilters.clear();
266  mySkeletonColor = UT_Vector3D(0.0,0.09,1.0);
267  if (true && ( (true&&!(((int64(getOutput())!=3)&&(int64(getOutput())!=4))||((int64(getOutput())!=3)&&(int64(getOutput())!=4)))) ) )
268  graph->evalOpParm(mySkeletonColor, nodeidx, "skeletoncolor", time, 0);
269  myApplyJointXforms = true;
270  if (true && ( (true&&!(((int64(getOutput())==0))||((int64(getOutput())==4))||((int64(getOutput())==1)&&(int64(getRestShapesMode())==3))||((int64(getOutput())==0))||((int64(getOutput())==4)))) ) )
271  graph->evalOpParm(myApplyJointXforms, nodeidx, "applyjointxforms", time, 0);
272 
273  }
274 
275 
276  void loadFromOpSubclass(const LoadParms &loadparms) override
277  {
278  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
279  }
280 
281 
282  void copyFrom(const OP_NodeParms *src) override
283  {
284  *this = *((const SOP_AgentUnpackParms *)src);
285  }
286 
287  template <typename T>
288  void
289  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
290  {
291  if (idx.size() < 1)
292  return;
293  UT_ASSERT(idx.size() == instance.size()+1);
294  if (idx.size() != instance.size()+1)
295  return;
296  switch (idx[0])
297  {
298  case 0:
299  coerceValue(value, myGroup);
300  break;
301  case 1:
302  coerceValue(value, myGroupType);
303  break;
304  case 2:
305  coerceValue(value, myOutput);
306  break;
307  case 3:
308  coerceValue(value, myUniqueAgentDefinitions);
309  break;
310  case 4:
311  coerceValue(value, myApplyAgentXform);
312  break;
313  case 5:
314  coerceValue(value, myRestShapesMode);
315  break;
316  case 6:
317  coerceValue(value, myLayerFilter);
318  break;
319  case 7:
320  coerceValue(value, myShapeFilter);
321  break;
322  case 8:
323  coerceValue(value, myLimitIterations);
324  break;
325  case 9:
326  coerceValue(value, myIterations);
327  break;
328  case 10:
329  coerceValue(value, myAddShapeDeformerAttrib);
330  break;
331  case 11:
332  coerceValue(value, myShapeDeformerAttrib);
333  break;
334  case 12:
335  coerceValue(value, myAddXformNameAttrib);
336  break;
337  case 13:
338  coerceValue(value, myXformNameAttrib);
339  break;
340  case 14:
341  coerceValue(value, myAddLayerNameAttrib);
342  break;
343  case 15:
344  coerceValue(value, myLayerNameAttrib);
345  break;
346  case 16:
347  coerceValue(value, myClipNames);
348  break;
349  case 17:
350  coerceValue(value, myTransferAttributes);
351  break;
352  case 18:
353  coerceValue(value, myTransferGroups);
354  break;
355  case 19:
356  if (idx.size() == 1)
357  coerceValue(value, myFilters.entries());
358  else if (instance[0] < myFilters.entries())
359  {
360  auto && _data = myFilters(instance[0]);
361  switch (idx[1])
362  {
363  case 0:
364  coerceValue(value, _data.jointnames);
365  break;
366  case 1:
367  coerceValue(value, _data.percentage);
368  break;
369  case 2:
370  coerceValue(value, _data.seed);
371  break;
372 
373  }
374  }
375  break;
376  case 20:
377  coerceValue(value, mySkeletonColor);
378  break;
379  case 21:
380  coerceValue(value, myApplyJointXforms);
381  break;
382 
383  }
384  }
385 
386  bool isParmColorRamp(exint idx) const override
387  {
388  switch (idx)
389  {
390 
391  }
392  return false;
393  }
394 
395  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
396  { doGetParmValue(idx, instance, value); }
397  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
398  { doGetParmValue(idx, instance, value); }
399  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
400  { doGetParmValue(idx, instance, value); }
401  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
402  { doGetParmValue(idx, instance, value); }
403  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
404  { doGetParmValue(idx, instance, value); }
405  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
406  { doGetParmValue(idx, instance, value); }
407  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
408  { doGetParmValue(idx, instance, value); }
409  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
410  { doGetParmValue(idx, instance, value); }
411  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
412  { doGetParmValue(idx, instance, value); }
413  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
414  { doGetParmValue(idx, instance, value); }
415  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
416  { doGetParmValue(idx, instance, value); }
417 
418  template <typename T>
419  void
420  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
421  {
422  if (idx.size() < 1)
423  return;
424  UT_ASSERT(idx.size() == instance.size()+1);
425  if (idx.size() != instance.size()+1)
426  return;
427  switch (idx[0])
428  {
429  case 0:
430  coerceValue(myGroup, ( ( value ) ));
431  break;
432  case 1:
433  coerceValue(myGroupType, clampMinValue(0, clampMaxValue(2, value ) ));
434  break;
435  case 2:
436  coerceValue(myOutput, clampMinValue(0, clampMaxValue(4, value ) ));
437  break;
438  case 3:
439  coerceValue(myUniqueAgentDefinitions, ( ( value ) ));
440  break;
441  case 4:
442  coerceValue(myApplyAgentXform, ( ( value ) ));
443  break;
444  case 5:
445  coerceValue(myRestShapesMode, clampMinValue(0, clampMaxValue(3, value ) ));
446  break;
447  case 6:
448  coerceValue(myLayerFilter, ( ( value ) ));
449  break;
450  case 7:
451  coerceValue(myShapeFilter, ( ( value ) ));
452  break;
453  case 8:
454  coerceValue(myLimitIterations, ( ( value ) ));
455  break;
456  case 9:
457  coerceValue(myIterations, clampMinValue(1, ( value ) ));
458  break;
459  case 10:
460  coerceValue(myAddShapeDeformerAttrib, ( ( value ) ));
461  break;
462  case 11:
463  coerceValue(myShapeDeformerAttrib, ( ( value ) ));
464  break;
465  case 12:
466  coerceValue(myAddXformNameAttrib, ( ( value ) ));
467  break;
468  case 13:
469  coerceValue(myXformNameAttrib, ( ( value ) ));
470  break;
471  case 14:
472  coerceValue(myAddLayerNameAttrib, ( ( value ) ));
473  break;
474  case 15:
475  coerceValue(myLayerNameAttrib, ( ( value ) ));
476  break;
477  case 16:
478  coerceValue(myClipNames, ( ( value ) ));
479  break;
480  case 17:
481  coerceValue(myTransferAttributes, ( ( value ) ));
482  break;
483  case 18:
484  coerceValue(myTransferGroups, ( ( value ) ));
485  break;
486  case 19:
487  if (idx.size() == 1)
488  {
489  exint newsize;
490  coerceValue(newsize, value);
491  if (newsize < 0) newsize = 0;
492  myFilters.setSize(newsize);
493  }
494  else
495  {
496  if (instance[0] < 0)
497  return;
498  myFilters.setSizeIfNeeded(instance[0]+1);
499  auto && _data = myFilters(instance[0]);
500  switch (idx[1])
501  {
502  case 0:
503  coerceValue(_data.jointnames, value);
504  break;
505  case 1:
506  coerceValue(_data.percentage, value);
507  break;
508  case 2:
509  coerceValue(_data.seed, value);
510  break;
511 
512  }
513  }
514  break;
515  case 20:
516  coerceValue(mySkeletonColor, ( ( value ) ));
517  break;
518  case 21:
519  coerceValue(myApplyJointXforms, ( ( value ) ));
520  break;
521 
522  }
523  }
524 
525  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
526  { doSetParmValue(idx, instance, value); }
527  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
528  { doSetParmValue(idx, instance, value); }
529  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
530  { doSetParmValue(idx, instance, value); }
531  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
532  { doSetParmValue(idx, instance, value); }
533  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
534  { doSetParmValue(idx, instance, value); }
535  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
536  { doSetParmValue(idx, instance, value); }
537  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
538  { doSetParmValue(idx, instance, value); }
539  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
540  { doSetParmValue(idx, instance, value); }
541  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
542  { doSetParmValue(idx, instance, value); }
543  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
544  { doSetParmValue(idx, instance, value); }
545  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
546  { doSetParmValue(idx, instance, value); }
547 
548  exint getNestNumParms(TempIndex idx) const override
549  {
550  if (idx.size() == 0)
551  return 22;
552  switch (idx[0])
553  {
554  case 19:
555  return 3;
556 
557  }
558  // Invalid
559  return 0;
560  }
561 
562  const char *getNestParmName(TempIndex fieldnum) const override
563  {
564  if (fieldnum.size() < 1)
565  return 0;
566  switch (fieldnum[0])
567  {
568  case 0:
569  return "group";
570  case 1:
571  return "grouptype";
572  case 2:
573  return "output";
574  case 3:
575  return "uniqueagentdefinitions";
576  case 4:
577  return "applyagentxform";
578  case 5:
579  return "unpackrestshapesfrom";
580  case 6:
581  return "layerfilter";
582  case 7:
583  return "shapefilter";
584  case 8:
585  return "limititerations";
586  case 9:
587  return "iterations";
588  case 10:
589  return "addshapedeformerattrib";
590  case 11:
591  return "shapedeformerattrib";
592  case 12:
593  return "addxformnameattrib";
594  case 13:
595  return "xformnameattrib";
596  case 14:
597  return "addlayernameattrib";
598  case 15:
599  return "layernameattrib";
600  case 16:
601  return "clipnames";
602  case 17:
603  return "transferattributes";
604  case 18:
605  return "transfergroups";
606  case 19:
607  if (fieldnum.size() == 1)
608  return "numjointfilters";
609  switch (fieldnum[1])
610  {
611  case 0:
612  return "jointnames#";
613  case 1:
614  return "percentage#";
615  case 2:
616  return "seed#";
617 
618  }
619  return 0;
620  case 20:
621  return "skeletoncolor";
622  case 21:
623  return "applyjointxforms";
624 
625  }
626  return 0;
627  }
628 
629  ParmType getNestParmType(TempIndex fieldnum) const override
630  {
631  if (fieldnum.size() < 1)
632  return PARM_UNSUPPORTED;
633  switch (fieldnum[0])
634  {
635  case 0:
636  return PARM_STRING;
637  case 1:
638  return PARM_INTEGER;
639  case 2:
640  return PARM_INTEGER;
641  case 3:
642  return PARM_INTEGER;
643  case 4:
644  return PARM_INTEGER;
645  case 5:
646  return PARM_INTEGER;
647  case 6:
648  return PARM_STRING;
649  case 7:
650  return PARM_STRING;
651  case 8:
652  return PARM_INTEGER;
653  case 9:
654  return PARM_INTEGER;
655  case 10:
656  return PARM_INTEGER;
657  case 11:
658  return PARM_STRING;
659  case 12:
660  return PARM_INTEGER;
661  case 13:
662  return PARM_STRING;
663  case 14:
664  return PARM_INTEGER;
665  case 15:
666  return PARM_STRING;
667  case 16:
668  return PARM_STRING;
669  case 17:
670  return PARM_STRING;
671  case 18:
672  return PARM_STRING;
673  case 19:
674  if (fieldnum.size() == 1)
675  return PARM_MULTIPARM;
676  switch (fieldnum[1])
677  {
678  case 0:
679  return PARM_STRING;
680  case 1:
681  return PARM_FLOAT;
682  case 2:
683  return PARM_FLOAT;
684 
685  }
686  return PARM_UNSUPPORTED;
687  case 20:
688  return PARM_VECTOR3;
689  case 21:
690  return PARM_INTEGER;
691 
692  }
693  return PARM_UNSUPPORTED;
694  }
695 
696  // Boiler plate to load individual types.
697  static void loadData(UT_IStream &is, int64 &v)
698  { is.bread(&v, 1); }
699  static void loadData(UT_IStream &is, bool &v)
700  { int64 iv; is.bread(&iv, 1); v = iv; }
701  static void loadData(UT_IStream &is, fpreal64 &v)
702  { is.bread<fpreal64>(&v, 1); }
703  static void loadData(UT_IStream &is, UT_Vector2D &v)
704  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
705  static void loadData(UT_IStream &is, UT_Vector3D &v)
706  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
707  is.bread<fpreal64>(&v.z(), 1); }
708  static void loadData(UT_IStream &is, UT_Vector4D &v)
709  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
710  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
711  static void loadData(UT_IStream &is, UT_Matrix2D &v)
712  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
713  static void loadData(UT_IStream &is, UT_Matrix3D &v)
714  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
715  static void loadData(UT_IStream &is, UT_Matrix4D &v)
716  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
717  static void loadData(UT_IStream &is, UT_Vector2I &v)
718  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
719  static void loadData(UT_IStream &is, UT_Vector3I &v)
720  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
721  is.bread<int64>(&v.z(), 1); }
722  static void loadData(UT_IStream &is, UT_Vector4I &v)
723  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
724  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
726  { is.bread(v); }
728  { UT_StringHolder rampdata;
729  loadData(is, rampdata);
730  if (rampdata.isstring())
731  {
732  v.reset(new UT_Ramp());
733  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
734  v->load(istr);
735  }
736  else v.reset();
737  }
740  loadData(is, data);
741  if (data.isstring())
742  {
743  // Find the data type.
744  const char *colon = UT_StringWrap(data).findChar(':');
745  if (colon)
746  {
747  int typelen = colon - data.buffer();
749  type.strncpy(data.buffer(), typelen);
750  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
751 
752  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
753  }
754  }
755  else v.reset();
756  }
757 
758  static void saveData(std::ostream &os, int64 v)
759  { UTwrite(os, &v); }
760  static void saveData(std::ostream &os, bool v)
761  { int64 iv = v; UTwrite(os, &iv); }
762  static void saveData(std::ostream &os, fpreal64 v)
763  { UTwrite<fpreal64>(os, &v); }
764  static void saveData(std::ostream &os, UT_Vector2D v)
765  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
766  static void saveData(std::ostream &os, UT_Vector3D v)
767  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
768  UTwrite<fpreal64>(os, &v.z()); }
769  static void saveData(std::ostream &os, UT_Vector4D v)
770  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
771  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
772  static void saveData(std::ostream &os, UT_Matrix2D v)
774  static void saveData(std::ostream &os, UT_Matrix3D v)
776  static void saveData(std::ostream &os, UT_Matrix4D v)
778  static void saveData(std::ostream &os, UT_StringHolder s)
779  { UT_StringWrap(s).saveBinary(os); }
780  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
782  UT_OStringStream ostr;
783  if (s) s->save(ostr);
784  result = ostr.str();
785  saveData(os, result);
786  }
787  static void saveData(std::ostream &os, PRM_DataItemHandle s)
789  UT_OStringStream ostr;
790  if (s)
791  {
792  ostr << s->getDataTypeToken();
793  ostr << ":";
794  s->saveBinary(ostr);
795  }
796  result = ostr.str();
797  saveData(os, result);
798  }
799 
800 
801  void save(std::ostream &os) const
802  {
803  int32 v = version();
804  UTwrite(os, &v);
805  saveData(os, myGroup);
806  saveData(os, myGroupType);
807  saveData(os, myOutput);
808  saveData(os, myUniqueAgentDefinitions);
809  saveData(os, myApplyAgentXform);
810  saveData(os, myRestShapesMode);
811  saveData(os, myLayerFilter);
812  saveData(os, myShapeFilter);
813  saveData(os, myLimitIterations);
814  saveData(os, myIterations);
815  saveData(os, myAddShapeDeformerAttrib);
816  saveData(os, myShapeDeformerAttrib);
817  saveData(os, myAddXformNameAttrib);
818  saveData(os, myXformNameAttrib);
819  saveData(os, myAddLayerNameAttrib);
820  saveData(os, myLayerNameAttrib);
821  saveData(os, myClipNames);
822  saveData(os, myTransferAttributes);
823  saveData(os, myTransferGroups);
824  {
825  int64 length = myFilters.entries();
826  UTwrite(os, &length);
827  for (exint i = 0; i < length; i++)
828  {
829  auto && _curentry = myFilters(i);
830  (void) _curentry;
831  saveData(os, _curentry.jointnames);
832  saveData(os, _curentry.percentage);
833  saveData(os, _curentry.seed);
834 
835  }
836  }
837  saveData(os, mySkeletonColor);
838  saveData(os, myApplyJointXforms);
839 
840  }
841 
842  bool load(UT_IStream &is)
843  {
844  int32 v;
845  is.bread(&v, 1);
846  if (version() != v)
847  {
848  // Fail incompatible versions
849  return false;
850  }
851  loadData(is, myGroup);
852  loadData(is, myGroupType);
853  loadData(is, myOutput);
854  loadData(is, myUniqueAgentDefinitions);
855  loadData(is, myApplyAgentXform);
856  loadData(is, myRestShapesMode);
857  loadData(is, myLayerFilter);
858  loadData(is, myShapeFilter);
859  loadData(is, myLimitIterations);
860  loadData(is, myIterations);
861  loadData(is, myAddShapeDeformerAttrib);
862  loadData(is, myShapeDeformerAttrib);
863  loadData(is, myAddXformNameAttrib);
864  loadData(is, myXformNameAttrib);
865  loadData(is, myAddLayerNameAttrib);
866  loadData(is, myLayerNameAttrib);
867  loadData(is, myClipNames);
868  loadData(is, myTransferAttributes);
869  loadData(is, myTransferGroups);
870  {
871  int64 length;
872  is.read(&length, 1);
873  myFilters.setSize(length);
874  for (exint i = 0; i < length; i++)
875  {
876  auto && _curentry = myFilters(i);
877  (void) _curentry;
878  loadData(is, _curentry.jointnames);
879  loadData(is, _curentry.percentage);
880  loadData(is, _curentry.seed);
881 
882  }
883  }
884  loadData(is, mySkeletonColor);
885  loadData(is, myApplyJointXforms);
886 
887  return true;
888  }
889 
890  const UT_StringHolder & getGroup() const { return myGroup; }
891  void setGroup(const UT_StringHolder & val) { myGroup = val; }
893  {
894  SOP_Node *thissop = cookparms.getNode();
895  if (!thissop) return getGroup();
897  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
898  return result;
899  }
900  GroupType getGroupType() const { return GroupType(myGroupType); }
901  void setGroupType(GroupType val) { myGroupType = int64(val); }
903  {
904  SOP_Node *thissop = cookparms.getNode();
905  if (!thissop) return getGroupType();
906  int64 result;
907  OP_Utils::evalOpParm(result, thissop, "grouptype", cookparms.getCookTime(), 0);
908  return GroupType(result);
909  }
910  Output getOutput() const { return Output(myOutput); }
911  void setOutput(Output val) { myOutput = int64(val); }
912  Output opOutput(const SOP_NodeVerb::CookParms &cookparms) const
913  {
914  SOP_Node *thissop = cookparms.getNode();
915  if (!thissop) return getOutput();
916  int64 result;
917  OP_Utils::evalOpParm(result, thissop, "output", cookparms.getCookTime(), 0);
918  return Output(result);
919  }
920  bool getUniqueAgentDefinitions() const { return myUniqueAgentDefinitions; }
921  void setUniqueAgentDefinitions(bool val) { myUniqueAgentDefinitions = val; }
923  {
924  SOP_Node *thissop = cookparms.getNode();
925  if (!thissop) return getUniqueAgentDefinitions();
926  bool result;
927  OP_Utils::evalOpParm(result, thissop, "uniqueagentdefinitions", cookparms.getCookTime(), 0);
928  return result;
929  }
930  bool getApplyAgentXform() const { return myApplyAgentXform; }
931  void setApplyAgentXform(bool val) { myApplyAgentXform = val; }
932  bool opApplyAgentXform(const SOP_NodeVerb::CookParms &cookparms) const
933  {
934  SOP_Node *thissop = cookparms.getNode();
935  if (!thissop) return getApplyAgentXform();
936  bool result;
937  OP_Utils::evalOpParm(result, thissop, "applyagentxform", cookparms.getCookTime(), 0);
938  return result;
939  }
940  RestShapesMode getRestShapesMode() const { return RestShapesMode(myRestShapesMode); }
941  void setRestShapesMode(RestShapesMode val) { myRestShapesMode = int64(val); }
943  {
944  SOP_Node *thissop = cookparms.getNode();
945  if (!thissop) return getRestShapesMode();
946  int64 result;
947  OP_Utils::evalOpParm(result, thissop, "unpackrestshapesfrom", cookparms.getCookTime(), 0);
948  return RestShapesMode(result);
949  }
950  const UT_StringHolder & getLayerFilter() const { return myLayerFilter; }
951  void setLayerFilter(const UT_StringHolder & val) { myLayerFilter = val; }
953  {
954  SOP_Node *thissop = cookparms.getNode();
955  if (!thissop) return getLayerFilter();
957  OP_Utils::evalOpParm(result, thissop, "layerfilter", cookparms.getCookTime(), 0);
958  return result;
959  }
960  const UT_StringHolder & getShapeFilter() const { return myShapeFilter; }
961  void setShapeFilter(const UT_StringHolder & val) { myShapeFilter = val; }
963  {
964  SOP_Node *thissop = cookparms.getNode();
965  if (!thissop) return getShapeFilter();
967  OP_Utils::evalOpParm(result, thissop, "shapefilter", cookparms.getCookTime(), 0);
968  return result;
969  }
970  bool getLimitIterations() const { return myLimitIterations; }
971  void setLimitIterations(bool val) { myLimitIterations = val; }
972  bool opLimitIterations(const SOP_NodeVerb::CookParms &cookparms) const
973  {
974  SOP_Node *thissop = cookparms.getNode();
975  if (!thissop) return getLimitIterations();
976  bool result;
977  OP_Utils::evalOpParm(result, thissop, "limititerations", cookparms.getCookTime(), 0);
978  return result;
979  }
980  int64 getIterations() const { return myIterations; }
981  void setIterations(int64 val) { myIterations = val; }
983  {
984  SOP_Node *thissop = cookparms.getNode();
985  if (!thissop) return getIterations();
986  int64 result;
987  OP_Utils::evalOpParm(result, thissop, "iterations", cookparms.getCookTime(), 0);
988  return result;
989  }
990  bool getAddShapeDeformerAttrib() const { return myAddShapeDeformerAttrib; }
991  void setAddShapeDeformerAttrib(bool val) { myAddShapeDeformerAttrib = val; }
993  {
994  SOP_Node *thissop = cookparms.getNode();
995  if (!thissop) return getAddShapeDeformerAttrib();
996  bool result;
997  OP_Utils::evalOpParm(result, thissop, "addshapedeformerattrib", cookparms.getCookTime(), 0);
998  return result;
999  }
1000  const UT_StringHolder & getShapeDeformerAttrib() const { return myShapeDeformerAttrib; }
1001  void setShapeDeformerAttrib(const UT_StringHolder & val) { myShapeDeformerAttrib = val; }
1003  {
1004  SOP_Node *thissop = cookparms.getNode();
1005  if (!thissop) return getShapeDeformerAttrib();
1007  OP_Utils::evalOpParm(result, thissop, "shapedeformerattrib", cookparms.getCookTime(), 0);
1008  return result;
1009  }
1010  bool getAddXformNameAttrib() const { return myAddXformNameAttrib; }
1011  void setAddXformNameAttrib(bool val) { myAddXformNameAttrib = val; }
1012  bool opAddXformNameAttrib(const SOP_NodeVerb::CookParms &cookparms) const
1013  {
1014  SOP_Node *thissop = cookparms.getNode();
1015  if (!thissop) return getAddXformNameAttrib();
1016  bool result;
1017  OP_Utils::evalOpParm(result, thissop, "addxformnameattrib", cookparms.getCookTime(), 0);
1018  return result;
1019  }
1020  const UT_StringHolder & getXformNameAttrib() const { return myXformNameAttrib; }
1021  void setXformNameAttrib(const UT_StringHolder & val) { myXformNameAttrib = val; }
1023  {
1024  SOP_Node *thissop = cookparms.getNode();
1025  if (!thissop) return getXformNameAttrib();
1027  OP_Utils::evalOpParm(result, thissop, "xformnameattrib", cookparms.getCookTime(), 0);
1028  return result;
1029  }
1030  bool getAddLayerNameAttrib() const { return myAddLayerNameAttrib; }
1031  void setAddLayerNameAttrib(bool val) { myAddLayerNameAttrib = val; }
1032  bool opAddLayerNameAttrib(const SOP_NodeVerb::CookParms &cookparms) const
1033  {
1034  SOP_Node *thissop = cookparms.getNode();
1035  if (!thissop) return getAddLayerNameAttrib();
1036  bool result;
1037  OP_Utils::evalOpParm(result, thissop, "addlayernameattrib", cookparms.getCookTime(), 0);
1038  return result;
1039  }
1040  const UT_StringHolder & getLayerNameAttrib() const { return myLayerNameAttrib; }
1041  void setLayerNameAttrib(const UT_StringHolder & val) { myLayerNameAttrib = val; }
1043  {
1044  SOP_Node *thissop = cookparms.getNode();
1045  if (!thissop) return getLayerNameAttrib();
1047  OP_Utils::evalOpParm(result, thissop, "layernameattrib", cookparms.getCookTime(), 0);
1048  return result;
1049  }
1050  const UT_StringHolder & getClipNames() const { return myClipNames; }
1051  void setClipNames(const UT_StringHolder & val) { myClipNames = val; }
1053  {
1054  SOP_Node *thissop = cookparms.getNode();
1055  if (!thissop) return getClipNames();
1057  OP_Utils::evalOpParm(result, thissop, "clipnames", cookparms.getCookTime(), 0);
1058  return result;
1059  }
1060  const UT_StringHolder & getTransferAttributes() const { return myTransferAttributes; }
1061  void setTransferAttributes(const UT_StringHolder & val) { myTransferAttributes = val; }
1063  {
1064  SOP_Node *thissop = cookparms.getNode();
1065  if (!thissop) return getTransferAttributes();
1067  OP_Utils::evalOpParm(result, thissop, "transferattributes", cookparms.getCookTime(), 0);
1068  return result;
1069  }
1070  const UT_StringHolder & getTransferGroups() const { return myTransferGroups; }
1071  void setTransferGroups(const UT_StringHolder & val) { myTransferGroups = val; }
1073  {
1074  SOP_Node *thissop = cookparms.getNode();
1075  if (!thissop) return getTransferGroups();
1077  OP_Utils::evalOpParm(result, thissop, "transfergroups", cookparms.getCookTime(), 0);
1078  return result;
1079  }
1080  const UT_Array<Filters> &getFilters() const { return myFilters; }
1081 void setFilters(const UT_Array<Filters> &val) { myFilters = val; }
1082  exint opFilters(const SOP_NodeVerb::CookParms &cookparms) const
1083  {
1084  SOP_Node *thissop = cookparms.getNode();
1085  if (!thissop) return getFilters().entries();
1086  exint result;
1087  OP_Utils::evalOpParm(result, thissop, "numjointfilters", cookparms.getCookTime(), 0);
1088  return result;
1089  }
1091  { return opinstFilters_jointnames(cookparms, &_idx); }
1092  UT_StringHolder opinstFilters_jointnames(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1093  {
1094  SOP_Node *thissop = cookparms.getNode();
1095  if (!thissop) return (myFilters(_idx[0]).jointnames);
1096  int _parmidx[2-1];
1097  _parmidx[1-1] = _idx[1-1] + 1;
1098 
1100  OP_Utils::evalOpParmInst(result, thissop, "jointnames#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1101  return (result);
1102  }
1103  fpreal64 opFilters_percentage(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1104  { return opinstFilters_percentage(cookparms, &_idx); }
1105  fpreal64 opinstFilters_percentage(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1106  {
1107  SOP_Node *thissop = cookparms.getNode();
1108  if (!thissop) return (myFilters(_idx[0]).percentage);
1109  int _parmidx[2-1];
1110  _parmidx[1-1] = _idx[1-1] + 1;
1111 
1112  fpreal64 result;
1113  OP_Utils::evalOpParmInst(result, thissop, "percentage#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1114  return (result);
1115  }
1116  fpreal64 opFilters_seed(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1117  { return opinstFilters_seed(cookparms, &_idx); }
1118  fpreal64 opinstFilters_seed(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1119  {
1120  SOP_Node *thissop = cookparms.getNode();
1121  if (!thissop) return (myFilters(_idx[0]).seed);
1122  int _parmidx[2-1];
1123  _parmidx[1-1] = _idx[1-1] + 1;
1124 
1125  fpreal64 result;
1126  OP_Utils::evalOpParmInst(result, thissop, "seed#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1127  return (result);
1128  }
1129 
1130  UT_Vector3D getSkeletonColor() const { return mySkeletonColor; }
1131  void setSkeletonColor(UT_Vector3D val) { mySkeletonColor = val; }
1133  {
1134  SOP_Node *thissop = cookparms.getNode();
1135  if (!thissop) return getSkeletonColor();
1137  OP_Utils::evalOpParm(result, thissop, "skeletoncolor", cookparms.getCookTime(), 0);
1138  return result;
1139  }
1140  bool getApplyJointXforms() const { return myApplyJointXforms; }
1141  void setApplyJointXforms(bool val) { myApplyJointXforms = val; }
1142  bool opApplyJointXforms(const SOP_NodeVerb::CookParms &cookparms) const
1143  {
1144  SOP_Node *thissop = cookparms.getNode();
1145  if (!thissop) return getApplyJointXforms();
1146  bool result;
1147  OP_Utils::evalOpParm(result, thissop, "applyjointxforms", cookparms.getCookTime(), 0);
1148  return result;
1149  }
1150 
1151 private:
1152  UT_StringHolder myGroup;
1153  int64 myGroupType;
1154  int64 myOutput;
1155  bool myUniqueAgentDefinitions;
1156  bool myApplyAgentXform;
1157  int64 myRestShapesMode;
1158  UT_StringHolder myLayerFilter;
1159  UT_StringHolder myShapeFilter;
1160  bool myLimitIterations;
1161  int64 myIterations;
1162  bool myAddShapeDeformerAttrib;
1163  UT_StringHolder myShapeDeformerAttrib;
1164  bool myAddXformNameAttrib;
1165  UT_StringHolder myXformNameAttrib;
1166  bool myAddLayerNameAttrib;
1167  UT_StringHolder myLayerNameAttrib;
1168  UT_StringHolder myClipNames;
1169  UT_StringHolder myTransferAttributes;
1170  UT_StringHolder myTransferGroups;
1171  UT_Array<Filters> myFilters;
1172  UT_Vector3D mySkeletonColor;
1173  bool myApplyJointXforms;
1174 
1175 };
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
void setFilters(const UT_Array< Filters > &val)
Output opOutput(const SOP_NodeVerb::CookParms &cookparms) const
void setApplyAgentXform(bool val)
bool isParmColorRamp(exint idx) const override
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:347
static void loadData(UT_IStream &is, UT_Matrix4D &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
bool operator!=(const SOP_AgentUnpackParms &src) const
T clampMaxValue(fpreal maxvalue, const T &src) const
Definition: OP_NodeParms.h:315
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
Definition: png.h:1083
RestShapesMode opRestShapesMode(const SOP_NodeVerb::CookParms &cookparms) const
exint bread(int32 *buffer, exint asize=1)
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:493
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:62
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 opApplyJointXforms(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const Filters &src) const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
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:613
T clampMinValue(fpreal minvalue, const T &src) const
Definition: OP_NodeParms.h:308
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
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:491
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
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
void setLimitIterations(bool val)
static void saveData(std::ostream &os, PRM_DataItemHandle s)
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
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)
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
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
void setLayerFilter(const UT_StringHolder &val)
exint read(bool *array, exint sz=1)
Definition: UT_IStream.h:276
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
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)
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)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
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:648
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
void coerceValue(T &result, const S &src) const
Definition: OP_NodeParms.h:301
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:277
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 doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
Utility class for containing a color ramp.
Definition: UT_Ramp.h:88
bool opAddLayerNameAttrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opFilters_jointnames(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
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
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:361
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:1385
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
Definition: core.h:1131
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
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:665
static void loadData(UT_IStream &is, UT_Vector2D &v)
UT_StringHolder opTransferGroups(const SOP_NodeVerb::CookParms &cookparms) const
type
Definition: core.h:1059
UT_StringHolder opShapeDeformerAttrib(const SOP_NodeVerb::CookParms &cookparms) const
bool getUniqueAgentDefinitions() const
UT_StringHolder opXformNameAttrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
static void loadData(UT_IStream &is, UT_Matrix2D &v)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
SYS_FORCE_INLINE bool isstring() const
static void saveData(std::ostream &os, UT_Vector2D v)
OP_NodeParms & operator=(const OP_NodeParms &)=default
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
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
static void loadData(UT_IStream &is, UT_StringHolder &v)