# I3DExAttributesSetControler Struct Reference
[External Interfaces]

Inheritance diagram for I3DExAttributesSetControler:

List of all members.

## Public Member Functions
virtual boolean MCCOMAPI | IsLocalController () const =0
virtual boolean MCCOMAPI | ShowControllerOnObjects () const =0
virtual int32 MCCOMAPI | GetSubControllerCount ()=0
virtual boolean MCCOMAPI | IsSubControllerActive (int32 subControllerIndex)=0
virtual void MCCOMAPI | InvalidateAttributesMapping ()=0
virtual void MCCOMAPI | ComputeAttributeForRead (TParamHolder &value, int32 paramIndex, int32 subControllerIndex, IAttributeValueHelper *helper, TParamHolder *internalValue)=0
virtual EComputeAttributeForWriteRetValue MCCOMAPI | ComputeAttributeForWrite (TParamHolder &value, int32 paramIndex, int32 subControllerIndex, boolean record, IAttributeCurrentValueHelper *valueHelper, IAttributeValueHelper *helper, TParamHolder *internalValue)=0
virtual void MCCOMAPI | AttributeModified (int32 paramIndex)=0
virtual void MCCOMAPI | AttributeInvalidated (int32 paramIndex)=0

## Detailed Description

There are two interfaces to access a component: The shell interface (I3DShAttributesSetControler) and the external interface (I3DExAttributesSetControler). You can get one from the other using QueryInterface.

WARNING: The animated parameters of this type of component are not validated inside the application. So to get the correct value of one of your animated parameters, you need to call the CheckParamForRead() in your code. Be carefull not to create stack overflow by creating circular dependencies. For instance when your controller is called in ComputeAttributeForRead() for one of the paramater of your PMap and you call the CheckParamForRead() on this parameter, you are creating a circular dependency as you ask for the final value (after applying all controllers) when your are actually computing this final value. If you do this, you will end up with a stack overflow.

See also:
  I3DShAttributesSetControler

## Member Function Documentation

virtual void MCCOMAPI I3DExAttributesSetControler::AttributeInvalidated | ( | int32 | paramIndex | ) | `[pure virtual]`

Called when an attribute has been invalidated (ie. its value will be check by the next CheckParamForRead().

Parameters:

  | paramIndex | The index of the parameter in the clip.

Implemented in TBasicAttributesSetControler.

virtual void MCCOMAPI I3DExAttributesSetControler::AttributeModified | ( | int32 | paramIndex | ) | `[pure virtual]`

Called when an attribute has been modified.

Parameters:

  | paramIndex | The index of the parameter in the clip.

Implemented in TBasicAttributesSetControler.

virtual void MCCOMAPI I3DExAttributesSetControler::ComputeAttributeForRead | ( | TParamHolder & | value,
|  | int32 | paramIndex,
|  | int32 | subControllerIndex,
|  | IAttributeValueHelper * | helper,
|  | TParamHolder * | internalValue |
| ) |  |  | `[pure virtual]`

Called to compute the value of one of the attribute for reading. WARNING: this function is called in SMP.

Parameters:

  | value | Current value of the attribute (this parameter can be modified).
  | paramIndex | The index of the parameter in the attributes set.
  | subControllerIndex | The index of the sub controller to apply.
  | helper | A helper class that allows to get value of other parameters for local controllers or also allows a global controller to apply the local controllers to its internal values.
  | internalValue | Allows the controller to fill this value with the internal value for the controller. This value is used when applying the local controllers to controllers internal values (only for global controllers).

virtual EComputeAttributeForWriteRetValue MCCOMAPI I3DExAttributesSetControler::ComputeAttributeForWrite | ( | TParamHolder & | value,
|  | int32 | paramIndex,
|  | int32 | subControllerIndex,
|  | boolean | record,
|  | IAttributeCurrentValueHelper * | valueHelper,
|  | IAttributeValueHelper * | helper,
|  | TParamHolder * | internalValue |
| ) |  |  | `[pure virtual]`

Called to compute the value of one of the attribute for writing.

Parameters:

  | value | Current value of the attribute (this parameter can be modified).
  | paramIndex | The index of the parameter in the attributes set.
  | subControllerIndex | The index of the sub controller to apply.
  | record | If true the controller can modify its internal data to take the change into account (ie. for a keyframe clip in edition mode it should create a new keyframe in the parameters timeline in the clip) otherwise the controller should not be modified.
  | valueHelper | This object is an helper that allows to get the value of the current parameter before applying the current controller or sub controller (only available for global parameter).
  | helper | A helper class that allows to get value of other parameters for local controllers or also allows a global controller to apply the local controllers to its internal values.
  | internalValue | Allows the controller to fill this value with the internal value for the controller. This value is used when applying the local controllers to controllers internal values (only for global controllers).

Returns:
  the status of the parameters.

See also:
  EComputeAttributeForWriteRetValue

virtual int32 MCCOMAPI I3DExAttributesSetControler::GetSubControllerCount | ( |  | ) | `[pure virtual]`

Returns the number of sub controllers. A controller can contains multiple sub controllers. In that case, the functions ComputeAttributeForRead and ComputeAttributeForWrite will be called multiple times.

Implemented in TBasicAttributesSetControler.

virtual void MCCOMAPI I3DExAttributesSetControler::InvalidateAttributesMapping | ( |  | ) | `[pure virtual]`

This function is called when the mapping of the attributes changed. This function is not called everytime something change, but only when a validation is needed (before a call to ComputeAttributeForRead() for instance). You should validate the caches that you need to update during that function. This call is protected in SMP so it is safe to do so. Doing it in ComputeAttributeForRead is not protected.

Implemented in TBasicAttributesSetControler.

virtual boolean MCCOMAPI I3DExAttributesSetControler::IsLocalController | ( |  | ) | const`[pure virtual]`

Returns true if the controller is a local controller and false if it is a global controller.

See also:
  I3DShAttributesSet

virtual boolean MCCOMAPI I3DExAttributesSetControler::IsSubControllerActive | ( | int32 | subControllerIndex | ) | `[pure virtual]`

Returns true if the given sub controller can modify some parameter value. If not the sub controller will not be called.

Parameters:

  | subControllerIndex | The index of the sub controller.

Implemented in TBasicAttributesSetControler.

virtual boolean MCCOMAPI I3DExAttributesSetControler::ShowControllerOnObjects | ( |  | ) | const`[pure virtual]`

Returns true if the controller UI shall be visible on all objects part of the attributes set.

See also:
  I3DShAttributesSet

Implemented in TBasicAttributesSetControler.

The documentation for this struct was generated from the following file:

- I3DExAttributesSetControler.h