Public Member Functions

IAnimLayerControlManager Class Reference

Search for all occurrences

Detailed Description

The interface to the functionality for animation layers.

This class contains key functionality for creating and manipulation animation layer.s You get this interface by calling static_cast<IAnimLayerControlManager*>(GetCOREInterface(IANIMLAYERCONTROLMANAGER_INTERFACE ))

#include <ILayerControl.h>

Inheritance diagram for IAnimLayerControlManager:
Inheritance graph
[legend]

List of all members.

Public Types

Enums
enum   Filter {
  ePos = 0x1, eRot = 0x2, eScale = 0x4, eIK = 0x8,
  eObject = 0x10, eCA = 0x20, eMod = 0x40, eMat = 0x80,
  eOther = 0x100
}
 

Enum for where to create the individual layer controllers when calling EnableAnimLayers.

More...
enum   ControllerType { eBezier = 0x0, eLinear, eDefault }
 

Enum for specifying what type of controller you want a non keyable controller to collapse to when you collapse onto it.

More...

Public Member Functions

virtual void  SetUpCustUI (ICustToolbar *toolbar, int id, HWND hWnd, HWND hParent)=0
virtual MCHAR *  GetComboToolTip ()=0
Dialog Functions
virtual void  ShowAnimLayersManagerToolbar (bool show)=0
  Brings up or hides the main Anim Layers Manager Dialog.
virtual void  RefreshAnimLayersManagerToolbar ()=0
  This refreshes the UI in the Anim Layers Manager Dialog, if it's open.
virtual int  EnableAnimLayersDlg (Tab< INode * > &nodeTab)=0
  Brings up the Enable Animation Layers Dialog.
Core Functionality
virtual int  EnableAnimLayers (Tab< INode * > &nodeTab, DWORD filter)=0
  Enable animation layers on specified nodes given particular filters.
virtual BOOL  CanEnableAnimLayer (ReferenceTarget *anim, ReferenceTarget *client, int subNum)=0
  Returns whether or not the specified animatible will be able to be converted to a layer control or not.
virtual BOOL  EnableAnimLayer (ReferenceTarget *anim, ReferenceTarget *client, int subnum)=0
  This function will enable a layer on the specified anim in the TrackViewPick parameter.
virtual int  GetLayerCount ()=0
  Return the total number of layers.
virtual void  GetNodesLayers (Tab< INode * > &nodeTab, Tab< int > &layers)=0
  This function returns which layers exist on the passed in nodes.
virtual void  SetLayerActive (int index)=0
  Sets the layer active.
virtual void  SetLayerActiveNodes (int index, Tab< INode * > &nodeTab)=0
  Sets the active layer only on the nodes that are passed in.
virtual void  AddLayer (MSTR &name, Tab< INode * > &nodeTab, bool useActiveControllerType)=0
  Adds a layer to the specified nodes.
virtual void  AddLayerDlg (Tab< INode * > &nodeTab)=0
  Adds a layer to the specified nodes, by bringing up a dialog that lets you specify the layers name and what controller class the new layer will be.
virtual void  GetActiveLayersNodes (Tab< INode * > &nodeTab, Tab< int > &layers)=0
  Gets which layers are active on the passed in set of nodes.
virtual void  GetNodesActiveLayer (Tab< INode * > &nodeTab)=0
  Gets which nodes in the scene have the active layer on it.
virtual void  DeleteLayer (int index)=0
  Delete this layer.
virtual void  DeleteLayerNodes (int index, Tab< INode * > &nodeTab)=0
  Delete this layer from the specified nodes.
virtual void  CopyLayerNodes (int index, Tab< INode * > &nodeTab)=0
  Copy this layer to a buffer so that it may be copied.
virtual void  PasteLayerNodes (int index, Tab< INode * > &nodeTab)=0
  Paste the active copied layer at this index on these nodes.
virtual void  SetLayerName (int index, MSTR name)=0
  Set the layer name at the specified index.
virtual MSTR  GetLayerName (int index)=0
  Get the name of the specified layer.
virtual float  GetLayerWeight (int index, TimeValue t)=0
  Get the layer weight for the specified layer at the specified time.
virtual void  SetLayerWeight (int index, TimeValue t, float weight)=0
  Set the layer weight for the specified layer at the speicifed time.
virtual Control GetLayerWeightControl (int index)=0
  Get the layer weight control for the specified layer.
virtual bool  SetLayerWeightControl (int index, Control *c)=0
  Set the layer weight control for the specified layer.
virtual bool  GetLayerMute (int index)=0
  Get whether or not a particular layer is muted or not.
virtual void  SetLayerMute (int index, bool mute)=0
  Set whether or not a particular layer is muted or not.
virtual bool  GetLayerOutputMute (int index)=0
  Get whether or not a particular layer's output is muted or not.
virtual void  SetLayerOutputMute (int index, bool mute)=0
  Set whether or not a particular layer output is muted or not.
virtual bool  GetLayerLocked (int index)=0
  Get whether or not a particular layer is locked.
virtual void  SetLayerLocked (int index, bool locked)=0
  Set whether or not a particular layer is locked.
virtual void  CollapseLayerNodes (int index, Tab< INode * > &nodeTab)=0
  Collapse the layer at the specified index so that it gets deleted and it's keys and values are baked down to the previous layer.
virtual void  DisableLayerNodes (Tab< INode * > &nodeTab)=0
  Disables and removes any layers on the specified nodes, by replacing the layer controller that exists with the first, base layer.
virtual void  AnimLayerPropertiesDlg ()=0
  Brings up the Animation Layer Properties Dialog, which lets you set different animation layer properties, such as whether or not we should automatically mute layers greater than the active one.
virtual void  SetFilterActiveOnlyTrackView (bool val)=0
  Sets whether or not trackview will only show the current active layer or all of the layers for all of the layer controllers \ param[in] val If true only active layers will be shown in trackview.
virtual bool  GetFilterActiveOnlyTrackView ()=0
  Get whether or not trackview will only show the current active layer or all of the layers for all of the layer controllers.
virtual void  SetJustUpToActive (bool v)=0
  Sets whether or not we will automatically mute layers greater than the active layer.
virtual bool  GetJustUpToActive ()=0
  Get whether or not we will automatically mute layers greater than the active layer.
virtual void  SetCollapseControllerType (IAnimLayerControlManager::ControllerType type)=0
  Sets the controller type we will collapse non keyable controllers onto.
virtual
IAnimLayerControlManager::ControllerType 
GetCollapseControllerType ()=0
  Get the controller type we will collapse non keyable controllers onto.
virtual void  SetCollapsePerFrame (bool v)=0
  Sets whether or not we will collapse a controller per frame or we will try to just collapse the keys of the two controllers that are being merged.
virtual bool  GetCollapsePerFrame ()=0
  Gets whether or not we will collapse a controller per frame or we will try to just collapse the keys of the two controllers that are being merged.
virtual void  SetCollapsePerFrameActiveRange (bool v)=0
  Sets whether or not if collapsing per frame we use the active range, or a specified range.
virtual bool  GetCollapsePerFrameActiveRange ()=0
  Gets whether or not if collapsing per frame we use the active range, or a specified range.
virtual void  SetCollapseRange (Interval range)=0
  Sets the collapse range, if we aren't collapsing over the active range interval.
virtual Interval  GetCollapseRange ()=0
  Gets the collapse range, if we aren't collapsing over the active range interval.

Member Enumeration Documentation

enum Filter

Enum for where to create the individual layer controllers when calling EnableAnimLayers.

See also:
IAnimLayerControlManager::EnableAnimLayers ePos means that we will create a layer around the position controller, eRot means that we will create a layer around the rotation controller, eScale means that we will create a layer around the scale controller, eIk means that we will create layers within an IK node, eObject means that we will create layers around the object controllers, eCA means that we will create layers around custom attributes, eMod means that we will create layers around modifier controllers, eMat means that we will create layers around material controllers, eOther means that we will create layers around any other controller.
Enumerator:
ePos 
eRot 
eScale 
eIK 
eObject 
eCA 
eMod 
eMat 
eOther 
               {ePos= 0x1, eRot = 0x2, eScale = 0x4,eIK = 0x8, eObject = 0x10,
    eCA = 0x20, eMod = 0x40, eMat = 0x80, eOther = 0x100};

Enum for specifying what type of controller you want a non keyable controller to collapse to when you collapse onto it.

See also:
IAnimLayerControlManager::SetCollapseControllerType eBezier means that you will either collapse onto a Bezier controller or a Euler controller. eLinear means that you will either collapse onto a Linear controller or a TCB controller. eDefault means that you will collapse onto the default controller for it's type.
Enumerator:
eBezier 
eLinear 
eDefault 

Member Function Documentation

virtual void ShowAnimLayersManagerToolbar ( bool  show ) [pure virtual]

Brings up or hides the main Anim Layers Manager Dialog.

This funciton will bring up or hide the main Anim Layers manager toolbar.

Parameters:
[in] show If true, then show the toolbar, otherwise hide it.
virtual void RefreshAnimLayersManagerToolbar ( ) [pure virtual]

This refreshes the UI in the Anim Layers Manager Dialog, if it's open.

virtual int EnableAnimLayersDlg ( Tab< INode * > &  nodeTab ) [pure virtual]

Brings up the Enable Animation Layers Dialog.

This function will bring up a dialog where a user can specify where they want to enable layer animation by creating layer controllers where specified in the dialog.

Parameters:
[in] nodeTab The nodes that the results of the filters chosen in the enable animation layers dialog will apply too.
virtual int EnableAnimLayers ( Tab< INode * > &  nodeTab,
DWORD  filter 
) [pure virtual]

Enable animation layers on specified nodes given particular filters.

This function enables animations layers on specified nodes by creating layer controllers as specified by the filter parameter. Note that this function will only create layer controllers, it doesn' delete layer controllers if it's not specified in the filter.

Parameters:
[in] nodeTab The nodes where the layer controllers will be created. !
[in] filter Where the layer controllers will be created.
See also:
IAnimLayerControlManager::Filter !
Returns:
Returns how many layer controllers where made on the specified nodes. !
virtual BOOL CanEnableAnimLayer ( ReferenceTarget anim,
ReferenceTarget client,
int  subNum 
) [pure virtual]

Returns whether or not the specified animatible will be able to be converted to a layer control or not.

Parameters:
[in] anim The animatable that we want to convert to a layer controller.
[in] client The parent of the animatalbe we want to replace.
[in] subNum The 'anim' animatable subanim's number on the client.
Returns:
Returns true if we can replace it with a layer controller,else returns false.
virtual BOOL EnableAnimLayer ( ReferenceTarget anim,
ReferenceTarget client,
int  subnum 
) [pure virtual]

This function will enable a layer on the specified anim in the TrackViewPick parameter.

If other layers exist on the node that the layer exists on, then the layer control will sync up with those layers.

Parameters:
[in] anim The animatable that we want to replace with a layer controller.
[in] client The parent of the animatalbe we want to replace.
[in] subnum The 'anim' animatable subanim's number on the client.
Returns:
Returns whether or not we succesful enabled a layer here. Some reasons why we may not be successful is if a a child subanim is already a layer controller(no nested layers) or the controller is a subanim of a position,rotation or scale, controller.
virtual int GetLayerCount ( ) [pure virtual]

Return the total number of layers.

Returns:
The total number of layers.
virtual void GetNodesLayers ( Tab< INode * > &  nodeTab,
Tab< int > &  layers 
) [pure virtual]

This function returns which layers exist on the passed in nodes.

Note that a layer may only exist on some, not all of the nodes.

Parameters:
[in] nodeTab The nodes where we are checking for layers.
[out] layers The indices of which layers exist on these nodes.
virtual void SetLayerActive ( int  index ) [pure virtual]

Sets the layer active.

Parameters:
[in] index The index to set active. If the index is out of range then nothing is set active.
virtual void SetLayerActiveNodes ( int  index,
Tab< INode * > &  nodeTab 
) [pure virtual]

Sets the active layer only on the nodes that are passed in.

Also if that layer doesn't exist on a node then nothing occurs.

Parameters:
[in] index The index to set active.
[in] nodeTab The nodes whose layer will be set to active.
virtual void AddLayer ( MSTR name,
Tab< INode * > &  nodeTab,
bool  useActiveControllerType 
) [pure virtual]

Adds a layer to the specified nodes.

If a layer with that name doesn't exist, a layer with that name is created, otherwise the layer with that name will be used to add to those layers. If a node already has that layer, then nothing happens.

Parameters:
[in] name The name of the layer to add to the nodes.
[in] nodeTab The nodes which will have the named layer added to them.
[in] useActiveControllerType If true, then the controller type in the active layer will be used to create the new layer, otherwise we will use the default controller type.
virtual void AddLayerDlg ( Tab< INode * > &  nodeTab ) [pure virtual]

Adds a layer to the specified nodes, by bringing up a dialog that lets you specify the layers name and what controller class the new layer will be.

Parameters:
[in] nodeTab The nodes which will have the named layer added to them.
virtual void GetActiveLayersNodes ( Tab< INode * > &  nodeTab,
Tab< int > &  layers 
) [pure virtual]

Gets which layers are active on the passed in set of nodes.

Parameters:
[in] nodeTab The nodes which we are checking for active layers
[out] layers The layers that are active on these nodes
virtual void GetNodesActiveLayer ( Tab< INode * > &  nodeTab ) [pure virtual]

Gets which nodes in the scene have the active layer on it.

Parameters:
[out] nodeTab The nodes which have the active layer on it. Note that if we have multiple active layers, then we will get all of the nodes in those active layers.
virtual void DeleteLayer ( int  index ) [pure virtual]

Delete this layer.

Note that this completely deletes the layer, including any weight control, from the system and any nodes where it exists.

Parameters:
[in] index The layer to delete. Note that we can't delete the first (0th) layer.
virtual void DeleteLayerNodes ( int  index,
Tab< INode * > &  nodeTab 
) [pure virtual]

Delete this layer from the specified nodes.

Note that this only deletes the layer from these nodes, not the system or other nodes.

Parameters:
[in] index The layer to delete. Note that we can't delete the first (0th) layer.
[in] nodeTab The nodes where the layer will be deleted. Nothing happens if the layer doesn't exist on a node.
virtual void CopyLayerNodes ( int  index,
Tab< INode * > &  nodeTab 
) [pure virtual]

Copy this layer to a buffer so that it may be copied.

Parameters:
[in] index The layer to copy.
[in] nodeTab The nodes where the layer will be copy. Nothing happens if the layer doesn't exist on a node.
virtual void PasteLayerNodes ( int  index,
Tab< INode * > &  nodeTab 
) [pure virtual]

Paste the active copied layer at this index on these nodes.

If no layer is copied on a node, then nothing will be pasted.

Parameters:
[in] index Where to paste the copied layer over the existing layer. If the index is -1 or greater than the max number of layers already present, it will paste at the end.
[in] nodeTab The nodes where the layer will be pasted. Nothing happens if the layer doesn't exist on that node.
virtual void SetLayerName ( int  index,
MSTR  name 
) [pure virtual]

Set the layer name at the specified index.

If the name already exists, the name won't get changed.

Parameters:
[in] index Where to change the name of the layer.
[in] name The new name.
virtual MSTR GetLayerName ( int  index ) [pure virtual]

Get the name of the specified layer.

Parameters:
[in] index Where to get the name of the layer.
Returns:
Returns the name of the specified layer. If the index is out of bounds, then an empty string is returned.
virtual float GetLayerWeight ( int  index,
TimeValue  t 
) [pure virtual]

Get the layer weight for the specified layer at the specified time.

Parameters:
[in] index Where to get the layer weight.
[in] t At what time to get the layer weight.
Returns:
Returns the layer weight.
virtual void SetLayerWeight ( int  index,
TimeValue  t,
float  weight 
) [pure virtual]

Set the layer weight for the specified layer at the speicifed time.

Parameters:
[in] index Where to set the layer weight.
[in] t At what time to set the layer weight.
[in] weight The weight to set.
virtual Control* GetLayerWeightControl ( int  index ) [pure virtual]

Get the layer weight control for the specified layer.

Parameters:
[in] index Where to get the layer weight.
Returns:
Returns the layer weight control.
virtual bool SetLayerWeightControl ( int  index,
Control c 
) [pure virtual]

Set the layer weight control for the specified layer.

Parameters:
[in] index Where to set the layer weight.
[in] c The weight control we want to set at that index. It needs to be a float controller.
Returns:
Returns whether or not we were able to set the weight control or not.
virtual bool GetLayerMute ( int  index ) [pure virtual]

Get whether or not a particular layer is muted or not.

Parameters:
[in] index Which layer to see if it's muted.
Returns:
Whether or not the layer is muted or not.
virtual void SetLayerMute ( int  index,
bool  mute 
) [pure virtual]

Set whether or not a particular layer is muted or not.

Parameters:
[in] index Which layer to mute or not.
[in] mute The mute value for the specified layer.
virtual bool GetLayerOutputMute ( int  index ) [pure virtual]

Get whether or not a particular layer's output is muted or not.

Parameters:
[in] index Which layer to see if it's muted.
Returns:
Whether or not the layer is muted or not.
virtual void SetLayerOutputMute ( int  index,
bool  mute 
) [pure virtual]

Set whether or not a particular layer output is muted or not.

Parameters:
[in] index Which layer output to mute or not.
[in] mute The output mute value for the specified layer.
virtual bool GetLayerLocked ( int  index ) [pure virtual]

Get whether or not a particular layer is locked.

A locked layer cannot be animated nor collapsed, or pasted over and an object with a locked layer cannot get disabled.

Parameters:
[in] index Which layer to see if it's locked.
Returns:
Whether or not the layer is locked or not.
virtual void SetLayerLocked ( int  index,
bool  locked 
) [pure virtual]

Set whether or not a particular layer is locked.

A locked layer cannot be animated nor collapsed, or pasted over and an object with a locked layer cannot get disabled.

Parameters:
[in] index Which layer output to lock or unlock.
[in] locked the locked value for the specified layer. If true the layer is locked if false it is unlocked.
virtual void CollapseLayerNodes ( int  index,
Tab< INode * > &  nodeTab 
) [pure virtual]

Collapse the layer at the specified index so that it gets deleted and it's keys and values are baked down to the previous layer.

Parameters:
[in] index Where to collapse. The index must be greater than zero since we can't collapse the first layer.
[in] nodeTab The nodes where the layer will be collapsed. Nothing happens if the layer doesn't exist on that node.
virtual void DisableLayerNodes ( Tab< INode * > &  nodeTab ) [pure virtual]

Disables and removes any layers on the specified nodes, by replacing the layer controller that exists with the first, base layer.

Note that it will disable layer controllers that only have one layer.

Parameters:
[in] nodeTab The nodes where layers will be disabled. Nothing happens if no layers exists or the layer has more than one layer.
virtual void AnimLayerPropertiesDlg ( ) [pure virtual]

Brings up the Animation Layer Properties Dialog, which lets you set different animation layer properties, such as whether or not we should automatically mute layers greater than the active one.

virtual void SetFilterActiveOnlyTrackView ( bool  val ) [pure virtual]

Sets whether or not trackview will only show the current active layer or all of the layers for all of the layer controllers \ param[in] val If true only active layers will be shown in trackview.

virtual bool GetFilterActiveOnlyTrackView ( ) [pure virtual]

Get whether or not trackview will only show the current active layer or all of the layers for all of the layer controllers.

Returns:
Returns whether or trackview will only show the current active layer or all of the layers.
virtual void SetJustUpToActive ( bool  v ) [pure virtual]

Sets whether or not we will automatically mute layers greater than the active layer.

\ param[in] val If true, automatically mute layers greater than the active layer.

virtual bool GetJustUpToActive ( ) [pure virtual]

Get whether or not we will automatically mute layers greater than the active layer.

Returns:
Returns whether or not we will automatically mute layers greater than the active layer.
virtual void SetCollapseControllerType ( IAnimLayerControlManager::ControllerType  type ) [pure virtual]

Sets the controller type we will collapse non keyable controllers onto.

Parameters:
[in] type The type of controller to collapse too, either Bezier, Linear or Default.
virtual IAnimLayerControlManager::ControllerType GetCollapseControllerType ( ) [pure virtual]

Get the controller type we will collapse non keyable controllers onto.

Returns:
Returns the type of controller to collapse non keyable controller onto. Either Bezier, Linear or Default.
virtual void SetCollapsePerFrame ( bool  v ) [pure virtual]

Sets whether or not we will collapse a controller per frame or we will try to just collapse the keys of the two controllers that are being merged.

We can only collape the keys if the two controllers are of the same class and are both keyable.

Parameters:
[in] v If true it will always collapse per frame, otherwise it will try to only collapse onto keys if it can.
virtual bool GetCollapsePerFrame ( ) [pure virtual]

Gets whether or not we will collapse a controller per frame or we will try to just collapse the keys of the two controllers that are being merged.

We can only collape the keys if the two controllers are of the same class and are both keyable.

Returns:
If true it will always collapse per frame, otherwise it will try to only collapse onto keys if it can.
virtual void SetCollapsePerFrameActiveRange ( bool  v ) [pure virtual]

Sets whether or not if collapsing per frame we use the active range, or a specified range.

See also:
IAnimLayerControlManager::SetCollapseRange.
Parameters:
[in] v If true, when we collapse per frame we use the active range in the scene, otherwise we use a specified range.
virtual bool GetCollapsePerFrameActiveRange ( ) [pure virtual]

Gets whether or not if collapsing per frame we use the active range, or a specified range.

See also:
IAnimLayerControlManager::GetCollapseRange.
Returns:
If true, when we collapse per frame we use the active range in the scene, otherwise we use a specified range.
virtual void SetCollapseRange ( Interval  range ) [pure virtual]

Sets the collapse range, if we aren't collapsing over the active range interval.

See also:
IAnimLayerControlManager::SetCollapsePerFrameActiveRange.
Parameters:
[in] range The range we want to collapse a frame per key over.
virtual Interval GetCollapseRange ( ) [pure virtual]

Gets the collapse range, if we aren't collapsing over the active range interval.

See also:
IAnimLayerControlManager::GetCollapsePerFrameActiveRange.
Returns:
The range we want to collapse a frame per key over.
virtual void SetUpCustUI ( ICustToolbar toolbar,
int  id,
HWND  hWnd,
HWND  hParent 
) [pure virtual]
virtual MCHAR* GetComboToolTip ( ) [pure virtual]

IAnimLayerControlManager IAnimLayerControlManager IAnimLayerControlManager IAnimLayerControlManager IAnimLayerControlManager IAnimLayerControlManager IAnimLayerControlManager IAnimLayerControlManager IAnimLayerControlManager IAnimLayerControlManager
IAnimLayerControlManager IAnimLayerControlManager IAnimLayerControlManager IAnimLayerControlManager IAnimLayerControlManager IAnimLayerControlManager IAnimLayerControlManager IAnimLayerControlManager IAnimLayerControlManager IAnimLayerControlManager