HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_Ray.proto.h
Go to the documentation of this file.
1 /* Automagically Generated by generate_proto.py
2  * Do not Edit
3  */
4 #pragma once
5 
6 #include <SOP/SOP_API.h>
7 #include <SOP/SOP_NodeVerb.h>
8 #include <SOP/SOP_GraphProxy.h>
9 
10 #include <OP/OP_Utils.h>
11 #include <PRM/PRM_Parm.h>
12 #include <UT/UT_IStream.h>
13 #include <UT/UT_NTStreamUtil.h>
14 #include <UT/UT_Ramp.h>
15 #include <UT/UT_SharedPtr.h>
16 #include <UT/UT_StringHolder.h>
17 #include <UT/UT_StringStream.h>
18 #include <UT/UT_VectorTypes.h>
19 #include <UT/UT_EnvControl.h>
20 #include <SYS/SYS_Types.h>
21 
22 class DEP_MicroNode;
23 namespace SOP_RayEnums
24 {
25  enum class Entity
26  {
27  PRIMITIVE = 0,
28  POINT
29  };
30  enum class Method
31  {
32  MINIMUM = 0,
33  PROJECT
34  };
35  enum class DirMethod
36  {
37  VECTOR = 0,
38  NORMAL,
39  ATTRIBUTE
40  };
41  enum class Combinetype
42  {
43  AVERAGE = 0,
44  MEDIAN,
45  SHORTEST,
46  LONGEST
47  };
48 }
49 
50 
52 {
53 public:
54  static int version() { return 1; }
55 
57  {
58  myGroup = ""_UTsh;
59  myEntity = 0;
60  myCollision = ""_UTsh;
61  myMethod = 1;
62  myDirMethod = 1;
63  myDir = UT_Vector3D(0,0,0);
64  myDirAttrib = "N"_UTsh;
65  myShowguide = true;
66  myDotrans = true;
67  myLookfar = false;
68  myPutnml = false;
69  myPutdist = false;
70  myReverserays = false;
71  myRtolerance = 0.01;
72  myScale = 1;
73  myLift = 0;
74  myBias = 0;
75  myMaxraydistcheck = false;
76  myMaxraydist = 0;
77  mySample = 1;
78  myJitter = 0;
79  myCombinetype = 0;
80  mySeed = 1;
81  myNewgrp = false;
82  myHitgrp = "rayHitGroup"_UTsh;
83  myUseprimnumattrib = false;
84  myPrimnumattrib = "hitprim"_UTsh;
85  myUseprimuvwattrib = false;
86  myPrimuvwattrib = "hitprimuv"_UTsh;
87  myGetptattribs = false;
88  myPtattribnames = "*"_UTsh;
89  myVertexattribnames = ""_UTsh;
90  myPrimitiveattribnames = ""_UTsh;
91  myDetailattribnames = ""_UTsh;
92 
93  }
94 
95  explicit SOP_RayParms(const SOP_RayParms &) = default;
96  SOP_RayParms &operator=(const SOP_RayParms &) = default;
97  SOP_RayParms(SOP_RayParms &&) noexcept = default;
98  SOP_RayParms &operator=(SOP_RayParms &&) noexcept = default;
99 
100  ~SOP_RayParms() override {}
101 
102  bool operator==(const SOP_RayParms &src) const
103  {
104  if (myGroup != src.myGroup) return false;
105  if (myEntity != src.myEntity) return false;
106  if (myCollision != src.myCollision) return false;
107  if (myMethod != src.myMethod) return false;
108  if (myDirMethod != src.myDirMethod) return false;
109  if (myDir != src.myDir) return false;
110  if (myDirAttrib != src.myDirAttrib) return false;
111  if (myShowguide != src.myShowguide) return false;
112  if (myDotrans != src.myDotrans) return false;
113  if (myLookfar != src.myLookfar) return false;
114  if (myPutnml != src.myPutnml) return false;
115  if (myPutdist != src.myPutdist) return false;
116  if (myReverserays != src.myReverserays) return false;
117  if (myRtolerance != src.myRtolerance) return false;
118  if (myScale != src.myScale) return false;
119  if (myLift != src.myLift) return false;
120  if (myBias != src.myBias) return false;
121  if (myMaxraydistcheck != src.myMaxraydistcheck) return false;
122  if (myMaxraydist != src.myMaxraydist) return false;
123  if (mySample != src.mySample) return false;
124  if (myJitter != src.myJitter) return false;
125  if (myCombinetype != src.myCombinetype) return false;
126  if (mySeed != src.mySeed) return false;
127  if (myNewgrp != src.myNewgrp) return false;
128  if (myHitgrp != src.myHitgrp) return false;
129  if (myUseprimnumattrib != src.myUseprimnumattrib) return false;
130  if (myPrimnumattrib != src.myPrimnumattrib) return false;
131  if (myUseprimuvwattrib != src.myUseprimuvwattrib) return false;
132  if (myPrimuvwattrib != src.myPrimuvwattrib) return false;
133  if (myGetptattribs != src.myGetptattribs) return false;
134  if (myPtattribnames != src.myPtattribnames) return false;
135  if (myVertexattribnames != src.myVertexattribnames) return false;
136  if (myPrimitiveattribnames != src.myPrimitiveattribnames) return false;
137  if (myDetailattribnames != src.myDetailattribnames) return false;
138 
139  return true;
140  }
141  bool operator!=(const SOP_RayParms &src) const
142  {
143  return !operator==(src);
144  }
149 
150 
151 
152  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
153  {
154  myGroup = ""_UTsh;
155  if (true)
156  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
157  myEntity = 0;
158  if (true)
159  graph->evalOpParm(myEntity, nodeidx, "entity", time, 0);
160  myCollision = ""_UTsh;
161  if (true)
162  graph->evalOpParm(myCollision, nodeidx, "collision", time, 0);
163  myMethod = 1;
164  if (true)
165  graph->evalOpParm(myMethod, nodeidx, "method", time, 0);
166  myDirMethod = 1;
167  if (true && ( (true&&!(((int64(getMethod())!=1)))) ) )
168  graph->evalOpParm(myDirMethod, nodeidx, "dirmethod", time, 0);
169  myDir = UT_Vector3D(0,0,0);
170  if (true && ( (true&&!(((int64(getMethod())!=1))||((int64(getDirMethod())!=0)))) ) )
171  graph->evalOpParm(myDir, nodeidx, "dir", time, 0);
172  myDirAttrib = "N"_UTsh;
173  if (true && ( (true&&!(((int64(getMethod())!=1))||((int64(getDirMethod())!=2)))) ) )
174  graph->evalOpParm(myDirAttrib, nodeidx, "dirattrib", time, 0);
175  myShowguide = true;
176  if (true && ( (true&&!(((int64(getMethod())>=0)))) ) )
177  graph->evalOpParm(myShowguide, nodeidx, "showguide", time, 0);
178  myDotrans = true;
179  if (true)
180  graph->evalOpParm(myDotrans, nodeidx, "dotrans", time, 0);
181  myLookfar = false;
182  if (true && ( (true&&!(((int64(getMethod())!=1)))) ) )
183  graph->evalOpParm(myLookfar, nodeidx, "lookfar", time, 0);
184  myPutnml = false;
185  if (true)
186  graph->evalOpParm(myPutnml, nodeidx, "putnml", time, 0);
187  myPutdist = false;
188  if (true)
189  graph->evalOpParm(myPutdist, nodeidx, "putdist", time, 0);
190  myReverserays = false;
191  if (true && ( (true&&!(((int64(getMethod())!=1)))) ) )
192  graph->evalOpParm(myReverserays, nodeidx, "reverserays", time, 0);
193  myRtolerance = 0.01;
194  if (true && ( (true&&!(((int64(getMethod())!=1)))) ) )
195  graph->evalOpParm(myRtolerance, nodeidx, "rtolerance", time, 0);
196  myScale = 1;
197  if (true && ( (true&&!(((getDotrans()==0)))) ) )
198  graph->evalOpParm(myScale, nodeidx, "scale", time, 0);
199  myLift = 0;
200  if (true)
201  graph->evalOpParm(myLift, nodeidx, "lift", time, 0);
202  myBias = 0;
203  if (true && ( (true&&!(((int64(getMethod())!=1)))) ) )
204  graph->evalOpParm(myBias, nodeidx, "bias", time, 0);
205  myMaxraydistcheck = false;
206  if (true)
207  graph->evalOpParm(myMaxraydistcheck, nodeidx, "maxraydistcheck", time, 0);
208  myMaxraydist = 0;
209  if (true && ( (true&&!(((getMaxraydistcheck()==0)))) ) )
210  graph->evalOpParm(myMaxraydist, nodeidx, "maxraydist", time, 0);
211  mySample = 1;
212  if (true && ( (true&&!(((int64(getMethod())!=1)))) ) )
213  graph->evalOpParm(mySample, nodeidx, "sample", time, 0);
214  myJitter = 0;
215  if (true && ( (true&&!(((int64(getMethod())!=1)))) ) )
216  graph->evalOpParm(myJitter, nodeidx, "jitter", time, 0);
217  myCombinetype = 0;
218  if (true && ( (true&&!(((int64(getMethod())!=1)))) ) )
219  graph->evalOpParm(myCombinetype, nodeidx, "combinetype", time, 0);
220  mySeed = 1;
221  if (true && ( (true&&!(((int64(getMethod())!=1)))) ) )
222  graph->evalOpParm(mySeed, nodeidx, "seed", time, 0);
223  myNewgrp = false;
224  if (true)
225  graph->evalOpParm(myNewgrp, nodeidx, "newgrp", time, 0);
226  myHitgrp = "rayHitGroup"_UTsh;
227  if (true && ( (true&&!(((getNewgrp()==0)))) ) )
228  graph->evalOpParm(myHitgrp, nodeidx, "hitgrp", time, 0);
229  myUseprimnumattrib = false;
230  if (true)
231  graph->evalOpParm(myUseprimnumattrib, nodeidx, "useprimnumattrib", time, 0);
232  myPrimnumattrib = "hitprim"_UTsh;
233  if (true && ( (true&&!(((getUseprimnumattrib()==0)))) ) )
234  graph->evalOpParm(myPrimnumattrib, nodeidx, "primnumattrib", time, 0);
235  myUseprimuvwattrib = false;
236  if (true)
237  graph->evalOpParm(myUseprimuvwattrib, nodeidx, "useprimuvwattrib", time, 0);
238  myPrimuvwattrib = "hitprimuv"_UTsh;
239  if (true && ( (true&&!(((getUseprimuvwattrib()==0)))) ) )
240  graph->evalOpParm(myPrimuvwattrib, nodeidx, "primuvwattrib", time, 0);
241  myGetptattribs = false;
242  if (true)
243  graph->evalOpParm(myGetptattribs, nodeidx, "getptattribs", time, 0);
244  myPtattribnames = "*"_UTsh;
245  if (true && ( (true&&!(((getGetptattribs()==0)))) ) )
246  graph->evalOpParm(myPtattribnames, nodeidx, "ptattribnames", time, 0);
247  myVertexattribnames = ""_UTsh;
248  if (true && ( (true&&!(((getGetptattribs()==0)))) ) )
249  graph->evalOpParm(myVertexattribnames, nodeidx, "vertexattribnames", time, 0);
250  myPrimitiveattribnames = ""_UTsh;
251  if (true && ( (true&&!(((getGetptattribs()==0)))) ) )
252  graph->evalOpParm(myPrimitiveattribnames, nodeidx, "primitiveattribnames", time, 0);
253  myDetailattribnames = ""_UTsh;
254  if (true && ( (true&&!(((getGetptattribs()==0)))) ) )
255  graph->evalOpParm(myDetailattribnames, nodeidx, "detailattribnames", time, 0);
256 
257  }
258 
259 
260  void loadFromOpSubclass(const LoadParms &loadparms) override
261  {
262  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
263  }
264 
265 
266  void copyFrom(const OP_NodeParms *src) override
267  {
268  *this = *((const SOP_RayParms *)src);
269  }
270 
271  template <typename T>
272  void
273  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
274  {
275  if (idx.size() < 1)
276  return;
277  UT_ASSERT(idx.size() == instance.size()+1);
278  if (idx.size() != instance.size()+1)
279  return;
280  switch (idx[0])
281  {
282  case 0:
283  coerceValue(value, myGroup);
284  break;
285  case 1:
286  coerceValue(value, myEntity);
287  break;
288  case 2:
289  coerceValue(value, myCollision);
290  break;
291  case 3:
292  coerceValue(value, myMethod);
293  break;
294  case 4:
295  coerceValue(value, myDirMethod);
296  break;
297  case 5:
298  coerceValue(value, myDir);
299  break;
300  case 6:
301  coerceValue(value, myDirAttrib);
302  break;
303  case 7:
304  coerceValue(value, myShowguide);
305  break;
306  case 8:
307  coerceValue(value, myDotrans);
308  break;
309  case 9:
310  coerceValue(value, myLookfar);
311  break;
312  case 10:
313  coerceValue(value, myPutnml);
314  break;
315  case 11:
316  coerceValue(value, myPutdist);
317  break;
318  case 12:
319  coerceValue(value, myReverserays);
320  break;
321  case 13:
322  coerceValue(value, myRtolerance);
323  break;
324  case 14:
325  coerceValue(value, myScale);
326  break;
327  case 15:
328  coerceValue(value, myLift);
329  break;
330  case 16:
331  coerceValue(value, myBias);
332  break;
333  case 17:
334  coerceValue(value, myMaxraydistcheck);
335  break;
336  case 18:
337  coerceValue(value, myMaxraydist);
338  break;
339  case 19:
340  coerceValue(value, mySample);
341  break;
342  case 20:
343  coerceValue(value, myJitter);
344  break;
345  case 21:
346  coerceValue(value, myCombinetype);
347  break;
348  case 22:
349  coerceValue(value, mySeed);
350  break;
351  case 23:
352  coerceValue(value, myNewgrp);
353  break;
354  case 24:
355  coerceValue(value, myHitgrp);
356  break;
357  case 25:
358  coerceValue(value, myUseprimnumattrib);
359  break;
360  case 26:
361  coerceValue(value, myPrimnumattrib);
362  break;
363  case 27:
364  coerceValue(value, myUseprimuvwattrib);
365  break;
366  case 28:
367  coerceValue(value, myPrimuvwattrib);
368  break;
369  case 29:
370  coerceValue(value, myGetptattribs);
371  break;
372  case 30:
373  coerceValue(value, myPtattribnames);
374  break;
375  case 31:
376  coerceValue(value, myVertexattribnames);
377  break;
378  case 32:
379  coerceValue(value, myPrimitiveattribnames);
380  break;
381  case 33:
382  coerceValue(value, myDetailattribnames);
383  break;
384 
385  }
386  }
387 
388  bool isParmColorRamp(exint idx) const override
389  {
390  switch (idx)
391  {
392 
393  }
394  return false;
395  }
396 
397  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
398  { doGetParmValue(idx, instance, value); }
399  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
400  { doGetParmValue(idx, instance, value); }
401  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
402  { doGetParmValue(idx, instance, value); }
403  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
404  { doGetParmValue(idx, instance, value); }
405  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
406  { doGetParmValue(idx, instance, value); }
407  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
408  { doGetParmValue(idx, instance, value); }
409  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
410  { doGetParmValue(idx, instance, value); }
411  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
412  { doGetParmValue(idx, instance, value); }
413  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
414  { doGetParmValue(idx, instance, value); }
415  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
416  { doGetParmValue(idx, instance, value); }
417  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
418  { doGetParmValue(idx, instance, value); }
419 
420  template <typename T>
421  void
422  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
423  {
424  if (idx.size() < 1)
425  return;
426  UT_ASSERT(idx.size() == instance.size()+1);
427  if (idx.size() != instance.size()+1)
428  return;
429  switch (idx[0])
430  {
431  case 0:
432  coerceValue(myGroup, ( ( value ) ));
433  break;
434  case 1:
435  coerceValue(myEntity, clampMinValue(0, clampMaxValue(1, value ) ));
436  break;
437  case 2:
438  coerceValue(myCollision, ( ( value ) ));
439  break;
440  case 3:
441  coerceValue(myMethod, clampMinValue(0, clampMaxValue(1, value ) ));
442  break;
443  case 4:
444  coerceValue(myDirMethod, clampMinValue(0, clampMaxValue(2, value ) ));
445  break;
446  case 5:
447  coerceValue(myDir, ( ( value ) ));
448  break;
449  case 6:
450  coerceValue(myDirAttrib, ( ( value ) ));
451  break;
452  case 7:
453  coerceValue(myShowguide, ( ( value ) ));
454  break;
455  case 8:
456  coerceValue(myDotrans, ( ( value ) ));
457  break;
458  case 9:
459  coerceValue(myLookfar, ( ( value ) ));
460  break;
461  case 10:
462  coerceValue(myPutnml, ( ( value ) ));
463  break;
464  case 11:
465  coerceValue(myPutdist, ( ( value ) ));
466  break;
467  case 12:
468  coerceValue(myReverserays, ( ( value ) ));
469  break;
470  case 13:
471  coerceValue(myRtolerance, clampMinValue(0, clampMaxValue(1, value ) ));
472  break;
473  case 14:
474  coerceValue(myScale, ( ( value ) ));
475  break;
476  case 15:
477  coerceValue(myLift, ( ( value ) ));
478  break;
479  case 16:
480  coerceValue(myBias, ( ( value ) ));
481  break;
482  case 17:
483  coerceValue(myMaxraydistcheck, ( ( value ) ));
484  break;
485  case 18:
486  coerceValue(myMaxraydist, ( ( value ) ));
487  break;
488  case 19:
489  coerceValue(mySample, clampMinValue(1, ( value ) ));
490  break;
491  case 20:
492  coerceValue(myJitter, ( ( value ) ));
493  break;
494  case 21:
495  coerceValue(myCombinetype, clampMinValue(0, clampMaxValue(3, value ) ));
496  break;
497  case 22:
498  coerceValue(mySeed, clampMinValue(0, ( value ) ));
499  break;
500  case 23:
501  coerceValue(myNewgrp, ( ( value ) ));
502  break;
503  case 24:
504  coerceValue(myHitgrp, ( ( value ) ));
505  break;
506  case 25:
507  coerceValue(myUseprimnumattrib, ( ( value ) ));
508  break;
509  case 26:
510  coerceValue(myPrimnumattrib, ( ( value ) ));
511  break;
512  case 27:
513  coerceValue(myUseprimuvwattrib, ( ( value ) ));
514  break;
515  case 28:
516  coerceValue(myPrimuvwattrib, ( ( value ) ));
517  break;
518  case 29:
519  coerceValue(myGetptattribs, ( ( value ) ));
520  break;
521  case 30:
522  coerceValue(myPtattribnames, ( ( value ) ));
523  break;
524  case 31:
525  coerceValue(myVertexattribnames, ( ( value ) ));
526  break;
527  case 32:
528  coerceValue(myPrimitiveattribnames, ( ( value ) ));
529  break;
530  case 33:
531  coerceValue(myDetailattribnames, ( ( value ) ));
532  break;
533 
534  }
535  }
536 
537  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
538  { doSetParmValue(idx, instance, value); }
539  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
540  { doSetParmValue(idx, instance, value); }
541  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
542  { doSetParmValue(idx, instance, value); }
543  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
544  { doSetParmValue(idx, instance, value); }
545  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
546  { doSetParmValue(idx, instance, value); }
547  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
548  { doSetParmValue(idx, instance, value); }
549  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
550  { doSetParmValue(idx, instance, value); }
551  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
552  { doSetParmValue(idx, instance, value); }
553  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
554  { doSetParmValue(idx, instance, value); }
555  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
556  { doSetParmValue(idx, instance, value); }
557  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
558  { doSetParmValue(idx, instance, value); }
559 
560  exint getNestNumParms(TempIndex idx) const override
561  {
562  if (idx.size() == 0)
563  return 34;
564  switch (idx[0])
565  {
566 
567  }
568  // Invalid
569  return 0;
570  }
571 
572  const char *getNestParmName(TempIndex fieldnum) const override
573  {
574  if (fieldnum.size() < 1)
575  return 0;
576  switch (fieldnum[0])
577  {
578  case 0:
579  return "group";
580  case 1:
581  return "entity";
582  case 2:
583  return "collision";
584  case 3:
585  return "method";
586  case 4:
587  return "dirmethod";
588  case 5:
589  return "dir";
590  case 6:
591  return "dirattrib";
592  case 7:
593  return "showguide";
594  case 8:
595  return "dotrans";
596  case 9:
597  return "lookfar";
598  case 10:
599  return "putnml";
600  case 11:
601  return "putdist";
602  case 12:
603  return "reverserays";
604  case 13:
605  return "rtolerance";
606  case 14:
607  return "scale";
608  case 15:
609  return "lift";
610  case 16:
611  return "bias";
612  case 17:
613  return "maxraydistcheck";
614  case 18:
615  return "maxraydist";
616  case 19:
617  return "sample";
618  case 20:
619  return "jitter";
620  case 21:
621  return "combinetype";
622  case 22:
623  return "seed";
624  case 23:
625  return "newgrp";
626  case 24:
627  return "hitgrp";
628  case 25:
629  return "useprimnumattrib";
630  case 26:
631  return "primnumattrib";
632  case 27:
633  return "useprimuvwattrib";
634  case 28:
635  return "primuvwattrib";
636  case 29:
637  return "getptattribs";
638  case 30:
639  return "ptattribnames";
640  case 31:
641  return "vertexattribnames";
642  case 32:
643  return "primitiveattribnames";
644  case 33:
645  return "detailattribnames";
646 
647  }
648  return 0;
649  }
650 
651  ParmType getNestParmType(TempIndex fieldnum) const override
652  {
653  if (fieldnum.size() < 1)
654  return PARM_UNSUPPORTED;
655  switch (fieldnum[0])
656  {
657  case 0:
658  return PARM_STRING;
659  case 1:
660  return PARM_INTEGER;
661  case 2:
662  return PARM_STRING;
663  case 3:
664  return PARM_INTEGER;
665  case 4:
666  return PARM_INTEGER;
667  case 5:
668  return PARM_VECTOR3;
669  case 6:
670  return PARM_STRING;
671  case 7:
672  return PARM_INTEGER;
673  case 8:
674  return PARM_INTEGER;
675  case 9:
676  return PARM_INTEGER;
677  case 10:
678  return PARM_INTEGER;
679  case 11:
680  return PARM_INTEGER;
681  case 12:
682  return PARM_INTEGER;
683  case 13:
684  return PARM_FLOAT;
685  case 14:
686  return PARM_FLOAT;
687  case 15:
688  return PARM_FLOAT;
689  case 16:
690  return PARM_FLOAT;
691  case 17:
692  return PARM_INTEGER;
693  case 18:
694  return PARM_FLOAT;
695  case 19:
696  return PARM_INTEGER;
697  case 20:
698  return PARM_FLOAT;
699  case 21:
700  return PARM_INTEGER;
701  case 22:
702  return PARM_INTEGER;
703  case 23:
704  return PARM_INTEGER;
705  case 24:
706  return PARM_STRING;
707  case 25:
708  return PARM_INTEGER;
709  case 26:
710  return PARM_STRING;
711  case 27:
712  return PARM_INTEGER;
713  case 28:
714  return PARM_STRING;
715  case 29:
716  return PARM_INTEGER;
717  case 30:
718  return PARM_STRING;
719  case 31:
720  return PARM_STRING;
721  case 32:
722  return PARM_STRING;
723  case 33:
724  return PARM_STRING;
725 
726  }
727  return PARM_UNSUPPORTED;
728  }
729 
730  // Boiler plate to load individual types.
731  static void loadData(UT_IStream &is, int64 &v)
732  { is.bread(&v, 1); }
733  static void loadData(UT_IStream &is, bool &v)
734  { int64 iv; is.bread(&iv, 1); v = iv; }
735  static void loadData(UT_IStream &is, fpreal64 &v)
736  { is.bread<fpreal64>(&v, 1); }
737  static void loadData(UT_IStream &is, UT_Vector2D &v)
738  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
739  static void loadData(UT_IStream &is, UT_Vector3D &v)
740  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
741  is.bread<fpreal64>(&v.z(), 1); }
742  static void loadData(UT_IStream &is, UT_Vector4D &v)
743  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
744  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
745  static void loadData(UT_IStream &is, UT_Matrix2D &v)
746  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
747  static void loadData(UT_IStream &is, UT_Matrix3D &v)
748  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
749  static void loadData(UT_IStream &is, UT_Matrix4D &v)
750  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
751  static void loadData(UT_IStream &is, UT_Vector2I &v)
752  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
753  static void loadData(UT_IStream &is, UT_Vector3I &v)
754  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
755  is.bread<int64>(&v.z(), 1); }
756  static void loadData(UT_IStream &is, UT_Vector4I &v)
757  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
758  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
760  { is.bread(v); }
762  { UT_StringHolder rampdata;
763  loadData(is, rampdata);
764  if (rampdata.isstring())
765  {
766  v.reset(new UT_Ramp());
767  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
768  v->load(istr);
769  }
770  else v.reset();
771  }
774  loadData(is, data);
775  if (data.isstring())
776  {
777  // Find the data type.
778  const char *colon = UT_StringWrap(data).findChar(':');
779  if (colon)
780  {
781  int typelen = colon - data.buffer();
783  type.strncpy(data.buffer(), typelen);
784  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
785 
786  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
787  }
788  }
789  else v.reset();
790  }
791 
792  static void saveData(std::ostream &os, int64 v)
793  { UTwrite(os, &v); }
794  static void saveData(std::ostream &os, bool v)
795  { int64 iv = v; UTwrite(os, &iv); }
796  static void saveData(std::ostream &os, fpreal64 v)
797  { UTwrite<fpreal64>(os, &v); }
798  static void saveData(std::ostream &os, UT_Vector2D v)
799  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
800  static void saveData(std::ostream &os, UT_Vector3D v)
801  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
802  UTwrite<fpreal64>(os, &v.z()); }
803  static void saveData(std::ostream &os, UT_Vector4D v)
804  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
805  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
806  static void saveData(std::ostream &os, UT_Matrix2D v)
808  static void saveData(std::ostream &os, UT_Matrix3D v)
810  static void saveData(std::ostream &os, UT_Matrix4D v)
812  static void saveData(std::ostream &os, UT_StringHolder s)
813  { UT_StringWrap(s).saveBinary(os); }
814  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
816  UT_OStringStream ostr;
817  if (s) s->save(ostr);
818  result = ostr.str();
819  saveData(os, result);
820  }
821  static void saveData(std::ostream &os, PRM_DataItemHandle s)
823  UT_OStringStream ostr;
824  if (s)
825  {
826  ostr << s->getDataTypeToken();
827  ostr << ":";
828  s->saveBinary(ostr);
829  }
830  result = ostr.str();
831  saveData(os, result);
832  }
833 
834 
835  void save(std::ostream &os) const
836  {
837  int32 v = version();
838  UTwrite(os, &v);
839  saveData(os, myGroup);
840  saveData(os, myEntity);
841  saveData(os, myCollision);
842  saveData(os, myMethod);
843  saveData(os, myDirMethod);
844  saveData(os, myDir);
845  saveData(os, myDirAttrib);
846  saveData(os, myShowguide);
847  saveData(os, myDotrans);
848  saveData(os, myLookfar);
849  saveData(os, myPutnml);
850  saveData(os, myPutdist);
851  saveData(os, myReverserays);
852  saveData(os, myRtolerance);
853  saveData(os, myScale);
854  saveData(os, myLift);
855  saveData(os, myBias);
856  saveData(os, myMaxraydistcheck);
857  saveData(os, myMaxraydist);
858  saveData(os, mySample);
859  saveData(os, myJitter);
860  saveData(os, myCombinetype);
861  saveData(os, mySeed);
862  saveData(os, myNewgrp);
863  saveData(os, myHitgrp);
864  saveData(os, myUseprimnumattrib);
865  saveData(os, myPrimnumattrib);
866  saveData(os, myUseprimuvwattrib);
867  saveData(os, myPrimuvwattrib);
868  saveData(os, myGetptattribs);
869  saveData(os, myPtattribnames);
870  saveData(os, myVertexattribnames);
871  saveData(os, myPrimitiveattribnames);
872  saveData(os, myDetailattribnames);
873 
874  }
875 
876  bool load(UT_IStream &is)
877  {
878  int32 v;
879  is.bread(&v, 1);
880  if (version() != v)
881  {
882  // Fail incompatible versions
883  return false;
884  }
885  loadData(is, myGroup);
886  loadData(is, myEntity);
887  loadData(is, myCollision);
888  loadData(is, myMethod);
889  loadData(is, myDirMethod);
890  loadData(is, myDir);
891  loadData(is, myDirAttrib);
892  loadData(is, myShowguide);
893  loadData(is, myDotrans);
894  loadData(is, myLookfar);
895  loadData(is, myPutnml);
896  loadData(is, myPutdist);
897  loadData(is, myReverserays);
898  loadData(is, myRtolerance);
899  loadData(is, myScale);
900  loadData(is, myLift);
901  loadData(is, myBias);
902  loadData(is, myMaxraydistcheck);
903  loadData(is, myMaxraydist);
904  loadData(is, mySample);
905  loadData(is, myJitter);
906  loadData(is, myCombinetype);
907  loadData(is, mySeed);
908  loadData(is, myNewgrp);
909  loadData(is, myHitgrp);
910  loadData(is, myUseprimnumattrib);
911  loadData(is, myPrimnumattrib);
912  loadData(is, myUseprimuvwattrib);
913  loadData(is, myPrimuvwattrib);
914  loadData(is, myGetptattribs);
915  loadData(is, myPtattribnames);
916  loadData(is, myVertexattribnames);
917  loadData(is, myPrimitiveattribnames);
918  loadData(is, myDetailattribnames);
919 
920  return true;
921  }
922 
923  const UT_StringHolder & getGroup() const { return myGroup; }
924  void setGroup(const UT_StringHolder & val) { myGroup = val; }
926  {
927  SOP_Node *thissop = cookparms.getNode();
928  if (!thissop) return getGroup();
930  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
931  return result;
932  }
933  Entity getEntity() const { return Entity(myEntity); }
934  void setEntity(Entity val) { myEntity = int64(val); }
935  Entity opEntity(const SOP_NodeVerb::CookParms &cookparms) const
936  {
937  SOP_Node *thissop = cookparms.getNode();
938  if (!thissop) return getEntity();
939  int64 result;
940  OP_Utils::evalOpParm(result, thissop, "entity", cookparms.getCookTime(), 0);
941  return Entity(result);
942  }
943  const UT_StringHolder & getCollision() const { return myCollision; }
944  void setCollision(const UT_StringHolder & val) { myCollision = val; }
946  {
947  SOP_Node *thissop = cookparms.getNode();
948  if (!thissop) return getCollision();
950  OP_Utils::evalOpParm(result, thissop, "collision", cookparms.getCookTime(), 0);
951  return result;
952  }
953  Method getMethod() const { return Method(myMethod); }
954  void setMethod(Method val) { myMethod = int64(val); }
955  Method opMethod(const SOP_NodeVerb::CookParms &cookparms) const
956  {
957  SOP_Node *thissop = cookparms.getNode();
958  if (!thissop) return getMethod();
959  int64 result;
960  OP_Utils::evalOpParm(result, thissop, "method", cookparms.getCookTime(), 0);
961  return Method(result);
962  }
963  DirMethod getDirMethod() const { return DirMethod(myDirMethod); }
964  void setDirMethod(DirMethod val) { myDirMethod = int64(val); }
966  {
967  SOP_Node *thissop = cookparms.getNode();
968  if (!thissop) return getDirMethod();
969  int64 result;
970  OP_Utils::evalOpParm(result, thissop, "dirmethod", cookparms.getCookTime(), 0);
971  return DirMethod(result);
972  }
973  UT_Vector3D getDir() const { return myDir; }
974  void setDir(UT_Vector3D val) { myDir = val; }
975  UT_Vector3D opDir(const SOP_NodeVerb::CookParms &cookparms) const
976  {
977  SOP_Node *thissop = cookparms.getNode();
978  if (!thissop) return getDir();
980  OP_Utils::evalOpParm(result, thissop, "dir", cookparms.getCookTime(), 0);
981  return result;
982  }
983  const UT_StringHolder & getDirAttrib() const { return myDirAttrib; }
984  void setDirAttrib(const UT_StringHolder & val) { myDirAttrib = val; }
986  {
987  SOP_Node *thissop = cookparms.getNode();
988  if (!thissop) return getDirAttrib();
990  OP_Utils::evalOpParm(result, thissop, "dirattrib", cookparms.getCookTime(), 0);
991  return result;
992  }
993  bool getShowguide() const { return myShowguide; }
994  void setShowguide(bool val) { myShowguide = val; }
995  bool opShowguide(const SOP_NodeVerb::CookParms &cookparms) const
996  {
997  SOP_Node *thissop = cookparms.getNode();
998  if (!thissop) return getShowguide();
999  bool result;
1000  OP_Utils::evalOpParm(result, thissop, "showguide", cookparms.getCookTime(), 0);
1001  return result;
1002  }
1003  bool getDotrans() const { return myDotrans; }
1004  void setDotrans(bool val) { myDotrans = val; }
1005  bool opDotrans(const SOP_NodeVerb::CookParms &cookparms) const
1006  {
1007  SOP_Node *thissop = cookparms.getNode();
1008  if (!thissop) return getDotrans();
1009  bool result;
1010  OP_Utils::evalOpParm(result, thissop, "dotrans", cookparms.getCookTime(), 0);
1011  return result;
1012  }
1013  bool getLookfar() const { return myLookfar; }
1014  void setLookfar(bool val) { myLookfar = val; }
1015  bool opLookfar(const SOP_NodeVerb::CookParms &cookparms) const
1016  {
1017  SOP_Node *thissop = cookparms.getNode();
1018  if (!thissop) return getLookfar();
1019  bool result;
1020  OP_Utils::evalOpParm(result, thissop, "lookfar", cookparms.getCookTime(), 0);
1021  return result;
1022  }
1023  bool getPutnml() const { return myPutnml; }
1024  void setPutnml(bool val) { myPutnml = val; }
1025  bool opPutnml(const SOP_NodeVerb::CookParms &cookparms) const
1026  {
1027  SOP_Node *thissop = cookparms.getNode();
1028  if (!thissop) return getPutnml();
1029  bool result;
1030  OP_Utils::evalOpParm(result, thissop, "putnml", cookparms.getCookTime(), 0);
1031  return result;
1032  }
1033  bool getPutdist() const { return myPutdist; }
1034  void setPutdist(bool val) { myPutdist = val; }
1035  bool opPutdist(const SOP_NodeVerb::CookParms &cookparms) const
1036  {
1037  SOP_Node *thissop = cookparms.getNode();
1038  if (!thissop) return getPutdist();
1039  bool result;
1040  OP_Utils::evalOpParm(result, thissop, "putdist", cookparms.getCookTime(), 0);
1041  return result;
1042  }
1043  bool getReverserays() const { return myReverserays; }
1044  void setReverserays(bool val) { myReverserays = val; }
1045  bool opReverserays(const SOP_NodeVerb::CookParms &cookparms) const
1046  {
1047  SOP_Node *thissop = cookparms.getNode();
1048  if (!thissop) return getReverserays();
1049  bool result;
1050  OP_Utils::evalOpParm(result, thissop, "reverserays", cookparms.getCookTime(), 0);
1051  return result;
1052  }
1053  fpreal64 getRtolerance() const { return myRtolerance; }
1054  void setRtolerance(fpreal64 val) { myRtolerance = val; }
1056  {
1057  SOP_Node *thissop = cookparms.getNode();
1058  if (!thissop) return getRtolerance();
1059  fpreal64 result;
1060  OP_Utils::evalOpParm(result, thissop, "rtolerance", cookparms.getCookTime(), 0);
1061  return result;
1062  }
1063  fpreal64 getScale() const { return myScale; }
1064  void setScale(fpreal64 val) { myScale = val; }
1065  fpreal64 opScale(const SOP_NodeVerb::CookParms &cookparms) const
1066  {
1067  SOP_Node *thissop = cookparms.getNode();
1068  if (!thissop) return getScale();
1069  fpreal64 result;
1070  OP_Utils::evalOpParm(result, thissop, "scale", cookparms.getCookTime(), 0);
1071  return result;
1072  }
1073  fpreal64 getLift() const { return myLift; }
1074  void setLift(fpreal64 val) { myLift = val; }
1075  fpreal64 opLift(const SOP_NodeVerb::CookParms &cookparms) const
1076  {
1077  SOP_Node *thissop = cookparms.getNode();
1078  if (!thissop) return getLift();
1079  fpreal64 result;
1080  OP_Utils::evalOpParm(result, thissop, "lift", cookparms.getCookTime(), 0);
1081  return result;
1082  }
1083  fpreal64 getBias() const { return myBias; }
1084  void setBias(fpreal64 val) { myBias = val; }
1085  fpreal64 opBias(const SOP_NodeVerb::CookParms &cookparms) const
1086  {
1087  SOP_Node *thissop = cookparms.getNode();
1088  if (!thissop) return getBias();
1089  fpreal64 result;
1090  OP_Utils::evalOpParm(result, thissop, "bias", cookparms.getCookTime(), 0);
1091  return result;
1092  }
1093  bool getMaxraydistcheck() const { return myMaxraydistcheck; }
1094  void setMaxraydistcheck(bool val) { myMaxraydistcheck = val; }
1095  bool opMaxraydistcheck(const SOP_NodeVerb::CookParms &cookparms) const
1096  {
1097  SOP_Node *thissop = cookparms.getNode();
1098  if (!thissop) return getMaxraydistcheck();
1099  bool result;
1100  OP_Utils::evalOpParm(result, thissop, "maxraydistcheck", cookparms.getCookTime(), 0);
1101  return result;
1102  }
1103  fpreal64 getMaxraydist() const { return myMaxraydist; }
1104  void setMaxraydist(fpreal64 val) { myMaxraydist = val; }
1106  {
1107  SOP_Node *thissop = cookparms.getNode();
1108  if (!thissop) return getMaxraydist();
1109  fpreal64 result;
1110  OP_Utils::evalOpParm(result, thissop, "maxraydist", cookparms.getCookTime(), 0);
1111  return result;
1112  }
1113  int64 getSample() const { return mySample; }
1114  void setSample(int64 val) { mySample = val; }
1115  int64 opSample(const SOP_NodeVerb::CookParms &cookparms) const
1116  {
1117  SOP_Node *thissop = cookparms.getNode();
1118  if (!thissop) return getSample();
1119  int64 result;
1120  OP_Utils::evalOpParm(result, thissop, "sample", cookparms.getCookTime(), 0);
1121  return result;
1122  }
1123  fpreal64 getJitter() const { return myJitter; }
1124  void setJitter(fpreal64 val) { myJitter = val; }
1126  {
1127  SOP_Node *thissop = cookparms.getNode();
1128  if (!thissop) return getJitter();
1129  fpreal64 result;
1130  OP_Utils::evalOpParm(result, thissop, "jitter", cookparms.getCookTime(), 0);
1131  return result;
1132  }
1133  Combinetype getCombinetype() const { return Combinetype(myCombinetype); }
1134  void setCombinetype(Combinetype val) { myCombinetype = int64(val); }
1136  {
1137  SOP_Node *thissop = cookparms.getNode();
1138  if (!thissop) return getCombinetype();
1139  int64 result;
1140  OP_Utils::evalOpParm(result, thissop, "combinetype", cookparms.getCookTime(), 0);
1141  return Combinetype(result);
1142  }
1143  int64 getSeed() const { return mySeed; }
1144  void setSeed(int64 val) { mySeed = val; }
1145  int64 opSeed(const SOP_NodeVerb::CookParms &cookparms) const
1146  {
1147  SOP_Node *thissop = cookparms.getNode();
1148  if (!thissop) return getSeed();
1149  int64 result;
1150  OP_Utils::evalOpParm(result, thissop, "seed", cookparms.getCookTime(), 0);
1151  return result;
1152  }
1153  bool getNewgrp() const { return myNewgrp; }
1154  void setNewgrp(bool val) { myNewgrp = val; }
1155  bool opNewgrp(const SOP_NodeVerb::CookParms &cookparms) const
1156  {
1157  SOP_Node *thissop = cookparms.getNode();
1158  if (!thissop) return getNewgrp();
1159  bool result;
1160  OP_Utils::evalOpParm(result, thissop, "newgrp", cookparms.getCookTime(), 0);
1161  return result;
1162  }
1163  const UT_StringHolder & getHitgrp() const { return myHitgrp; }
1164  void setHitgrp(const UT_StringHolder & val) { myHitgrp = val; }
1166  {
1167  SOP_Node *thissop = cookparms.getNode();
1168  if (!thissop) return getHitgrp();
1170  OP_Utils::evalOpParm(result, thissop, "hitgrp", cookparms.getCookTime(), 0);
1171  return result;
1172  }
1173  bool getUseprimnumattrib() const { return myUseprimnumattrib; }
1174  void setUseprimnumattrib(bool val) { myUseprimnumattrib = val; }
1175  bool opUseprimnumattrib(const SOP_NodeVerb::CookParms &cookparms) const
1176  {
1177  SOP_Node *thissop = cookparms.getNode();
1178  if (!thissop) return getUseprimnumattrib();
1179  bool result;
1180  OP_Utils::evalOpParm(result, thissop, "useprimnumattrib", cookparms.getCookTime(), 0);
1181  return result;
1182  }
1183  const UT_StringHolder & getPrimnumattrib() const { return myPrimnumattrib; }
1184  void setPrimnumattrib(const UT_StringHolder & val) { myPrimnumattrib = val; }
1186  {
1187  SOP_Node *thissop = cookparms.getNode();
1188  if (!thissop) return getPrimnumattrib();
1190  OP_Utils::evalOpParm(result, thissop, "primnumattrib", cookparms.getCookTime(), 0);
1191  return result;
1192  }
1193  bool getUseprimuvwattrib() const { return myUseprimuvwattrib; }
1194  void setUseprimuvwattrib(bool val) { myUseprimuvwattrib = val; }
1195  bool opUseprimuvwattrib(const SOP_NodeVerb::CookParms &cookparms) const
1196  {
1197  SOP_Node *thissop = cookparms.getNode();
1198  if (!thissop) return getUseprimuvwattrib();
1199  bool result;
1200  OP_Utils::evalOpParm(result, thissop, "useprimuvwattrib", cookparms.getCookTime(), 0);
1201  return result;
1202  }
1203  const UT_StringHolder & getPrimuvwattrib() const { return myPrimuvwattrib; }
1204  void setPrimuvwattrib(const UT_StringHolder & val) { myPrimuvwattrib = val; }
1206  {
1207  SOP_Node *thissop = cookparms.getNode();
1208  if (!thissop) return getPrimuvwattrib();
1210  OP_Utils::evalOpParm(result, thissop, "primuvwattrib", cookparms.getCookTime(), 0);
1211  return result;
1212  }
1213  bool getGetptattribs() const { return myGetptattribs; }
1214  void setGetptattribs(bool val) { myGetptattribs = val; }
1215  bool opGetptattribs(const SOP_NodeVerb::CookParms &cookparms) const
1216  {
1217  SOP_Node *thissop = cookparms.getNode();
1218  if (!thissop) return getGetptattribs();
1219  bool result;
1220  OP_Utils::evalOpParm(result, thissop, "getptattribs", cookparms.getCookTime(), 0);
1221  return result;
1222  }
1223  const UT_StringHolder & getPtattribnames() const { return myPtattribnames; }
1224  void setPtattribnames(const UT_StringHolder & val) { myPtattribnames = val; }
1226  {
1227  SOP_Node *thissop = cookparms.getNode();
1228  if (!thissop) return getPtattribnames();
1230  OP_Utils::evalOpParm(result, thissop, "ptattribnames", cookparms.getCookTime(), 0);
1231  return result;
1232  }
1233  const UT_StringHolder & getVertexattribnames() const { return myVertexattribnames; }
1234  void setVertexattribnames(const UT_StringHolder & val) { myVertexattribnames = val; }
1236  {
1237  SOP_Node *thissop = cookparms.getNode();
1238  if (!thissop) return getVertexattribnames();
1240  OP_Utils::evalOpParm(result, thissop, "vertexattribnames", cookparms.getCookTime(), 0);
1241  return result;
1242  }
1243  const UT_StringHolder & getPrimitiveattribnames() const { return myPrimitiveattribnames; }
1244  void setPrimitiveattribnames(const UT_StringHolder & val) { myPrimitiveattribnames = val; }
1246  {
1247  SOP_Node *thissop = cookparms.getNode();
1248  if (!thissop) return getPrimitiveattribnames();
1250  OP_Utils::evalOpParm(result, thissop, "primitiveattribnames", cookparms.getCookTime(), 0);
1251  return result;
1252  }
1253  const UT_StringHolder & getDetailattribnames() const { return myDetailattribnames; }
1254  void setDetailattribnames(const UT_StringHolder & val) { myDetailattribnames = val; }
1256  {
1257  SOP_Node *thissop = cookparms.getNode();
1258  if (!thissop) return getDetailattribnames();
1260  OP_Utils::evalOpParm(result, thissop, "detailattribnames", cookparms.getCookTime(), 0);
1261  return result;
1262  }
1263 
1264 private:
1265  UT_StringHolder myGroup;
1266  int64 myEntity;
1267  UT_StringHolder myCollision;
1268  int64 myMethod;
1269  int64 myDirMethod;
1270  UT_Vector3D myDir;
1271  UT_StringHolder myDirAttrib;
1272  bool myShowguide;
1273  bool myDotrans;
1274  bool myLookfar;
1275  bool myPutnml;
1276  bool myPutdist;
1277  bool myReverserays;
1278  fpreal64 myRtolerance;
1279  fpreal64 myScale;
1280  fpreal64 myLift;
1281  fpreal64 myBias;
1282  bool myMaxraydistcheck;
1283  fpreal64 myMaxraydist;
1284  int64 mySample;
1285  fpreal64 myJitter;
1286  int64 myCombinetype;
1287  int64 mySeed;
1288  bool myNewgrp;
1289  UT_StringHolder myHitgrp;
1290  bool myUseprimnumattrib;
1291  UT_StringHolder myPrimnumattrib;
1292  bool myUseprimuvwattrib;
1293  UT_StringHolder myPrimuvwattrib;
1294  bool myGetptattribs;
1295  UT_StringHolder myPtattribnames;
1296  UT_StringHolder myVertexattribnames;
1297  UT_StringHolder myPrimitiveattribnames;
1298  UT_StringHolder myDetailattribnames;
1299 
1300 };
static void saveData(std::ostream &os, int64 v)
fpreal64 getBias() const
static void loadData(UT_IStream &is, UT_Vector3D &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
void setPrimitiveattribnames(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Vector2I &v)
bool getUseprimnumattrib() const
void setLift(fpreal64 val)
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
void setHitgrp(const UT_StringHolder &val)
UT_StringHolder opCollision(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
T clampMaxValue(fpreal maxvalue, const T &src) const
Definition: OP_NodeParms.h:315
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
const UT_StringHolder & getDetailattribnames() const
fpreal64 getJitter() const
bool opLookfar(const SOP_NodeVerb::CookParms &cookparms) const
void setVertexattribnames(const UT_StringHolder &val)
UT_StringHolder opPrimuvwattrib(const SOP_NodeVerb::CookParms &cookparms) const
exint bread(int32 *buffer, exint asize=1)
static void loadData(UT_IStream &is, UT_Vector2D &v)
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
fpreal getTime() const
Definition: OP_Context.h:62
static void loadData(UT_IStream &is, int64 &v)
void setCombinetype(Combinetype val)
DirMethod opDirMethod(const SOP_NodeVerb::CookParms &cookparms) const
Method opMethod(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
void setBias(fpreal64 val)
void setPutdist(bool val)
const OP_Context & context() const
Definition: OP_NodeParms.h:97
static void saveData(std::ostream &os, PRM_DataItemHandle s)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
bool opShowguide(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
static void loadData(UT_IStream &is, UT_StringHolder &v)
SYS_FORCE_INLINE const char * buffer() const
DirMethod getDirMethod() const
void setMaxraydist(fpreal64 val)
fpreal64 opBias(const SOP_NodeVerb::CookParms &cookparms) const
GLdouble s
Definition: glad.h:3009
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
An output stream object that owns its own string buffer storage.
**But if you need a result
Definition: thread.h:613
static void loadData(UT_IStream &is, UT_Vector4D &v)
void setDotrans(bool val)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
T clampMinValue(fpreal minvalue, const T &src) const
Definition: OP_NodeParms.h:308
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
bool getShowguide() const
UT_StringHolder opPtattribnames(const SOP_NodeVerb::CookParms &cookparms) const
bool getReverserays() 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 & getDirAttrib() const
fpreal64 getScale() const
bool operator==(const SOP_RayParms &src) const
void setDirMethod(DirMethod val)
void setGroup(const UT_StringHolder &val)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
Combinetype getCombinetype() const
const UT_StringHolder & getHitgrp() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
double fpreal64
Definition: SYS_Types.h:201
fpreal64 opScale(const SOP_NodeVerb::CookParms &cookparms) const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
void setSample(int64 val)
bool getDotrans() const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
void setLookfar(bool val)
UT_StringHolder opPrimnumattrib(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opMaxraydist(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
Entity getEntity() const
void setNewgrp(bool val)
fpreal64 getLift() const
Entity opEntity(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
const UT_StringHolder & getVertexattribnames() const
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
exint length() const
void setCollision(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Matrix2D &v)
SYS_FORCE_INLINE const char * buffer() const
void setMaxraydistcheck(bool val)
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
void setMethod(Method val)
void setRtolerance(fpreal64 val)
Combinetype opCombinetype(const SOP_NodeVerb::CookParms &cookparms) const
bool opDotrans(const SOP_NodeVerb::CookParms &cookparms) const
int64 getSeed() const
fpreal64 opRtolerance(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector3I &v)
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
static void saveData(std::ostream &os, UT_Vector3D v)
bool opNewgrp(const SOP_NodeVerb::CookParms &cookparms) const
bool opUseprimuvwattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setUseprimnumattrib(bool val)
void setPutnml(bool val)
const char * getNestParmName(TempIndex fieldnum) const override
UT_StringHolder opPrimitiveattribnames(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D getDir() const
const UT_StringHolder & getPrimitiveattribnames() const
Method getMethod() const
long long int64
Definition: SYS_Types.h:116
void loadFromOpSubclass(const LoadParms &loadparms) override
void setDetailattribnames(const UT_StringHolder &val)
void setUseprimuvwattrib(bool val)
int64 getSample() const
static void saveData(std::ostream &os, UT_Matrix4D v)
UT_Vector3T< fpreal64 > UT_Vector3D
void setEntity(Entity val)
bool getLookfar() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
bool getUseprimuvwattrib() const
void setGetptattribs(bool val)
void setShowguide(bool val)
bool opGetptattribs(const SOP_NodeVerb::CookParms &cookparms) const
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
void setReverserays(bool val)
static void saveData(std::ostream &os, UT_Vector4D v)
GT_API const UT_StringHolder version
ParmType getNestParmType(TempIndex fieldnum) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
bool opMaxraydistcheck(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_StringHolder s)
UT_Vector3D opDir(const SOP_NodeVerb::CookParms &cookparms) const
void setDirAttrib(const UT_StringHolder &val)
void setJitter(fpreal64 val)
void setScale(fpreal64 val)
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
void coerceValue(T &result, const S &src) const
Definition: OP_NodeParms.h:301
fpreal64 opJitter(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getMaxraydist() const
static void saveData(std::ostream &os, UT_Matrix3D v)
void setPrimuvwattrib(const UT_StringHolder &val)
bool isParmColorRamp(exint idx) const override
void setSeed(int64 val)
void save(std::ostream &os) const
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
void setPrimnumattrib(const UT_StringHolder &val)
fpreal64 fpreal
Definition: SYS_Types.h:277
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
fpreal64 opLift(const SOP_NodeVerb::CookParms &cookparms) const
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
bool getNewgrp() const
exint getNestNumParms(TempIndex idx) const override
Utility class for containing a color ramp.
Definition: UT_Ramp.h:88
void setDir(UT_Vector3D val)
static void saveData(std::ostream &os, UT_Matrix2D v)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
static int version()
Definition: SOP_Ray.proto.h:54
GLuint GLfloat * val
Definition: glcorearb.h:1608
Vec3< typename MatType::value_type > getScale(const MatType &mat)
Return a Vec3 representing the lengths of the passed matrix's upper 3×3's rows.
Definition: Mat.h:633
UT_StringHolder opDetailattribnames(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opVertexattribnames(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opHitgrp(const SOP_NodeVerb::CookParms &cookparms) const
#define SOP_API
Definition: SOP_API.h:10
static void loadData(UT_IStream &is, bool &v)
const UT_StringHolder & getPtattribnames() const
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
void setPtattribnames(const UT_StringHolder &val)
bool opReverserays(const SOP_NodeVerb::CookParms &cookparms) const
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
bool getMaxraydistcheck() const
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
const UT_StringHolder & getGroup() const
fpreal64 getRtolerance() const
const char * findChar(int c) const
Definition: UT_String.h:1385
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
UT_StringHolder opDirAttrib(const SOP_NodeVerb::CookParms &cookparms) const
Definition: core.h:1131
bool getGetptattribs() const
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void copyFrom(const OP_NodeParms *src) override
GLboolean r
Definition: glcorearb.h:1222
bool getPutnml() const
const UT_StringHolder & getCollision() const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
static void saveData(std::ostream &os, UT_Vector2D v)
bool getPutdist() const
type
Definition: core.h:1059
static void saveData(std::ostream &os, fpreal64 v)
const UT_StringHolder & getPrimuvwattrib() const
bool operator!=(const SOP_RayParms &src) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
bool opUseprimnumattrib(const SOP_NodeVerb::CookParms &cookparms) const
bool load(UT_IStream &is)
static void loadData(UT_IStream &is, fpreal64 &v)
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
static void loadData(UT_IStream &is, UT_Matrix4D &v)
bool opPutnml(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
SYS_FORCE_INLINE bool isstring() const
bool opPutdist(const SOP_NodeVerb::CookParms &cookparms) const
OP_NodeParms & operator=(const OP_NodeParms &)=default
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
const UT_StringHolder & getPrimnumattrib() const
int64 opSeed(const SOP_NodeVerb::CookParms &cookparms) const
int64 opSample(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, bool v)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
static void loadData(UT_IStream &is, UT_Vector4I &v)
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663