3ds Max C++ API Reference
IPainterInterface_V7 Class Referenceabstract

#include <IPainterInterface.h>

+ Inheritance diagram for IPainterInterface_V7:

Public Member Functions

virtual BOOL InitializeNodesByObjState (int flags, Tab< INode * > &nodeList, Tab< ObjectState > &objList)=0
 this loads of the nodes that you want to paint on More...
 
virtual BOOL UpdateMeshesByObjState (BOOL updatePointGather, Tab< ObjectState > &objList)=0
 This forces the quadtree to rebuilt. More...
 
virtual void GetPatchFaceData (PatchMesh &patch, Tab< FaceDataFromPatch > &faceData)=0
 This lets you take a patch and get a list or tri mesh faces wher each tri has an owning patch index and the UVW space of that face. More...
 
virtual BOOL StartPaintSession (IPainterRightClickHandler *rightClicker)=0
 This overload of the method used to start a paint session allows you to submit a class which will handle right-click events in the paint mouse proc. More...
 
virtual BOOL StartPaintSession ()=0
 This is called when the a canvas wants to start a paint session. More...
 
virtual float GetStrDragLimitMin ()=0
 this get the str limit min for while dragging to chnage the str More...
 
virtual void SetStrDragLimitMin (float l)=0
 this set the str limit min for while dragging to chnage the str More...
 
virtual float GetStrDragLimitMax ()=0
 this get the str limit max for while dragging to chnage the str More...
 
virtual void SetStrDragLimitMax (float l)=0
 this set the str limit max for while dragging to chnage the str More...
 
- Public Member Functions inherited from IPainterInterface_V5
virtual BOOL InitializeCallback (ReferenceTarget *canvas)=0
 The canvas passes a pointer of itself to the painter. More...
 
virtual BOOL InitializeNodes (int flags, Tab< INode * > &nodeList)=0
 this loads of the nodes that you want to paint on More...
 
virtual BOOL UpdateMeshes (BOOL updatePointGather)=0
 This forces the quadtree to rebuilt.
More...
 
virtual BOOL EndPaintSession ()=0
 This is called when the a canvas wants to end a paint session. More...
 
virtual BOOL InPaintMode ()=0
 This return whether the user is in the paint mode, so a plugin can determine how to paint the UI paint button. More...
 
virtual BOOL BringUpOptions ()=0
 This brings up the Painter Options dialog that lets the users sets various setting of the painter system. More...
 
virtual intRetrieveTimeList (int &ct)=0
 This lets you access the time stamp of each sample of a stroke.
More...
 
virtual BOOL TestHit (IPoint2 mousePos, Point3 &worldPoint, Point3 &worldNormal, Point3 &localPoint, Point3 &localNormal, Point3 &bary, int &index, INode *node, BOOL &mirrorOn, Point3 &worldMirrorPoint, Point3 &worldMirrorNormal, Point3 &localMirrorPoint, Point3 &localMirrorNormal)=0
 this function lets you hit test against the quad tree given a mouse coord More...
 
virtual BOOL RandomHit (Point3 &worldPoint, Point3 &worldNormal, Point3 &localPoint, Point3 &localNormal, Point3 &bary, int &index, float &strFromFalloff, INode *node, BOOL &mirrorOn, Point3 &worldMirrorPoint, Point3 &worldMirrorNormal, Point3 &localMirrorPoint, Point3 &localMirrorNormal, int tabIndex)=0
 Retrieves a random hit point around the last hit point or a specified hit point within the brush. More...
 
virtual BOOL RandomHitAlongStroke (Point3 &worldPoint, Point3 &worldNormal, Point3 &localPoint, Point3 &localNormal, Point3 &bary, int &index, float &strFromFalloff, INode *node, BOOL &mirrorOn, Point3 &worldMirrorPoint, Point3 &worldMirrorNormal, Point3 &localMirrorPoint, Point3 &localMirrorNormal, int tabIndex)=0
 This will do random hit point along the stroke segment. More...
 
virtual BOOL ClearStroke ()=0
 this clears out all the stroke data for the current stroke More...
 
virtual BOOL AddToStroke (IPoint2 mousePos, BOOL rebuildPointGatherData, BOOL updateViewport)=0
 this adds a hit test to the current stroke More...
 
virtual int GetStrokeCount ()=0
 returns the number of sample points in the current stroke More...
 
virtual float * GetStrokeStr ()=0
 this returns a pointer to an array of floats where each entry is the str of a point sample More...
 
virtual float * GetStrokeRadius ()=0
 this returns a pointer to an array of floats where each entry is the radius of a point sample More...
 
virtual Point3GetStrokePointWorld ()=0
 this returns a pointer to an array of point3s where each entry is the world space hit point of the sample More...
 
virtual Point3GetStrokeNormalWorld ()=0
 this returns a pointer to an array of point3s where each entry is the world space normal of the sample More...
 
virtual Point3GetStrokePointWorldMirror ()=0
 this returns a pointer to an array of point3s where each entry is the world space hit point of the sample after it has been mirrored More...
 
virtual Point3GetStrokeNormalWorldMirror ()=0
 this returns a pointer to an array of point3s where each entry is the world space normal of the sample after it has been mirrored More...
 
virtual float * GetStrokePressure ()=0
 this returns a pointer to an array of floats where each entry is the pressure of a point sample either from a pressure sensitive tablet or from a predefined presssure graph More...
 
virtual Point3GetStrokePointLocal ()=0
 this returns a pointer to an array of point3s where each entry is the local space hit point of the sample More...
 
virtual Point3GetStrokeNormalLocal ()=0
 this returns a pointer to an array of point3s where each entry is the local space normal of the sample More...
 
virtual Point3GetStrokePointLocalMirror ()=0
 this returns a pointer to an array of point3s where each entry is the local space hit point of the sample after it has been mirrored More...
 
virtual Point3GetStrokeNormalLocalMirror ()=0
 this returns a pointer to an array of point3s where each entry is the world space normal of the sample after it has been mirrored More...
 
virtual IPoint2GetStrokeMousePos ()=0
 this returns a pointer to an array of Ipoint2s where each entry is the mouse pos in screen space for the sample More...
 
virtual BOOL * GetStrokeHitList ()=0
 this returns a pointer to an array of s where each entry is whether the sample hit the mesh or not More...
 
virtual Point3GetStrokeBary ()=0
 this returns a pointer to an array of point3s where each entry is the barycentri coords of the sample More...
 
virtual intGetStrokeIndex ()=0
 this returns a pointer to an array of ints where each entry is the index of the face of the sample More...
 
virtual BOOL * GetStrokeShift ()=0
 this returns a pointer to an array of bools where each entry is the state of the shift of the sample More...
 
virtual BOOL * GetStrokeCtrl ()=0
 this returns a pointer to an array of bools where each entry is the state of the ctrl of the sample More...
 
virtual BOOL * GetStrokeAlt ()=0
 this returns a pointer to an array of bools where each entry is the state of the alt of the sample More...
 
virtual INode ** GetStrokeNode ()=0
 this returns a pointer to an array of INode where each entry is the INode of the sample More...
 
virtual intGetStrokeTime ()=0
 this returns a pointer to an array of ints where each entry is the time stamp of the sample More...
 
virtual float GetStrFromPoint (Point3 point)=0
 given a point in world space it returns the str of that point based on the current stroke More...
 
virtual float * GetPredefineStrStrokeData (int &ct)=0
 Lets you interogate and set the state of the options dialog. More...
 
virtual float * GetPredefineSizeStrokeData (int &ct)=0
 Lets you interogate and set the state of the options dialog. More...
 
virtual BOOL GetBuildNormalData ()=0
 Access to the BuildNormalData property. More...
 
virtual void SetBuildNormalData (BOOL enable)=0
 Access to the BuildNormalData property. More...
 
virtual BOOL GetEnablePointGather ()=0
 Gets the state of point gathering. More...
 
virtual void SetEnablePointGather (BOOL enable)=0
 Turn on/off the point gather. More...
 
virtual BOOL LoadCustomPointGather (int ct, Point3 *points, INode *node)=0
 This lets you set up a custom list of points to weight to override the currentlist. More...
 
virtual float * RetrievePointGatherWeights (INode *node, int &ct)=0
 This retrieves the weight of the points based on the current stroke. More...
 
virtual float * RetrievePointGatherStr (INode *node, int &ct)=0
 This retrieves the strength of the points based on the current stroke. More...
 
virtual BOOL * RetrievePointGatherIsMirror (INode *node, int &ct)=0
 This retrieves the whether the point was affected by a mirror stroke. More...
 
virtual Point3RetrievePointGatherPoints (INode *node, int &ct)=0
 This retrieves the the array of the points. More...
 
virtual Point3RetrievePointGatherNormals (INode *node, int &ct)=0
 This retrieves the the array of the normals. More...
 
virtual float * RetrievePointGatherU (INode *node, int &ct)=0
 This retrieves the the array of the U vals, this is how far along the stroke that point is. More...
 
virtual BOOL GetMirrorEnable ()=0
 returns if the mirror plane is on or off More...
 
virtual void SetMirrorEnable (BOOL enable)=0
 lets you set whether the mirror plane is on/off More...
 
virtual Point3 GetMirrorPlaneCenter ()=0
 returns the center of the mirror plane in world space coords More...
 
virtual int GetMirrorAxis ()=0
 returns which mirror axis is active More...
 
virtual void SetMirrorAxis (int dir)=0
 lets you set the mirror axis More...
 
virtual float GetMirrorOffset ()=0
 Returns the mirror offset. More...
 
virtual void SetMirrorOffset (float offset)=0
 Sets the mirror offset. More...
 
virtual int GetTreeDepth ()=0
 Lets you get the quad tree depth. More...
 
virtual void SetTreeDepth (int depth)=0
 Lets you set the quad tree depth. More...
 
virtual BOOL GetUpdateOnMouseUp ()=0
 Lets you get the Update on Mouse Up option. More...
 
virtual void SetUpdateOnMouseUp (BOOL update)=0
 Lets you get the Update on Mouse Up option. More...
 
virtual int GetLagRate ()=0
 These 2 function let you get and set the lag rate. More...
 
virtual void SetLagRate (int lagRate)=0
 These 2 function let you get and set the lag rate. More...
 
virtual float GetMinStr ()=0
 Let you get the min strength for a brush. More...
 
virtual void SetMinStr (float str)=0
 lets you set the min strength for a brush. More...
 
virtual float GetMaxStr ()=0
 lets you get the max strength for a brush. More...
 
virtual void SetMaxStr (float str)=0
 lets you set the max strength for a brush. More...
 
virtual float GetMinSize ()=0
 lets you get the min radius for a brush. More...
 
virtual void SetMinSize (float str)=0
 lets you set the min radius for a brush. More...
 
virtual float GetMaxSize ()=0
 lets you get the max radius for a brush. More...
 
virtual void SetMaxSize (float str)=0
 lets you set the max radius for a brush. More...
 
virtual BOOL GetAdditiveMode ()=0
 Gets the aditive mode. More...
 
virtual void SetAdditiveMode (BOOL enable)=0
 Sets the aditive mode. More...
 
virtual ICurveGetFalloffGraph ()=0
 This returns the brush falloff curve if you want to handle the doing the brush falloff yourself. More...
 
virtual BOOL GetDrawRing ()=0
 This lets you get whether the ring is drawn around the hit point. More...
 
virtual void SetDrawRing (BOOL draw)=0
 This lets you set whether the ring is drawn around the hit point. More...
 
virtual BOOL GetDrawNormal ()=0
 This lets you get whether the normal vector is drawn at the hit point. More...
 
virtual void SetDrawNormal (BOOL draw)=0
 This lets you set whether the normal vector is drawn at the hit point. More...
 
virtual BOOL GetDrawTrace ()=0
 This lets you get whether the a line is left behind a stroke as it is drawn. More...
 
virtual void SetDrawTrace (BOOL draw)=0
 This lets you set whether the a line is left behind a stroke as it is drawn. More...
 
virtual BOOL GetPressureEnable ()=0
 let you get whether pressure sensistivity is turned on More...
 
virtual void SetPressureEnable (BOOL enable)=0
 let you set whether pressure sensistivity is turned on More...
 
virtual BOOL GetPressureAffects ()=0
 Get what the pressure of a brush affects. More...
 
virtual void SetPressureAffects (int affect)=0
 Set what the pressure of a brush affects. More...
 
virtual BOOL GetPredefinedStrEnable ()=0
 get whether a predefined str is enabled for a stroke. More...
 
virtual void SetPredefinedStrEnable (BOOL enable)=0
 set whether a predefined str is enabled for a stroke. More...
 
virtual BOOL GetPredefinedSizeEnable ()=0
 get whether a predefined radius is enabled for a stroke. More...
 
virtual void SetPredefinedSizeEnable (BOOL enable)=0
 set whether a predefined radius is enabled for a stroke. More...
 
virtual ICurveGetPredefineSizeStrokeGraph ()=0
 get the predefined radius graph set for a stroke. More...
 
virtual ICurveGetPredefineStrStrokeGraph ()=0
 get the predefined strength graph set for a stroke. More...
 
virtual float GetNormalScale ()=0
 
virtual void SetNormalScale (float scale)=0
 
virtual BOOL GetMarkerEnable ()=0
 
virtual void SetMarkerEnable (BOOL on)=0
 
virtual float GetMarker ()=0
 
virtual void SetMarker (float pos)=0
 
virtual int GetOffMeshHitType ()=0
 Returns the mesh hit type. More...
 
virtual void SetOffMeshHitType (int type)=0
 Sets the mesh hit type. More...
 
virtual float GetOffMeshHitZDepth ()=0
 
virtual void SetOffMeshHitZDepth (float depth)=0
 
virtual Point3 GetOffMeshHitPos ()=0
 
virtual void SetOffMeshHitPos (Point3 pos)=0
 

Additional Inherited Members

- Static Public Member Functions inherited from MaxHeapOperators
static UtilExport voidoperator new (size_t size)
 Standard new operator used to allocate objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e)
 Standard new operator used to allocate objects if there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new (size_t size, const char *filename, int line)
 New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, int block_type, const char *filename, int line)
 New operator used to allocate objects that takes the type of memory, filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e, const char *filename, int line)
 New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new (size_t size, unsigned long flags)
 New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e, unsigned long flags)
 New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size, const char *filename, int line)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, int block_type, const char *filename, int line)
 New operator used to allocate arrays of objects. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e, const char *filename, int line)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size, unsigned long flags)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e, unsigned long flags)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport void operator delete (void *ptr)
 Standard delete operator used to deallocate an object If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e)
 Standard delete operator used to deallocate an object If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete (void *ptr, const char *filename, int line)
 Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, int block_type, const char *filename, int line)
 Delete operator used to deallocate an object that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e, const char *filename, int line)
 Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete (void *ptr, unsigned long flags)
 Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e, unsigned long flags)
 Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr)
 Standard delete operator used to deallocate an array of objects If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e)
 Standard delete operator used to deallocate an array of objects If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, int block_type, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr, unsigned long flags)
 Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e, unsigned long flags)
 Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, void *placement_ptr)
 Placement new operator. More...
 
static UtilExport void operator delete (void *ptr, void *placement_ptr)
 Placement delete operator. More...
 
static UtilExport voidaligned_malloc (size_t size, size_t alignment)
 Allocates memory on a specified alignment boundary. More...
 
static UtilExport voidaligned_realloc (void *ptr, size_t size, size_t alignment)
 Reallocates memory on a specified alignment boundary. More...
 
static UtilExport void aligned_free (void *ptr)
 Frees a block of memory that was allocated with aligned_malloc/aligned_realloc. More...
 

Detailed Description

See also
IPainterInterface_V5
Description:
Any plugin that wants to be able to be painted on must sub class from this class or a later version of it.

Member Function Documentation

◆ InitializeNodesByObjState()

virtual BOOL InitializeNodesByObjState ( int  flags,
Tab< INode * > &  nodeList,
Tab< ObjectState > &  objList 
)
pure virtual

this loads of the nodes that you want to paint on

anytime you want to add delete a node this must be called. This use the object state passed to it instead of the one gotten from the node to get the hit mesh. NOTE I do not hang onto any of the data in the ObjectState. I just get the a copy of the mesh from it.

Parameters
flags- not yet implemented does nothing but there to allow flags per node for special conditions
nodeList- a table of nodes that you want to paint on
objList- a table of objects states one per node to use as your hit node

◆ UpdateMeshesByObjState()

virtual BOOL UpdateMeshesByObjState ( BOOL  updatePointGather,
Tab< ObjectState > &  objList 
)
pure virtual

This forces the quadtree to rebuilt.

Any time you change a geometry or togopology of a node you passed to the InitializedNodes methode this must be called. Ideally I could listen to the notifyremessage changed and rebuild on that but the since rebuilding the quad tree is inetensive, I leave it up to the canvas as to when to rebuild so we can better control the amount of stack reevals NOTE I do not hang onto any of the data in the ObjectState. I just get the a copy of the mesh from it.

Parameters
updatePointGather- determines whether the pointGather data gets updated also normally if your mesh does not change shape or topo you dont need to update the pointgather. For instance ifyou rotate a view your quad tree needs to get updated but not the point list
objList- a table of objects states one per node to use as your hit node

◆ GetPatchFaceData()

virtual void GetPatchFaceData ( PatchMesh patch,
Tab< FaceDataFromPatch > &  faceData 
)
pure virtual

This lets you take a patch and get a list or tri mesh faces wher each tri has an owning patch index and the UVW space of that face.

This lets you get patch UVW space

◆ StartPaintSession() [1/2]

virtual BOOL StartPaintSession ( IPainterRightClickHandler rightClicker)
pure virtual

This overload of the method used to start a paint session allows you to submit a class which will handle right-click events in the paint mouse proc.

This allows you to end the paint proc however you need to. If rightClicker is NULL, or if the no-argument version of StartPaintSession is used, nothing will happen on right-click.

Parameters
rightClicker- The handler class to be notified on a right click, or NULL

◆ StartPaintSession() [2/2]

virtual BOOL StartPaintSession ( )
pure virtual

This is called when the a canvas wants to start a paint session.

Implements IPainterInterface_V5.

◆ GetStrDragLimitMin()

virtual float GetStrDragLimitMin ( )
pure virtual

this get the str limit min for while dragging to chnage the str

◆ SetStrDragLimitMin()

virtual void SetStrDragLimitMin ( float  l)
pure virtual

this set the str limit min for while dragging to chnage the str

◆ GetStrDragLimitMax()

virtual float GetStrDragLimitMax ( )
pure virtual

this get the str limit max for while dragging to chnage the str

◆ SetStrDragLimitMax()

virtual void SetStrDragLimitMax ( float  l)
pure virtual

this set the str limit max for while dragging to chnage the str