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