InstanceObject Class Reference Library » Object Instance

#include <lib_instanceobject.h>

Inheritance diagram for InstanceObject:

详细描述

Class that contains the minimal data to represent one or multiple instances of an object. This InstanceObject has two modes : single-instance mode or multi-instance mode.

由于
R20

私有成员函数

  InstanceObject ()
  ~InstanceObject ()

Alloc/Free

static InstanceObject Alloc ()
static void  Free ( InstanceObject *&bl)

Viewport helper. Internal Use only.

Private .

static void  UpdateInstanceList ( BaseObject *pObj, InstanceObjectList *pCurrent, InstanceObjectList *&pList, const 矩阵 &m, const void *instanceCRC=nullptr)
static void  RecurseGenList ( BaseObject *op, BaseObject *generator, HierarchyHelp *hh=nullptr)
maxon::Result < void >  AddCacheInstanceData (InstanceObjectList *&pList)

Multi-instance reference object.

BaseObject GetReferenceObject ( BaseDocument *doc) const
maxon::Result < void >  SetReferenceObject ( BaseObject *refObj)

Multi-instance matrix and instance count management.

Bool   IsMultiInstance () const
maxon::Result < void >  SetInstanceMatrices (const maxon::BaseArray < 矩阵 > &matrices)
const maxon::BaseArray < 矩阵 > *  GetInstanceMatrices () const
矩阵   GetInstanceMatrix ( UInt index) const
maxon::Result < void >  SetInstanceMatrix ( UInt index, const 矩阵 &globalMatrix)
UInt32   GetMatrixDirtyID ( UInt index) const
UInt   GetInstanceCount () const

Multi-instance color accessors.

maxon::Result < void >  SetInstanceColors (const maxon::BaseArray < maxon::Color64 > &colors)
const maxon::BaseArray < maxon::Color64 > *  GetInstanceColors () const
maxon::Color64   GetInstanceColor ( UInt index) const

Multi-instance unique IP accessors.

maxon::Result < void >  SetInstanceUniqueIPs (const maxon::BaseArray < Int32 > &uniqueIPs)
const maxon::BaseArray < Int32 > *  GetInstanceUniqueIPs () const
Int32   GetInstanceUniqueIP ( UInt index) const
maxon::Block < const maxon::HashValue GetInstancePersistentHashes () const

Additional Inherited Members

-  Public Member Functions inherited from BaseObject
BaseObject GetNext (void)
BaseObject GetPred (void)
BaseObject GetUp (void)
BaseObject GetDown (void)
BaseObject GetDownLast (void)
向量   GetAbsPos () const
void  SetAbsPos (const 向量 &v)
向量   GetAbsScale () const
void  SetAbsScale (const 向量 &v)
向量   GetAbsRot () const
void  SetAbsRot (const 向量 &v)
向量   GetFrozenPos () const
void  SetFrozenPos (const 向量 &v)
向量   GetFrozenScale () const
void  SetFrozenScale (const 向量 &v)
向量   GetFrozenRot () const
void  SetFrozenRot (const 向量 &v)
向量   GetRelPos () const
void  SetRelPos (const 向量 &v)
向量   GetRelScale () const
void  SetRelScale (const 向量 &v)
向量   GetRelRot () const
void  SetRelRot (const 向量 &v)
const 矩阵 GetMl (void) const
void  SetMl (const 矩阵 &m)
矩阵   GetFrozenMln () const
矩阵   GetRelMln () const
矩阵   GetRelMl () const
void  SetRelMl (const 矩阵 &m)
矩阵   GetMg () const
void  SetMg (const 矩阵 &m)
矩阵   GetMln () const
矩阵   GetMgn () const
矩阵   GetUpMg () const
void  CopyMatrixTo ( BaseObject *dst)
向量   GetMp (void)
向量   GetRad (void)
Int32   GetEditorMode (void) const
Int32   GetEditorModeH (void) const
void  SetEditorMode ( Int32 mode)
Int32   GetRenderMode (void) const
Int32   GetRenderModeH (void) const
void  SetRenderMode ( Int32 mode)
Bool   GetDeformMode (void) const
void  SetDeformMode ( Bool mode)
Int32   GetRealDeformMode (void) const
void  SetRealDeformMode ( Int32 mode)
Int32   GetUniqueIP (void)
void  SetUniqueIP ( Int32 ip)
BaseTag GetFirstTag (void)
BaseTag GetLastTag (void)
BaseTag GetTag ( Int32 type, Int32 nr=0)
const maxon::BaseArray < BaseTag * > *  GetTagsOfType ( Int32 type) const
const maxon::BaseArray < BaseTag * > *  GetTagsWithFlags ( Int32 flags) const
const void *  GetTagDataR ( Int32 type, Int32 nr=0) const
void *  GetTagDataW ( Int32 type, Int32 nr=0)
Int32   GetTagDataCount ( Int32 type) const
BaseTag MakeTag ( Int32 type, BaseTag *pred=nullptr)
VariableTag MakeVariableTag ( Int32 type, Int32 count, BaseTag *pred=nullptr)
void  InsertTag ( BaseTag *tp, BaseTag *pred=nullptr)
void  KillTag ( Int32 type, Int32 nr=0)
Bool   CopyTagsTo ( BaseObject *dest, Int32 visible, Int32 variable, Int32 hierarchical, AliasTrans *trans)
BaseObject GetCache ( HierarchyHelp *hh=nullptr)
BaseObject GetDeformCache (void)
LineObject GetIsoparm (void)
void  SetIsoparm ( LineObject *l)
BaseObject GetCacheParent (void) const
BaseObject GetCacheTopParent (void) const
Bool   SetPhong ( Bool on, Bool anglelimit, Float angle)
Bool   IsDirty ( DIRTYFLAGS flags)
void  SetDirty ( DIRTYFLAGS flags)
Bool   CheckCache ( HierarchyHelp *hh)
void  Touch (void)
void  GetColorProperties ( ObjectColorProperties *prop)
void  SetColorProperties ( ObjectColorProperties *prop)
const 矩阵 GetModelingAxis ( BaseDocument *doc)
void  SetModelingAxis (const 矩阵 &m)
BaseObject GetAndCheckHierarchyClone ( HierarchyHelp *hh, BaseObject *op, HIERARCHYCLONEFLAGS flags, Bool *dirty, AliasTrans *trans, Bool allchildren)
BaseObject GetHierarchyClone ( HierarchyHelp *hh, BaseObject *op, HIERARCHYCLONEFLAGS flags, Bool *dirty, AliasTrans *trans)
BaseObject GetHierarchyClone ( HierarchyHelp *hh, BaseObject *op, HIERARCHYCLONEFLAGS flags, Bool *dirty, AliasTrans *trans, DIRTYFLAGS dirtyflags)
void  NewDependenceList (void)
Bool   CompareDependenceList (void)
void  AddDependence ( HierarchyHelp *hh, BaseObject *op)
void  AddDependence ( HierarchyHelp *hh, BaseObject *op, DIRTYFLAGS dirtyflags)
void  TouchDependenceList (void)
void  SetRotationOrder ( ROTATIONORDER order)
ROTATIONORDER   GetRotationOrder (void) const
void  SetQuaternionRotationMode ( Bool active, Bool bUndo)
Bool   IsQuaternionRotationMode (void)
Bool   SynchronizeVectorTrackKeys ( Int32 vectorTrackID, Bool bUndo, BaseTime startRange= BaseTime (-108000, 1), BaseTime endRange= BaseTime (108000, 1))
Bool   FindBestEulerAngle ( Int32 rotationTrackID, Bool bAdjustTangent, Bool bUndo, BaseTime startRange= BaseTime (-108000, 1), BaseTime endRange= BaseTime (108000, 1))
Bool   EvaluateSynchronizedRotation (const BaseTime &time, ANIMATEFLAGS flags, 向量 *resultRotation=nullptr)
Bool   GetVectorTracks (const DescID &id, CTrack *&xfound, CTrack *&yfound, CTrack *&zfound)
Bool   GetVectorCurves ( CCurve *curveToSearch, CCurve *&xfound, CCurve *&yfound, CCurve *&zfound)
UInt64   GetGUID ()
Int32   GetHighlightHandle ( BaseDraw *bd)
SplineObject GetRealSpline (void)
Float   GetVisibility ( Float parent)
Bool   SearchHierarchy ( BaseObject *op)
BaseObject GetOrigin ( Bool safe)
void  SetOrigin ( BaseObject *origin)
BaseObject GetTopOrigin ( Bool parent, Bool safe)
BaseObject GetEditObject ( BaseObject **psds, DISPLAYEDITSTATE state, Bool safetey=true)
void  RemoveFromCache (void)
DRAWRESULT   ObjDraw ( DRAWPASS drawpass, BaseDraw *bd, BaseDrawHelp *bh)
-  Public Member Functions inherited from BaseList2D
const Char GetViewportRenderId ( VIEWPORT_RENDER_ID typeId) const
BaseList2D GetNext ()
BaseList2D GetPred ()
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)
BaseContainer   GetData ()
void  SetData (const BaseContainer &bc, Bool add=true)
const BaseContainer GetDataInstance () const
BaseContainer GetDataInstance ()
const BaseContainer GetDataInstanceRef () const
BaseContainer GetDataInstanceRef ()
String   GetName () const
void  SetName (const maxon::String &name)
String   GetBubbleHelp ()
Bool   TransferGoal ( BaseList2D *dst, Bool undolink)
Bool   TransferMarker ( BaseList2D *dst) const
Bool   比例 ( Float scale)
Bool   编辑 ()
void  GetIcon ( IconData *dat)
GeListHead GetNLARoot ()
BaseList2D AnimationLayerRemap ( BaseObject **layer=nullptr)
String   GetTypeName ()
BaseList2D GetMain () const
void  InsertTrackSorted ( CTrack *track)
Bool   AddEventNotification ( BaseList2D *bl, NOTIFY_EVENT eventid, NOTIFY_EVENT_FLAG flags, const BaseContainer *data)
Bool   RemoveEventNotification ( BaseDocument *doc, BaseList2D *bl, NOTIFY_EVENT eventid)
Bool   FindEventNotification ( BaseDocument *doc, BaseList2D *bl, NOTIFY_EVENT eventid)
Bool   SetDescIDState (const DescID &id, DESCIDSTATE descidstate)
DESCIDSTATE   GetDescIDState (const DescID &id, Bool tolerant) const
GeListHead GetOverrideRoot ()
BaseOverride GetFirstOverride ()
GeListHead GetShaderRepositoryRoot ()
GeListHead GetHiddenShaderRoot ()
maxon::NimbusInterface *  GetNimbusRef (const maxon::Id &spaceId) const
maxon::Result < maxon::NimbusInterface * >  GetOrCreateNimbusRef (const maxon::Id &spaceId)
void  RemoveNimbusRef (const maxon::Id &spaceId)
maxon::Result < maxon::HashMap < maxon::Id , maxon::ForwardRef < maxon::NimbusRef > > >  GetAllNimbusRefs () const
Bool   IsNodeBased () const
void  GetMarkerStampEx ( UInt32 *l1, UInt32 *l2)
const GeMarker GetMarker () 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 ( 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)
BaseShader GetFirstShader () const
void  InsertShader ( BaseShader *shader, BaseShader *pred=nullptr)
void  ClearKeyframeSelection ()
Bool   FindKeyframeSelection (const DescID &id)
Bool   SetKeyframeSelection (const DescID &id, Bool selection)
Bool   KeyframeSelectionContent ()
LayerObject GetLayerObject ( BaseDocument *doc)
Bool   SetLayerObject ( LayerObject *layer)
const LayerData GetLayerData ( BaseDocument *doc, Bool rawdata=false)
Bool   SetLayerData ( BaseDocument *doc, const LayerData &data)
GeListHead GetCTrackRoot ()
CTrack GetFirstCTrack ()
CTrack FindCTrack (const DescID &id)
-  Public Member Functions inherited from GeListNode
GeListNode GetNext ()
GeListNode GetPred ()
GeListNode GetDown ()
GeListNode GetUp ()
GeListNode GetDownLast ()
void  InsertBefore ( GeListNode *bl)
void  InsertAfter ( GeListNode *bl)
void  InsertUnder ( GeListNode *bl)
void  InsertUnderLast ( GeListNode *bl)
void  移除 ()
GeListHead GetListHead ()
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)
GeListNode GetCustomData ()
BaseDocument GetDocument ()
Int32   GetBranchInfo ( BranchInfo *info, Int32 max, GETBRANCHINFO flags)
Bool   IsDocumentRelated ()
Int32   GetInfo ()
Bool   GetNBit ( NBIT bit) const
UInt32   GetNBitMask ( Int32 index) const
Bool   ChangeNBit ( NBIT bit, NBITCONTROL bitmode)
-  Public Member Functions inherited from C4DAtom
Int32   GetType () const
Int32   GetRealType () const
Int32   GetDiskType () const
Bool   IsInstanceOf ( Int32 id) const
Int32   GetClassification () const
Bool   消息 ( Int32 type, void *data=nullptr)
Bool   MultiMessage ( MULTIMSG_ROUTE flags, Int32 type, void *data)
C4DAtom GetClone ( COPYFLAGS flags, AliasTrans *trn)
Bool   CopyTo ( C4DAtom *dst, COPYFLAGS flags, AliasTrans *trn)
Bool   读取 ( HyperFile *hf, Int32 id, Int32 level)
Bool   Write ( HyperFile *hf)
Bool   ReadObject ( HyperFile *hf, Bool readheader)
Bool   WriteObject ( HyperFile *hf)
Bool   GetDescription ( 描述 *description, DESCFLAGS_DESC flags)
Bool   GetParameter (const DescID &id, GeData &t_data, DESCFLAGS_GET flags)
Bool   SetParameter (const DescID &id, const GeData &t_data, DESCFLAGS_SET flags)
DynamicDescription GetDynamicDescription ()
Bool   GetEnabling (const DescID &id, const GeData &t_data, DESCFLAGS_ENABLE flags, const BaseContainer *itemdesc)
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)
-  Static Public Member Functions inherited from BaseObject
static BaseObject Alloc ( Int32 type)
static void  Free ( BaseObject *&bl)
-  Static Public Member Functions inherited from BaseList2D
static BaseList2D Alloc ( 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

构造函数 & 析构函数文档编制

◆  InstanceObject()

InstanceObject () private

◆  ~InstanceObject()

~ InstanceObject () private

成员函数文档编制

◆  Alloc()

static InstanceObject * Alloc ( )
static

Allocates a ObjectInstance object. Destroy the allocated ObjectInstance object with Free() 。使用 AutoAlloc to automate the allocation and destruction based on scope.

返回
The allocated ObjectInstance object, or nullptr if the allocation failed.

◆  Free()

static void Free ( InstanceObject *&  bl )
static

Destructs ObjectInstance objects allocated with Alloc() 。使用 AutoAlloc to automate the allocation and destruction based on scope.

参数
[in,out] bl The ObjectInstance object to destruct. If the pointer is nullptr nothing happens. The pointer is assigned nullptr afterwards.

◆  UpdateInstanceList()

static void UpdateInstanceList ( BaseObject pObj ,
InstanceObjectList *  pCurrent ,
InstanceObjectList *&  pList ,
const 矩阵 m ,
const void *  instanceCRC = nullptr  
)
static

Update pCurrent data with the given information, added to the list if one is provided.

参数
[in] pObj Object used for the instance.
[in] pCurrent Data structure to fill up.
[in,out] pList Optional List, pCurrent is added to the list if provided.
[in] m Matrix to use for this instance.
[in] instanceCRC Unique pointer used for CRC (used for multi-instance).

◆  RecurseGenList()

static void RecurseGenList ( BaseObject op ,
BaseObject generator ,
HierarchyHelp hh = nullptr  
)
static

Add op and its children as a dependency to the generator.

参数
[in] op BaseObject the generator depends on.
[in] generator Generator to add the dependencies to.
[in] hh 可选 HierarchyHelp .

◆  AddCacheInstanceData()

maxon::Result <void> AddCacheInstanceData ( InstanceObjectList *&  pList )

Update the instance list with the cached instance data.

参数
[in,out] pList Current list to fill if provided. If null, a new list may be returned.

◆  GetReferenceObject()

BaseObject * GetReferenceObject ( BaseDocument doc ) const

Return the pointer to the BaseObject being instanciated. Same as accessing the INSTANCEOBJECT_LINK element in the BaseContainer .

参数
[in] doc The current document.
返回
Object being instanciated. Will be null if this instance object is unassigned.

◆  SetReferenceObject()

maxon::Result <void> SetReferenceObject ( BaseObject refObj )

Set the reference object used for the multiple instances (INSTANCEOBJECT_LINK in BaseContainer ).

参数
[in] refObj desired reference object.

◆  IsMultiInstance()

Bool IsMultiInstance ( ) const

Return whether this InstanceObject is in multi-instance mode.

返回
True if in multi-instance mode.

◆  SetInstanceMatrices()

maxon::Result <void> SetInstanceMatrices ( const maxon::BaseArray < 矩阵 > &  matrices )

Set matrices for the instance(s). The array size determines the instance count.

参数
[in] matrices Instance matrix array.

◆  GetInstanceMatrices()

const maxon::BaseArray < 矩阵 >* GetInstanceMatrices ( ) const

Returns an array of matrices with one element for each instance.

返回
Pointer to the matrix array. Owned by the InstanceObject .

◆  GetInstanceMatrix()

矩阵 GetInstanceMatrix ( UInt   index ) const

Return the global matrix of the instance at the specified index.

参数
[in] index Instance index.
返回
Instance matrix.

◆  SetInstanceMatrix()

maxon::Result <void> SetInstanceMatrix ( UInt   index ,
const 矩阵 globalMatrix  
)

Set the global matrix of the instance at the specified index. index must be valid, there is no allocation for index out of range.

参数
[in] index Instance index.
[in] globalMatrix Instance matrix.

◆  GetMatrixDirtyID()

UInt32 GetMatrixDirtyID ( UInt   index ) const

Return the Matrix dirtyID of the instance at the specified index.

参数
[in] index Instance index.
返回
dirty ID.

◆  GetInstanceCount()

UInt GetInstanceCount ( ) const

Return the multi-instance count (number of instances and matrices).

返回
Multi-instance count.

◆  SetInstanceColors()

maxon::Result <void> SetInstanceColors ( const maxon::BaseArray < maxon::Color64 > &  colors )

Set colors for the instances. Colors will be clamped between 0 and 1.

参数
[in] colors Array of instance colors.

◆  GetInstanceColors()

const maxon::BaseArray < maxon::Color64 >* GetInstanceColors ( ) const

Return an array of instance colors. If the array is null or empty, the default color is used.

返回
Pointer to the color array. Owned by the InstanceObject .

◆  GetInstanceColor()

maxon::Color64 GetInstanceColor ( UInt   index ) const

Return the color of the instance at the specified index. If no custom color is found or the index is invalid, the default color is returned.

参数
[in] index Instance index.
返回
Instance color.

◆  SetInstanceUniqueIPs()

maxon::Result <void> SetInstanceUniqueIPs ( const maxon::BaseArray < Int32 > &  uniqueIPs )

Set unique IP for the instances.

参数
[in] uniqueIPs Array of instance unique IP.

◆  GetInstanceUniqueIPs()

const maxon::BaseArray < Int32 >* GetInstanceUniqueIPs ( ) const

Return an array of instance unique IP. If the array is null or empty, 0 is used.

返回
Pointer to the unique IP array. Owned by the InstanceObject .

◆  GetInstanceUniqueIP()

Int32 GetInstanceUniqueIP ( UInt   index ) const

Return the unique IP of the instance at the specified index. If no unique IP is found or the index is invalid, 0 is returned.

参数
[in] index Instance index.
返回
Instance unique IP.

◆  GetInstancePersistentHashes()

maxon::Block <const maxon::HashValue > GetInstancePersistentHashes ( ) const

Return a block of persistent hashes. These allow to uniquely identify instances over time. If the block is empty, persistent hashes aren't supported, in that case you have to use GetInstanceUniqueIPs() .

返回
Block of instances hashes.