BaseObject Class Reference

#include <c4d_baseobject.h>

Inheritance diagram for BaseObject:

Public Types

typedef BaseList4D SUPER
 
- Public Types inherited from BaseList4D
typedef BaseList2D SUPER
 
- Public Types inherited from BaseList2D
typedef GeListNode SUPER
 
- Public Types inherited from GeListNode
typedef PrivateChunk SUPER
 

Public Member Functions

virtual Bool IsInstanceOf (melange::Int32 id) const
 
- Public Member Functions inherited from BaseList4D
BaseList4DGetUp ()
 
BaseList4DGetDown ()
 
BaseList4DGetDownLast ()
 
void InsertBefore (BaseList4D *bl)
 
void InsertAfter (BaseList4D *bl)
 
void InsertUnder (BaseList4D *bl)
 
void InsertUnderLast (BaseList4D *bl)
 
virtual void Remove ()
 
- Public Member Functions inherited from BaseList2D
 BaseList2D ()
 
virtual ~BaseList2D ()
 
BaseList2DGetNext ()
 
BaseList2DGetPred ()
 
NodeDataGetNodeData ()
 
void SetNodeData (NodeData *data)
 
void SetBit (Int32 mask)
 
Bool GetBit (Int32 mask)
 
void DelBit (Int32 mask)
 
void ToggleBit (Int32 mask)
 
Int32 GetAllBits ()
 
void SetAllBits (Int32 bits)
 
BaseContainer GetData ()
 
BaseContainerGetDataInstance ()
 
BaseContainerGetDataInstanceRef ()
 
const StringGetName ()
 
void SetName (const String &new_name)
 
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
 
BaseShaderGetFirstShader ()
 
Bool InsertShader (BaseShader *shader, BaseShader *pred=nullptr)
 
Bool InsertShaderLast (BaseShader *shader)
 
RootCTrackGetCTrackRoot ()
 
CTrackGetFirstCTrack ()
 
CTrackFindCTrack (const DescID &id)
 
Bool AppendCTrack (CTrack *t)
 
void InsertTrackSorted (CTrack *track)
 
virtual Int32 GetType () const
 
LayerObjectGetLayerObject ()
 
void SetLayerObject (LayerObject *layer)
 
const LayerDataGetLayerData (BaseDocument *doc, Bool rawdata=false)
 
Bool SetLayerData (BaseDocument *doc, const LayerData &data)
 
DynamicDescriptionGetDynamicDescription ()
 
virtual Bool IsBaseList ()
 
Bool SetDescIDState (const DescID &id, DESCIDSTATE descidstate)
 
DESCIDSTATE GetDescIDState (const DescID &id, Bool tolerant) const
 
RootPluginNodeGetOverrideRoot ()
 
BaseOverrideGetFirstOverride ()
 
virtual Bool TranslateDescID (const DescID &id, DescID &res_id, GeListNode *&res_at)
 
- Public Member Functions inherited from GeListNode
 GeListNode ()
 
 ~GeListNode ()
 
virtual Bool GetNBit (Int32 bit) const
 
virtual Bool ChangeNBit (NBIT bit, NBITCONTROL bitmode)
 
BaseDocumentGetDocument ()
 
virtual Int32 GetInfo ()
 
GeListNodeGetPred ()
 
GeListNodeGetNext ()
 
GeListNodeGetUp ()
 
GeListNodeGetDown ()
 
GeListNodeGetDownLast ()
 
void InsertBefore (GeListNode *op)
 
void InsertAfter (GeListNode *op)
 
void Remove ()
 
void InsertUnder (GeListNode *op)
 
void InsertUnderLast (GeListNode *op)
 
RootList2DGetListHead ()
 
Int32 GetNodeID (Int32 index=0) const
 
- Public Member Functions inherited from PrivateChunk
 PrivateChunk ()
 
Bool ReadChunk (HyperFile *hf, Bool keepin=false, Bool noheader=false)
 
virtual Bool IsListHead ()
 
Bool ReadObject (HyperFile *hf, Bool readheader)
 
Bool WriteObject (HyperFile *hf, Int32 type)
 
Bool CopyTo (PrivateChunk *dest, COPYFLAGS flags, AliasTrans *trans)
 
Bool GetParameter (Int32 id, GeData &data)
 
Bool SetParameter (Int32 id, const GeData &data)
 
Bool GetParameter (const DescID &id, GeData &data)
 
Bool SetParameter (const DescID &id, const GeData &data)
 
virtual Int32 GetChunkLevel ()
 
- Public Member Functions inherited from GeTempPublicNode2D< PrivateChunk >
PrivateChunkGetNext () const
 
PrivateChunkGetPrev () const
 
void InsertBefore (PrivateChunk *n)
 
void InsertAfter (PrivateChunk *n)
 
void Remove ()
 

Protected Member Functions

virtual Bool HandleSubChunk (HyperFile *hf, Int32 id, Int32 level)
 
virtual Bool Write (HyperFile *hf)
 
virtual Int32 GetInstanceType () const
 
 BaseObject ()
 
 BaseObject (Int32 id)
 
virtual ~BaseObject ()
 
- Protected Member Functions inherited from BaseList4D
 BaseList4D ()
 
 ~BaseList4D ()
 
- Protected Member Functions inherited from BaseList2D
void SetID (Int32 id)
 

Private Member Functions

NodeDataAllocObjectData (Int32 type, Bool &known)
 
UInt32 GetLastCrc ()
 
void SetLastCrc (UInt32 chkSum)
 
void CalculateCrc (Crc32 &chkSum)
 
void UpdateInternalCrc ()
 
const Matrix_GetMl () const
 
virtual Int32 GetDiskType () const
 
virtual Bool GetDParameter (const DescID &id, GeData &data)
 
virtual Bool SetDParameter (const DescID &id, const GeData &data)
 
virtual Bool CopyToX (PrivateChunk *dst, COPYFLAGS flags, AliasTrans *trans)
 
BaseObjectGetCloneObject (const Bool childs, const COPYFLAGS flags=COPYFLAGS_0, AliasTrans *trans=nullptr)
 

Private Attributes

Matrix ml_cache
 
Bool ml_changed
 
Vector t_pos
 
Vector t_rot
 
Vector t_scale
 
Vector f_pos
 
Vector f_scale
 
Vector f_rot
 
Vector tf_rot
 
Vector tf_pos
 
Vector tf_scale
 
Matrix frozenm
 
Matrix ifrozenm
 
UInt32 boflags
 
ROTATIONORDER t_rotation_order
 
Matrix intern
 
Matrix comp
 
Matrix m_ModelingAxis
 
RootTag m_tags
 
Int32 e_mode
 
Int32 r_mode
 
Int32 t_mode
 
Bool t_xray
 
Vector t_color
 
Int32 t_usecolor
 
Int32 t_shadingcolormode
 
Vector t_shadingcolor
 
RootObjectm_deformcacheobjects
 
RootObjectm_cacheobjects
 
Int32 _disktype
 

Friends

class RootObject
 
class BaseDraw
 
class BaseDocument
 
class NodeData
 

Alloc/Free

static BaseObjectAlloc (Int32 type)
 
static void Free (BaseObject *&bl)
 

Navigation

BaseObjectGetNext ()
 
BaseObjectGetPred ()
 
BaseObjectGetUp ()
 
BaseObjectGetDown ()
 
BaseObjectGetDownLast ()
 

Clone

virtual BaseList2DGetClone (COPYFLAGS flags, AliasTrans *trans)
 

Abs Pos/Scale/Rot

Vector GetAbsPos () const
 
void SetAbsPos (const Vector &v)
 
Vector GetAbsScale () const
 
void SetAbsScale (const Vector &v)
 
Vector GetAbsRot () const
 
void SetAbsRot (const Vector &v)
 

Frozen Pos/Scale/Rot

Vector GetFrozenPos () const
 
void SetFrozenPos (const Vector &v)
 
Vector GetFrozenScale () const
 
void SetFrozenScale (const Vector &v)
 
Vector GetFrozenRot () const
 
void SetFrozenRot (const Vector &v)
 

Rel Pos/Scale/Rot

Vector GetRelPos () const
 
void SetRelPos (const Vector &v)
 
Vector GetRelScale () const
 
void SetRelScale (const Vector &v)
 
Vector GetRelRot () const
 
void SetRelRot (const Vector &v)
 

Ml/Mg Matrix

const MatrixGetMl () const
 
void SetMl (const Matrix &m)
 
Matrix GetFrozenMln () const
 
Matrix GetRelMln () const
 
Matrix GetRelMl () const
 
void SetRelMl (const Matrix &m)
 
Matrix GetMg ()
 
void SetMg (const Matrix &m)
 
Matrix GetMln () const
 
Matrix GetMgn ()
 
Matrix GetUpMg ()
 
void CopyMatrixTo (BaseObject *dest)
 

Rotation Order

void SetRotationOrder (ROTATIONORDER order)
 
ROTATIONORDER GetRotationOrder () const
 

Synchronized Rotation Mode

void SetQuaternionRotationMode (Bool active)
 
Bool IsQuaternionRotationMode ()
 
Bool SynchronizeVectorTrackKeys (Int32 vectorTrackID, BaseTime startRange=BaseTime(-108000, 1), BaseTime endRange=BaseTime(108000, 1))
 
Bool FindBestEulerAngle (Int32 rotationTrackID, Bool bAdjustTangent, BaseTime startRange=BaseTime(-108000, 1), BaseTime endRange=BaseTime(108000, 1))
 

Editor/Render/Deform Mode

Int32 GetEditorMode ()
 
void SetEditorMode (Int32 mode)
 
Int32 GetRenderMode ()
 
void SetRenderMode (Int32 mode)
 
Bool GetDeformMode ()
 
void SetDeformMode (Bool mode)
 

Tag

BaseTagGetFirstTag ()
 
BaseTagGetTag (Int32 type, Int32 nr=0)
 
BaseTagMakeTag (Int32 type, BaseTag *pred=nullptr)
 
void InsertTag (BaseTag *tp, BaseTag *pred=nullptr)
 
void KillTag (Int32 type, Int32 nr=0)
 

Cache

BaseObjectGetCache ()
 
BaseObjectGetDeformCache ()
 

Color Properties

void GetColorProperties (ObjectColorProperties *prop)
 
void SetColorProperties (ObjectColorProperties *prop)
 

Execute

virtual Bool Execute ()
 

Miscellaneous

Bool HasChanged ()
 

Additional Inherited Members

- Protected Attributes inherited from BaseList2D
Int32 m_id
 
RootShader mp_rootshader
 
RootShader root_shader_repository
 
Int32 l_bitfeld
 
RootCTrack mp_rootctrack
 
RootPluginNode root_override
 
NotifyListnotify_events
 
DescIdStorekeyframestore
 
DescIdStorepropstore
 
BaseContainer m_bc
 
NodeDatam_data
 
- Protected Attributes inherited from GeListNode
GeAliasGoal m_xgoal
 
UInt32 m_bits [4]
 
RootList2Dt_rootlist_parent
 
RootList2Dm_children
 
BaseDocumentparent_doc
 
void * unknownData
 
Int unknownDataSize
 
Int32 unknownDataLevel
 
Int32 pluginID
 

Detailed Description

All objects in Cinema 4D are derived from the BaseObject class.
Contains methods for the object's position, scale and rotation, as well as for accessing the sub-items of the object (e.g. tags and animation tracks).

Note
Has to be created with Alloc() and destroyed with Free().

Member Typedef Documentation

◆ SUPER

typedef BaseList4D SUPER

Constructor & Destructor Documentation

◆ BaseObject() [1/2]

BaseObject ( )
protected

◆ BaseObject() [2/2]

BaseObject ( Int32  id)
protected

◆ ~BaseObject()

virtual ~BaseObject ( )
protectedvirtual

Member Function Documentation

◆ IsInstanceOf()

virtual Bool IsInstanceOf ( melange::Int32  id) const
virtual

Reimplemented from BaseList4D.

Reimplemented in SplineObject, PolygonObject, and PointObject.

◆ AllocObjectData()

NodeData* AllocObjectData ( Int32  type,
Bool known 
)
private

◆ GetLastCrc()

UInt32 GetLastCrc ( )
private

◆ SetLastCrc()

void SetLastCrc ( UInt32  chkSum)
private

◆ CalculateCrc()

void CalculateCrc ( Crc32 chkSum)
private

◆ UpdateInternalCrc()

void UpdateInternalCrc ( )
private

◆ _GetMl()

const Matrix& _GetMl ( ) const
private

◆ GetDiskType()

virtual Int32 GetDiskType ( ) const
privatevirtual

Gets the unique disk type of the base list.

Note
Normally this is the same as GetType() but there are exceptions.
Returns
The disk type, for example Ocube.

Reimplemented from BaseList2D.

Reimplemented in SplineObject, PointObject, and PolygonObject.

◆ GetDParameter()

virtual Bool GetDParameter ( const DescID id,
GeData data 
)
privatevirtual

Reimplemented from BaseList2D.

◆ SetDParameter()

virtual Bool SetDParameter ( const DescID id,
const GeData data 
)
privatevirtual

Reimplemented from BaseList2D.

◆ CopyToX()

virtual Bool CopyToX ( PrivateChunk dst,
COPYFLAGS  flags,
AliasTrans trans 
)
privatevirtual

Reimplemented from BaseList2D.

◆ GetCloneObject()

BaseObject* GetCloneObject ( const Bool  childs,
const COPYFLAGS  flags = COPYFLAGS_0,
AliasTrans trans = nullptr 
)
private

◆ HandleSubChunk()

virtual Bool HandleSubChunk ( HyperFile hf,
Int32  id,
Int32  level 
)
protectedvirtual

Private.

Reimplemented from BaseList4D.

Reimplemented in SplineObject.

◆ Write()

virtual Bool Write ( HyperFile hf)
protectedvirtual

Private.

Reimplemented from BaseList4D.

Reimplemented in SplineObject.

◆ GetInstanceType()

virtual Int32 GetInstanceType ( ) const
protectedvirtual

Reimplemented from BaseList2D.

◆ Alloc()

static BaseObject* Alloc ( Int32  type)
static

Allocates a base object. Destroy the allocated base object with Free().

Parameters
[in]typeThe object type.
Returns
The allocated base object, or nullptr if the allocation failed.

◆ Free()

static void Free ( BaseObject *&  bl)
static

Destructs base objects allocated with Alloc().

Parameters
[in,out]blThe base object to destruct. If the pointer is nullptr nothing happens. The pointer is assigned nullptr afterwards.

◆ GetNext()

BaseObject* GetNext ( )

Gets the next object in the list.

Returns
The next object, or nullptr if there is none. Melange owns the pointed object.

◆ GetPred()

BaseObject* GetPred ( )

Gets the previous object in the list.

Returns
The previous base object, or nullptr if there is none. Melange owns the pointed object.

◆ GetUp()

BaseObject* GetUp ( )

Gets the parent object of the list node.

Returns
The parent object, or nullptr if there is none. Melange owns the pointed object.

◆ GetDown()

BaseObject* GetDown ( )

Gets the first child object of the list node.

Returns
The first child object, or nullptr if there is none. Melange owns the pointed object.

◆ GetDownLast()

BaseObject* GetDownLast ( )

Gets the last child base object of the list node.

Returns
The last child object, or nullptr if there is none. Melange owns the pointed object.

◆ GetClone()

virtual BaseList2D* GetClone ( COPYFLAGS  flags,
AliasTrans trans 
)
virtual

Gets a clone/copy of the object.

Parameters
[in]flagsFlags for the clone.
[in]transAn alias translator for the operation. Can be nullptr. The caller owns the pointed layer.
Returns
The cloned object. The caller owns the pointed object.

Reimplemented from BaseList2D.

◆ GetAbsPos()

Vector GetAbsPos ( ) const

Gets the absolute position of the object.
These are the absolute local coordinates within the parent object.
If the object has no parent then these are world coordinates.

See also
The article Freeze Transformation
Returns
The object's absolute position.

◆ SetAbsPos()

void SetAbsPos ( const Vector v)

Sets the absolute local position of the object within its parent.
These are the absolute local coordinates within the parent object.
If the object has no parent then these are world coordinates.

See also
The article Freeze Transformation
Parameters
[in]vThe object's absolute position to set.

◆ GetAbsScale()

Vector GetAbsScale ( ) const

Gets the absolute scale of the object.
This is relative to the object's parent if it has one.

See also
The article Freeze Transformation
Returns
The object's absolute scale.

◆ SetAbsScale()

void SetAbsScale ( const Vector v)

Sets the absolute scale of the object.
This is relative to the object's parent if it has one.

See also
The article Freeze Transformation
Parameters
[in]vThe object's absolute scale to set.

◆ GetAbsRot()

Vector GetAbsRot ( ) const

Gets the absolute HPB rotation of the object.
This is relative to the object's parent if it has one.

See also
The article Freeze Transformation
Returns
The object's absolute HPB rotation.

◆ SetAbsRot()

void SetAbsRot ( const Vector v)

Sets the absolute HPB rotation of the object.
This is relative to the object's parent if it has one.

See also
The article Freeze Transformation
Parameters
[in]vThe object's absolute HPB rotation to set.

◆ GetFrozenPos()

Vector GetFrozenPos ( ) const

Gets the frozen position of the object.

See also
The article Freeze Transformation
Returns
The object's frozen position.

◆ SetFrozenPos()

void SetFrozenPos ( const Vector v)

Sets the frozen position of the object.

See also
The article Freeze Transformation
Parameters
[in]vThe object's frozen position to set.

◆ GetFrozenScale()

Vector GetFrozenScale ( ) const

Gets the frozen scale of the object.

See also
The article Freeze Transformation
Returns
The object's frozen scale.

◆ SetFrozenScale()

void SetFrozenScale ( const Vector v)

Sets the frozen scale of the object.

See also
The article Freeze Transformation
Parameters
[in]vThe object's frozen scale to set.

◆ GetFrozenRot()

Vector GetFrozenRot ( ) const

Gets the frozen HPB rotation of the object.

See also
The article Freeze Transformation
Returns
The object's frozen HPB rotation.

◆ SetFrozenRot()

void SetFrozenRot ( const Vector v)

Sets the frozen HPB rotation of the object.

See also
The article Freeze Transformation
Parameters
[in]vThe object's frozen HPB rotation to set.

◆ GetRelPos()

Vector GetRelPos ( ) const

Gets the relative position of the object.

See also
The article Freeze Transformation
Returns
The object's relative position.

◆ SetRelPos()

void SetRelPos ( const Vector v)

Sets the relative position of the object.

See also
The article Freeze Transformation
Parameters
[in]vThe object's relative position to set.

◆ GetRelScale()

Vector GetRelScale ( ) const

Gets the relative scale of the object.

See also
The article Freeze Transformation
Returns
The object's relative scale.

◆ SetRelScale()

void SetRelScale ( const Vector v)

Sets the relative scale of the object.

See also
The article Freeze Transformation
Parameters
[in]vThe object's relative scale to set.

◆ GetRelRot()

Vector GetRelRot ( ) const

Gets the relative HPB rotation of the object.

See also
The article Freeze Transformation
Returns
The object's relative scale.

◆ SetRelRot()

void SetRelRot ( const Vector v)

Sets the relative HPB rotation of the object.

See also
The article Freeze Transformation
Parameters
[in]vThe object's relative rotation to set.

◆ GetMl()

const Matrix& GetMl ( ) const

Gets the local matrix representing the object's position, scale and rotation.

Returns
The object's local matrix.

◆ SetMl()

void SetMl ( const Matrix m)

Sets the local matrix representing the object's position, scale and rotation.

Parameters
[in]mThe object's local matrix to set.

◆ GetFrozenMln()

Matrix GetFrozenMln ( ) const

Gets the frozen and normalized matrix of the object.

See also
The article Freeze Transformation
Returns
The object's frozen and normalized matrix.

◆ GetRelMln()

Matrix GetRelMln ( ) const

Gets the relative and normalized matrix of the object.

See also
The article Freeze Transformation
Returns
The object's relative and normalized matrix.

◆ GetRelMl()

Matrix GetRelMl ( ) const

Gets the relative matrix of the object.

See also
The article Freeze Transformation
Returns
The object's relative matrix.

◆ SetRelMl()

void SetRelMl ( const Matrix m)

Sets the relative matrix of the object.

See also
The article Freeze Transformation
Parameters
[in]mThe object's relative matrix to set.

◆ GetMg()

Matrix GetMg ( )

Gets the world (global) matrix representing the object's position, scale and rotation.

Warning
Only valid if the object is attached to a document. Virtual objects in caches and deform caches are not attached to a document, so this cannot be used for those objects.
Returns
The object's world matrix.

◆ SetMg()

void SetMg ( const Matrix m)

Sets the world (global) matrix representing the object's position, scale and rotation.

Parameters
[in]mThe object's world matrix to set.

◆ GetMln()

Matrix GetMln ( ) const

Gets the local normalized matrix representing the object's position, scale and rotation.

Returns
The object's normalized local matrix.

◆ GetMgn()

Matrix GetMgn ( )

Gets the world (global) normalized matrix representing the object's position, scale and rotation.

Returns
The object's normalized world matrix.

◆ GetUpMg()

Matrix GetUpMg ( )

Gets the world (global) matrix of the parent object representing the parent's position, scale and rotation.
If the object has no parent object then the method returns a unit matrix.

Returns
The parent object's world matrix.

◆ CopyMatrixTo()

void CopyMatrixTo ( BaseObject dest)

Copies the object's matrix to another object.

Parameters
[in,out]destThe destination object to copy the matrix to.

◆ SetRotationOrder()

void SetRotationOrder ( ROTATIONORDER  order)

Sets the rotation order of the object.

Parameters
[in]orderThe rotation order to set for the object: ROTATIONORDER

◆ GetRotationOrder()

ROTATIONORDER GetRotationOrder ( ) const

Gets the rotation order of the object.

Returns
The rotation order of the object: ROTATIONORDER

◆ SetQuaternionRotationMode()

void SetQuaternionRotationMode ( Bool  active)

Sets the Synchronized Rotation Mode of the object.

Since
18.002
Parameters
[in]activeEnable/Disable the Synchronized Rotation mode for the object

◆ IsQuaternionRotationMode()

Bool IsQuaternionRotationMode ( )

Checks if Object Rotation is interpolated in Quaternion Mode.

Since
18.002
Returns
true if Rotation Interpolation is Quaternion, otherwise false.

◆ SynchronizeVectorTrackKeys()

Bool SynchronizeVectorTrackKeys ( Int32  vectorTrackID,
BaseTime  startRange = BaseTime(-108000, 1),
BaseTime  endRange = BaseTime(108000, 1) 
)

Makes sure that the track Curves component are synchronized (keys on each component). If a component track is found, the other track components will be synchronized.

Since
18.002
Parameters
[in]vectorTrackIDid of the Vector Track to synchronize
[in]startRange(optional)Start operation at given time
[in]endRange(optional)End operation at given time
Returns
true if Track Synchronization was successfull, otherwise false.

◆ FindBestEulerAngle()

Bool FindBestEulerAngle ( Int32  rotationTrackID,
Bool  bAdjustTangent,
BaseTime  startRange = BaseTime(-108000, 1),
BaseTime  endRange = BaseTime(108000, 1) 
)

Tries to find the best Euler Angle according to the previous key. The object must have keys on each component.

Since
18.002
Parameters
[in]rotationTrackIDRotation Track ID to manage (Relative, global, absolute, frozen)
[in]bAdjustTangentTry to adjust the tangent with new value, if false auto is used
[in]startRange(optional)Start operation at given time
[in]endRange(optional)End operation at given time
Returns
true if Rotation Synchronization was successfull, otherwise false.

◆ GetEditorMode()

Int32 GetEditorMode ( )

Gets the mode of the editor dot for the object.

Returns
The editor mode.

◆ SetEditorMode()

void SetEditorMode ( Int32  mode)

Sets the mode for of editor dot for the object.

Parameters
[in]modeThe editor mode to set.

◆ GetRenderMode()

Int32 GetRenderMode ( )

Gets the mode of the render dot for the object.

Returns
The render mode.

◆ SetRenderMode()

void SetRenderMode ( Int32  mode)

Sets the mode of the render dot for the object.

Parameters
[in]modeThe render mode to set.

◆ GetDeformMode()

Bool GetDeformMode ( )

Gets the enabled mode of the deformation/generator tick.

Returns
true if the deformer/generator is enabled, otherwise false.

◆ SetDeformMode()

void SetDeformMode ( Bool  mode)

Sets the enabled mode of the deformation/generator tick.

Parameters
[in]modetrue to enable the generator/deformer object, otherwise false.

◆ GetFirstTag()

BaseTag* GetFirstTag ( )

Gets the first tag associated with the object.

Returns
The first tag, or nullptr if no tags available. The object owns the pointed tag.

◆ GetTag()

BaseTag* GetTag ( Int32  type,
Int32  nr = 0 
)

Gets a tag of a certain type associated with the object.

Parameters
[in]typeThe type of tag to fetch from the object.
[in]nrOptionally specify a starting tag index to begin the search. Since 17.008
If the requested number is not available then nullptr will be returned even if there is a tag of that type with a different index.
Returns
The requested tag, or nullptr if no tags of the requested type are available. The object owns the pointed tag.

◆ MakeTag()

BaseTag* MakeTag ( Int32  type,
BaseTag pred = nullptr 
)

Creates and associates a tag with the object.

Parameters
[in]typeThe type of tag to create.
[in]predThe previous tag to insert the tag after, or nullptr if the tag should be inserted at the start of the tag list. The caller owns the pointed tag.
Returns
The new tag, or nullptr if failed. The object owns the pointed tag.

◆ InsertTag()

void InsertTag ( BaseTag tp,
BaseTag pred = nullptr 
)

Inserts tag into the object's tag list.

Parameters
[in]tpThe tag to insert. The object takes over the ownership of the pointed tag.
[in]predThe previous tag to insert the tag after, or nullptr if the tag should be inserted at the start of the tag list. The caller owns the pointed tag. Since 18.002

◆ KillTag()

void KillTag ( Int32  type,
Int32  nr = 0 
)

Removes a tag from the object and frees its resources.

Since
18.002
Parameters
[in]typeThe type of tag to remove.
[in]nrOptionally specify a starting tag index to begin the search.

◆ GetCache()

BaseObject* GetCache ( )

Gets the object from the previously built cache.
Situations can be quite complex in Cinema 4D. For instance GetCache() could return a list of objects.
For example the default Sweep Generator internally has some built-in caches for the sweep surface and for the caps.
The following helper routine can be used to make things easier. It browses through this rather complex hierarchy of objects and caches recursively:

void DoRecursion(BaseObject *op)
{
BaseObject* tp = op->GetDeformCache();
if (tp)
{
DoRecursion(tp);
}
else
{
tp = op->GetCache(nullptr);
if (tp)
{
DoRecursion(tp);
}
else
{
if (!op->GetBit(BIT_CONTROLOBJECT))
{
if (op->IsInstanceOf(Opolygon))
{
...
}
}
}
}
for (tp = op->GetDown(); tp; tp=tp->GetNext())
{
DoRecursion(tp);
}
}

Remember:
Use the above routine only if the caches are already built.

See also
GetDeformCache()
Returns
The object's previously built cache or nullptr. The object owns the pointed object's cache.
May return nullptr if the cache is not available or is not yet built.

◆ GetDeformCache()

BaseObject* GetDeformCache ( )

Gets the previously built cache that has been deformed by an active deformer.
It is important to understand the concept how the deformer cache operates.
For each object in the hierarchy that generates a polygonal cache a deformer cache could also have been created by an active deformer object.
A simple example will help to see how this works:

cache_arraycube1.png

Take the simple hierarchy shown above, the array generator object creates a virtual hierarchy in the cache, this can be retrieved using GetCache().
This hierarchy is:

cache_arraycube2.png

From each of the Cube objects a further cache is generated, this time polygonal:

cache_arraycube3.png

From these the deformer object generates a deformed polygon cache:

cache_arraycube4.png

So the final hierarchy is:

cache_arraycube5.png

When a deformer becomes active every object/cache object gets a deform cache (if it was a polygonal object). The deformer cache is always polygonal and is only ever a single object.
Important:
The caches are always built after all plugins and expressions have been called.

Returns
The objects previously built deformed cache or nullptr. The object owns the pointed object's cache.
May return nullptr if the cache is not available or is not yet built.

◆ GetColorProperties()

void GetColorProperties ( ObjectColorProperties prop)

Gets the object's color properties and fill prop.

Parameters
[in]propFilled with the color properties. The caller owns the pointed color properties.

◆ SetColorProperties()

void SetColorProperties ( ObjectColorProperties prop)

Sets the object's color properties from prop.

Parameters
[in]propThe color properties to set. The caller owns the pointed color properties.

◆ Execute()

virtual Bool Execute ( )
virtual

Overload this method for self defined objects.

Returns
true if the object type is supported by the external application (e.g. no polygonal cache is returned), otherwise false.

Reimplemented in SplineObject.

◆ HasChanged()

Bool HasChanged ( )

Checks if the object data has changed.

Returns
true if the object data has changed, otherwise false.

Friends And Related Function Documentation

◆ RootObject

friend class RootObject
friend

◆ BaseDraw

friend class BaseDraw
friend

◆ BaseDocument

friend class BaseDocument
friend

◆ NodeData

friend class NodeData
friend

Member Data Documentation

◆ ml_cache

Matrix ml_cache
mutableprivate

◆ ml_changed

Bool ml_changed
mutableprivate

◆ t_pos

Vector t_pos
private

◆ t_rot

Vector t_rot
private

◆ t_scale

Vector t_scale
private

◆ f_pos

Vector f_pos
private

◆ f_scale

Vector f_scale
private

◆ f_rot

Vector f_rot
private

◆ tf_rot

Vector tf_rot
private

◆ tf_pos

Vector tf_pos
private

◆ tf_scale

Vector tf_scale
private

◆ frozenm

Matrix frozenm
private

◆ ifrozenm

Matrix ifrozenm
private

◆ boflags

UInt32 boflags
private

◆ t_rotation_order

ROTATIONORDER t_rotation_order
private

◆ intern

Matrix intern
private

◆ comp

Matrix comp
private

◆ m_ModelingAxis

Matrix m_ModelingAxis
private

◆ m_tags

RootTag m_tags
private

◆ e_mode

Int32 e_mode
private

◆ r_mode

Int32 r_mode
private

◆ t_mode

Int32 t_mode
private

◆ t_xray

Bool t_xray
private

◆ t_color

Vector t_color
private

◆ t_usecolor

Int32 t_usecolor
private

◆ t_shadingcolormode

Int32 t_shadingcolormode
private

◆ t_shadingcolor

Vector t_shadingcolor
private

◆ m_deformcacheobjects

RootObject* m_deformcacheobjects
private

◆ m_cacheobjects

RootObject* m_cacheobjects
private

◆ _disktype

Int32 _disktype
private