MarkMaterials Struct Reference

#include <c4d_baselist.h>

Detailed Description

Message struct for the MSG_MULTI_MARKMATERIALS message.
This is an example of how to handle the message:

Bool MyObject::Message(Int32 msg_type, void* msg_data)
{
switch (msg_type)
{
{
// 'mat' is the material of my object in the link parameter MATERIAL_ID
BaseDocument* doc = GetDocument();
BaseMaterial* mat = data.GetMaterialLink(MATERIAL_ID, doc);
if (MarkMaterials::IsTranslation(msg_data)) // Material translation, update my link if necessary
{
MarkMaterials* mm = static_cast<MarkMaterials*>(msg_data);
if (doc && mm->omat == mat)
{
doc->undo.InitUndo(UNDO_CHANGE_SMALL, this);
data.SetLink(MATERIAL_ID, mm->nmat);
}
}
else // Material marking, mark all my materials
{
MarkMaterials::Mark(mat, msg_data);
}
}
break;
}
return SUPER::Message(msg_type, msg_data);
}
#define MSG_MULTI_MARKMATERIALS
Definition: c4d_baselist.h:572
maxon::Bool Bool
Definition: ge_sys_math.h:46
maxon::Int32 Int32
Definition: ge_sys_math.h:51
class CINEWARE_SINGLEINHERITANCE BaseDocument
Definition: customgui_inexclude.h:18
static Bool IsTranslation(const void *msgData)
Definition: c4d_baselist.h:834
static void Mark(BaseMaterial *mat, void *msgData)
MarkMaterials()
Default constructor.
Definition: c4d_baselist.h:828

If the material link is stored in a BaseContainer, you can also use the convenience function HandleMaterialInContainer which handles both translation and marking.

Public Member Functions

 MarkMaterials ()
 

Static Public Member Functions

static Bool IsTranslation (const void *msgData)
 
static void Mark (BaseMaterial *mat, void *msgData)
 
static void HandleMaterialInContainer (GeListNode *node, Int32 id, BaseContainer *bc, void *msgData, BaseDocument *doc)
 

Public Attributes

BaseMaterialomat
 
BaseMaterialnmat
 
maxon::HashSet< BaseMaterial * > materials
 

Constructor & Destructor Documentation

◆ MarkMaterials()

Default constructor.

Member Function Documentation

◆ IsTranslation()

static Bool IsTranslation ( const void *  msgData)
static

◆ Mark()

static void Mark ( BaseMaterial mat,
void *  msgData 
)
static

◆ HandleMaterialInContainer()

static void HandleMaterialInContainer ( GeListNode node,
Int32  id,
BaseContainer bc,
void *  msgData,
BaseDocument doc 
)
static

Member Data Documentation

◆ omat

BaseMaterial* omat

Original material. If this is nullptr, all materials shall be collected in the materials set Cinema 4D owns the pointed material.

◆ nmat

BaseMaterial* nmat

New material. Cinema 4D owns the pointed material.

◆ materials

All found materials, only used when omat is nullptr.