HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_CrowdMotionPathAvoidCore.proto.h
Go to the documentation of this file.
1 /* Automagically Generated by generate_proto.py
2  * Do not Edit
3  */
4 #pragma once
5 
6 #include <SOP/SOP_API.h>
7 #include <SOP/SOP_NodeVerb.h>
8 #include <SOP/SOP_GraphProxy.h>
9 
10 #include <OP/OP_Utils.h>
11 #include <PRM/PRM_Parm.h>
12 #include <UT/UT_IStream.h>
13 #include <UT/UT_NTStreamUtil.h>
14 #include <UT/UT_Ramp.h>
15 #include <UT/UT_SharedPtr.h>
16 #include <UT/UT_StringHolder.h>
17 #include <UT/UT_StringStream.h>
18 #include <UT/UT_VectorTypes.h>
19 #include <UT/UT_EnvControl.h>
20 #include <SYS/SYS_Types.h>
21 
22 class DEP_MicroNode;
23 
25 {
26 public:
27  static int version() { return 1; }
28 
30  {
31  myGroup = ""_UTsh;
32  myEnableAvoidance = true;
33  myMaxCollisionTime = 3;
34  myEnableNeighbors = true;
35  myNeighborDistance = 10;
36  myMaxNeighbors = 100;
37  myEnableObstacles = true;
38  myObstacleDistance = 10;
39  myObstaclePadding = 1;
40  myHorizontalFOV = 180;
41  myFOVSamples = 8;
42  myTurnSpeedThreshold = 0.25;
43  myUseMaxInitialRotation = false;
44  myMaxInitialRotation = 45;
45  myMaxTurnRate = 90;
46  myConstrainTurnAccel = false;
47  myTurnStiffness = 10;
48  myTurnDamping = 5;
49  myGoalPosWeight = 0.1;
50  myAddCollisionPointGroup = false;
51  myCollisionPointGroup = "collided"_UTsh;
52  myTimestep = 0;
53  myUseStartTime = false;
54  myStartTime = 0;
55  myUseEndTime = false;
56  myEndTime = -1;
57  myReferenceUp = UT_Vector3D(0,1,0);
58 
59  }
60 
65 
67 
69  {
70  if (myGroup != src.myGroup) return false;
71  if (myEnableAvoidance != src.myEnableAvoidance) return false;
72  if (myMaxCollisionTime != src.myMaxCollisionTime) return false;
73  if (myEnableNeighbors != src.myEnableNeighbors) return false;
74  if (myNeighborDistance != src.myNeighborDistance) return false;
75  if (myMaxNeighbors != src.myMaxNeighbors) return false;
76  if (myEnableObstacles != src.myEnableObstacles) return false;
77  if (myObstacleDistance != src.myObstacleDistance) return false;
78  if (myObstaclePadding != src.myObstaclePadding) return false;
79  if (myHorizontalFOV != src.myHorizontalFOV) return false;
80  if (myFOVSamples != src.myFOVSamples) return false;
81  if (myTurnSpeedThreshold != src.myTurnSpeedThreshold) return false;
82  if (myUseMaxInitialRotation != src.myUseMaxInitialRotation) return false;
83  if (myMaxInitialRotation != src.myMaxInitialRotation) return false;
84  if (myMaxTurnRate != src.myMaxTurnRate) return false;
85  if (myConstrainTurnAccel != src.myConstrainTurnAccel) return false;
86  if (myTurnStiffness != src.myTurnStiffness) return false;
87  if (myTurnDamping != src.myTurnDamping) return false;
88  if (myGoalPosWeight != src.myGoalPosWeight) return false;
89  if (myAddCollisionPointGroup != src.myAddCollisionPointGroup) return false;
90  if (myCollisionPointGroup != src.myCollisionPointGroup) return false;
91  if (myTimestep != src.myTimestep) return false;
92  if (myUseStartTime != src.myUseStartTime) return false;
93  if (myStartTime != src.myStartTime) return false;
94  if (myUseEndTime != src.myUseEndTime) return false;
95  if (myEndTime != src.myEndTime) return false;
96  if (myReferenceUp != src.myReferenceUp) return false;
97 
98  return true;
99  }
101  {
102  return !operator==(src);
103  }
104 
105 
106 
107  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
108  {
109  myGroup = ""_UTsh;
110  if (true)
111  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
112  myEnableAvoidance = true;
113  if (true)
114  graph->evalOpParm(myEnableAvoidance, nodeidx, "enableavoidance", time, 0);
115  myMaxCollisionTime = 3;
116  if (true && ( (true&&!(((getEnableAvoidance()==0)))) ) )
117  graph->evalOpParm(myMaxCollisionTime, nodeidx, "maxcollisiontime", time, 0);
118  myEnableNeighbors = true;
119  if (true && ( (true&&!(((getEnableAvoidance()==0)))) ) )
120  graph->evalOpParm(myEnableNeighbors, nodeidx, "enableneighbors", time, 0);
121  myNeighborDistance = 10;
122  if (true && ( (true&&!(((getEnableAvoidance()==0))||((getEnableNeighbors()==0)))) ) )
123  graph->evalOpParm(myNeighborDistance, nodeidx, "neighbordistance", time, 0);
124  myMaxNeighbors = 100;
125  if (true && ( (true&&!(((getEnableAvoidance()==0))||((getEnableNeighbors()==0)))) ) )
126  graph->evalOpParm(myMaxNeighbors, nodeidx, "maxneighbors", time, 0);
127  myEnableObstacles = true;
128  if (true && ( (true&&!(((getEnableAvoidance()==0)))) ) )
129  graph->evalOpParm(myEnableObstacles, nodeidx, "enableobstacles", time, 0);
130  myObstacleDistance = 10;
131  if (true && ( (true&&!(((getEnableObstacles()==0))||((getEnableAvoidance()==0)))) ) )
132  graph->evalOpParm(myObstacleDistance, nodeidx, "obstacledistance", time, 0);
133  myObstaclePadding = 1;
134  if (true && ( (true&&!(((getEnableObstacles()==0))||((getEnableAvoidance()==0)))) ) )
135  graph->evalOpParm(myObstaclePadding, nodeidx, "obstaclepadding", time, 0);
136  myHorizontalFOV = 180;
137  if (true && ( (true&&!(((getEnableObstacles()==0))||((getEnableAvoidance()==0)))) ) )
138  graph->evalOpParm(myHorizontalFOV, nodeidx, "horizontalfov", time, 0);
139  myFOVSamples = 8;
140  if (true && ( (true&&!(((getEnableObstacles()==0))||((getEnableAvoidance()==0)))) ) )
141  graph->evalOpParm(myFOVSamples, nodeidx, "fovsamples", time, 0);
142  myTurnSpeedThreshold = 0.25;
143  if (true && ( (true&&!(((getEnableAvoidance()==0)))) ) )
144  graph->evalOpParm(myTurnSpeedThreshold, nodeidx, "turnspeedthreshold", time, 0);
145  myUseMaxInitialRotation = false;
146  if (true && ( (true&&!(((getEnableAvoidance()==0)))) ) )
147  graph->evalOpParm(myUseMaxInitialRotation, nodeidx, "usemaxinitialrotation", time, 0);
148  myMaxInitialRotation = 45;
149  if (true && ( (true&&!(((getEnableAvoidance()==0))||((getUseMaxInitialRotation()==0)))) ) )
150  graph->evalOpParm(myMaxInitialRotation, nodeidx, "maxinitialrotation", time, 0);
151  myMaxTurnRate = 90;
152  if (true && ( (true&&!(((getEnableAvoidance()==0)))) ) )
153  graph->evalOpParm(myMaxTurnRate, nodeidx, "maxturnrate", time, 0);
154  myConstrainTurnAccel = false;
155  if (true && ( (true&&!(((getEnableAvoidance()==0)))) ) )
156  graph->evalOpParm(myConstrainTurnAccel, nodeidx, "constrainturnaccel", time, 0);
157  myTurnStiffness = 10;
158  if (true && ( (true&&!(((getConstrainTurnAccel()==0))||((getEnableAvoidance()==0)))) ) )
159  graph->evalOpParm(myTurnStiffness, nodeidx, "turnstiffness", time, 0);
160  myTurnDamping = 5;
161  if (true && ( (true&&!(((getConstrainTurnAccel()==0))||((getEnableAvoidance()==0)))) ) )
162  graph->evalOpParm(myTurnDamping, nodeidx, "turndamping", time, 0);
163  myGoalPosWeight = 0.1;
164  if (true && ( (true&&!(((getEnableAvoidance()==0)))) ) )
165  graph->evalOpParm(myGoalPosWeight, nodeidx, "goalposweight", time, 0);
166  myAddCollisionPointGroup = false;
167  if (true)
168  graph->evalOpParm(myAddCollisionPointGroup, nodeidx, "addcollisionptgroup", time, 0);
169  myCollisionPointGroup = "collided"_UTsh;
170  if (true && ( (true&&!(((getAddCollisionPointGroup()==0)))) ) )
171  graph->evalOpParm(myCollisionPointGroup, nodeidx, "collisionptgroup", time, 0);
172  myTimestep = 0;
173  if (true)
174  graph->evalOpParm(myTimestep, nodeidx, "timestep", time, 0);
175  myUseStartTime = false;
176  if (true)
177  graph->evalOpParm(myUseStartTime, nodeidx, "usestarttime", time, 0);
178  myStartTime = 0;
179  if (true && ( (true&&!(((getUseStartTime()==0)))) ) )
180  graph->evalOpParm(myStartTime, nodeidx, "starttime", time, 0);
181  myUseEndTime = false;
182  if (true)
183  graph->evalOpParm(myUseEndTime, nodeidx, "useendtime", time, 0);
184  myEndTime = -1;
185  if (true && ( (true&&!(((getUseEndTime()==0)))) ) )
186  graph->evalOpParm(myEndTime, nodeidx, "endtime", time, 0);
187  myReferenceUp = UT_Vector3D(0,1,0);
188  if (true)
189  graph->evalOpParm(myReferenceUp, nodeidx, "refup", time, 0);
190 
191  }
192 
193 
194  void loadFromOpSubclass(const LoadParms &loadparms) override
195  {
196  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
197  }
198 
199 
200  void copyFrom(const OP_NodeParms *src) override
201  {
202  *this = *((const SOP_CrowdMotionPathAvoidCoreParms *)src);
203  }
204 
205  template <typename T>
206  void
207  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
208  {
209  if (idx.size() < 1)
210  return;
211  UT_ASSERT(idx.size() == instance.size()+1);
212  if (idx.size() != instance.size()+1)
213  return;
214  switch (idx[0])
215  {
216  case 0:
217  coerceValue(value, myGroup);
218  break;
219  case 1:
220  coerceValue(value, myEnableAvoidance);
221  break;
222  case 2:
223  coerceValue(value, myMaxCollisionTime);
224  break;
225  case 3:
226  coerceValue(value, myEnableNeighbors);
227  break;
228  case 4:
229  coerceValue(value, myNeighborDistance);
230  break;
231  case 5:
232  coerceValue(value, myMaxNeighbors);
233  break;
234  case 6:
235  coerceValue(value, myEnableObstacles);
236  break;
237  case 7:
238  coerceValue(value, myObstacleDistance);
239  break;
240  case 8:
241  coerceValue(value, myObstaclePadding);
242  break;
243  case 9:
244  coerceValue(value, myHorizontalFOV);
245  break;
246  case 10:
247  coerceValue(value, myFOVSamples);
248  break;
249  case 11:
250  coerceValue(value, myTurnSpeedThreshold);
251  break;
252  case 12:
253  coerceValue(value, myUseMaxInitialRotation);
254  break;
255  case 13:
256  coerceValue(value, myMaxInitialRotation);
257  break;
258  case 14:
259  coerceValue(value, myMaxTurnRate);
260  break;
261  case 15:
262  coerceValue(value, myConstrainTurnAccel);
263  break;
264  case 16:
265  coerceValue(value, myTurnStiffness);
266  break;
267  case 17:
268  coerceValue(value, myTurnDamping);
269  break;
270  case 18:
271  coerceValue(value, myGoalPosWeight);
272  break;
273  case 19:
274  coerceValue(value, myAddCollisionPointGroup);
275  break;
276  case 20:
277  coerceValue(value, myCollisionPointGroup);
278  break;
279  case 21:
280  coerceValue(value, myTimestep);
281  break;
282  case 22:
283  coerceValue(value, myUseStartTime);
284  break;
285  case 23:
286  coerceValue(value, myStartTime);
287  break;
288  case 24:
289  coerceValue(value, myUseEndTime);
290  break;
291  case 25:
292  coerceValue(value, myEndTime);
293  break;
294  case 26:
295  coerceValue(value, myReferenceUp);
296  break;
297 
298  }
299  }
300 
301  bool isParmColorRamp(exint idx) const override
302  {
303  switch (idx)
304  {
305 
306  }
307  return false;
308  }
309 
310  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
311  { doGetParmValue(idx, instance, value); }
312  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
313  { doGetParmValue(idx, instance, value); }
314  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
315  { doGetParmValue(idx, instance, value); }
316  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
317  { doGetParmValue(idx, instance, value); }
318  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
319  { doGetParmValue(idx, instance, value); }
320  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
321  { doGetParmValue(idx, instance, value); }
322  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
323  { doGetParmValue(idx, instance, value); }
324  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
325  { doGetParmValue(idx, instance, value); }
326  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
327  { doGetParmValue(idx, instance, value); }
328  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
329  { doGetParmValue(idx, instance, value); }
330  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
331  { doGetParmValue(idx, instance, value); }
332 
333  template <typename T>
334  void
335  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
336  {
337  if (idx.size() < 1)
338  return;
339  UT_ASSERT(idx.size() == instance.size()+1);
340  if (idx.size() != instance.size()+1)
341  return;
342  switch (idx[0])
343  {
344  case 0:
345  coerceValue(myGroup, ( ( value ) ));
346  break;
347  case 1:
348  coerceValue(myEnableAvoidance, ( ( value ) ));
349  break;
350  case 2:
351  coerceValue(myMaxCollisionTime, ( ( value ) ));
352  break;
353  case 3:
354  coerceValue(myEnableNeighbors, ( ( value ) ));
355  break;
356  case 4:
357  coerceValue(myNeighborDistance, clampMinValue(0, ( value ) ));
358  break;
359  case 5:
360  coerceValue(myMaxNeighbors, clampMinValue(0, ( value ) ));
361  break;
362  case 6:
363  coerceValue(myEnableObstacles, ( ( value ) ));
364  break;
365  case 7:
366  coerceValue(myObstacleDistance, clampMinValue(0, ( value ) ));
367  break;
368  case 8:
369  coerceValue(myObstaclePadding, clampMinValue(0, ( value ) ));
370  break;
371  case 9:
372  coerceValue(myHorizontalFOV, clampMinValue(0, ( value ) ));
373  break;
374  case 10:
375  coerceValue(myFOVSamples, clampMinValue(0, ( value ) ));
376  break;
377  case 11:
378  coerceValue(myTurnSpeedThreshold, ( ( value ) ));
379  break;
380  case 12:
381  coerceValue(myUseMaxInitialRotation, ( ( value ) ));
382  break;
383  case 13:
384  coerceValue(myMaxInitialRotation, clampMinValue(0, ( value ) ));
385  break;
386  case 14:
387  coerceValue(myMaxTurnRate, ( ( value ) ));
388  break;
389  case 15:
390  coerceValue(myConstrainTurnAccel, ( ( value ) ));
391  break;
392  case 16:
393  coerceValue(myTurnStiffness, ( ( value ) ));
394  break;
395  case 17:
396  coerceValue(myTurnDamping, ( ( value ) ));
397  break;
398  case 18:
399  coerceValue(myGoalPosWeight, clampMinValue(0, ( value ) ));
400  break;
401  case 19:
402  coerceValue(myAddCollisionPointGroup, ( ( value ) ));
403  break;
404  case 20:
405  coerceValue(myCollisionPointGroup, ( ( value ) ));
406  break;
407  case 21:
408  coerceValue(myTimestep, clampMinValue(0, ( value ) ));
409  break;
410  case 22:
411  coerceValue(myUseStartTime, ( ( value ) ));
412  break;
413  case 23:
414  coerceValue(myStartTime, ( ( value ) ));
415  break;
416  case 24:
417  coerceValue(myUseEndTime, ( ( value ) ));
418  break;
419  case 25:
420  coerceValue(myEndTime, ( ( value ) ));
421  break;
422  case 26:
423  coerceValue(myReferenceUp, ( ( value ) ));
424  break;
425 
426  }
427  }
428 
429  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
430  { doSetParmValue(idx, instance, value); }
431  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
432  { doSetParmValue(idx, instance, value); }
433  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
434  { doSetParmValue(idx, instance, value); }
435  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
436  { doSetParmValue(idx, instance, value); }
437  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
438  { doSetParmValue(idx, instance, value); }
439  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
440  { doSetParmValue(idx, instance, value); }
441  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
442  { doSetParmValue(idx, instance, value); }
443  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
444  { doSetParmValue(idx, instance, value); }
445  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
446  { doSetParmValue(idx, instance, value); }
447  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
448  { doSetParmValue(idx, instance, value); }
449  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
450  { doSetParmValue(idx, instance, value); }
451 
452  exint getNestNumParms(TempIndex idx) const override
453  {
454  if (idx.size() == 0)
455  return 27;
456  switch (idx[0])
457  {
458 
459  }
460  // Invalid
461  return 0;
462  }
463 
464  const char *getNestParmName(TempIndex fieldnum) const override
465  {
466  if (fieldnum.size() < 1)
467  return 0;
468  switch (fieldnum[0])
469  {
470  case 0:
471  return "group";
472  case 1:
473  return "enableavoidance";
474  case 2:
475  return "maxcollisiontime";
476  case 3:
477  return "enableneighbors";
478  case 4:
479  return "neighbordistance";
480  case 5:
481  return "maxneighbors";
482  case 6:
483  return "enableobstacles";
484  case 7:
485  return "obstacledistance";
486  case 8:
487  return "obstaclepadding";
488  case 9:
489  return "horizontalfov";
490  case 10:
491  return "fovsamples";
492  case 11:
493  return "turnspeedthreshold";
494  case 12:
495  return "usemaxinitialrotation";
496  case 13:
497  return "maxinitialrotation";
498  case 14:
499  return "maxturnrate";
500  case 15:
501  return "constrainturnaccel";
502  case 16:
503  return "turnstiffness";
504  case 17:
505  return "turndamping";
506  case 18:
507  return "goalposweight";
508  case 19:
509  return "addcollisionptgroup";
510  case 20:
511  return "collisionptgroup";
512  case 21:
513  return "timestep";
514  case 22:
515  return "usestarttime";
516  case 23:
517  return "starttime";
518  case 24:
519  return "useendtime";
520  case 25:
521  return "endtime";
522  case 26:
523  return "refup";
524 
525  }
526  return 0;
527  }
528 
529  ParmType getNestParmType(TempIndex fieldnum) const override
530  {
531  if (fieldnum.size() < 1)
532  return PARM_UNSUPPORTED;
533  switch (fieldnum[0])
534  {
535  case 0:
536  return PARM_STRING;
537  case 1:
538  return PARM_INTEGER;
539  case 2:
540  return PARM_FLOAT;
541  case 3:
542  return PARM_INTEGER;
543  case 4:
544  return PARM_FLOAT;
545  case 5:
546  return PARM_INTEGER;
547  case 6:
548  return PARM_INTEGER;
549  case 7:
550  return PARM_FLOAT;
551  case 8:
552  return PARM_FLOAT;
553  case 9:
554  return PARM_FLOAT;
555  case 10:
556  return PARM_INTEGER;
557  case 11:
558  return PARM_FLOAT;
559  case 12:
560  return PARM_INTEGER;
561  case 13:
562  return PARM_FLOAT;
563  case 14:
564  return PARM_FLOAT;
565  case 15:
566  return PARM_INTEGER;
567  case 16:
568  return PARM_FLOAT;
569  case 17:
570  return PARM_FLOAT;
571  case 18:
572  return PARM_FLOAT;
573  case 19:
574  return PARM_INTEGER;
575  case 20:
576  return PARM_STRING;
577  case 21:
578  return PARM_FLOAT;
579  case 22:
580  return PARM_INTEGER;
581  case 23:
582  return PARM_FLOAT;
583  case 24:
584  return PARM_INTEGER;
585  case 25:
586  return PARM_FLOAT;
587  case 26:
588  return PARM_VECTOR3;
589 
590  }
591  return PARM_UNSUPPORTED;
592  }
593 
594  // Boiler plate to load individual types.
595  static void loadData(UT_IStream &is, int64 &v)
596  { is.bread(&v, 1); }
597  static void loadData(UT_IStream &is, bool &v)
598  { int64 iv; is.bread(&iv, 1); v = iv; }
599  static void loadData(UT_IStream &is, fpreal64 &v)
600  { is.bread<fpreal64>(&v, 1); }
601  static void loadData(UT_IStream &is, UT_Vector2D &v)
602  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
603  static void loadData(UT_IStream &is, UT_Vector3D &v)
604  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
605  is.bread<fpreal64>(&v.z(), 1); }
606  static void loadData(UT_IStream &is, UT_Vector4D &v)
607  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
608  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
609  static void loadData(UT_IStream &is, UT_Matrix2D &v)
610  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
611  static void loadData(UT_IStream &is, UT_Matrix3D &v)
612  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
613  static void loadData(UT_IStream &is, UT_Matrix4D &v)
614  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
615  static void loadData(UT_IStream &is, UT_Vector2I &v)
616  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
617  static void loadData(UT_IStream &is, UT_Vector3I &v)
618  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
619  is.bread<int64>(&v.z(), 1); }
620  static void loadData(UT_IStream &is, UT_Vector4I &v)
621  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
622  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
624  { is.bread(v); }
626  { UT_StringHolder rampdata;
627  loadData(is, rampdata);
628  if (rampdata.isstring())
629  {
630  v.reset(new UT_Ramp());
631  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
632  v->load(istr);
633  }
634  else v.reset();
635  }
638  loadData(is, data);
639  if (data.isstring())
640  {
641  // Find the data type.
642  const char *colon = UT_StringWrap(data).findChar(':');
643  if (colon)
644  {
645  int typelen = colon - data.buffer();
647  type.strncpy(data.buffer(), typelen);
648  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
649 
650  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
651  }
652  }
653  else v.reset();
654  }
655 
656  static void saveData(std::ostream &os, int64 v)
657  { UTwrite(os, &v); }
658  static void saveData(std::ostream &os, bool v)
659  { int64 iv = v; UTwrite(os, &iv); }
660  static void saveData(std::ostream &os, fpreal64 v)
661  { UTwrite<fpreal64>(os, &v); }
662  static void saveData(std::ostream &os, UT_Vector2D v)
663  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
664  static void saveData(std::ostream &os, UT_Vector3D v)
665  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
666  UTwrite<fpreal64>(os, &v.z()); }
667  static void saveData(std::ostream &os, UT_Vector4D v)
668  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
669  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
670  static void saveData(std::ostream &os, UT_Matrix2D v)
672  static void saveData(std::ostream &os, UT_Matrix3D v)
674  static void saveData(std::ostream &os, UT_Matrix4D v)
676  static void saveData(std::ostream &os, UT_StringHolder s)
677  { UT_StringWrap(s).saveBinary(os); }
678  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
680  UT_OStringStream ostr;
681  if (s) s->save(ostr);
682  result = ostr.str();
683  saveData(os, result);
684  }
685  static void saveData(std::ostream &os, PRM_DataItemHandle s)
687  UT_OStringStream ostr;
688  if (s)
689  {
690  ostr << s->getDataTypeToken();
691  ostr << ":";
692  s->saveBinary(ostr);
693  }
694  result = ostr.str();
695  saveData(os, result);
696  }
697 
698 
699  void save(std::ostream &os) const
700  {
701  int32 v = version();
702  UTwrite(os, &v);
703  saveData(os, myGroup);
704  saveData(os, myEnableAvoidance);
705  saveData(os, myMaxCollisionTime);
706  saveData(os, myEnableNeighbors);
707  saveData(os, myNeighborDistance);
708  saveData(os, myMaxNeighbors);
709  saveData(os, myEnableObstacles);
710  saveData(os, myObstacleDistance);
711  saveData(os, myObstaclePadding);
712  saveData(os, myHorizontalFOV);
713  saveData(os, myFOVSamples);
714  saveData(os, myTurnSpeedThreshold);
715  saveData(os, myUseMaxInitialRotation);
716  saveData(os, myMaxInitialRotation);
717  saveData(os, myMaxTurnRate);
718  saveData(os, myConstrainTurnAccel);
719  saveData(os, myTurnStiffness);
720  saveData(os, myTurnDamping);
721  saveData(os, myGoalPosWeight);
722  saveData(os, myAddCollisionPointGroup);
723  saveData(os, myCollisionPointGroup);
724  saveData(os, myTimestep);
725  saveData(os, myUseStartTime);
726  saveData(os, myStartTime);
727  saveData(os, myUseEndTime);
728  saveData(os, myEndTime);
729  saveData(os, myReferenceUp);
730 
731  }
732 
733  bool load(UT_IStream &is)
734  {
735  int32 v;
736  is.bread(&v, 1);
737  if (version() != v)
738  {
739  // Fail incompatible versions
740  return false;
741  }
742  loadData(is, myGroup);
743  loadData(is, myEnableAvoidance);
744  loadData(is, myMaxCollisionTime);
745  loadData(is, myEnableNeighbors);
746  loadData(is, myNeighborDistance);
747  loadData(is, myMaxNeighbors);
748  loadData(is, myEnableObstacles);
749  loadData(is, myObstacleDistance);
750  loadData(is, myObstaclePadding);
751  loadData(is, myHorizontalFOV);
752  loadData(is, myFOVSamples);
753  loadData(is, myTurnSpeedThreshold);
754  loadData(is, myUseMaxInitialRotation);
755  loadData(is, myMaxInitialRotation);
756  loadData(is, myMaxTurnRate);
757  loadData(is, myConstrainTurnAccel);
758  loadData(is, myTurnStiffness);
759  loadData(is, myTurnDamping);
760  loadData(is, myGoalPosWeight);
761  loadData(is, myAddCollisionPointGroup);
762  loadData(is, myCollisionPointGroup);
763  loadData(is, myTimestep);
764  loadData(is, myUseStartTime);
765  loadData(is, myStartTime);
766  loadData(is, myUseEndTime);
767  loadData(is, myEndTime);
768  loadData(is, myReferenceUp);
769 
770  return true;
771  }
772 
773  const UT_StringHolder & getGroup() const { return myGroup; }
774  void setGroup(const UT_StringHolder & val) { myGroup = val; }
776  {
777  SOP_Node *thissop = cookparms.getNode();
778  if (!thissop) return getGroup();
780  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
781  return result;
782  }
783  bool getEnableAvoidance() const { return myEnableAvoidance; }
784  void setEnableAvoidance(bool val) { myEnableAvoidance = val; }
785  bool opEnableAvoidance(const SOP_NodeVerb::CookParms &cookparms) const
786  {
787  SOP_Node *thissop = cookparms.getNode();
788  if (!thissop) return getEnableAvoidance();
789  bool result;
790  OP_Utils::evalOpParm(result, thissop, "enableavoidance", cookparms.getCookTime(), 0);
791  return result;
792  }
793  fpreal64 getMaxCollisionTime() const { return myMaxCollisionTime; }
794  void setMaxCollisionTime(fpreal64 val) { myMaxCollisionTime = val; }
796  {
797  SOP_Node *thissop = cookparms.getNode();
798  if (!thissop) return getMaxCollisionTime();
800  OP_Utils::evalOpParm(result, thissop, "maxcollisiontime", cookparms.getCookTime(), 0);
801  return result;
802  }
803  bool getEnableNeighbors() const { return myEnableNeighbors; }
804  void setEnableNeighbors(bool val) { myEnableNeighbors = val; }
805  bool opEnableNeighbors(const SOP_NodeVerb::CookParms &cookparms) const
806  {
807  SOP_Node *thissop = cookparms.getNode();
808  if (!thissop) return getEnableNeighbors();
809  bool result;
810  OP_Utils::evalOpParm(result, thissop, "enableneighbors", cookparms.getCookTime(), 0);
811  return result;
812  }
813  fpreal64 getNeighborDistance() const { return myNeighborDistance; }
814  void setNeighborDistance(fpreal64 val) { myNeighborDistance = val; }
816  {
817  SOP_Node *thissop = cookparms.getNode();
818  if (!thissop) return getNeighborDistance();
820  OP_Utils::evalOpParm(result, thissop, "neighbordistance", cookparms.getCookTime(), 0);
821  return result;
822  }
823  int64 getMaxNeighbors() const { return myMaxNeighbors; }
824  void setMaxNeighbors(int64 val) { myMaxNeighbors = val; }
826  {
827  SOP_Node *thissop = cookparms.getNode();
828  if (!thissop) return getMaxNeighbors();
829  int64 result;
830  OP_Utils::evalOpParm(result, thissop, "maxneighbors", cookparms.getCookTime(), 0);
831  return result;
832  }
833  bool getEnableObstacles() const { return myEnableObstacles; }
834  void setEnableObstacles(bool val) { myEnableObstacles = val; }
835  bool opEnableObstacles(const SOP_NodeVerb::CookParms &cookparms) const
836  {
837  SOP_Node *thissop = cookparms.getNode();
838  if (!thissop) return getEnableObstacles();
839  bool result;
840  OP_Utils::evalOpParm(result, thissop, "enableobstacles", cookparms.getCookTime(), 0);
841  return result;
842  }
843  fpreal64 getObstacleDistance() const { return myObstacleDistance; }
844  void setObstacleDistance(fpreal64 val) { myObstacleDistance = val; }
846  {
847  SOP_Node *thissop = cookparms.getNode();
848  if (!thissop) return getObstacleDistance();
850  OP_Utils::evalOpParm(result, thissop, "obstacledistance", cookparms.getCookTime(), 0);
851  return result;
852  }
853  fpreal64 getObstaclePadding() const { return myObstaclePadding; }
854  void setObstaclePadding(fpreal64 val) { myObstaclePadding = val; }
856  {
857  SOP_Node *thissop = cookparms.getNode();
858  if (!thissop) return getObstaclePadding();
860  OP_Utils::evalOpParm(result, thissop, "obstaclepadding", cookparms.getCookTime(), 0);
861  return result;
862  }
863  fpreal64 getHorizontalFOV() const { return myHorizontalFOV; }
864  void setHorizontalFOV(fpreal64 val) { myHorizontalFOV = val; }
866  {
867  SOP_Node *thissop = cookparms.getNode();
868  if (!thissop) return getHorizontalFOV();
870  OP_Utils::evalOpParm(result, thissop, "horizontalfov", cookparms.getCookTime(), 0);
871  return result;
872  }
873  int64 getFOVSamples() const { return myFOVSamples; }
874  void setFOVSamples(int64 val) { myFOVSamples = val; }
876  {
877  SOP_Node *thissop = cookparms.getNode();
878  if (!thissop) return getFOVSamples();
879  int64 result;
880  OP_Utils::evalOpParm(result, thissop, "fovsamples", cookparms.getCookTime(), 0);
881  return result;
882  }
883  fpreal64 getTurnSpeedThreshold() const { return myTurnSpeedThreshold; }
884  void setTurnSpeedThreshold(fpreal64 val) { myTurnSpeedThreshold = val; }
886  {
887  SOP_Node *thissop = cookparms.getNode();
888  if (!thissop) return getTurnSpeedThreshold();
890  OP_Utils::evalOpParm(result, thissop, "turnspeedthreshold", cookparms.getCookTime(), 0);
891  return result;
892  }
893  bool getUseMaxInitialRotation() const { return myUseMaxInitialRotation; }
894  void setUseMaxInitialRotation(bool val) { myUseMaxInitialRotation = val; }
896  {
897  SOP_Node *thissop = cookparms.getNode();
898  if (!thissop) return getUseMaxInitialRotation();
899  bool result;
900  OP_Utils::evalOpParm(result, thissop, "usemaxinitialrotation", cookparms.getCookTime(), 0);
901  return result;
902  }
903  fpreal64 getMaxInitialRotation() const { return myMaxInitialRotation; }
904  void setMaxInitialRotation(fpreal64 val) { myMaxInitialRotation = val; }
906  {
907  SOP_Node *thissop = cookparms.getNode();
908  if (!thissop) return getMaxInitialRotation();
910  OP_Utils::evalOpParm(result, thissop, "maxinitialrotation", cookparms.getCookTime(), 0);
911  return result;
912  }
913  fpreal64 getMaxTurnRate() const { return myMaxTurnRate; }
914  void setMaxTurnRate(fpreal64 val) { myMaxTurnRate = val; }
916  {
917  SOP_Node *thissop = cookparms.getNode();
918  if (!thissop) return getMaxTurnRate();
920  OP_Utils::evalOpParm(result, thissop, "maxturnrate", cookparms.getCookTime(), 0);
921  return result;
922  }
923  bool getConstrainTurnAccel() const { return myConstrainTurnAccel; }
924  void setConstrainTurnAccel(bool val) { myConstrainTurnAccel = val; }
925  bool opConstrainTurnAccel(const SOP_NodeVerb::CookParms &cookparms) const
926  {
927  SOP_Node *thissop = cookparms.getNode();
928  if (!thissop) return getConstrainTurnAccel();
929  bool result;
930  OP_Utils::evalOpParm(result, thissop, "constrainturnaccel", cookparms.getCookTime(), 0);
931  return result;
932  }
933  fpreal64 getTurnStiffness() const { return myTurnStiffness; }
934  void setTurnStiffness(fpreal64 val) { myTurnStiffness = val; }
936  {
937  SOP_Node *thissop = cookparms.getNode();
938  if (!thissop) return getTurnStiffness();
940  OP_Utils::evalOpParm(result, thissop, "turnstiffness", cookparms.getCookTime(), 0);
941  return result;
942  }
943  fpreal64 getTurnDamping() const { return myTurnDamping; }
944  void setTurnDamping(fpreal64 val) { myTurnDamping = val; }
946  {
947  SOP_Node *thissop = cookparms.getNode();
948  if (!thissop) return getTurnDamping();
950  OP_Utils::evalOpParm(result, thissop, "turndamping", cookparms.getCookTime(), 0);
951  return result;
952  }
953  fpreal64 getGoalPosWeight() const { return myGoalPosWeight; }
954  void setGoalPosWeight(fpreal64 val) { myGoalPosWeight = val; }
956  {
957  SOP_Node *thissop = cookparms.getNode();
958  if (!thissop) return getGoalPosWeight();
960  OP_Utils::evalOpParm(result, thissop, "goalposweight", cookparms.getCookTime(), 0);
961  return result;
962  }
963  bool getAddCollisionPointGroup() const { return myAddCollisionPointGroup; }
964  void setAddCollisionPointGroup(bool val) { myAddCollisionPointGroup = val; }
966  {
967  SOP_Node *thissop = cookparms.getNode();
968  if (!thissop) return getAddCollisionPointGroup();
969  bool result;
970  OP_Utils::evalOpParm(result, thissop, "addcollisionptgroup", cookparms.getCookTime(), 0);
971  return result;
972  }
973  const UT_StringHolder & getCollisionPointGroup() const { return myCollisionPointGroup; }
974  void setCollisionPointGroup(const UT_StringHolder & val) { myCollisionPointGroup = val; }
976  {
977  SOP_Node *thissop = cookparms.getNode();
978  if (!thissop) return getCollisionPointGroup();
980  OP_Utils::evalOpParm(result, thissop, "collisionptgroup", cookparms.getCookTime(), 0);
981  return result;
982  }
983  fpreal64 getTimestep() const { return myTimestep; }
984  void setTimestep(fpreal64 val) { myTimestep = val; }
986  {
987  SOP_Node *thissop = cookparms.getNode();
988  if (!thissop) return getTimestep();
990  OP_Utils::evalOpParm(result, thissop, "timestep", cookparms.getCookTime(), 0);
991  return result;
992  }
993  bool getUseStartTime() const { return myUseStartTime; }
994  void setUseStartTime(bool val) { myUseStartTime = val; }
995  bool opUseStartTime(const SOP_NodeVerb::CookParms &cookparms) const
996  {
997  SOP_Node *thissop = cookparms.getNode();
998  if (!thissop) return getUseStartTime();
999  bool result;
1000  OP_Utils::evalOpParm(result, thissop, "usestarttime", cookparms.getCookTime(), 0);
1001  return result;
1002  }
1003  fpreal64 getStartTime() const { return myStartTime; }
1004  void setStartTime(fpreal64 val) { myStartTime = val; }
1006  {
1007  SOP_Node *thissop = cookparms.getNode();
1008  if (!thissop) return getStartTime();
1009  fpreal64 result;
1010  OP_Utils::evalOpParm(result, thissop, "starttime", cookparms.getCookTime(), 0);
1011  return result;
1012  }
1013  bool getUseEndTime() const { return myUseEndTime; }
1014  void setUseEndTime(bool val) { myUseEndTime = val; }
1015  bool opUseEndTime(const SOP_NodeVerb::CookParms &cookparms) const
1016  {
1017  SOP_Node *thissop = cookparms.getNode();
1018  if (!thissop) return getUseEndTime();
1019  bool result;
1020  OP_Utils::evalOpParm(result, thissop, "useendtime", cookparms.getCookTime(), 0);
1021  return result;
1022  }
1023  fpreal64 getEndTime() const { return myEndTime; }
1024  void setEndTime(fpreal64 val) { myEndTime = val; }
1026  {
1027  SOP_Node *thissop = cookparms.getNode();
1028  if (!thissop) return getEndTime();
1029  fpreal64 result;
1030  OP_Utils::evalOpParm(result, thissop, "endtime", cookparms.getCookTime(), 0);
1031  return result;
1032  }
1033  UT_Vector3D getReferenceUp() const { return myReferenceUp; }
1034  void setReferenceUp(UT_Vector3D val) { myReferenceUp = val; }
1036  {
1037  SOP_Node *thissop = cookparms.getNode();
1038  if (!thissop) return getReferenceUp();
1040  OP_Utils::evalOpParm(result, thissop, "refup", cookparms.getCookTime(), 0);
1041  return result;
1042  }
1043 
1044 private:
1045  UT_StringHolder myGroup;
1046  bool myEnableAvoidance;
1047  fpreal64 myMaxCollisionTime;
1048  bool myEnableNeighbors;
1049  fpreal64 myNeighborDistance;
1050  int64 myMaxNeighbors;
1051  bool myEnableObstacles;
1052  fpreal64 myObstacleDistance;
1053  fpreal64 myObstaclePadding;
1054  fpreal64 myHorizontalFOV;
1055  int64 myFOVSamples;
1056  fpreal64 myTurnSpeedThreshold;
1057  bool myUseMaxInitialRotation;
1058  fpreal64 myMaxInitialRotation;
1059  fpreal64 myMaxTurnRate;
1060  bool myConstrainTurnAccel;
1061  fpreal64 myTurnStiffness;
1062  fpreal64 myTurnDamping;
1063  fpreal64 myGoalPosWeight;
1064  bool myAddCollisionPointGroup;
1065  UT_StringHolder myCollisionPointGroup;
1066  fpreal64 myTimestep;
1067  bool myUseStartTime;
1068  fpreal64 myStartTime;
1069  bool myUseEndTime;
1070  fpreal64 myEndTime;
1071  UT_Vector3D myReferenceUp;
1072 
1073 };
bool opConstrainTurnAccel(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
fpreal64 opObstacleDistance(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
int64 opMaxNeighbors(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, fpreal64 &v)
static void loadData(UT_IStream &is, bool &v)
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
bool opUseStartTime(const SOP_NodeVerb::CookParms &cookparms) const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
static void loadData(UT_IStream &is, UT_Vector3D &v)
static void saveData(std::ostream &os, PRM_DataItemHandle s)
fpreal64 opEndTime(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4I &v)
void setCollisionPointGroup(const UT_StringHolder &val)
fpreal64 opTurnStiffness(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opTimestep(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
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
fpreal getTime() const
Definition: OP_Context.h:62
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
bool opEnableObstacles(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_StringHolder s)
UT_Vector3D opReferenceUp(const SOP_NodeVerb::CookParms &cookparms) const
const OP_Context & context() const
Definition: OP_NodeParms.h:97
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
UT_StringHolder opCollisionPointGroup(const SOP_NodeVerb::CookParms &cookparms) const
GLdouble s
Definition: glad.h:3009
static void saveData(std::ostream &os, UT_Matrix2D v)
An output stream object that owns its own string buffer storage.
static void saveData(std::ostream &os, UT_Matrix3D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
**But if you need a result
Definition: thread.h:613
static void loadData(UT_IStream &is, UT_Vector3I &v)
T clampMinValue(fpreal minvalue, const T &src) const
Definition: OP_NodeParms.h:308
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
static void loadData(UT_IStream &is, UT_Matrix4D &v)
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.
fpreal64 opMaxInitialRotation(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opStartTime(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
static void saveData(std::ostream &os, UT_Vector2D v)
bool operator==(const SOP_CrowdMotionPathAvoidCoreParms &src) const
double fpreal64
Definition: SYS_Types.h:201
static void loadData(UT_IStream &is, UT_StringHolder &v)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
int64 opFOVSamples(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, fpreal64 v)
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
static void loadData(UT_IStream &is, UT_Matrix2D &v)
static void loadData(UT_IStream &is, UT_Vector2I &v)
void loadFromOpSubclass(const LoadParms &loadparms) override
bool opEnableNeighbors(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opGoalPosWeight(const SOP_NodeVerb::CookParms &cookparms) const
exint length() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
fpreal64 opHorizontalFOV(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
long long int64
Definition: SYS_Types.h:116
static void saveData(std::ostream &os, bool v)
fpreal64 opObstaclePadding(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
UT_Vector3T< fpreal64 > UT_Vector3D
static void loadData(UT_IStream &is, UT_Vector4D &v)
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
static void saveData(std::ostream &os, UT_Vector3D v)
exint getNestNumParms(TempIndex idx) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
const UT_StringHolder & getCollisionPointGroup() const
GT_API const UT_StringHolder version
static void loadData(UT_IStream &is, UT_Matrix3D &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
void coerceValue(T &result, const S &src) const
Definition: OP_NodeParms.h:301
bool opAddCollisionPointGroup(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, int64 v)
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
const char * getNestParmName(TempIndex fieldnum) const override
ParmType getNestParmType(TempIndex fieldnum) const override
fpreal64 fpreal
Definition: SYS_Types.h:277
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
fpreal64 opTurnDamping(const SOP_NodeVerb::CookParms &cookparms) const
Utility class for containing a color ramp.
Definition: UT_Ramp.h:88
static void loadData(UT_IStream &is, int64 &v)
static void loadData(UT_IStream &is, UT_Vector2D &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
bool opEnableAvoidance(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opNeighborDistance(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
GLuint GLfloat * val
Definition: glcorearb.h:1608
#define SOP_API
Definition: SOP_API.h:10
bool opUseMaxInitialRotation(const SOP_NodeVerb::CookParms &cookparms) const
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
fpreal64 opTurnSpeedThreshold(const SOP_NodeVerb::CookParms &cookparms) const
const char * findChar(int c) const
Definition: UT_String.h:1385
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
Definition: core.h:1131
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
GLboolean r
Definition: glcorearb.h:1222
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
fpreal64 opMaxTurnRate(const SOP_NodeVerb::CookParms &cookparms) const
void copyFrom(const OP_NodeParms *src) override
static void saveData(std::ostream &os, UT_Vector4D v)
fpreal64 opMaxCollisionTime(const SOP_NodeVerb::CookParms &cookparms) const
type
Definition: core.h:1059
static void saveData(std::ostream &os, UT_Matrix4D v)
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
bool operator!=(const SOP_CrowdMotionPathAvoidCoreParms &src) const
bool opUseEndTime(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
SYS_FORCE_INLINE bool isstring() const
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
OP_NodeParms & operator=(const OP_NodeParms &)=default
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663