SculptObject Class Reference

#include <lib_sculpt.h>

Inheritance diagram for SculptObject:

Detailed Description

A SculptObject is used to interact with the data referenced by a SculptTag.
The SculptTag on a PolygonObject references a SculptObject that is stored in a Scene Hook within the document.
When the SculptTag is deleted the referenced SculptObject is also deleted.

Public Member Functions

Int32 GetSubdivisionCount ()
 
PolygonObjectGetPolygonCopy (Int32 subdivisionLevel, Bool includeTopLevels=true)
 
PolygonObjectGetOriginalObject ()
 
const PolygonObjectGetOriginalObject () const
 
PolygonObjectGetDisplayPolygonObject ()
 
Bool Hit (BaseDraw *bd, Float mx, Float my, Bool backfaces, SculptHitData &hitData)
 
Bool Hit (const Vector &rayp, const Vector &rayv, Bool backfaces, SculptHitData &hitData)
 
Int32 GetPolygonCount ()
 
Int32 GetPointCount ()
 
SculptLayerBaseGetCurrentLayer ()
 
Int32 GetCurrentLevel ()
 
UInt32 GetMemoryUsage ()
 
SculptLayerAddLayer ()
 
SculptFolderAddFolder ()
 
Bool DeleteSelectedLayer ()
 
void Update ()
 
const Vector32GetVertexNormals ()
 
const Vector32GetFaceNormals ()
 
const VectorGetPointR ()
 
VectorGetPointW ()
 
Bool Subdivide ()
 
Bool IncreaseSubdivisionLevel ()
 
Bool DecreaseSubdivisionLevel ()
 
SculptLayerBaseGetFirstLayer ()
 
SculptLayerGetBaseLayer ()
 
SculptLayerSystemGetLayerSystem ()
 
Bool IsFrozen ()
 
void SetFrozen (Bool value)
 
Bool GetAllowDeformations ()
 
void SetAllowDeformations (Bool value)
 
void UpdateCollision ()
 
void NeedCollisionUpdate (Bool fullUpdate=false)
 
void OffsetPoint (SculptLayer *pLayer, Vector *pPoints, Bool useMask, Float strength, Int32 index, const Vector &offset, Bool respectLayerStrength=false)
 
void OffsetPreviewPoint (SculptLayer *pLayer, Bool useMask, Float strength, Int32 index, const Vector &offset, Bool respectLayerStrength=false)
 
void SetPreviewPoint (SculptLayer *pLayer, Bool useMask, Float strength, Int32 index, const Vector &offset, Bool respectLayerStrength=false)
 
void StartUndo ()
 
void EndUndo ()
 
void Smooth (Int32 count, Bool respectMask)
 
Float32GetMaskCache ()
 
Float32 PointPolysAverage (Int32 vertex, Float32 *values)
 
Vector PointPolysAverage (Int32 vertex, Vector *values)
 
void UpdateMask (Bool fullUpdate=false)
 
void InitOpenGL (BaseDraw *bd=nullptr)
 
Bool IsPointSelected (Int32 index)
 
Bool IsPolygonSelected (Int32 index)
 
Bool GetPolygon (Int32 index, CPolygon &cpoly)
 
- Public Member Functions inherited from BaseList2D
void SetBit (Int32 mask)
 
Bool GetBit (Int32 mask) const
 
void DelBit (Int32 mask)
 
void ToggleBit (Int32 mask)
 
Int32 GetAllBits () const
 
void SetAllBits (Int32 bits)
 
void SetBitEx (Int32 mask, Int32 flags)
 
const CharGetViewportRenderId (VIEWPORT_RENDER_ID typeId) const
 
BaseList2DGetNext ()
 
const BaseList2DGetNext () const
 
BaseList2DGetPred ()
 
const BaseList2DGetPred () const
 
BaseContainer GetData ()
 
void SetData (const BaseContainer &bc, Bool add=true)
 
const BaseContainerGetDataInstanceRef () const
 
BaseContainerGetDataInstanceRef ()
 
const BaseContainerGetDataInstance () const
 
BaseContainerGetDataInstance ()
 
String GetName () const
 
void SetName (const maxon::String &name, Bool setDirty=true)
 
String GetBubbleHelp ()
 
Bool TransferGoal (BaseList2D *dst, Bool undolink)
 
Bool TransferMarker (BaseList2D *dst) const
 
Bool CopyDynamicDescriptionFrom (const BaseList2D *src)
 
Bool Scale (Float scale)
 
Bool Edit ()
 
void GetIcon (IconData *dat)
 
GeListHeadGetNLARoot (Bool create)
 
BaseList2DAnimationLayerRemap (BaseObject **layer=nullptr)
 
String GetTypeName () const
 
const BaseList2DGetMain () const
 
BaseList2DGetMain ()
 
void InsertTrackSorted (CTrack *track)
 
Bool AddEventNotification (BaseList2D *bl, NOTIFY_EVENT eventid, NOTIFY_EVENT_FLAG flags, const BaseContainer *data)
 
Bool RemoveEventNotification (const BaseDocument *doc, BaseList2D *bl, NOTIFY_EVENT eventid)
 
Bool FindEventNotification (const BaseDocument *doc, BaseList2D *bl, NOTIFY_EVENT eventid)
 
Bool SetDescIDState (const DescID &id, DESCIDSTATE descidstate)
 
DESCIDSTATE GetDescIDState (const DescID &id, Bool tolerant) const
 
GeListHeadGetOverrideRoot (Bool create)
 
BaseOverrideGetFirstOverride ()
 
GeListHeadGetShaderRepositoryRoot (Bool create)
 
GeListHeadGetHiddenShaderRoot (Bool create)
 
maxon::NimbusForwardRef GetNimbusRef (const maxon::Id &spaceId) const
 
maxon::Result< maxon::NimbusForwardRefPrivateGetOrCreateNimbusRef (const maxon::Id &spaceId)
 
void RemoveNimbusRef (const maxon::Id &spaceId)
 
maxon::Result< maxon::HashMap< maxon::Id, maxon::NimbusForwardRef > > GetAllNimbusRefs () const
 
Bool IsNodeBased () const
 
maxon::Result< BoolGetAccessedObjects (METHOD_ID method, AccessedObjectsCallback &access) const
 
maxon::Result< BoolGetAccessedObjectsRec (ACCESSED_OBJECTS_MASK read, ACCESSED_OBJECTS_MASK write, METHOD_ID method, Bool withSiblings, Bool withChildren, AccessedObjectsCallback &access) const
 
maxon::Result< BoolGetAccessedObjectsOfHierarchy (ACCESSED_OBJECTS_MASK read, ACCESSED_OBJECTS_MASK write, METHOD_ID method, AccessedObjectsCallback &access) const
 
maxon::Result< BoolGetAccessedObjectsOfChildren (ACCESSED_OBJECTS_MASK read, ACCESSED_OBJECTS_MASK write, METHOD_ID method, AccessedObjectsCallback &access) const
 
maxon::Result< BoolGetAccessedObjectsOfFirstChildHierarchy (ACCESSED_OBJECTS_MASK read, ACCESSED_OBJECTS_MASK write, METHOD_ID method, AccessedObjectsCallback &access) const
 
maxon::Result< maxon::GenericDataGroupChanges ()
 
void GetMarkerStampEx (UInt32 *l1, UInt32 *l2)
 
const GeMarkerGetMarker () const
 
void SetMarker (const GeMarker &m)
 
Bool AddUniqueID (Int32 appid, const Char *const mem, Int bytes)
 
Bool FindUniqueID (Int32 appid, const Char *&mem, Int &bytes) const
 
Int32 GetUniqueIDCount () const
 
Bool GetUniqueIDIndex (Int32 idx, Int32 &id, const Char *&mem, Int &bytes) const
 
Bool SetAnimatedParameter (const CTrack *track, const DescID &id, const GeData &t_data1, const GeData &t_data2, Float mix, DESCFLAGS_SET flags)
 
Bool GetAnimatedParameter (const DescID &id, GeData &t_data1, GeData &t_data2, Float &mix, DESCFLAGS_GET flags) const
 
BaseShaderGetFirstShader () const
 
void InsertShader (BaseShader *shader, BaseShader *pred=nullptr)
 
void ClearKeyframeSelection ()
 
Bool FindKeyframeSelection (const DescID &id)
 
Bool SetKeyframeSelection (const DescID &id, Bool selection)
 
Bool KeyframeSelectionContent ()
 
LayerObjectGetLayerObject (const BaseDocument *doc)
 
const LayerObjectGetLayerObject (const BaseDocument *doc) const
 
Bool SetLayerObject (const LayerObject *layer)
 
const LayerDataGetLayerData (const BaseDocument *doc, Bool rawdata=false) const
 
Bool SetLayerData (BaseDocument *doc, const LayerData &data)
 
GeListHeadGetCTrackRoot (Bool create)
 
const GeListHeadGetCTrackRoot () const
 
const CTrackGetFirstCTrack () const
 
CTrackGetFirstCTrack ()
 
const CTrackFindCTrack (const DescID &id) const
 
CTrackFindCTrack (const DescID &id)
 
- Public Member Functions inherited from GeListNode
GeListNodeGetNext ()
 
const GeListNodeGetNext () const
 
GeListNodeGetPred ()
 
const GeListNodeGetPred () const
 
GeListNodeGetDown ()
 
const GeListNodeGetDown () const
 
GeListNodeGetUp ()
 
const GeListNodeGetUp () const
 
GeListNodeGetDownLast ()
 
const GeListNodeGetDownLast () const
 
void InsertBefore (GeListNode *bl)
 
void InsertAfter (GeListNode *bl)
 
void InsertUnder (GeListNode *bl)
 
void InsertUnderLast (GeListNode *bl)
 
void Remove ()
 
void FlushChilds ()
 
void MoveChildrenTo (GeListNode *dest)
 
GeListHeadGetListHead ()
 
const GeListHeadGetListHead () const
 
Int32 GetNodeID (Int32 index=0) const
 
template<typename CAST >
const CAST * GetNodeData (Int32 index=0) const
 
template<typename CAST >
CAST * GetNodeData (Int32 index=0)
 
void SetCustomData (GeListNode *node)
 
GeListNodeGetCustomData ()
 
const GeListNodeGetCustomData () const
 
const BaseDocumentGetDocument () const
 
BaseDocumentGetDocument ()
 
maxon::Result< BoolGetBranchInfo (const maxon::ValueReceiver< const BranchInfo & > &info, GETBRANCHINFO flags) const
 
Bool IsDocumentRelated () const
 
Int32 GetInfo () const
 
Bool GetNBit (NBIT bit) const
 
UInt32 GetNBitMask (Int32 index) const
 
Bool ChangeNBit (NBIT bit, NBITCONTROL bitmode)
 
- Public Member Functions inherited from C4DAtomGoal
Bool HasLinks () const
 
- Public Member Functions inherited from C4DAtom
Int32 GetType () const
 
Int32 GetRealType () const
 
Int32 GetDiskType () const
 
Bool IsInstanceOf (Int32 id) const
 
Int32 GetClassification () const
 
Bool Message (Int32 type, void *data=nullptr)
 
Bool MultiMessage (MULTIMSG_ROUTE flags, Int32 type, void *data)
 
C4DAtomGetClone (COPYFLAGS flags, AliasTrans *trn) const
 
Bool CopyTo (C4DAtom *dst, COPYFLAGS flags, AliasTrans *trn) const
 
Bool Read (HyperFile *hf, Int32 id, Int32 level)
 
Bool Write (HyperFile *hf) const
 
Bool ReadObject (HyperFile *hf, Bool readheader)
 
Bool WriteObject (HyperFile *hf) const
 
Bool GetDescription (Description *description, DESCFLAGS_DESC flags) const
 
Bool GetParameter (const DescID &id, GeData &t_data, DESCFLAGS_GET flags) const
 
Bool SetParameter (const DescID &id, const GeData &t_data, DESCFLAGS_SET flags)
 
DynamicDescriptionGetDynamicDescriptionWritable ()
 
const DynamicDescriptionGetDynamicDescription () const
 
Bool CopyDynamicDescriptionFrom (const BaseList2D *src)
 
Bool GetEnabling (const DescID &id, const GeData &t_data, DESCFLAGS_ENABLE flags, const BaseContainer *itemdesc) const
 
Bool TranslateDescID (const DescID &id, DescID &res_id, C4DAtom *&res_at)
 
UInt32 GetDirty (DIRTYFLAGS flags) const
 
void SetDirty (DIRTYFLAGS flags)
 
UInt32 GetHDirty (HDIRTYFLAGS mask) const
 
void SetHDirty (HDIRTYFLAGS mask)
 

Private Member Functions

 SculptObject ()
 
 ~SculptObject ()
 

Additional Inherited Members

- Static Public Member Functions inherited from BaseList2D
static BaseList2DAlloc (Int32 type)
 
static void Free (BaseList2D *&bl)
 
- Static Public Attributes inherited from BaseList2D
static const Int32 SETBIT_FLAG_NODIRTY
 
static const Int32 SETBIT_FLAG_REMOVE
 

Constructor & Destructor Documentation

◆ SculptObject()

SculptObject ( )
private

◆ ~SculptObject()

~SculptObject ( )
private

Member Function Documentation

◆ GetSubdivisionCount()

Int32 GetSubdivisionCount ( )

Gets the number of Subdivisions that the SculptObject currently has, i.e. how many times it has been subdivided by the user.

Returns
The number of subdivision levels.

◆ GetPolygonCopy()

PolygonObject* GetPolygonCopy ( Int32  subdivisionLevel,
Bool  includeTopLevels = true 
)

Gets a copy of the SculptObject at a specific subdivision level.

Note
The returned object does not contain a copy of the SculptTag.
Parameters
[in]subdivisionLevelThe subdivision level to copy the PolyonObject at.
[in]includeTopLevelsIf True includes all the detail from any layers that are above subdivisionLevel.
If false includes only the sculpting data for all layers up to and including the subdivisionLevel specified.
Returns
The PolygonObject for the subdivision level. The caller owns the pointed PolygonObject.

◆ GetOriginalObject() [1/2]

PolygonObject* GetOriginalObject ( )

Gets the original PolygonObject that the SculptTag is applied to.

Returns
The original PolygonObject that the SculptTag is applied to. The document owns the pointed PolygonObject.

◆ GetOriginalObject() [2/2]

const PolygonObject* GetOriginalObject ( ) const

Gets the original PolygonObject that the SculptTag is applied to.

Returns
The original PolygonObject that the SculptTag is applied to. The document owns the pointed PolygonObject.

◆ GetDisplayPolygonObject()

PolygonObject* GetDisplayPolygonObject ( )

Gets the PolygonObject that is currently being displayed in the viewport.

Note
In SculptBrushToolData::FloodSelectedLayer() calls this returns the same as GetOriginalObject() when sculpting on Polygon Objects that have no SculptTag.
Returns
The PolygonObject displayed in the viewport. This is the internal Polygon Object and should never be changed!

◆ Hit() [1/2]

Bool Hit ( BaseDraw bd,
Float  mx,
Float  my,
Bool  backfaces,
SculptHitData hitData 
)

From a viewport cast a ray, in screen space, onto the SculptObject and return any data if the ray hits the object.

Note
Returns the closest hit point if multiple intersections are found.
Warning
To use the Hit() methods the mesh must be unfrozen and both NeedCollisionUpdate(true) and UpdateCollision() should be called to initialize the collision data.
Parameters
[in]bdThe view that the user is casting the ray from. The caller owns the pointed view.
[in]mxThe X coordinate (mouse coordinate) in screen space.
[in]myThe Y coordinate (mouse coordinate) in screen space.
[in]backfacestrue to allow back facing polygons to be hit tested.
If enabled and the back facing hit point is closer than the front hit point, then it is returned.
[out]hitDataFilled with the intersection data if the ray hits the object.
Returns
true if the SculptObject was hit, otherwise false.

◆ Hit() [2/2]

Bool Hit ( const Vector rayp,
const Vector rayv,
Bool  backfaces,
SculptHitData hitData 
)

Given a ray in object space do a hit intersection against the SculptObject and return any data if the ray hits the object.

Note
Returns the closest hit point if multiple intersections are found.
Warning
To use the Hit() methods the mesh must be unfrozen and both NeedCollisionUpdate(true) and UpdateCollision() should be called to initialize the collision data.
Parameters
[in]raypThe starting position of the ray in object space.
[in]rayvThe direction the ray is pointing.
[in]backfacestrue to allow back facing polygons to be hit tested.
If enabled and the back facing hit point is closer than the front hit point, then it is returned.
[out]hitDataFilled with the intersection data if the ray hits the object.
Returns
true if the SculptObject was hit, otherwise false.

◆ GetPolygonCount()

Int32 GetPolygonCount ( )

Gets the number of polygons at the current subdivision level.

Returns
The number of polygons.

◆ GetPointCount()

Int32 GetPointCount ( )

Gets the number of points at the current subdivision level.

Returns
The number of points.

◆ GetCurrentLayer()

SculptLayerBase* GetCurrentLayer ( )

Gets the currently selected layer, or folder, selected for the SculptObject.

Returns
The currently selected layer or folder.

◆ GetCurrentLevel()

Int32 GetCurrentLevel ( )

Gets the current subdivision level that the SculptObject is currently at.

Returns
The current subdivision level.

◆ GetMemoryUsage()

UInt32 GetMemoryUsage ( )

Gets the amount of memory currently used for the SculptObject. This does not include any memory used by OpenGL.

Returns
The memory used in bytes.

◆ AddLayer()

SculptLayer* AddLayer ( )

Creates a new layer on the SculptObject at the current subdivision level.

Returns
The added layer. The SculptObject owns the pointed SculptLayer.

◆ AddFolder()

SculptFolder* AddFolder ( )

Creates a new folder for the SculptObject.

Returns
The added folder. The SculptObject owns the pointed SculptFolder.

◆ DeleteSelectedLayer()

Bool DeleteSelectedLayer ( )

Deletes the currently selected layer (or folder) on the SculptObject (as specified in the Sculpt Layer Manager UI).

Note
If the currently selected layer is a folder then it will only delete the folder if all the layers that are contained in that folder are at the same subdivision level as the current subdivision level.
Returns
true if the layer was deleted, otherwise false.

◆ Update()

void Update ( )

Updates all the layers and the SculptObject.

◆ GetVertexNormals()

const Vector32* GetVertexNormals ( )

Gets the vertex normals for the PolygonObject at its current subdivision level.

Returns
The vertex normals.

◆ GetFaceNormals()

const Vector32* GetFaceNormals ( )

Gets the face normals for the PolygonObject at its current subdivision level.

Since
R17.032
Returns
The face normals.

◆ GetPointR()

const Vector* GetPointR ( )

Gets read only access to the points that will be used for the PolygonObject at its current subdivision level.

Returns
The points.

◆ GetPointW()

Vector* GetPointW ( )

Gets write access to the points that will be used for the display of the PolygonObject at the current subdivision level in the viewport.

Warning
This method should only be used with the call OffsetPoint(), which should only ever be called from SculptBrushToolData::FloodSelectedLayer().
Returns
The points.

◆ Subdivide()

Bool Subdivide ( )

Subdivides the SculptObject to the next level.

Warning
Only works if the SculptObject is already at the top most level and the memory limit (as specified in the preferences) has not been exceeded and also only if there is enough memory on the users computer to successfully do the subdivision.
Returns
true if the object was successfully subdivided, otherwise false.

◆ IncreaseSubdivisionLevel()

Bool IncreaseSubdivisionLevel ( )

Increases the subdivision level to the next highest level. If it is already at the top subdivision level then it will do nothing.

Returns
true if it was able go up a level, otherwise false.

◆ DecreaseSubdivisionLevel()

Bool DecreaseSubdivisionLevel ( )

Decreases the subdivision level to the down one level. If it is already at level 0 then it will do nothing.

Returns
true if it was able go down a level, otherwise false.

◆ GetFirstLayer()

SculptLayerBase* GetFirstLayer ( )

Gets the first layer under the SculptLayerSystem. This is usually the Base layer.

Returns
The first layer.

◆ GetBaseLayer()

SculptLayer* GetBaseLayer ( )

Gets the Base layer, which is the special layer that has multiple SculptLayerData children, one for each subdivision level, that allows the user to sculpt on while at any subdivision level.

Returns
The Base layer.

◆ GetLayerSystem()

SculptLayerSystem* GetLayerSystem ( )

Gets the layer system that contains all the layers. This is a child node of the SculptObject.

Returns
The layer system.

◆ IsFrozen()

Bool IsFrozen ( )

Checks if the SculptObject been frozen. In the UI this is shown in the SculpTag.

Returns
true if the object was frozen, otherwise false.

◆ SetFrozen()

void SetFrozen ( Bool  value)

Sets the frozen state of the SculptObject. In the UI this is shown in the SculpTag.
When the object is frozen no changes to the SculptObject or any of its layers are allowed.

Note
If the PolygonObject has a PhongTag it will also become active when the SculptObject is Frozen.
When not Frozen then SculptObject uses its own internal Vertex Normals and disables the PhongTag on the PolygonObject.
Parameters
[in]valueThe frozen state.

◆ GetAllowDeformations()

Bool GetAllowDeformations ( )

Checks if the object is allowed to be deformed by any deformers. In the UI this is shown in the SculpTag.

Note
This option only works if the object is also Frozen. When both these options are enabled, any deformers that are children of the PolygonObject that the SculptTag is applied to, will be able to deform the object in the viewport.
Returns
true if the object was frozen, otherwise false.

◆ SetAllowDeformations()

void SetAllowDeformations ( Bool  value)

Sets the "Allow Deformations" checkbox thereby allowing any deformers to have an effect on the display of the SculptObject, as long as it is also frozen.
In the UI this is shown in the SculpTag.

Parameters
[in]valueThe "Allow Deformations" state.

◆ UpdateCollision()

void UpdateCollision ( )

Updates any collision data after any changes to the SculptLayer Offsets have been made.

Warning
This is required before calling the Hit() methods.

◆ NeedCollisionUpdate()

void NeedCollisionUpdate ( Bool  fullUpdate = false)

Tells the SculptObject that it requires a collision update before the user tries to use any of the Sculpt tools.
Then next time a user tries to use a tool it will first call UpdateCollision() to ensure that the Hit() calls will be correct.

Parameters
[in]fullUpdatetrue to update the full mesh, this is not always required.

◆ OffsetPoint()

void OffsetPoint ( SculptLayer pLayer,
Vector pPoints,
Bool  useMask,
Float  strength,
Int32  index,
const Vector offset,
Bool  respectLayerStrength = false 
)

Offsets a point on the layer when when the interactive flood operation has finished. This is called on the SculptObject by the Sculpt tools.

Warning
Should only be called from within SculptBrushToolData::FloodSelectedLayer().
Parameters
[in]pLayerThe SculptLayer that the brush is operating on.
[in]pPointsThe points from the call to GetPoints() which are used to directly effect the drawing of the SculptObject in the viewport.
[in]useMasktrue to respect the Mask on the Layer or not.
[in]strengthThe strength of the SculptLayer.
[in]indexThe index of the point on the PolygonObject for the current subdivision level.
[in]offsetThe offset to apply to the preview layer.
[in]respectLayerStrengthtrue to respect the strength of the layer or ignore it updating the mesh on screen.

◆ OffsetPreviewPoint()

void OffsetPreviewPoint ( SculptLayer pLayer,
Bool  useMask,
Float  strength,
Int32  index,
const Vector offset,
Bool  respectLayerStrength = false 
)

Adds to the value of the offset on the preview layer when used to do interactive flood updates on the SculptObject by the Sculpt tools.

Warning
Should only be called from within SculptBrushToolData::FloodSelectedLayer().
Parameters
[in]pLayerThe SculptLayer that the brush is operating on.
[in]useMasktrue to respect the Mask on the Layer or not.
[in]strengthThe strength of the SculptLayer.
[in]indexThe index of the point on the PolygonObject for the current subdivision level.
[in]offsetThe offset to apply to the preview layer.
[in]respectLayerStrengthtrue to respect the strength of the layer or ignore it updating the mesh on screen.

◆ SetPreviewPoint()

void SetPreviewPoint ( SculptLayer pLayer,
Bool  useMask,
Float  strength,
Int32  index,
const Vector offset,
Bool  respectLayerStrength = false 
)

Sets the value of the offset on the preview layer when used to do interactive flood updates on the SculptObject by the Sculpt tools.

Warning
Should only be called from within SculptBrushToolData::FloodSelectedLayer()
Parameters
[in]pLayerThe SculptLayer that the brush is operating on.
[in]useMasktrue to respect the Mask on the Layer or not.
[in]strengthThe strength of the SculptLayer.
[in]indexThe index of the point on the PolygonObject for the current subdivision level.
[in]offsetThe offset to set on the preview layer.
[in]respectLayerStrengthtrue to respect the strength of the layer or ignore it updating the mesh on screen.

◆ StartUndo()

void StartUndo ( )

Calls before any calls to AddOffset(), SetOffset(), AddToMask() or SetMask() to be undone.

Warning
This will only work if making changes to a single layer. Changes to multiple layers or layers at different levels is not allowed.
This must be done at the current subdivision level of the layer being changed for these calls to work properly.
EndUndo() must be called after all calls to the above methods have been done.
This must NEVER be called by a Sculpt brush during a stroke.

◆ EndUndo()

void EndUndo ( )

Must be called after StartUndo() once all the point and masks have been changed on the layers.

Warning
This must NEVER be called by a Sculpt brush during a stroke.

◆ Smooth()

void Smooth ( Int32  count,
Bool  respectMask 
)

Smooths the SculptObject and applies the offsets to the currently selected layer.

Parameters
[in]countThe number of times to run the smooth algorithm.
[in]respectMaskIf true it will not smooth any masked out points, if false it will apply it to every point.

◆ GetMaskCache()

Float32* GetMaskCache ( )

Gets the current mask values for the PolygonObject.
The number of points returned is equal to the number of points on the PolygonObject.

Returns
The mask values.

◆ PointPolysAverage() [1/2]

Float32 PointPolysAverage ( Int32  vertex,
Float32 values 
)

Averages out the values for the vertex on the PolygonObject.

Parameters
[in]vertexThe vertex number on the PolygonObject to get the average value for.
[in]valuesThe values to average out. This must contain the same number of values as there are points on the PolygonObject.
Returns
The mask values.

◆ PointPolysAverage() [2/2]

Vector PointPolysAverage ( Int32  vertex,
Vector values 
)

Averages out the values for the vertex on the PolygonObject.

Parameters
[in]vertexThe vertex number on the PolygonObject to get the average value for.
[in]valuesThe values to average out. This must contain the same number of values as there are points on the PolygonObject.
Returns
The mask values.

◆ UpdateMask()

void UpdateMask ( Bool  fullUpdate = false)

Updates the mask on the SculptObject.

Parameters
[in]fullUpdatetrue to force a full update of the mask.

◆ InitOpenGL()

void InitOpenGL ( BaseDraw bd = nullptr)

Private.
Initializes the SculptObject for the given viewport in OpenGL use.

Parameters
[in]bdThe viewport that is being updated. If it is nullptr then the currently active view will be used.

◆ IsPointSelected()

Bool IsPointSelected ( Int32  index)

Determines if a point should be moved or not in the SculptBrushToolData::FloodSelectedLayer() method.

Note
When in Point mode, and there is a selection, it returns true if a point is selected or false if the point is not selected.
If there are no points selected it returns true. When in Polygon mode, and there is a selection, it returns true if a point on any of the selected polygons is selected or false if there is no point selected.
If there are no polygons selected it returns true.
Warning
This method only works when the selected object being sculpted on is by a tool and is a PolygonObject without a SculptTag.
It returns false in all other cases.
Parameters
[in]indexThe index of the point on the object: 0<= index < GetPointCount()
Returns
true if the point was selected, otherwise false.

◆ IsPolygonSelected()

Bool IsPolygonSelected ( Int32  index)

Determines if a polygon should be moved or not in the SculptBrushToolData::FloodSelectedLayer() method.

Note
When in Polygon mode, and there is a selection, it returns true if a point on any of the selected polygons is selected or false if there is no point selected.
If there are no polygons selected it returns true.
Warning
This method only works when the selected object being sculpted on is by a tool and is a PolygonObject without a SculptTag.
It returns false in all other cases.
Parameters
[in]indexThe index of the polygon on the object: 0<= index < GetPolygonCount()
Returns
true if the polygon was selected, otherwise false.

◆ GetPolygon()

Bool GetPolygon ( Int32  index,
CPolygon cpoly 
)

Gets the polygon data at the given index.

Parameters
[in]indexThe index of the polygon on the object: 0<= index < GetPolygonCount()
[out]cpolyFilled with the polygon data.
Returns
True if the polygon was found, false if not.