12 #ifndef __SOP_BrushBase_h__
13 #define __SOP_BrushBase_h__
81 #define SOP_BRUSH_NUM_PENS 2
93 virtual void setAccumulateStencil(
bool yesno) = 0;
96 virtual void setHitPrimitive(
int primidx,
fpreal t) = 0;
99 virtual void setHitPressure(
fpreal pressure,
fpreal t) = 0;
107 myUVAttribName = uvattribname;
119 virtual void setProjectionType(
int projtype) = 0;
120 virtual void useForegroundColor() = 0;
121 virtual void useBackgroundColor() = 0;
145 bool checkgeochange =
false,
146 bool probeonly =
false);
157 {
return myGdpHandle.readLock(); }
159 { myGdpHandle.unlock(detail); }
174 float hitu,
float hitv,
float hitw);
184 static int applyStencilStatic(
void *op,
int idx,
fpreal t,
186 void applyStencil(
fpreal t,
int recook = 1);
190 static int resetNormalStatic(
void *op,
int idx,
fpreal t,
192 void resetNormal(
fpreal t);
196 static int floodStatic(
void *op,
int idx,
fpreal t,
198 virtual void flood(
fpreal t);
204 static void customMergeModeStatic(
GA_Offset ptoff,
216 static void brushOpCallbackStatic(
226 virtual void brushOpCallback(
237 bool hasStencil()
const;
239 virtual void setCurrentColor(
const UT_Vector3 &cd);
242 void applyVisualizeStencil();
243 void applyVisualize();
244 void applyCaptureVisualize();
248 return myIsectNodeId;
252 myIsectNodeId = node_id;
267 virtual void duplicateChangedSourceWrapper(
282 bool changed_input,
bool changed_group);
284 void checkInputGroup(
const GU_Detail *isectgdp);
300 const char *undoname)
const override;
307 int enablestamping = 1);
308 virtual void doErase() = 0;
316 virtual int altersGeometry()
const = 0;
319 virtual int altersColor()
const = 0;
343 virtual int ACCUMSTENCIL() = 0;
344 virtual int PROJECTIONTYPE() = 0;
345 virtual int REALTIME() = 0;
346 virtual int SHAPE(
fpreal t) = 0;
348 virtual int MERGEMODE() = 0;
351 virtual int AXIS() = 0;
366 virtual int PRIMHIT(
fpreal t) = 0;
368 virtual int EVENT() = 0;
372 virtual bool USE_FOREGROUND() = 0;
382 virtual int UPTYPE(
fpreal t) = 0;
390 virtual int BITMAPCHAN(
fpreal t) = 0;
393 virtual int DOSTAMPING() = 0;
394 virtual int WRITEALPHA() = 0;
395 virtual int OVERRIDECD() = 0;
397 virtual int OVERRIDEALPHA() = 0;
400 virtual int OVERRIDENML() = 0;
409 virtual int DOREFLECTION() = 0;
411 virtual int DOROTATION() = 0;
412 virtual int SYMMETRYROT(
fpreal t) = 0;
420 virtual int ADDATTRIB() = 0;
422 { uvattribname.
clear(); }
424 { uvattribname = myUVAttribName; }
443 virtual bool hasStrokeChanged(
fpreal t) = 0;
444 virtual bool hasStyleChanged (
fpreal t) = 0;
447 virtual bool hasNibFileChanged(
fpreal t) = 0;
450 virtual bool hasNibLookChanged(
fpreal t) = 0;
451 virtual bool hasAccumStencilChanged(
fpreal t) = 0;
virtual void applyAndClearCurrentDelta()
SOP_BrushOp getCachedOp(int pen) const
virtual void rollbackCurrentDelta()
Applies the inverse of myCurrentDelta to the gdp.
virtual void applyPermanentDelta()
Applies myPermanentDelta to the gdp.
virtual fpreal ZEROWEIGHTCOLOR_R()
GA_API const UT_StringHolder uv
void unlockPointTreeDetail(const GU_Detail *detail)
virtual bool matchesUndo(const char *undoname) const
GDT_Detail myMirroredDelta
GA_Index myLastUVPrimitive
virtual void unloadDataHack()
Do not use this function! Using it will likely cause crashes.
virtual int CAPTUREIDX(fpreal)
virtual void clearAllDeltas(fpreal t)
virtual int USECONNECTIVITY()
TIL_TextureMap * myNibFile
GU_RayIntersect * myRayIntersect
virtual void UVATTRIB(UT_String &uvattribname, fpreal t)
int64 myLastIsectGDPPrGrpId
virtual int PRESERVENML()
virtual GEO_Detail::CaptureType CAPTURETYPE()
**But if you need a result
UT_Vector3 myPendingLastUVPrimitiveUV
int64 myLastIsectGDPTopoId
virtual bool wantsCookSelection() const
void clear()
Reset the string to the default constructor.
exint GA_Size
Defines the bit width for index and offset types in GA.
virtual int PTHIT(fpreal)
virtual bool hasCaptureIdxChanged(fpreal)
int64 myLastIsectGDPVisId
GU_Detail * myBrushCursor
GDT_MirrorTransform myMirrorTransform
virtual void rollbackCurrentDeltaElementsToInputValues()
CaptureType
Methods for manipulating capture weights (GEO_CaptureWeight.C)
virtual void addEraseAttributes(GU_Brush &brush)
GA_Index myPendingLastUVPrimitive
#define SOP_BRUSH_NUM_PENS
virtual fpreal VISHIGH(fpreal)
static const UT_StringHolder theEmptyString
virtual fpreal ZEROWEIGHTCOLOR_B()
UT_Vector3 myLastUVPrimitiveUV
int64 myLastIsectGDPPrimId
virtual fpreal SYMMETRYUVORIGV(fpreal)
GLfloat GLfloat GLfloat alpha
virtual fpreal SYMMETRYUVANGLE(fpreal)
int64 myLastIsectGDPPtGrpId
virtual int NORMALIZEWEIGHT()
virtual void setHitPoint(int, fpreal)
GLuint const GLchar * name
virtual int getIsectNodeId() const
GA_Size GA_Index
Define the strictness of GA_Offset/GA_Index.
virtual OP_ERROR cookInputGroups(OP_Context &context, int alone=0)
virtual void setHitInUV(bool inuv, const UT_StringHolder &uvattribname)
GA_API const UT_StringHolder orient
void setIsectNodeId(int node_id)
virtual fpreal DEPTH(fpreal)
virtual bool hasVisrangeChanged(fpreal)
virtual fpreal ZEROWEIGHTCOLOR_G()
virtual OP_Node * getRestGeoInput()
UT_Matrix3 myCursorOrient
virtual int DOPOINTREFLECTION()
virtual void UVATTRIBNAME(UT_String &uvattribname, fpreal t)
virtual fpreal SYMMETRYUVORIGU(fpreal)
UT_StringHolder myUVAttribName
virtual bool isGroupParmDirty(OP_Context &context)
SIM_API const UT_StringHolder force
virtual const GA_PointGroup * getPointGroup()
virtual const GA_PrimitiveGroup * getPrimitiveSelection() const
virtual fpreal VISLOW(fpreal)
GA_Size myLastIsectGDPPtCount
virtual fpreal HEIGHT(fpreal)
const GU_Detail * lockPointTreeDetail()
GLubyte GLubyte GLubyte GLubyte w
virtual UT_Vector3 BRUSHDIR(fpreal t)
virtual int DOUVREFLECTION()
virtual OP_ERROR cookMySop(OP_Context &context)=0
SYS_FORCE_INLINE bool isstring() const
virtual void rollbackCurrentDeltaElementsToPermanentDeltaValues()
bool isParmDirty(int idx, fpreal t)
bool unloadData() override