HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_CaptureLayerPaint.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: SOP Library (C++)
7  *
8  * COMMENTS: The CaptureLayerPaint SOP, which works in conjunction with the
9  * CaptureLayerPaint State and the GDT classes.
10  *
11  */
12 
13 #ifndef __SOP_CaptureLayerPaint_h__
14 #define __SOP_CaptureLayerPaint_h__
15 
16 #include "SOP_API.h"
17 #include <UT/UT_String.h>
18 #include <PRM/PRM_ChoiceList.h>
19 #include <PRM/PRM_Parm.h>
20 #include <GU/GU_Brush.h>
21 
22 #include "SOP_GDT.h"
23 #include "SOP_BrushBase.h"
24 #include "SOP_CaptureData.h"
25 #include "SOP_CaptureLayerData.h"
26 
27 class PRM_MenuEntry;
28 class PRM_Name;
29 //class PRM_Parm;
30 
31 enum {
32  // Group parameters
35 
37 
39 
40 #define SOP_CAPTURELAYERPAINT_NUM_DEFORM_PARMS (13)
54 
55 #define SOP_CAPTURELAYERPAINT_NUM_NIB_PARMS (18)
74 
75 #define SOP_CAPTURELAYERPAINT_NUM_SYM_PARMS (9)
85 
86 #define SOP_CAPTURELAYERPAINT_NUM_RAY_PARMS (11)
98 };
99 
101 {
102 public:
103  SOP_CaptureLayerPaint(OP_Network *net, const char *name, OP_Operator *entry);
104  ~SOP_CaptureLayerPaint() override;
105 
106  bool updateParmsFlags() override;
107 
108  static OP_Node *myConstructor(OP_Network *net,
109  const char *name,
110  OP_Operator *entry);
111  static OP_Operator* createOperator();
112 
113  static PRM_Template myTemplateList[];
114  static PRM_Template myObsoleteList[];
115 
116  void setAccumulateStencil(bool) override {}
117 
118  void setRayOrigin(const UT_Vector3 &orig, fpreal t) override
119  {
123  }
125  fpreal t) override
126  {
130  }
131  void setHitPrimitive(int primidx, fpreal t) override
132  {
134  }
135  void setHitPoint(int pt, fpreal t) override
136  {
138  }
140  fpreal w, fpreal t) override
141  {
145  }
146  void setHitPressure(fpreal p, fpreal t) override
147  {
149  }
150  void setRadius(fpreal r, fpreal t) override
151  {
153  }
154  void setUVRadius(fpreal r, fpreal t) override
155  {
157  }
159  {
160  setInt(SOP_CAPTURELAYERPAINT_RAY_EVENT_IDX, 0, 0, int(event));
161  }
162  void setBrushOp(SOP_BrushOp op) override
163  {
164  int iop;
165  switch (op)
166  {
167  case SOP_BRUSHOP_SMOOTHATTRIB: iop = 1; break;
168  case SOP_BRUSHOP_SMOOTHLAYER: iop = 2; break;
169  case SOP_BRUSHOP_SMOOTHSINGLE: iop = 3; break;
170  case SOP_BRUSHOP_REDUCE: iop = 4; break;
171  case SOP_BRUSHOP_ERASE: iop = 5; break;
172  case SOP_BRUSHOP_ERASESINGLE: iop = 6; break;
173  case SOP_BRUSHOP_EYEDROP: iop = 7; break;
174  case SOP_BRUSHOP_PAINT:
175  default: iop = 0; break;
176  }
178  }
179  void setBrushShape(SOP_BrushShape shape) override
180  {
181  setInt(SOP_CAPTURELAYERPAINT_SHAPE_IDX, 0, 0, int(shape));
182  }
183  void setProjectionType(int projtype) override
184  {
186  }
187  void useForegroundColor() override { }
188  void useBackgroundColor() override { }
189  void setVisualization(bool state) override
190  {
191  // only trigger recooks if different!
192  if (myForceVisualize != state)
193  {
194  myForceVisualize = state;
195  forceRecook();
196  }
197  }
198 
199  bool getCurrentStencilColor(OP_Context &context, UT_Color &color);
200  bool getAccumulatedModifiedPoints(UT_IntArray &changed);
201 
202 protected:
204  bool changed_input,
205  bool changed_group) override;
206 
207  const char *inputLabel(unsigned idx) const override;
208  int isRefInput(unsigned idx) const override;
209 
210  void doErase() override;
211 
212  void updateCaptureWeight(int ptnum, const GU_Detail *pgdp,
213  float *alphas);
214 
216  int alone = 0) override;
217  void updateStencilMappings();
218  OP_ERROR migrateStencils();
220  void doVisualize(OP_Context &context, bool update_all);
221 
222  //
223  // I/O methods
224  //
225  OP_ERROR save(std::ostream &os, const OP_SaveFlags &flags,
226  const char *path_prefix,
227  const UT_String &name_override = UT_String()
228  ) override;
229  bool load(UT_IStream &is, const char *extension,
230  const char *path) override;
231 
233  {
234  return getInput(1);
235  }
236 
237 public:
238  int altersGeometry() const override { return 0; }
239  int altersColor() const override { return 1; }
241  { return evalFloat(SOP_CAPTURELAYERPAINT_RAD_IDX, 0, t); }
243  { return evalFloat(SOP_CAPTURELAYERPAINT_UVRAD_IDX, 0, t); }
247  {return evalFloat(SOP_CAPTURELAYERPAINT_OPAC_IDX, 0, t); }
250 
251  SOP_BrushOp OP() override
252  {
253  return SOP_BRUSHOP_CALLBACK;
254  }
256  {
257  switch (evalInt(SOP_CAPTURELAYERPAINT_OP_IDX, 0, 0))
258  {
259  case 1: return SOP_BRUSHOP_SMOOTHATTRIB;
260  case 2: return SOP_BRUSHOP_SMOOTHLAYER;
261  case 3: return SOP_BRUSHOP_SMOOTHSINGLE;
262  case 4: return SOP_BRUSHOP_REDUCE;
263  case 5: return SOP_BRUSHOP_ERASE;
264  case 6: return SOP_BRUSHOP_ERASESINGLE;
265  case 7: return SOP_BRUSHOP_EYEDROP;
266  default: return SOP_BRUSHOP_PAINT;
267  }
268  }
269 
270  int ACCUMSTENCIL() override { return 0; }
271 
272  int PROJECTIONTYPE() override
274  int REALTIME() override
276  int SHAPE(fpreal t) override
277  { return evalInt(SOP_CAPTURELAYERPAINT_SHAPE_IDX, 0, t); }
278 
279 
280  void brushOpCallback(
281  GA_Offset pt,
282  const UT_Array<GA_Offset> *ptneighbour,
283  GA_Offset vtx,
284  const UT_Array<GA_Offset> *vtxneighbour,
285  float alpha,
286  GEO_Delta *delta) override;
287 
288  void flood(fpreal t) override;
289  static int flattenStatic(void *op, int, fpreal time,
290  const PRM_Template *);
291  void flatten(fpreal t);
292  void clearAllDeltas(fpreal t) override;
293  void applyUndo(const SOP_CaptureLayerData &delta,
294  const UT_String &rootpath,
295  const UT_StringArray &mapping);
296  void applyRedo(const SOP_CaptureLayerData &delta,
297  const UT_String &rootpath,
298  const UT_StringArray &mapping);
299 
301  { return myCaptureType; }
302 
303 protected:
304  void applyDelta(const SOP_CaptureLayerData &delta,
305  const UT_String &rootpath,
306  const UT_StringArray &mapping, bool is_add);
307  int getNumStencils();
308  float getStencilValue(int snum, int ptnum);
309  void setStencilValue(int snum, int ptnum, float value);
310 
311  void createTempLayer();
312  void postOperation();
313 
314  void setupForUndo();
315  void saveUndo();
316 
317  const GA_PointGroup *getPointGroup() override
318  {
319  return myPointGroup;
320  }
321  bool isGroupParmDirty(OP_Context &context) override;
322 
323  int GRPTYPE()
324  { return evalInt(SOP_CAPTURELAYERPAINT_GRPTYPE_IDX, 0, 0); }
325 
327  {
329  if ( type == 3 )
331  else
332  return static_cast<GEO_Detail::CaptureType>(type);
333  }
334 
335  int MERGEMODE() override { return 0; }
336  void SCRIPT(UT_String &, fpreal) override {}
337  int AXIS() override { return 0 ; }
338  fpreal USERX(fpreal) override { return 0.0; }
339  fpreal USERY(fpreal) override { return 0.0; }
340  fpreal USERZ(fpreal) override { return 0.0; }
341 
348  fpreal RAYHITX(fpreal t) override
350  fpreal RAYHITY(fpreal t) override
352  fpreal RAYHITZ(fpreal t) override
354  fpreal RAYHITU(fpreal t) override
356  fpreal RAYHITV(fpreal t) override
358  fpreal RAYHITW(fpreal t) override
362  int PRIMHIT(fpreal t) override
364  int PTHIT(fpreal t) override
366  int EVENT() override
368  bool USE_FOREGROUND() override { return true; }
369  fpreal FGR(fpreal) override { return 0.0; }
370  fpreal FGG(fpreal) override { return 0.0; }
371  fpreal FGB(fpreal) override { return 0.0; }
372  fpreal BGR(fpreal) override { return 0.0; }
373  fpreal BGG(fpreal) override { return 0.0; }
374  fpreal BGB(fpreal) override { return 0.0; }
377  void KERNEL(UT_String &str, fpreal t) override
379  int UPTYPE(fpreal t) override
380  { return evalInt(SOP_CAPTURELAYERPAINT_UPTYPE_IDX, 0, t); }
381  fpreal UPX(fpreal t) override
383  fpreal UPY(fpreal t) override
385  fpreal UPZ(fpreal t) override
387 
389  { return evalFloat(SOP_CAPTURELAYERPAINT_PAPER_IDX, 0, t); }
392  void BITMAP(UT_String &str, fpreal t) override
394  int BITMAPCHAN(fpreal t) override
396  fpreal ANGLE(fpreal t) override
397  { return evalFloat(SOP_CAPTURELAYERPAINT_ANGLE_IDX, 0, t); }
398  fpreal SQUASH(fpreal t) override
400  int DOSTAMPING() override { return 0; }
401  int WRITEALPHA() override { return 0; }
402 
403  int OVERRIDECD() override { return 1; }
404  void CDNAME(UT_String & /*str*/, fpreal /*t*/) override{ }
405  int OVERRIDEALPHA() override { return 0; }
406  void ALPHANAME(UT_String & /*str*/, fpreal /*t*/) override {}
407  int OVERRIDENML() override { return 0; }
408  void NMLNAME(UT_String & /*str*/, fpreal /*t*/) override {}
409 
422  int DOREFLECTION() override
424  int DOROTATION() override
426  int SYMMETRYROT(fpreal t) override
427  { return evalInt(SOP_CAPTURELAYERPAINT_SYMROT_IDX,0, t); }
430 
431  int DOUVREFLECTION() override
439 
440  int ADDATTRIB() override { return 0; }
442  { return myForceVisualize || evalInt(SOP_CAPTURELAYERPAINT_VISUALIZE_IDX, 0, 0); }
443  int VISLAYER()
445  int VISTYPE() override
446  { return evalInt(SOP_CAPTURELAYERPAINT_VISTYPE_IDX, 0, 0); }
447  int VISMODE() override
448  { return evalInt(SOP_CAPTURELAYERPAINT_VISMODE_IDX, 0, 0); }
449  int USECAPTURE() override { return 1; }
450  int CAPTUREIDX(fpreal /*t*/) override
451  {
452  UT_String cregion_name;
453  CAPTUREREGION(cregion_name);
454  return gdp->getCaptureRegionIndex(cregion_name,
455  myCaptureType);
456  }
457  void SKELROOT(UT_String &str)
459 public:
462 protected:
463  int USECONNECTIVITY() override
465  int USENORMALS() override
467  int USEDEPTH() override
469  fpreal DEPTH(fpreal t) override
470  { return evalFloat(SOP_CAPTURELAYERPAINT_DEPTH_IDX, 0, t); }
471  fpreal HEIGHT(fpreal t) override
472  { return evalFloat(SOP_CAPTURELAYERPAINT_DEPTH_IDX, 1, t); }
478  { return evalInt(SOP_CAPTURELAYERPAINT_VISNORMALIZED_IDX, 0, 0) != 0; }
479 
480 
481  // Find out if the brush has moved or done anything to cause us to add its
482  // effect to the current gdp.
483  bool hasStrokeChanged(fpreal t) override;
484  bool hasStyleChanged(fpreal) override { return false; }
485 
486  // Find if the nib file has changed:
487  bool hasNibFileChanged(fpreal t) override;
488  bool hasAccumStencilChanged(fpreal) override { return false; }
489  bool hasNibLookChanged(fpreal t) override;
490  bool hasVisChanged(fpreal t);
491 
492  void buildOpDependencies() override;
493  void buildParmDependency(int parm_index) override;
494  void handleOpDependency(int referenced_op_id,
495  const OP_Dependency &op_dep,
496  OP_InterestType interest_type,
497  bool &need_cook,
498  const char *old_fullpath,
499  const char *old_cwd,
500  const char *old_chan_name) override;
501  // CaptureLayerPaint doesn't use it's GDT... This will suppress SOP_UndoGDT
502  // objects from being put on the undo stack
503  void applyAndClearCurrentDelta() override {}
504 
505 public:
506  // MSS_CaptureLayerPaintState uses this to build its capture region menu
507  // too
508  static void buildCaptureRegionMenu(
509  void *data, PRM_Name *menu_entries,
510  int num_entries, const PRM_SpareData *,
511  const PRM_Parm *);
512 
513 private:
514  void updateStencilIndex();
515  int getStencilIndex();
516  void checkCaptureRegions(OP_Context &context);
517  bool checkPointCaptureRegion(OP_Context &context, const UT_String &path);
518 
519  int addCaptureRegion( const char *cregion_name );
520 
521  void clearStencils();
522  int findStencilForCaptureRegion(int cregion);
523  int getStencilForCaptureRegion(int cregion);
524  int addNewStencilForCaptureRegion(int cregion);
525  void addedStencilForCaptureRegion(int snum, int cregion);
526  static bool getRootPathCandidates(OP_Node &node, void *data);
527 
528  bool boneCapture() const
529  { return myCaptureType == GEO_Detail::CAPTURE_BONE; }
530  bool metaCapture() const
531  { return myCaptureType == GEO_Detail::CAPTURE_META; }
532  bool wireCapture() const
533  { return myCaptureType == GEO_Detail::CAPTURE_WIRE; }
534  bool muscleCapture() const
535  { return myCaptureType == GEO_Detail::CAPTURE_MUSCLE; }
536 
537  bool filterForCurrentStencilIndex(UT_IntArray &regions,
539 
540 private:
541  UT_String myRootPath;
542 
543  static PRM_ChoiceList theCaptureRegionMenu;
544 
545  // stencil data and mapping to capture regions
546  SOP_CaptureLayerData myStencils;
547  UT_StringArray myStencilMapping;
548  UT_IntArray myCaptureRegionMapping;
549  UT_IntArray myRegionToStencilMapping;
550  int myNullStencilIndex;
551 
552  // temporary structures needed for smooth operation
553  SOP_CaptureLayerData *myTempSmoothLayer;
554  float *myTempSmoothAlpha;
555 
556  // current brush data
557  int myStencilIndex;
558 
559  // data for undo
560  SOP_CaptureLayerData myDelta;
561  UT_String myOldRootPath;
562  UT_StringArray myOldStencilMapping;
563 
564  // list of what has been modified so we can do incremental cooks
565  UT_IntArray myModifiedPoints;
566  bool myLastVisualize;
567 
568  // cache of changes for downstream SOPs. it is an accumulation of
569  // myModifiedPoints.
570  UT_IntArray myAccumulatedModifiedPoints;
571  bool myHaveAccumulatedModifiedPoints;
572 
573  const GA_PointGroup *myPointGroup;
574  UT_String myPrimitiveClosureName;
575  UT_String myPointClosureName;
576  bool myAddWarningFlag;
577  bool myFlattenFlag;
578 
579  // temporary data for migrating from houdini 6.6
580  bool myMigrationNeeded;
581  UT_String myTestCregionName;
582  UT_IntArray myTestCregionCandidates;
583 
584  UT_String myLoadedRootPath;
585  UT_String myLoadedPathChanged;
586  UT_StringArray myLoadedStencilMapping;
587 
588  // The current type of capture attributes we're modifying.
589  GEO_Detail::CaptureType myCaptureType;
590 };
591 
592 #endif
fpreal BGB(fpreal) override
int BITMAPCHAN(fpreal t) override
GLbyte * weights
Definition: glew.h:7551
fpreal SYMMETRYORIGY(fpreal t) override
virtual bool updateParmsFlags()
bool load(UT_IStream &is, const char *extension, const char *path=0) override
int SYMMETRYROT(fpreal t) override
GA_API const UT_StringHolder metaCapture
GLuint const GLchar * name
Definition: glew.h:1814
GLclampf GLclampf GLclampf alpha
Definition: glew.h:1520
int PTHIT(fpreal t) override
fpreal SQUASH(fpreal t) override
void BITMAP(UT_String &str, fpreal t) override
fpreal RAWRADIUS(fpreal t) override
int PRIMHIT(fpreal t) override
fpreal SYMMETRYORIGX(fpreal t) override
fpreal PAPERNOISE(fpreal t) override
GT_API const UT_StringHolder time
void setRadius(fpreal r, fpreal t) override
GA_API const UT_StringHolder boneCapture
GLenum GLenum GLenum GLenum mapping
Definition: glew.h:13879
fpreal RAYHITZ(fpreal t) override
fpreal BGG(fpreal) override
void applyAndClearCurrentDelta() override
const char * inputLabel(unsigned idx) const override
fpreal RAYHITV(fpreal t) override
GLenum GLsizei GLsizei GLsizei GLsizei GLbitfield flags
Definition: glew.h:2864
int SHAPE(fpreal t) override
void setHitPressure(fpreal p, fpreal t) override
fpreal DEPTH(fpreal t) override
GA_API const UT_StringHolder wireCapture
GA_API const UT_StringHolder muscleCapture
virtual void forceRecook(bool evensmartcache=true)
void setRayOrigin(const UT_Vector3 &orig, fpreal t) override
fpreal evalFloat(int pi, int vi, fpreal t) const
OP_ERROR cookMySop(OP_Context &context) override
virtual void handleOpDependency(int referenced_op_id, const OP_Dependency &op_dep, OP_InterestType interest_type, bool &need_cook, const char *old_fullpath, const char *old_cwd, const char *old_chan_name)
fpreal RAYORIENTY(fpreal t) override
UT_ErrorSeverity
Definition: UT_Error.h:25
int CAPTUREIDX(fpreal) override
void setHitUVW(fpreal u, fpreal v, fpreal w, fpreal t) override
fpreal ANGLE(fpreal t) override
fpreal RAYORIENTX(fpreal t) override
const GA_PointGroup * getPointGroup() override
const GLdouble * v
Definition: glew.h:1391
ImageBuf OIIO_API flatten(const ImageBuf &src, ROI roi={}, int nthreads=0)
void setHitPoint(int pt, fpreal t) override
fpreal USERY(fpreal) override
fpreal RAYHITX(fpreal t) override
fpreal RAWUVRADIUS(fpreal t) override
fpreal RADIUSPRESSURE(fpreal t) override
fpreal SYMMETRYUVORIGU(fpreal t) override
void setBrushOp(SOP_BrushOp op) override
fpreal USERX(fpreal) override
fpreal SYMMETRYDIRZ(fpreal t) override
GA_Size GA_Offset
Definition: GA_Types.h:639
fpreal FGB(fpreal) override
void SKELROOT(UT_String &str)
virtual bool hasNibFileChanged(fpreal t)=0
bool hasAccumStencilChanged(fpreal) override
fpreal OPACITYPRESSURE(fpreal t) override
void CDNAME(UT_String &, fpreal) override
OIIO_API std::string extension(const std::string &filepath, bool include_dot=true)
CaptureType
Methods for manipulating capture weights (GEO_CaptureWeight.C)
Definition: GEO_Detail.h:982
OP_InterestType
Definition: OP_DataTypes.h:44
SYS_FORCE_INLINE T & y()
Definition: UT_Vector3.h:513
void setAccumulateStencil(bool) override
void setProjectionType(int projtype) override
bool hasStyleChanged(fpreal) override
void buildOpDependencies() override
fpreal SYMMETRYUVORIGV(fpreal t) override
void useBackgroundColor() override
GLint GLenum GLsizei GLint GLsizei const void * data
Definition: glew.h:1379
void evalString(UT_String &val, int pi, int vi, fpreal t) const
virtual void flood(fpreal t)
fpreal FGG(fpreal) override
SYS_FORCE_INLINE T & z()
Definition: UT_Vector3.h:515
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1890
void KERNEL(UT_String &str, fpreal t) override
fpreal RAYORIENTZ(fpreal t) override
OP_Node * getInput(unsigned idx, bool mark_used=false) const
Returns the node connected to a particular input (may be null).
SOP_BrushOp
Definition: SOP_BrushBase.h:38
fpreal USERZ(fpreal) override
virtual void doErase()=0
fpreal RAYHITW(fpreal t) override
void NMLNAME(UT_String &, fpreal) override
GEO_Detail::CaptureType getCaptureType() const
fpreal RAYHITPRESSURE(fpreal t) override
fpreal SOFTEDGE(fpreal t) override
GLuint color
Definition: glew.h:7902
int altersColor() const override
GLuint GLuint GLsizei GLenum type
Definition: glew.h:1253
OP_ERROR cookInputGroups(OP_Context &context, int alone=0) override
fpreal HEIGHT(fpreal t) override
GA_API const UT_StringHolder orient
fpreal SYMMETRYDIRY(fpreal t) override
void clearAllDeltas(fpreal t) override
fpreal UPZ(fpreal t) override
GEO_Detail::CaptureType CAPTURETYPE() override
#define SOP_GDT_GRP_IDX
Definition: SOP_GDT.h:22
OP_ERROR save(std::ostream &os, const OP_SaveFlags &flags, const char *pathPrefix, const UT_String &name_override=UT_String()) override
GLsizei const GLchar *const * path
Definition: glew.h:6461
fpreal UPX(fpreal t) override
void setBrushEvent(SOP_BrushEvent event) override
GLfloat GLfloat p
Definition: glew.h:16321
fpreal UPY(fpreal t) override
cl_event event
Definition: glew.h:3695
virtual void brushOpCallback(GA_Offset pt, const UT_Array< GA_Offset > *ptneighbour, GA_Offset vtx, const UT_Array< GA_Offset > *vtxneighbour, float alpha, GEO_Delta *delta)
void setBrushShape(SOP_BrushShape shape) override
fpreal BGR(fpreal) override
virtual bool hasStrokeChanged(fpreal t)=0
void setVisualization(bool state) override
virtual bool isGroupParmDirty(OP_Context &context)
fpreal SYMMETRYDIRX(fpreal t) override
fpreal SYMMETRYUVANGLE(fpreal t) override
void setFloat(int parmi, int vectori, fpreal t, fpreal value, PRM_AddKeyType add_key=PRM_AK_MARK_PENDING)
fpreal64 fpreal
Definition: SYS_Types.h:277
void setInt(int parmi, int vectori, fpreal t, exint value)
GLdouble GLdouble GLdouble r
Definition: glew.h:1406
SOP_BrushOp OP() override
fpreal FGR(fpreal) override
void setUVRadius(fpreal r, fpreal t) override
#define SOP_API
Definition: SOP_API.h:10
fpreal SYMMETRYDIST(fpreal t) override
virtual void buildParmDependency(int parm_index)
fpreal RAYHITU(fpreal t) override
SYS_FORCE_INLINE T & x()
Definition: UT_Vector3.h:511
fpreal RAWOPACITY(fpreal t) override
virtual OP_ERROR processBrushOp(OP_Context &context, bool changed_input, bool changed_group)
void CAPTUREREGION(UT_String &str)
virtual bool hasNibLookChanged(fpreal t)=0
OP_Node * getRestGeoInput() override
void ALPHANAME(UT_String &, fpreal) override
exint evalInt(int pi, int vi, fpreal t) const
void setHitPrimitive(int primidx, fpreal t) override
SOP_BrushEvent
Definition: SOP_BrushBase.h:30
SOP_BrushShape
Definition: SOP_BrushBase.h:62
void useForegroundColor() override
void setRayOrientation(const UT_Vector3 &orient, fpreal t) override
int UPTYPE(fpreal t) override
virtual int isRefInput(unsigned idx) const
fpreal SPLATTER(fpreal t) override
GLsizei const GLfloat * value
Definition: glew.h:1849
fpreal RAYHITY(fpreal t) override
GLdouble GLdouble t
Definition: glew.h:1398
type
Definition: core.h:528
int altersGeometry() const override
fpreal SYMMETRYORIGZ(fpreal t) override
void SCRIPT(UT_String &, fpreal) override