FieldLayer Class Reference

#include <c4d_fielddata.h>

Inheritance diagram for FieldLayer:

Public Member Functions

FieldLayerGetUp () const
 
FieldLayerGetDown () const
 
FieldLayerGetNext () const
 
FieldLayerGetPred () const
 
FieldLayerGetDownLast () const
 
Float GetStrength () const
 
void SetStrength (Float strength)
 
Int32 GetBlendingMode () const
 
void SetBlendingMode (Int32 blendingMode)
 
Int32 GetUniqueID () const
 
void SetUniqueID (Int32 id)
 
FIELDLAYER_CHANNELFLAG GetChannelFlags () const
 
void SetChannelFlags (FIELDLAYER_CHANNELFLAG flags)
 
Bool GetChannelFlag (FIELDLAYER_CHANNELFLAG flag) const
 
void SetChannelFlag (FIELDLAYER_CHANNELFLAG flag, Bool state=true)
 
maxon::Result< void > InitSampling (const FieldInfo &info, FieldShared &shared)
 
maxon::Result< void > Sample (const FieldInput &inputs, FieldOutputBlock &outputs, const FieldInfo &info) const
 
maxon::Result< void > Aggregate (const FieldInput &inputs, const FieldOutputBlock &outputs, const FieldInfo &info)
 
void FreeSampling (const FieldInfo &info, FieldShared &shared)
 
Bool IsEqual (FieldLayer *comp) const
 
void SetLayerFlags (FIELDLAYER_FLAG flags, Bool state=true)
 
FIELDLAYER_FLAG GetLayerFlags () const
 
FieldLayerLink GetLinkedObject (BaseDocument *doc) const
 
Bool SetLinkedObject (const FieldLayerLink &link)
 
GeListHeadGetMaskHead () const
 
maxon::Result< void > AddMask ()
 
void RemoveMask (Bool deleteLayers=true)
 
- 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 ()
 
BaseList2DGetPred ()
 
BaseContainer GetData ()
 
void SetData (const BaseContainer &bc, Bool add=true)
 
const BaseContainerGetDataInstance () const
 
BaseContainerGetDataInstance ()
 
const BaseContainerGetDataInstanceRef () const
 
BaseContainerGetDataInstanceRef ()
 
String GetName () const
 
void SetName (const maxon::String &name)
 
String GetBubbleHelp ()
 
Bool TransferGoal (BaseList2D *dst, Bool undolink)
 
Bool TransferMarker (BaseList2D *dst) const
 
Bool Scale (Float scale)
 
Bool Edit ()
 
void GetIcon (IconData *dat)
 
GeListHeadGetNLARoot ()
 
BaseList2DAnimationLayerRemap (BaseObject **layer=nullptr)
 
String GetTypeName ()
 
BaseList2DGetMain () 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
 
GeListHeadGetOverrideRoot ()
 
BaseOverrideGetFirstOverride ()
 
GeListHeadGetShaderRepositoryRoot ()
 
GeListHeadGetHiddenShaderRoot ()
 
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
 
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 (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)
 
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 (BaseDocument *doc)
 
Bool SetLayerObject (LayerObject *layer)
 
const LayerDataGetLayerData (BaseDocument *doc, Bool rawdata=false)
 
Bool SetLayerData (BaseDocument *doc, const LayerData &data)
 
GeListHeadGetCTrackRoot ()
 
CTrackGetFirstCTrack ()
 
CTrackFindCTrack (const DescID &id)
 
- Public Member Functions inherited from GeListNode
GeListNodeGetNext ()
 
GeListNodeGetPred ()
 
GeListNodeGetDown ()
 
GeListNodeGetUp ()
 
GeListNodeGetDownLast ()
 
void InsertBefore (GeListNode *bl)
 
void InsertAfter (GeListNode *bl)
 
void InsertUnder (GeListNode *bl)
 
void InsertUnderLast (GeListNode *bl)
 
void Remove ()
 
GeListHeadGetListHead ()
 
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 ()
 
BaseDocumentGetDocument ()
 
Int32 GetBranchInfo (BranchInfo *info, Int32 max, GETBRANCHINFO flags)
 
Bool IsDocumentRelated ()
 
Int32 GetInfo () const
 
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 Message (Int32 type, void *data=nullptr)
 
Bool MultiMessage (MULTIMSG_ROUTE flags, Int32 type, void *data)
 
C4DAtomGetClone (COPYFLAGS flags, AliasTrans *trn)
 
Bool CopyTo (C4DAtom *dst, COPYFLAGS flags, AliasTrans *trn)
 
Bool Read (HyperFile *hf, Int32 id, Int32 level)
 
Bool Write (HyperFile *hf)
 
Bool ReadObject (HyperFile *hf, Bool readheader)
 
Bool WriteObject (HyperFile *hf)
 
Bool GetDescription (Description *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)
 
DynamicDescriptionGetDynamicDescription ()
 
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

static FieldLayerAlloc (Int32 type)
 
static void Free (FieldLayer *&layer)
 
- Static Public Member Functions inherited from BaseList2D
static BaseList2DAlloc (Int32 type)
 
static void Free (BaseList2D *&bl)
 

Private Member Functions

 MAXON_DISALLOW_COPY_AND_ASSIGN (FieldLayer)
 
 FieldLayer ()
 
 ~FieldLayer ()
 

Additional Inherited Members

- Static Public Attributes inherited from BaseList2D
static const Int32 SETBIT_FLAG_NODIRTY
 
static const Int32 SETBIT_FLAG_REMOVE
 

Constructor & Destructor Documentation

◆ FieldLayer()

FieldLayer ( )
private

◆ ~FieldLayer()

~FieldLayer ( )
private

Member Function Documentation

◆ MAXON_DISALLOW_COPY_AND_ASSIGN()

MAXON_DISALLOW_COPY_AND_ASSIGN ( FieldLayer  )
private

◆ GetUp()

FieldLayer* GetUp ( ) const

Gets the parent FieldLayer in the FieldList

Returns
nullptr if there is no parent, else the parent.

◆ GetDown()

FieldLayer* GetDown ( ) const

Gets the first child of the FieldLayer in the FieldList

Returns
nullptr if there are no children, else the first child.

◆ GetNext()

FieldLayer* GetNext ( ) const

Gets the next FieldLayer in the FieldList

Returns
nullptr if this is the final FieldLayer at the current level, otherwise the next sibling.

◆ GetPred()

FieldLayer* GetPred ( ) const

Gets the previous FieldLayer in the FieldList

Returns
nullptr if this is the first FieldLayer at the current level, otherwise the previous sibling.

◆ GetDownLast()

FieldLayer* GetDownLast ( ) const

Gets the last child of the FieldLayer in the FieldList

Returns
nullptr if there are no children, else the last child.

◆ GetStrength()

Float GetStrength ( ) const

Gets the FieldLayer's strength in the FieldList

Returns
The strength in percent.

◆ SetStrength()

void SetStrength ( Float  strength)

Sets a the FieldLayer's blending strength.

Parameters
[in]strengthThe strength to set in percent.

◆ GetBlendingMode()

Int32 GetBlendingMode ( ) const

Gets the FieldLayers blending mode in the FieldList

Returns
The blending mode, see Flbase.h/res.

◆ SetBlendingMode()

void SetBlendingMode ( Int32  blendingMode)

Sets FieldLayer's blending mode

Parameters
[in]blendingModeThe blending mode, see FLbase.h/res.

◆ GetUniqueID()

Int32 GetUniqueID ( ) const

@markprivate

◆ SetUniqueID()

void SetUniqueID ( Int32  id)

@markprivate

◆ GetChannelFlags()

FIELDLAYER_CHANNELFLAG GetChannelFlags ( ) const

Gets the enable state flags for the layers channel, e.g. the overall on/off (enable) or value, color and slope states

Returns
The channel flags for the layer see FIELDLAYER_CHANNELFLAG.

◆ SetChannelFlags()

void SetChannelFlags ( FIELDLAYER_CHANNELFLAG  flags)

Sets channel flags to the passed FIELDLAYER_CHANNELFLAG value

Parameters
[in]flagsThe flags state to be set for this layer.

◆ GetChannelFlag()

Bool GetChannelFlag ( FIELDLAYER_CHANNELFLAG  flag) const

Gets a specific channel enabling state flag for the layer. e.g. the enable, value, color or slope states

Parameters
[in]flagThe flag to retrieve.
Returns
True if the flag is set, False if it is clear.

◆ SetChannelFlag()

void SetChannelFlag ( FIELDLAYER_CHANNELFLAG  flag,
Bool  state = true 
)

Sets a specific channel flag state for the layer, e.g. the overall enabling, value, color or slope states

Parameters
[in]flagThe flag to set or clear.
[in]state(Optional) True to set the state to on, False to disable (clear) the flag for the layer.

◆ InitSampling()

maxon::Result<void> InitSampling ( const FieldInfo info,
FieldShared shared 
)

Initializes the Field Sampling, Must be called prior to invoking the Sample function. FreeSampling must be called to free any memory allocated during InitSampling after this.

Parameters
[in]infoA fully populated FieldInfo structure.
[in,out]sharedData shared between fields/layers.
Returns
OK on success.

◆ Sample()

maxon::Result<void> Sample ( const FieldInput inputs,
FieldOutputBlock outputs,
const FieldInfo info 
) const

Samples the FieldLayer. InitSampling must be called prior to use, and FreeSampling must be called after use. NOTE: Sample does not receive the SharedData. If a layer needs access to it, it can keep a reference on it or copy parts of it in InitSampling.

Parameters
[in]inputsThe points to sample in global space.
[in,out]outputsThe output arrays, must be allocated prior to use.
[in]infoA fully populated FieldInfo structure.
Returns
OK on success.

◆ Aggregate()

maxon::Result<void> Aggregate ( const FieldInput inputs,
const FieldOutputBlock outputs,
const FieldInfo info 
)

@MarkPrivate

Parameters
[in]inputsThe inputs.
[in]outputsThe outputs.
[in]infoThe information.
Returns
OK on success.

◆ FreeSampling()

void FreeSampling ( const FieldInfo info,
FieldShared shared 
)

Free's the Field Sampling. Releases any memory allocated during InitSampling.

Parameters
[in]infoA fully populated FieldInfo structure.
[in,out]sharedData shared between fields/layers.

◆ IsEqual()

Bool IsEqual ( FieldLayer comp) const

Query if this layer is equal to another. Used by the undo system and to update dirtiness as required.

Parameters
[in]compThe FieldLayer to compare to.
Returns
True if equal, false if not.

◆ SetLayerFlags()

void SetLayerFlags ( FIELDLAYER_FLAG  flags,
Bool  state = true 
)

Sets the layer display and execution flags, see FIELDLAYER_FLAG.

Parameters
[in]flagsThe flags to set, see FIELDLAYER_FLAG.
[in]state(Optional) true to set, false to clear.

◆ GetLayerFlags()

FIELDLAYER_FLAG GetLayerFlags ( ) const

Gets the layer execution and display flags, see FIELDLAYER_FLAG.

Returns
The layer flags.

◆ GetLinkedObject()

FieldLayerLink GetLinkedObject ( BaseDocument doc) const

If the FieldLayer links to another object in scene this function should return that object. This is used for it's GUI and to check dirtiness within the FieldList

Parameters
[in]docThe document the FieldLayer belongs to.
Returns
The linked object and potentially secondary data in a FieldLayerLink structure.

◆ SetLinkedObject()

Bool SetLinkedObject ( const FieldLayerLink link)

If the FieldLayer accepts a linked object then this function sets that object. This is used for it's GUI and to check the dirtiness within the FieldList

Parameters
[in]linkA populated FieldLayerLink.
Returns
True if it succeeds, false if it fails.

◆ Alloc()

static FieldLayer* Alloc ( Int32  type)
static

Allocates a Field layer. Destroy the allocated Field layer with Free(). Use AutoAlloc to automate the allocation and destruction based on scope.

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

◆ Free()

static void Free ( FieldLayer *&  layer)
static

Destructs Field layer allocated with Alloc(). Use AutoAlloc to automate the allocation and destruction based on scope.

Parameters
[in,out]layerThe Field layer to destruct. If the pointer is nullptr nothing happens. The pointer is assigned nullptr afterwards.

◆ GetMaskHead()

GeListHead* GetMaskHead ( ) const

If the FieldLayer has a mask then this retrieve the listhead containing the mask layers.

Returns
The GeListHead containing the mask layers, nullptr if masks aren't active on this layer.

◆ AddMask()

maxon::Result<void> AddMask ( )

Adds a mask to the FieldLayer, if a mask already exists then this will do nothing.

Returns
OK on success.

◆ RemoveMask()

void RemoveMask ( Bool  deleteLayers = true)

Removes the mask on the FieldLayer, if no mask exists then this will do nothing.

Parameters
[in]deleteLayerstrue to delete the layers in the mask, false to retain them so that when enabled again via AddMask the layers will reappear.