HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_Detangle.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 
25 {
26 public:
27  static int version() { return 1; }
28 
30  {
31  myPrevpos = ""_UTsh;
32  myDisableSelfAttr = "disableself"_UTsh;
33  myDisableExternalAttr = "disableexternal"_UTsh;
34  myWeldAttr = "weld"_UTsh;
35  myThickness = 0.05;
36  myDoSelf = true;
37  myDoTet = true;
38  myRequirePairwiseAutoDisable = true;
39  myUpdateDisable = false;
40  myResetDetangledPoints = true;
41  myDoMark = false;
42  myMarkAttr = "changed"_UTsh;
43  myDoResolve = true;
44  myMaxWeight = 1.0;
45  myCapDisplace = false;
46  myMaxDisplace = 0.5;
47  myResolveAll = false;
48  myResolveAllMax = 10;
49  myResolveFreeEdges = false;
50  myLayerAttr = "layer"_UTsh;
51  myLayerShock = 4.0;
52  myExternalFriction = 1.0;
53  mySelfFriction = 1.0;
54  myStaticThreshold = 0.5;
55  myKineticScale = 0.1;
56  myConstantCollisionTopology = true;
57  mySharedCache = ""_UTsh;
58  myResetKey = -1;
59  myUpdateOverlap = false;
60 
61  }
62 
63  explicit SOP_DetangleParms(const SOP_DetangleParms &) = default;
64  SOP_DetangleParms &operator=(const SOP_DetangleParms &) = default;
65  SOP_DetangleParms(SOP_DetangleParms &&) noexcept = default;
66  SOP_DetangleParms &operator=(SOP_DetangleParms &&) noexcept = default;
67 
68  ~SOP_DetangleParms() override {}
69 
70  bool operator==(const SOP_DetangleParms &src) const
71  {
72  if (myPrevpos != src.myPrevpos) return false;
73  if (myDisableSelfAttr != src.myDisableSelfAttr) return false;
74  if (myDisableExternalAttr != src.myDisableExternalAttr) return false;
75  if (myWeldAttr != src.myWeldAttr) return false;
76  if (myThickness != src.myThickness) return false;
77  if (myDoSelf != src.myDoSelf) return false;
78  if (myDoTet != src.myDoTet) return false;
79  if (myRequirePairwiseAutoDisable != src.myRequirePairwiseAutoDisable) return false;
80  if (myUpdateDisable != src.myUpdateDisable) return false;
81  if (myResetDetangledPoints != src.myResetDetangledPoints) return false;
82  if (myDoMark != src.myDoMark) return false;
83  if (myMarkAttr != src.myMarkAttr) return false;
84  if (myDoResolve != src.myDoResolve) return false;
85  if (myMaxWeight != src.myMaxWeight) return false;
86  if (myCapDisplace != src.myCapDisplace) return false;
87  if (myMaxDisplace != src.myMaxDisplace) return false;
88  if (myResolveAll != src.myResolveAll) return false;
89  if (myResolveAllMax != src.myResolveAllMax) return false;
90  if (myResolveFreeEdges != src.myResolveFreeEdges) return false;
91  if (myLayerAttr != src.myLayerAttr) return false;
92  if (myLayerShock != src.myLayerShock) return false;
93  if (myExternalFriction != src.myExternalFriction) return false;
94  if (mySelfFriction != src.mySelfFriction) return false;
95  if (myStaticThreshold != src.myStaticThreshold) return false;
96  if (myKineticScale != src.myKineticScale) return false;
97  if (myConstantCollisionTopology != src.myConstantCollisionTopology) return false;
98  if (mySharedCache != src.mySharedCache) return false;
99  if (myResetKey != src.myResetKey) return false;
100  if (myUpdateOverlap != src.myUpdateOverlap) return false;
101 
102  return true;
103  }
104  bool operator!=(const SOP_DetangleParms &src) const
105  {
106  return !operator==(src);
107  }
108 
109 
110 
111  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
112  {
113  myPrevpos = ""_UTsh;
114  if (true)
115  graph->evalOpParm(myPrevpos, nodeidx, "prevpos", time, 0);
116  myDisableSelfAttr = "disableself"_UTsh;
117  if (true)
118  graph->evalOpParm(myDisableSelfAttr, nodeidx, "disableselfattr", time, 0);
119  myDisableExternalAttr = "disableexternal"_UTsh;
120  if (true)
121  graph->evalOpParm(myDisableExternalAttr, nodeidx, "disableexternalattr", time, 0);
122  myWeldAttr = "weld"_UTsh;
123  if (true)
124  graph->evalOpParm(myWeldAttr, nodeidx, "weldattr", time, 0);
125  myThickness = 0.05;
126  if (true)
127  graph->evalOpParm(myThickness, nodeidx, "thickness", time, 0);
128  myDoSelf = true;
129  if (true)
130  graph->evalOpParm(myDoSelf, nodeidx, "doself", time, 0);
131  myDoTet = true;
132  if (true)
133  graph->evalOpParm(myDoTet, nodeidx, "dotet", time, 0);
134  myRequirePairwiseAutoDisable = true;
135  if (true)
136  graph->evalOpParm(myRequirePairwiseAutoDisable, nodeidx, "pairedautodisable", time, 0);
137  myUpdateDisable = false;
138  if (true)
139  graph->evalOpParm(myUpdateDisable, nodeidx, "updatedisable", time, 0);
140  myResetDetangledPoints = true;
141  if (true && ( (true&&!(((getUpdateDisable()==0)))) ) )
142  graph->evalOpParm(myResetDetangledPoints, nodeidx, "resetdetangled", time, 0);
143  myDoMark = false;
144  if (true)
145  graph->evalOpParm(myDoMark, nodeidx, "domark", time, 0);
146  myMarkAttr = "changed"_UTsh;
147  if (true && ( (true&&!(((getDoMark()==0)))) ) )
148  graph->evalOpParm(myMarkAttr, nodeidx, "markattr", time, 0);
149  myDoResolve = true;
150  if (true && ( (true&&!(((getUpdateDisable()==1)))) ) )
151  graph->evalOpParm(myDoResolve, nodeidx, "doresolve", time, 0);
152  myMaxWeight = 1.0;
153  if (true)
154  graph->evalOpParm(myMaxWeight, nodeidx, "maxweight", time, 0);
155  myCapDisplace = false;
156  if (true)
157  graph->evalOpParm(myCapDisplace, nodeidx, "capdisplace", time, 0);
158  myMaxDisplace = 0.5;
159  if (true && ( (true&&!(((getCapDisplace()==0)))) ) )
160  graph->evalOpParm(myMaxDisplace, nodeidx, "maxdisplace", time, 0);
161  myResolveAll = false;
162  if (true && ( (true&&!(((getUpdateDisable()==1))||((getDoResolve()==0)))) ) )
163  graph->evalOpParm(myResolveAll, nodeidx, "resolveall", time, 0);
164  myResolveAllMax = 10;
165  if (true && ( (true&&!(((getUpdateDisable()==1))||((getDoResolve()==0))||((getResolveAll()==0)))) ) )
166  graph->evalOpParm(myResolveAllMax, nodeidx, "resolveallmax", time, 0);
167  myResolveFreeEdges = false;
168  if (true && ( (true&&!(((getUpdateDisable()==1))||((getDoResolve()==0))||((getResolveAll()==0)))) ) )
169  graph->evalOpParm(myResolveFreeEdges, nodeidx, "resolvealledges", time, 0);
170  myLayerAttr = "layer"_UTsh;
171  if (true && ( (true&&!(((getUpdateDisable()==1))||((getDoResolve()==0)))) ) )
172  graph->evalOpParm(myLayerAttr, nodeidx, "layerattr", time, 0);
173  myLayerShock = 4.0;
174  if (true && ( (true&&!(((getUpdateDisable()==1))||((getDoResolve()==0)))) ) )
175  graph->evalOpParm(myLayerShock, nodeidx, "layershock", time, 0);
176  myExternalFriction = 1.0;
177  if (true && ( (true&&!(((getDoResolve()==0)))) ) )
178  graph->evalOpParm(myExternalFriction, nodeidx, "externalfriction", time, 0);
179  mySelfFriction = 1.0;
180  if (true && ( (true&&!(((getDoResolve()==0)))) ) )
181  graph->evalOpParm(mySelfFriction, nodeidx, "selffriction", time, 0);
182  myStaticThreshold = 0.5;
183  if (true && ( (true&&!(((getDoResolve()==0)))) ) )
184  graph->evalOpParm(myStaticThreshold, nodeidx, "static_threshold", time, 0);
185  myKineticScale = 0.1;
186  if (true && ( (true&&!(((getDoResolve()==0)))) ) )
187  graph->evalOpParm(myKineticScale, nodeidx, "kinetic_scale", time, 0);
188  myConstantCollisionTopology = true;
189  if (true)
190  graph->evalOpParm(myConstantCollisionTopology, nodeidx, "constantcollisiontopology", time, 0);
191  mySharedCache = ""_UTsh;
192  if (true)
193  graph->evalOpParm(mySharedCache, nodeidx, "sharedcache", time, 0);
194  myResetKey = -1;
195  if (true)
196  graph->evalOpParm(myResetKey, nodeidx, "resetkey", time, 0);
197  myUpdateOverlap = false;
198  if (true && ( (true&&!(((getUpdateDisable()==0)&&(getDoResolve()==1)))) ) )
199  graph->evalOpParm(myUpdateOverlap, nodeidx, "updateoverlap", time, 0);
200 
201  }
202 
203 
204  void loadFromOpSubclass(const LoadParms &loadparms) override
205  {
206  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
207  }
208 
209 
210  void copyFrom(const OP_NodeParms *src) override
211  {
212  *this = *((const SOP_DetangleParms *)src);
213  }
214 
215  template <typename T>
216  void
217  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
218  {
219  if (idx.size() < 1)
220  return;
221  UT_ASSERT(idx.size() == instance.size()+1);
222  if (idx.size() != instance.size()+1)
223  return;
224  switch (idx[0])
225  {
226  case 0:
227  coerceValue(value, myPrevpos);
228  break;
229  case 1:
230  coerceValue(value, myDisableSelfAttr);
231  break;
232  case 2:
233  coerceValue(value, myDisableExternalAttr);
234  break;
235  case 3:
236  coerceValue(value, myWeldAttr);
237  break;
238  case 4:
239  coerceValue(value, myThickness);
240  break;
241  case 5:
242  coerceValue(value, myDoSelf);
243  break;
244  case 6:
245  coerceValue(value, myDoTet);
246  break;
247  case 7:
248  coerceValue(value, myRequirePairwiseAutoDisable);
249  break;
250  case 8:
251  coerceValue(value, myUpdateDisable);
252  break;
253  case 9:
254  coerceValue(value, myResetDetangledPoints);
255  break;
256  case 10:
257  coerceValue(value, myDoMark);
258  break;
259  case 11:
260  coerceValue(value, myMarkAttr);
261  break;
262  case 12:
263  coerceValue(value, myDoResolve);
264  break;
265  case 13:
266  coerceValue(value, myMaxWeight);
267  break;
268  case 14:
269  coerceValue(value, myCapDisplace);
270  break;
271  case 15:
272  coerceValue(value, myMaxDisplace);
273  break;
274  case 16:
275  coerceValue(value, myResolveAll);
276  break;
277  case 17:
278  coerceValue(value, myResolveAllMax);
279  break;
280  case 18:
281  coerceValue(value, myResolveFreeEdges);
282  break;
283  case 19:
284  coerceValue(value, myLayerAttr);
285  break;
286  case 20:
287  coerceValue(value, myLayerShock);
288  break;
289  case 21:
290  coerceValue(value, myExternalFriction);
291  break;
292  case 22:
293  coerceValue(value, mySelfFriction);
294  break;
295  case 23:
296  coerceValue(value, myStaticThreshold);
297  break;
298  case 24:
299  coerceValue(value, myKineticScale);
300  break;
301  case 25:
302  coerceValue(value, myConstantCollisionTopology);
303  break;
304  case 26:
305  coerceValue(value, mySharedCache);
306  break;
307  case 27:
308  coerceValue(value, myResetKey);
309  break;
310  case 28:
311  coerceValue(value, myUpdateOverlap);
312  break;
313 
314  }
315  }
316 
317  bool isParmColorRamp(exint idx) const override
318  {
319  switch (idx)
320  {
321 
322  }
323  return false;
324  }
325 
326  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
327  { doGetParmValue(idx, instance, value); }
328  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
329  { doGetParmValue(idx, instance, value); }
330  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
331  { doGetParmValue(idx, instance, value); }
332  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
333  { doGetParmValue(idx, instance, value); }
334  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
335  { doGetParmValue(idx, instance, value); }
336  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
337  { doGetParmValue(idx, instance, value); }
338  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
339  { doGetParmValue(idx, instance, value); }
340  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
341  { doGetParmValue(idx, instance, value); }
342  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
343  { doGetParmValue(idx, instance, value); }
344  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
345  { doGetParmValue(idx, instance, value); }
346  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
347  { doGetParmValue(idx, instance, value); }
348 
349  template <typename T>
350  void
351  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
352  {
353  if (idx.size() < 1)
354  return;
355  UT_ASSERT(idx.size() == instance.size()+1);
356  if (idx.size() != instance.size()+1)
357  return;
358  switch (idx[0])
359  {
360  case 0:
361  coerceValue(myPrevpos, ( ( value ) ));
362  break;
363  case 1:
364  coerceValue(myDisableSelfAttr, ( ( value ) ));
365  break;
366  case 2:
367  coerceValue(myDisableExternalAttr, ( ( value ) ));
368  break;
369  case 3:
370  coerceValue(myWeldAttr, ( ( value ) ));
371  break;
372  case 4:
373  coerceValue(myThickness, clampMinValue(0, ( value ) ));
374  break;
375  case 5:
376  coerceValue(myDoSelf, ( ( value ) ));
377  break;
378  case 6:
379  coerceValue(myDoTet, ( ( value ) ));
380  break;
381  case 7:
382  coerceValue(myRequirePairwiseAutoDisable, ( ( value ) ));
383  break;
384  case 8:
385  coerceValue(myUpdateDisable, ( ( value ) ));
386  break;
387  case 9:
388  coerceValue(myResetDetangledPoints, ( ( value ) ));
389  break;
390  case 10:
391  coerceValue(myDoMark, ( ( value ) ));
392  break;
393  case 11:
394  coerceValue(myMarkAttr, ( ( value ) ));
395  break;
396  case 12:
397  coerceValue(myDoResolve, ( ( value ) ));
398  break;
399  case 13:
400  coerceValue(myMaxWeight, clampMinValue(0, ( value ) ));
401  break;
402  case 14:
403  coerceValue(myCapDisplace, ( ( value ) ));
404  break;
405  case 15:
406  coerceValue(myMaxDisplace, clampMinValue(0, ( value ) ));
407  break;
408  case 16:
409  coerceValue(myResolveAll, ( ( value ) ));
410  break;
411  case 17:
412  coerceValue(myResolveAllMax, clampMinValue(0, ( value ) ));
413  break;
414  case 18:
415  coerceValue(myResolveFreeEdges, ( ( value ) ));
416  break;
417  case 19:
418  coerceValue(myLayerAttr, ( ( value ) ));
419  break;
420  case 20:
421  coerceValue(myLayerShock, ( ( value ) ));
422  break;
423  case 21:
424  coerceValue(myExternalFriction, clampMinValue(0, clampMaxValue(1, value ) ));
425  break;
426  case 22:
427  coerceValue(mySelfFriction, clampMinValue(0, clampMaxValue(1, value ) ));
428  break;
429  case 23:
430  coerceValue(myStaticThreshold, clampMinValue(0, ( value ) ));
431  break;
432  case 24:
433  coerceValue(myKineticScale, clampMinValue(0, ( value ) ));
434  break;
435  case 25:
436  coerceValue(myConstantCollisionTopology, ( ( value ) ));
437  break;
438  case 26:
439  coerceValue(mySharedCache, ( ( value ) ));
440  break;
441  case 27:
442  coerceValue(myResetKey, ( ( value ) ));
443  break;
444  case 28:
445  coerceValue(myUpdateOverlap, ( ( value ) ));
446  break;
447 
448  }
449  }
450 
451  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
452  { doSetParmValue(idx, instance, value); }
453  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
454  { doSetParmValue(idx, instance, value); }
455  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
456  { doSetParmValue(idx, instance, value); }
457  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
458  { doSetParmValue(idx, instance, value); }
459  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
460  { doSetParmValue(idx, instance, value); }
461  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
462  { doSetParmValue(idx, instance, value); }
463  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
464  { doSetParmValue(idx, instance, value); }
465  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
466  { doSetParmValue(idx, instance, value); }
467  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
468  { doSetParmValue(idx, instance, value); }
469  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
470  { doSetParmValue(idx, instance, value); }
471  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
472  { doSetParmValue(idx, instance, value); }
473 
474  exint getNestNumParms(TempIndex idx) const override
475  {
476  if (idx.size() == 0)
477  return 29;
478  switch (idx[0])
479  {
480 
481  }
482  // Invalid
483  return 0;
484  }
485 
486  const char *getNestParmName(TempIndex fieldnum) const override
487  {
488  if (fieldnum.size() < 1)
489  return 0;
490  switch (fieldnum[0])
491  {
492  case 0:
493  return "prevpos";
494  case 1:
495  return "disableselfattr";
496  case 2:
497  return "disableexternalattr";
498  case 3:
499  return "weldattr";
500  case 4:
501  return "thickness";
502  case 5:
503  return "doself";
504  case 6:
505  return "dotet";
506  case 7:
507  return "pairedautodisable";
508  case 8:
509  return "updatedisable";
510  case 9:
511  return "resetdetangled";
512  case 10:
513  return "domark";
514  case 11:
515  return "markattr";
516  case 12:
517  return "doresolve";
518  case 13:
519  return "maxweight";
520  case 14:
521  return "capdisplace";
522  case 15:
523  return "maxdisplace";
524  case 16:
525  return "resolveall";
526  case 17:
527  return "resolveallmax";
528  case 18:
529  return "resolvealledges";
530  case 19:
531  return "layerattr";
532  case 20:
533  return "layershock";
534  case 21:
535  return "externalfriction";
536  case 22:
537  return "selffriction";
538  case 23:
539  return "static_threshold";
540  case 24:
541  return "kinetic_scale";
542  case 25:
543  return "constantcollisiontopology";
544  case 26:
545  return "sharedcache";
546  case 27:
547  return "resetkey";
548  case 28:
549  return "updateoverlap";
550 
551  }
552  return 0;
553  }
554 
555  ParmType getNestParmType(TempIndex fieldnum) const override
556  {
557  if (fieldnum.size() < 1)
558  return PARM_UNSUPPORTED;
559  switch (fieldnum[0])
560  {
561  case 0:
562  return PARM_STRING;
563  case 1:
564  return PARM_STRING;
565  case 2:
566  return PARM_STRING;
567  case 3:
568  return PARM_STRING;
569  case 4:
570  return PARM_FLOAT;
571  case 5:
572  return PARM_INTEGER;
573  case 6:
574  return PARM_INTEGER;
575  case 7:
576  return PARM_INTEGER;
577  case 8:
578  return PARM_INTEGER;
579  case 9:
580  return PARM_INTEGER;
581  case 10:
582  return PARM_INTEGER;
583  case 11:
584  return PARM_STRING;
585  case 12:
586  return PARM_INTEGER;
587  case 13:
588  return PARM_FLOAT;
589  case 14:
590  return PARM_INTEGER;
591  case 15:
592  return PARM_FLOAT;
593  case 16:
594  return PARM_INTEGER;
595  case 17:
596  return PARM_INTEGER;
597  case 18:
598  return PARM_INTEGER;
599  case 19:
600  return PARM_STRING;
601  case 20:
602  return PARM_FLOAT;
603  case 21:
604  return PARM_FLOAT;
605  case 22:
606  return PARM_FLOAT;
607  case 23:
608  return PARM_FLOAT;
609  case 24:
610  return PARM_FLOAT;
611  case 25:
612  return PARM_INTEGER;
613  case 26:
614  return PARM_STRING;
615  case 27:
616  return PARM_FLOAT;
617  case 28:
618  return PARM_INTEGER;
619 
620  }
621  return PARM_UNSUPPORTED;
622  }
623 
624  // Boiler plate to load individual types.
625  static void loadData(UT_IStream &is, int64 &v)
626  { is.bread(&v, 1); }
627  static void loadData(UT_IStream &is, bool &v)
628  { int64 iv; is.bread(&iv, 1); v = iv; }
629  static void loadData(UT_IStream &is, fpreal64 &v)
630  { is.bread<fpreal64>(&v, 1); }
631  static void loadData(UT_IStream &is, UT_Vector2D &v)
632  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
633  static void loadData(UT_IStream &is, UT_Vector3D &v)
634  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
635  is.bread<fpreal64>(&v.z(), 1); }
636  static void loadData(UT_IStream &is, UT_Vector4D &v)
637  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
638  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
639  static void loadData(UT_IStream &is, UT_Matrix2D &v)
640  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
641  static void loadData(UT_IStream &is, UT_Matrix3D &v)
642  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
643  static void loadData(UT_IStream &is, UT_Matrix4D &v)
644  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
645  static void loadData(UT_IStream &is, UT_Vector2I &v)
646  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
647  static void loadData(UT_IStream &is, UT_Vector3I &v)
648  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
649  is.bread<int64>(&v.z(), 1); }
650  static void loadData(UT_IStream &is, UT_Vector4I &v)
651  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
652  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
654  { is.bread(v); }
656  { UT_StringHolder rampdata;
657  loadData(is, rampdata);
658  if (rampdata.isstring())
659  {
660  v.reset(new UT_Ramp());
661  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
662  v->load(istr);
663  }
664  else v.reset();
665  }
668  loadData(is, data);
669  if (data.isstring())
670  {
671  // Find the data type.
672  const char *colon = UT_StringWrap(data).findChar(':');
673  if (colon)
674  {
675  int typelen = colon - data.buffer();
677  type.strncpy(data.buffer(), typelen);
678  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
679 
680  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
681  }
682  }
683  else v.reset();
684  }
685 
686  static void saveData(std::ostream &os, int64 v)
687  { UTwrite(os, &v); }
688  static void saveData(std::ostream &os, bool v)
689  { int64 iv = v; UTwrite(os, &iv); }
690  static void saveData(std::ostream &os, fpreal64 v)
691  { UTwrite<fpreal64>(os, &v); }
692  static void saveData(std::ostream &os, UT_Vector2D v)
693  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
694  static void saveData(std::ostream &os, UT_Vector3D v)
695  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
696  UTwrite<fpreal64>(os, &v.z()); }
697  static void saveData(std::ostream &os, UT_Vector4D v)
698  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
699  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
700  static void saveData(std::ostream &os, UT_Matrix2D v)
702  static void saveData(std::ostream &os, UT_Matrix3D v)
704  static void saveData(std::ostream &os, UT_Matrix4D v)
706  static void saveData(std::ostream &os, UT_StringHolder s)
707  { UT_StringWrap(s).saveBinary(os); }
708  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
710  UT_OStringStream ostr;
711  if (s) s->save(ostr);
712  result = ostr.str();
713  saveData(os, result);
714  }
715  static void saveData(std::ostream &os, PRM_DataItemHandle s)
717  UT_OStringStream ostr;
718  if (s)
719  {
720  ostr << s->getDataTypeToken();
721  ostr << ":";
722  s->saveBinary(ostr);
723  }
724  result = ostr.str();
725  saveData(os, result);
726  }
727 
728 
729  void save(std::ostream &os) const
730  {
731  int32 v = version();
732  UTwrite(os, &v);
733  saveData(os, myPrevpos);
734  saveData(os, myDisableSelfAttr);
735  saveData(os, myDisableExternalAttr);
736  saveData(os, myWeldAttr);
737  saveData(os, myThickness);
738  saveData(os, myDoSelf);
739  saveData(os, myDoTet);
740  saveData(os, myRequirePairwiseAutoDisable);
741  saveData(os, myUpdateDisable);
742  saveData(os, myResetDetangledPoints);
743  saveData(os, myDoMark);
744  saveData(os, myMarkAttr);
745  saveData(os, myDoResolve);
746  saveData(os, myMaxWeight);
747  saveData(os, myCapDisplace);
748  saveData(os, myMaxDisplace);
749  saveData(os, myResolveAll);
750  saveData(os, myResolveAllMax);
751  saveData(os, myResolveFreeEdges);
752  saveData(os, myLayerAttr);
753  saveData(os, myLayerShock);
754  saveData(os, myExternalFriction);
755  saveData(os, mySelfFriction);
756  saveData(os, myStaticThreshold);
757  saveData(os, myKineticScale);
758  saveData(os, myConstantCollisionTopology);
759  saveData(os, mySharedCache);
760  saveData(os, myResetKey);
761  saveData(os, myUpdateOverlap);
762 
763  }
764 
765  bool load(UT_IStream &is)
766  {
767  int32 v;
768  is.bread(&v, 1);
769  if (version() != v)
770  {
771  // Fail incompatible versions
772  return false;
773  }
774  loadData(is, myPrevpos);
775  loadData(is, myDisableSelfAttr);
776  loadData(is, myDisableExternalAttr);
777  loadData(is, myWeldAttr);
778  loadData(is, myThickness);
779  loadData(is, myDoSelf);
780  loadData(is, myDoTet);
781  loadData(is, myRequirePairwiseAutoDisable);
782  loadData(is, myUpdateDisable);
783  loadData(is, myResetDetangledPoints);
784  loadData(is, myDoMark);
785  loadData(is, myMarkAttr);
786  loadData(is, myDoResolve);
787  loadData(is, myMaxWeight);
788  loadData(is, myCapDisplace);
789  loadData(is, myMaxDisplace);
790  loadData(is, myResolveAll);
791  loadData(is, myResolveAllMax);
792  loadData(is, myResolveFreeEdges);
793  loadData(is, myLayerAttr);
794  loadData(is, myLayerShock);
795  loadData(is, myExternalFriction);
796  loadData(is, mySelfFriction);
797  loadData(is, myStaticThreshold);
798  loadData(is, myKineticScale);
799  loadData(is, myConstantCollisionTopology);
800  loadData(is, mySharedCache);
801  loadData(is, myResetKey);
802  loadData(is, myUpdateOverlap);
803 
804  return true;
805  }
806 
807  const UT_StringHolder & getPrevpos() const { return myPrevpos; }
808  void setPrevpos(const UT_StringHolder & val) { myPrevpos = val; }
810  {
811  SOP_Node *thissop = cookparms.getNode();
812  if (!thissop) return getPrevpos();
814  OP_Utils::evalOpParm(result, thissop, "prevpos", cookparms.getCookTime(), 0);
815  return result;
816  }
817  const UT_StringHolder & getDisableSelfAttr() const { return myDisableSelfAttr; }
818  void setDisableSelfAttr(const UT_StringHolder & val) { myDisableSelfAttr = val; }
820  {
821  SOP_Node *thissop = cookparms.getNode();
822  if (!thissop) return getDisableSelfAttr();
824  OP_Utils::evalOpParm(result, thissop, "disableselfattr", cookparms.getCookTime(), 0);
825  return result;
826  }
827  const UT_StringHolder & getDisableExternalAttr() const { return myDisableExternalAttr; }
828  void setDisableExternalAttr(const UT_StringHolder & val) { myDisableExternalAttr = val; }
830  {
831  SOP_Node *thissop = cookparms.getNode();
832  if (!thissop) return getDisableExternalAttr();
834  OP_Utils::evalOpParm(result, thissop, "disableexternalattr", cookparms.getCookTime(), 0);
835  return result;
836  }
837  const UT_StringHolder & getWeldAttr() const { return myWeldAttr; }
838  void setWeldAttr(const UT_StringHolder & val) { myWeldAttr = val; }
840  {
841  SOP_Node *thissop = cookparms.getNode();
842  if (!thissop) return getWeldAttr();
844  OP_Utils::evalOpParm(result, thissop, "weldattr", cookparms.getCookTime(), 0);
845  return result;
846  }
847  fpreal64 getThickness() const { return myThickness; }
848  void setThickness(fpreal64 val) { myThickness = val; }
850  {
851  SOP_Node *thissop = cookparms.getNode();
852  if (!thissop) return getThickness();
854  OP_Utils::evalOpParm(result, thissop, "thickness", cookparms.getCookTime(), 0);
855  return result;
856  }
857  bool getDoSelf() const { return myDoSelf; }
858  void setDoSelf(bool val) { myDoSelf = val; }
859  bool opDoSelf(const SOP_NodeVerb::CookParms &cookparms) const
860  {
861  SOP_Node *thissop = cookparms.getNode();
862  if (!thissop) return getDoSelf();
863  bool result;
864  OP_Utils::evalOpParm(result, thissop, "doself", cookparms.getCookTime(), 0);
865  return result;
866  }
867  bool getDoTet() const { return myDoTet; }
868  void setDoTet(bool val) { myDoTet = val; }
869  bool opDoTet(const SOP_NodeVerb::CookParms &cookparms) const
870  {
871  SOP_Node *thissop = cookparms.getNode();
872  if (!thissop) return getDoTet();
873  bool result;
874  OP_Utils::evalOpParm(result, thissop, "dotet", cookparms.getCookTime(), 0);
875  return result;
876  }
877  bool getRequirePairwiseAutoDisable() const { return myRequirePairwiseAutoDisable; }
878  void setRequirePairwiseAutoDisable(bool val) { myRequirePairwiseAutoDisable = val; }
880  {
881  SOP_Node *thissop = cookparms.getNode();
882  if (!thissop) return getRequirePairwiseAutoDisable();
883  bool result;
884  OP_Utils::evalOpParm(result, thissop, "pairedautodisable", cookparms.getCookTime(), 0);
885  return result;
886  }
887  bool getUpdateDisable() const { return myUpdateDisable; }
888  void setUpdateDisable(bool val) { myUpdateDisable = val; }
889  bool opUpdateDisable(const SOP_NodeVerb::CookParms &cookparms) const
890  {
891  SOP_Node *thissop = cookparms.getNode();
892  if (!thissop) return getUpdateDisable();
893  bool result;
894  OP_Utils::evalOpParm(result, thissop, "updatedisable", cookparms.getCookTime(), 0);
895  return result;
896  }
897  bool getResetDetangledPoints() const { return myResetDetangledPoints; }
898  void setResetDetangledPoints(bool val) { myResetDetangledPoints = val; }
899  bool opResetDetangledPoints(const SOP_NodeVerb::CookParms &cookparms) const
900  {
901  SOP_Node *thissop = cookparms.getNode();
902  if (!thissop) return getResetDetangledPoints();
903  bool result;
904  OP_Utils::evalOpParm(result, thissop, "resetdetangled", cookparms.getCookTime(), 0);
905  return result;
906  }
907  bool getDoMark() const { return myDoMark; }
908  void setDoMark(bool val) { myDoMark = val; }
909  bool opDoMark(const SOP_NodeVerb::CookParms &cookparms) const
910  {
911  SOP_Node *thissop = cookparms.getNode();
912  if (!thissop) return getDoMark();
913  bool result;
914  OP_Utils::evalOpParm(result, thissop, "domark", cookparms.getCookTime(), 0);
915  return result;
916  }
917  const UT_StringHolder & getMarkAttr() const { return myMarkAttr; }
918  void setMarkAttr(const UT_StringHolder & val) { myMarkAttr = val; }
920  {
921  SOP_Node *thissop = cookparms.getNode();
922  if (!thissop) return getMarkAttr();
924  OP_Utils::evalOpParm(result, thissop, "markattr", cookparms.getCookTime(), 0);
925  return result;
926  }
927  bool getDoResolve() const { return myDoResolve; }
928  void setDoResolve(bool val) { myDoResolve = val; }
929  bool opDoResolve(const SOP_NodeVerb::CookParms &cookparms) const
930  {
931  SOP_Node *thissop = cookparms.getNode();
932  if (!thissop) return getDoResolve();
933  bool result;
934  OP_Utils::evalOpParm(result, thissop, "doresolve", cookparms.getCookTime(), 0);
935  return result;
936  }
937  fpreal64 getMaxWeight() const { return myMaxWeight; }
938  void setMaxWeight(fpreal64 val) { myMaxWeight = val; }
940  {
941  SOP_Node *thissop = cookparms.getNode();
942  if (!thissop) return getMaxWeight();
944  OP_Utils::evalOpParm(result, thissop, "maxweight", cookparms.getCookTime(), 0);
945  return result;
946  }
947  bool getCapDisplace() const { return myCapDisplace; }
948  void setCapDisplace(bool val) { myCapDisplace = val; }
949  bool opCapDisplace(const SOP_NodeVerb::CookParms &cookparms) const
950  {
951  SOP_Node *thissop = cookparms.getNode();
952  if (!thissop) return getCapDisplace();
953  bool result;
954  OP_Utils::evalOpParm(result, thissop, "capdisplace", cookparms.getCookTime(), 0);
955  return result;
956  }
957  fpreal64 getMaxDisplace() const { return myMaxDisplace; }
958  void setMaxDisplace(fpreal64 val) { myMaxDisplace = val; }
960  {
961  SOP_Node *thissop = cookparms.getNode();
962  if (!thissop) return getMaxDisplace();
964  OP_Utils::evalOpParm(result, thissop, "maxdisplace", cookparms.getCookTime(), 0);
965  return result;
966  }
967  bool getResolveAll() const { return myResolveAll; }
968  void setResolveAll(bool val) { myResolveAll = val; }
969  bool opResolveAll(const SOP_NodeVerb::CookParms &cookparms) const
970  {
971  SOP_Node *thissop = cookparms.getNode();
972  if (!thissop) return getResolveAll();
973  bool result;
974  OP_Utils::evalOpParm(result, thissop, "resolveall", cookparms.getCookTime(), 0);
975  return result;
976  }
977  int64 getResolveAllMax() const { return myResolveAllMax; }
978  void setResolveAllMax(int64 val) { myResolveAllMax = val; }
980  {
981  SOP_Node *thissop = cookparms.getNode();
982  if (!thissop) return getResolveAllMax();
983  int64 result;
984  OP_Utils::evalOpParm(result, thissop, "resolveallmax", cookparms.getCookTime(), 0);
985  return result;
986  }
987  bool getResolveFreeEdges() const { return myResolveFreeEdges; }
988  void setResolveFreeEdges(bool val) { myResolveFreeEdges = val; }
989  bool opResolveFreeEdges(const SOP_NodeVerb::CookParms &cookparms) const
990  {
991  SOP_Node *thissop = cookparms.getNode();
992  if (!thissop) return getResolveFreeEdges();
993  bool result;
994  OP_Utils::evalOpParm(result, thissop, "resolvealledges", cookparms.getCookTime(), 0);
995  return result;
996  }
997  const UT_StringHolder & getLayerAttr() const { return myLayerAttr; }
998  void setLayerAttr(const UT_StringHolder & val) { myLayerAttr = val; }
1000  {
1001  SOP_Node *thissop = cookparms.getNode();
1002  if (!thissop) return getLayerAttr();
1004  OP_Utils::evalOpParm(result, thissop, "layerattr", cookparms.getCookTime(), 0);
1005  return result;
1006  }
1007  fpreal64 getLayerShock() const { return myLayerShock; }
1008  void setLayerShock(fpreal64 val) { myLayerShock = val; }
1010  {
1011  SOP_Node *thissop = cookparms.getNode();
1012  if (!thissop) return getLayerShock();
1013  fpreal64 result;
1014  OP_Utils::evalOpParm(result, thissop, "layershock", cookparms.getCookTime(), 0);
1015  return result;
1016  }
1017  fpreal64 getExternalFriction() const { return myExternalFriction; }
1018  void setExternalFriction(fpreal64 val) { myExternalFriction = val; }
1020  {
1021  SOP_Node *thissop = cookparms.getNode();
1022  if (!thissop) return getExternalFriction();
1023  fpreal64 result;
1024  OP_Utils::evalOpParm(result, thissop, "externalfriction", cookparms.getCookTime(), 0);
1025  return result;
1026  }
1027  fpreal64 getSelfFriction() const { return mySelfFriction; }
1028  void setSelfFriction(fpreal64 val) { mySelfFriction = val; }
1030  {
1031  SOP_Node *thissop = cookparms.getNode();
1032  if (!thissop) return getSelfFriction();
1033  fpreal64 result;
1034  OP_Utils::evalOpParm(result, thissop, "selffriction", cookparms.getCookTime(), 0);
1035  return result;
1036  }
1037  fpreal64 getStaticThreshold() const { return myStaticThreshold; }
1038  void setStaticThreshold(fpreal64 val) { myStaticThreshold = val; }
1040  {
1041  SOP_Node *thissop = cookparms.getNode();
1042  if (!thissop) return getStaticThreshold();
1043  fpreal64 result;
1044  OP_Utils::evalOpParm(result, thissop, "static_threshold", cookparms.getCookTime(), 0);
1045  return result;
1046  }
1047  fpreal64 getKineticScale() const { return myKineticScale; }
1048  void setKineticScale(fpreal64 val) { myKineticScale = val; }
1050  {
1051  SOP_Node *thissop = cookparms.getNode();
1052  if (!thissop) return getKineticScale();
1053  fpreal64 result;
1054  OP_Utils::evalOpParm(result, thissop, "kinetic_scale", cookparms.getCookTime(), 0);
1055  return result;
1056  }
1057  bool getConstantCollisionTopology() const { return myConstantCollisionTopology; }
1058  void setConstantCollisionTopology(bool val) { myConstantCollisionTopology = val; }
1060  {
1061  SOP_Node *thissop = cookparms.getNode();
1062  if (!thissop) return getConstantCollisionTopology();
1063  bool result;
1064  OP_Utils::evalOpParm(result, thissop, "constantcollisiontopology", cookparms.getCookTime(), 0);
1065  return result;
1066  }
1067  const UT_StringHolder & getSharedCache() const { return mySharedCache; }
1068  void setSharedCache(const UT_StringHolder & val) { mySharedCache = val; }
1070  {
1071  SOP_Node *thissop = cookparms.getNode();
1072  if (!thissop) return getSharedCache();
1074  OP_Utils::evalOpParm(result, thissop, "sharedcache", cookparms.getCookTime(), 0);
1075  return result;
1076  }
1077  fpreal64 getResetKey() const { return myResetKey; }
1078  void setResetKey(fpreal64 val) { myResetKey = val; }
1080  {
1081  SOP_Node *thissop = cookparms.getNode();
1082  if (!thissop) return getResetKey();
1083  fpreal64 result;
1084  OP_Utils::evalOpParm(result, thissop, "resetkey", cookparms.getCookTime(), 0);
1085  return result;
1086  }
1087  bool getUpdateOverlap() const { return myUpdateOverlap; }
1088  void setUpdateOverlap(bool val) { myUpdateOverlap = val; }
1089  bool opUpdateOverlap(const SOP_NodeVerb::CookParms &cookparms) const
1090  {
1091  SOP_Node *thissop = cookparms.getNode();
1092  if (!thissop) return getUpdateOverlap();
1093  bool result;
1094  OP_Utils::evalOpParm(result, thissop, "updateoverlap", cookparms.getCookTime(), 0);
1095  return result;
1096  }
1097 
1098 private:
1099  UT_StringHolder myPrevpos;
1100  UT_StringHolder myDisableSelfAttr;
1101  UT_StringHolder myDisableExternalAttr;
1102  UT_StringHolder myWeldAttr;
1103  fpreal64 myThickness;
1104  bool myDoSelf;
1105  bool myDoTet;
1106  bool myRequirePairwiseAutoDisable;
1107  bool myUpdateDisable;
1108  bool myResetDetangledPoints;
1109  bool myDoMark;
1110  UT_StringHolder myMarkAttr;
1111  bool myDoResolve;
1112  fpreal64 myMaxWeight;
1113  bool myCapDisplace;
1114  fpreal64 myMaxDisplace;
1115  bool myResolveAll;
1116  int64 myResolveAllMax;
1117  bool myResolveFreeEdges;
1118  UT_StringHolder myLayerAttr;
1119  fpreal64 myLayerShock;
1120  fpreal64 myExternalFriction;
1121  fpreal64 mySelfFriction;
1122  fpreal64 myStaticThreshold;
1123  fpreal64 myKineticScale;
1124  bool myConstantCollisionTopology;
1125  UT_StringHolder mySharedCache;
1126  fpreal64 myResetKey;
1127  bool myUpdateOverlap;
1128 
1129 };
bool operator!=(const SOP_DetangleParms &src) const
static void saveData(std::ostream &os, PRM_DataItemHandle s)
static void loadData(UT_IStream &is, UT_Vector3D &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
fpreal64 getResetKey() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
static void saveData(std::ostream &os, int64 v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
UT_StringHolder opWeldAttr(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
void setSelfFriction(fpreal64 val)
bool getDoSelf() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
bool operator==(const SOP_DetangleParms &src) const
T clampMaxValue(fpreal maxvalue, const T &src) const
Definition: OP_NodeParms.h:315
static void saveData(std::ostream &os, fpreal64 v)
fpreal64 getMaxDisplace() const
void setDoTet(bool val)
void setMarkAttr(const UT_StringHolder &val)
exint bread(int32 *buffer, exint asize=1)
GLboolean * data
Definition: glcorearb.h:131
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
const GLdouble * v
Definition: glcorearb.h:837
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
fpreal getTime() const
Definition: OP_Context.h:62
void setThickness(fpreal64 val)
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
void setKineticScale(fpreal64 val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
bool getResolveFreeEdges() const
void setResolveFreeEdges(bool val)
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
fpreal64 getSelfFriction() const
static void saveData(std::ostream &os, UT_StringHolder s)
const OP_Context & context() const
Definition: OP_NodeParms.h:97
fpreal64 getExternalFriction() const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
SYS_FORCE_INLINE const char * buffer() const
bool getDoTet() const
GLdouble s
Definition: glad.h:3009
const UT_StringHolder & getPrevpos() const
An output stream object that owns its own string buffer storage.
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
void setLayerAttr(const UT_StringHolder &val)
fpreal64 opStaticThreshold(const SOP_NodeVerb::CookParms &cookparms) const
bool getConstantCollisionTopology() const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
void setMaxWeight(fpreal64 val)
void setSharedCache(const UT_StringHolder &val)
void setExternalFriction(fpreal64 val)
static void saveData(std::ostream &os, bool v)
UT_StringHolder opDisableSelfAttr(const SOP_NodeVerb::CookParms &cookparms) const
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
**But if you need a result
Definition: thread.h:613
void setMaxDisplace(fpreal64 val)
T clampMinValue(fpreal minvalue, const T &src) const
Definition: OP_NodeParms.h:308
fpreal64 getKineticScale() const
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
const UT_StringHolder & getDisableSelfAttr() const
static void loadData(UT_IStream &is, UT_Vector3I &v)
void setWeldAttr(const UT_StringHolder &val)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void setDisableSelfAttr(const UT_StringHolder &val)
const UT_StringHolder & getMarkAttr() const
bool getResolveAll() const
void setRequirePairwiseAutoDisable(bool val)
double fpreal64
Definition: SYS_Types.h:201
bool getUpdateOverlap() const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
bool opCapDisplace(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opExternalFriction(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
int64 opResolveAllMax(const SOP_NodeVerb::CookParms &cookparms) const
bool opDoMark(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
void setDoSelf(bool val)
static void saveData(std::ostream &os, UT_Vector4D v)
UT_StringHolder opSharedCache(const SOP_NodeVerb::CookParms &cookparms) const
bool opResolveAll(const SOP_NodeVerb::CookParms &cookparms) const
ParmType getNestParmType(TempIndex fieldnum) const override
static void loadData(UT_IStream &is, UT_Matrix2D &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
void setResetKey(fpreal64 val)
exint length() const
const UT_StringHolder & getWeldAttr() const
fpreal64 getLayerShock() const
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
void setUpdateDisable(bool val)
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
void setResetDetangledPoints(bool val)
static void loadData(UT_IStream &is, int64 &v)
void setPrevpos(const UT_StringHolder &val)
fpreal64 getStaticThreshold() const
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
fpreal64 opKineticScale(const SOP_NodeVerb::CookParms &cookparms) const
exint getNestNumParms(TempIndex idx) const override
const char * getNestParmName(TempIndex fieldnum) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
long long int64
Definition: SYS_Types.h:116
const UT_StringHolder & getLayerAttr() const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
static void saveData(std::ostream &os, UT_Matrix2D v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
fpreal64 opThickness(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix3D v)
void copyFrom(const OP_NodeParms *src) override
bool getResetDetangledPoints() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
bool opDoResolve(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector2D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
int64 getResolveAllMax() const
fpreal64 opMaxDisplace(const SOP_NodeVerb::CookParms &cookparms) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
fpreal64 getThickness() const
void setUpdateOverlap(bool val)
void loadFromOpSubclass(const LoadParms &loadparms) override
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
UT_StringHolder opPrevpos(const SOP_NodeVerb::CookParms &cookparms) const
GT_API const UT_StringHolder version
fpreal64 opLayerShock(const SOP_NodeVerb::CookParms &cookparms) const
bool getCapDisplace() const
static void loadData(UT_IStream &is, UT_Vector2I &v)
void save(std::ostream &os) const
bool getRequirePairwiseAutoDisable() const
static void loadData(UT_IStream &is, UT_Vector4D &v)
fpreal64 opMaxWeight(const SOP_NodeVerb::CookParms &cookparms) const
void coerceValue(T &result, const S &src) const
Definition: OP_NodeParms.h:301
fpreal64 opSelfFriction(const SOP_NodeVerb::CookParms &cookparms) const
bool isParmColorRamp(exint idx) const override
static void saveData(std::ostream &os, UT_Matrix4D v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
void setCapDisplace(bool val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
void setResolveAllMax(int64 val)
fpreal64 fpreal
Definition: SYS_Types.h:277
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
static void loadData(UT_IStream &is, fpreal64 &v)
static void loadData(UT_IStream &is, UT_Matrix4D &v)
Utility class for containing a color ramp.
Definition: UT_Ramp.h:88
static void saveData(std::ostream &os, UT_Vector3D v)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
GLuint GLfloat * val
Definition: glcorearb.h:1608
const UT_StringHolder & getDisableExternalAttr() const
#define SOP_API
Definition: SOP_API.h:10
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
UT_StringHolder opDisableExternalAttr(const SOP_NodeVerb::CookParms &cookparms) const
void setDoResolve(bool val)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
bool opUpdateDisable(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Vector2D v)
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
bool opConstantCollisionTopology(const SOP_NodeVerb::CookParms &cookparms) const
bool opDoSelf(const SOP_NodeVerb::CookParms &cookparms) const
void setStaticThreshold(fpreal64 val)
bool opDoTet(const SOP_NodeVerb::CookParms &cookparms) 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
bool getDoResolve() const
static void loadData(UT_IStream &is, UT_Matrix3D &v)
GLboolean r
Definition: glcorearb.h:1222
bool opResetDetangledPoints(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, bool &v)
static void loadData(UT_IStream &is, UT_StringHolder &v)
bool opResolveFreeEdges(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opMarkAttr(const SOP_NodeVerb::CookParms &cookparms) const
void setDoMark(bool val)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
type
Definition: core.h:1059
bool load(UT_IStream &is)
void setConstantCollisionTopology(bool val)
bool opRequirePairwiseAutoDisable(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opResetKey(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4I &v)
bool getUpdateDisable() const
bool getDoMark() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
SYS_FORCE_INLINE bool isstring() const
const UT_StringHolder & getSharedCache() const
bool opUpdateOverlap(const SOP_NodeVerb::CookParms &cookparms) const
void setDisableExternalAttr(const UT_StringHolder &val)
OP_NodeParms & operator=(const OP_NodeParms &)=default
void setResolveAll(bool val)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
UT_StringHolder opLayerAttr(const SOP_NodeVerb::CookParms &cookparms) const
void setLayerShock(fpreal64 val)
fpreal64 getMaxWeight() const
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663