# ActionDelta Class Reference

Related Scripting Object: ActionDelta

The ActionDelta object tracks changes made on a parameter that is part of a reference model. Every ActionDelta contains one or more ActionDeltaItem objects, each of which represents a single change, or modification, to a referenced parameter. Each ActionDelta object has a specific type (see siModificationDeltaType) and each ActionDeltaItem it contains is of the same type. More...

`#include <xsi_actiondelta.h>`

Inheritance diagram for ActionDelta:

List of all members.

## Public Member Functions
| ActionDelta ()
| ~ActionDelta ()
| ActionDelta (const CRef &in_ref)
| ActionDelta (const ActionDelta &in_obj)
bool | IsA (siClassID in_ClassID) const
siClassID | GetClassID () const
ActionDelta & | operator= (const ActionDelta &in_obj)
ActionDelta & | operator= (const CRef &in_ref)
ActionDeltaItem | AddFCurveItem (const CString &in_Target, const CDoubleArray &in_KeyValueArray, siFCurveInterpolation in_Interpolation=siCubicInterpolation, siFCurveType in_Type=siStandardFCurve, siFCurveExtrapolation in_Extrapolation=siConstantExtrapolation)
CRefArray | AddConstraintItem (const CString &in_preset, const CRefArray &in_cnsned, const CRefArray &in_cnsning, bool in_bComp, const MATH::CVector3 &in_offsetCnsned, const MATH::CVector3 &in_offsetCnsning)
ActionDeltaItem | AddStaticValueItem (const CString &in_Target, double in_Value)
ActionDeltaItem | AddExpressionItem (const CString &in_Target, const CString &in_Expression)
CString | GetName () const
CString | GetType () const
CStatus | RemoveItem (const CString &in_target)
CStatus | RemoveAllItems ()
CRefArray | GetItems () const

## Detailed Description

The ActionDelta object tracks changes made on a parameter that is part of a reference model. Every ActionDelta contains one or more ActionDeltaItem objects, each of which represents a single change, or modification, to a referenced parameter. Each ActionDelta object has a specific type (see siModificationDeltaType) and each ActionDeltaItem it contains is of the same type.

ActionDeltas are stored in the Delta and are accessible via Delta::GetActionDeltas. To add a new ActionDelta to an existing Delta object, use Delta::AddAction.

Since:
  6.0

Example:
  Illustrates how to print some info about an ActionDelta

              using namespace XSI;
              Application app;

              // NewScene command
              CValueArray cargs; CValue oarg;
              cargs.Add( L"" ); cargs.Add( false );
              app.ExecuteCommand( L"NewScene", cargs, oarg );
              cargs.Clear();

              //Add cube geometry and create the reference model
              Model root = app.GetActiveSceneRoot();
              X3DObject myCube, myCone;
              root.AddGeometry( L"Cube", L"MeshSurface",L"",myCube);

              // CreateModelAndConvertToRef command
              CString strFactPath = app.GetInstallationPath(siProjectPath) ;
                  strFactPath += L"/Models/MyModel.emdl";
              cargs.Add( myCube.GetFullName() ); cargs.Add( strFactPath );
              app.ExecuteCommand( L"CreateModelAndConvertToRef", cargs, oarg );
              cargs.Clear();

              Delta myDelta;

              // AddDelta command
              cargs.Add( L"Model" );
              app.ExecuteCommand( L"AddDelta", cargs, oarg );
              cargs.Clear();
              myDelta = oarg;

              // Translate command
              cargs.Add(myCube.GetFullName()); cargs.Add(2.0); cargs.Add(1.3); cargs.Add(0.0);
              cargs.Add(L"siRelative"); cargs.Add(L"siView"); cargs.Add(L"siObj"); cargs.Add(L"siXYZ");
              app.ExecuteCommand( L"Translate", cargs, oarg );
              cargs.Clear();

              CRefArray ActionDeltas = myDelta.GetActionDeltas();
              for ( LONG i=0; i<ActionDeltas.GetCount(); ++i ) {

                  ActionDelta item = ActionDeltas[i];

                  // Print info about the current ActionDelta
                  Application().LogMessage(L"ActionSourceItem[" + CValue(i).GetAsText() + L"]");
                  Application().LogMessage(L"Name: " + item.GetName());
                  Application().LogMessage(L"Type: " + item.GetType());

              }

## Constructor & Destructor Documentation

ActionDelta | ( |  | ) |

Default constructor.

~ActionDelta | ( |  | ) |

Default destructor.

ActionDelta | ( | const CRef & | in_ref | ) |

Constructor.

Parameters:

  | in_ref | constant reference object.

ActionDelta | ( | const ActionDelta & | in_obj | ) |

Copy constructor.

Parameters:

  | in_obj | constant class object.

## Member Function Documentation

bool IsA | ( | siClassID | in_ClassID | ) | const`[virtual]`

Returns true if a given class type is compatible with this API class.

Parameters:

  | in_ClassID | class type.

Returns:
  true if the class is compatible, false otherwise.

Reimplemented from SIObject.

siClassID GetClassID | ( |  | ) | const`[virtual]`

Returns the type of the API class.

Returns:
  The class type.

Reimplemented from SIObject.

ActionDelta& operator= | ( | const ActionDelta & | in_obj | ) |

Creates an object from another object. The newly created object is set to empty if the input object is not compatible.

Parameters:

  | in_obj | constant class object.

Returns:
  The new ActionDelta object.

ActionDelta& operator= | ( | const CRef & | in_ref | ) |

Creates an object from a reference object. The newly created object is set to empty if the input reference object is not compatible.

Parameters:

  | in_ref | constant class object.

Returns:
  The new ActionDelta object.

Reimplemented from SIObject.

ActionDeltaItem AddFCurveItem | ( | const CString & | in_Target,
|  | const CDoubleArray & | in_KeyValueArray,
|  | siFCurveInterpolation | in_Interpolation = `siCubicInterpolation`,
|  | siFCurveType | in_Type = `siStandardFCurve`,
|  | siFCurveExtrapolation | in_Extrapolation = `siConstantExtrapolation` |
| ) |  |  |

Adds a new ActionDeltaItem of type siModificationDeltaFCurves to an ActionDelta created with Delta::AddAction.

The ActionDelta should be of type siModificationDeltaFCurves to use this function (see siModificationDeltaType for a list of ActionDelta types).

Parameters:

  | in_Target | Target path for source item
  | in_KeyValueArray | An array containing 6 values per key for FCurve objects of interpolation type siCubicInterpolation (see siFCurveInterpolation) and 2 values per keys for the other FCurve interpolation types. The first value is the key time (in frames) and the second is the key value (in value units). For Cubic (or bezier) FCurves the remaining 4 values are the tangency values for: lefttanx (in frames), lefttany (in value units), righttanx (in frames), and righttany (in value units).
  | in_Interpolation | The interpolation of the FCurve (default siCubicInterpolation).
  | in_Type | The type of the FCurve (siStandardFCurve).
  | in_Extrapolation | The extrapolation of the FCurve (default siConstantExtrapolation).

Returns:
  The new ActionDeltaItem

Example:
  Illustrates how to add an ActionDeltaItem of type siModificationDeltaFCurves to a ActionDelta.

              using namespace XSI;
              Application app;

              // NewScene command
              CValueArray cargs; CValue oarg;
              cargs.Add( L"" ); cargs.Add( false );
              app.ExecuteCommand( L"NewScene", cargs, oarg );
              cargs.Clear();

              //Add cube geometry and create the reference model
              Model root = app.GetActiveSceneRoot();
              X3DObject myCube;
              root.AddGeometry( L"Cube", L"MeshSurface",L"",myCube);

              // CreateModelAndConvertToRef command
              CString strFactPath = app.GetInstallationPath(siProjectPath) ;
                  strFactPath += L"/Models/MyModel.emdl";
              cargs.Add( myCube.GetFullName() ); cargs.Add( strFactPath );
              app.ExecuteCommand( L"CreateModelAndConvertToRef", cargs, oarg );
              cargs.Clear();

              Delta myDelta;

              // AddDelta command
              cargs.Add( L"Model" );
              app.ExecuteCommand( L"AddDelta", cargs, oarg );
              cargs.Clear();
              myDelta = oarg;

              // Add an action of type siModificationDeltaFCurve
              ActionDelta myDeltaAction = myDelta.AddAction(siModificationDeltaFCurve);

              // Set the array
              CDoubleArray keys(12);
              keys[0] = 1.0; keys[1] = 5.0; keys[2] = 0.0; keys[3] = 0.0; keys[4] = 0.0; keys[5] = 0.0;
              keys[6] = 100.0; keys[7] = 8.0; keys[8] = 0.0; keys[9] = 0.0; keys[10] = 0.0; keys[11] = 0.0;

              // Add the fcurve item
              ActionDeltaItem myActionDeltaItem = myDeltaAction.AddFCurveItem ( myCube.GetFullName() + L".kine.global.posx", keys );

              // Apply modification
              myDelta.Apply();

CRefArray AddConstraintItem | ( | const CString & | in_preset,
|  | const CRefArray & | in_cnsned,
|  | const CRefArray & | in_cnsning,
|  | bool | in_bComp,
|  | const MATH::CVector3 & | in_offsetCnsned,
|  | const MATH::CVector3 & | in_offsetCnsning |
| ) |  |  |

Adds a new ActionDeltaItem of type siModificationDeltaConstraint to an ActionDelta created with Delta::AddAction.

The ActionDelta should be of type siModificationDeltaConstraint to use this function (see siModificationDeltaType for a list of ActionDelta types).

Parameters:

  | in_preset | The type of constraint to add.
  | in_cnsned | An array of references to X3DObject elements that will be constrained (see Constraint::GetConstrained).
  | in_cnsning | An array of references to X3DObject elements that will act as constrainers (see Constraint::GetConstraining).
  | in_bComp | Compensation mode: true to turn compensation on.
  | in_offsetCnsned | Optional offset which is applied in translation on the constrained object. The offset is used for Distance and Position constraints.
  | in_offsetCnsning | Optional offset applied on the constraining object for Distance, Position, Surface and Trajectory constraints. The offset will be applied in rotation for the Orientation constraint, in translation for the Direction constraint and in scaling for the Scaling constraint.

Returns:
  An array of references to the new ActionDeltaItems (one for each parameter now being driven by the constraint)

Example:
  Illustrates how to add an ActionDeltaItem of type siModificationDeltaConstraint to a ActionDelta.

              using namespace XSI;
              Application app;

              // NewScene command
              CValueArray cargs; CValue oarg;
              cargs.Add( L"" ); cargs.Add( false );
              app.ExecuteCommand( L"NewScene", cargs, oarg );
              cargs.Clear();

              //Add cube geometry and create the reference model
              Model root = app.GetActiveSceneRoot();
              X3DObject myCube;
              root.AddGeometry( L"Cube", L"MeshSurface",L"",myCube);

              // CreateModelAndConvertToRef command
              CString strFactPath = app.GetInstallationPath(siProjectPath) ;
                  strFactPath += L"/Models/MyModel.emdl";
              cargs.Add( myCube.GetFullName() ); cargs.Add( strFactPath );
              app.ExecuteCommand( L"CreateModelAndConvertToRef", cargs, oarg );
              cargs.Clear();

              X3DObject myCone;
              root.AddGeometry( L"Cone", L"MeshSurface",L"",myCone);

              // Translate command
              cargs.Add(myCone.GetFullName()); cargs.Add(2.0); cargs.Add(1.3); cargs.Add(0.0);
              cargs.Add(L"siRelative"); cargs.Add(L"siView"); cargs.Add(L"siObj"); cargs.Add(L"siXYZ");
              app.ExecuteCommand( L"Translate", cargs, oarg );
              cargs.Clear();

              Delta myDelta;
              // AddDelta command
              cargs.Add( L"Model" );
              app.ExecuteCommand( L"AddDelta", cargs, oarg );
              cargs.Clear();
              myDelta = oarg;

              // Add an action of type siModificationDeltaConstraint
              ActionDelta myDeltaAction = myDelta.AddAction(siModificationDeltaConstraint);

              CRefArray constraineds(1);
              constraineds[0] = myCube;

              CRefArray constrainings(1);
              constrainings[0] = myCone;

              // Add the constraint item
              CRefArray myActionDeltaItems = myDeltaAction.AddConstraintItem ( L"Position",
                  constraineds, constrainings, false, MATH::CVector3(), MATH::CVector3());

              // Apply modification
              myDelta.Apply();

ActionDeltaItem AddStaticValueItem | ( | const CString & | in_Target,
|  | double | in_Value |
| ) |  |  |

Adds a new ActionDeltaItem of type siModificationDeltaStaticValue to an ActionDelta created with Delta::AddAction.

The ActionDelta should be of type siModificationDeltaStaticValue to use this function (see siModificationDeltaType for a list of ActionDelta types).

Parameters:

  | in_Target | Target path for source item
  | in_Value | The value of the static value

Returns:
  The new ActionDeltaItem object

Example:
  Illustrates how to add an ActionDeltaItem of type siModificationDeltaStaticValue to a ActionDelta.

              using namespace XSI;
              Application app;

              // NewScene command
              CValueArray cargs; CValue oarg;
              cargs.Add( L"" ); cargs.Add( false );
              app.ExecuteCommand( L"NewScene", cargs, oarg );
              cargs.Clear();

              //Add cube geometry and create the reference model
              Model root = app.GetActiveSceneRoot();
              X3DObject myCube;
              root.AddGeometry( L"Cube", L"MeshSurface",L"",myCube);

              // CreateModelAndConvertToRef command
              CString strFactPath = app.GetInstallationPath(siProjectPath) ;
                  strFactPath += L"/Models/MyModel.emdl";
              cargs.Add( myCube.GetFullName() ); cargs.Add( strFactPath );
              app.ExecuteCommand( L"CreateModelAndConvertToRef", cargs, oarg );
              cargs.Clear();

              Delta myDelta;

              // AddDelta command
              cargs.Add( L"Model" );
              app.ExecuteCommand( L"AddDelta", cargs, oarg );
              cargs.Clear();
              myDelta = oarg;

              // Add an action of type siModificationDeltaStaticValue
              ActionDelta myDeltaAction = myDelta.AddAction(siModificationDeltaStaticValue);

              // Add the Static value item
              ActionDeltaItem myActionDeltaItem = myDeltaAction.AddStaticValueItem ( myCube.GetFullName()
                      + L".kine.global.posx",  10.0);

              // Apply modification
              myDelta.Apply();

ActionDeltaItem AddExpressionItem | ( | const CString & | in_Target,
|  | const CString & | in_Expression |
| ) |  |  |

Adds a new ActionDeltaItem of type siModificationDeltaExpression to an ActionDelta created with Delta::AddAction.

The ActionDelta should be of type ""siModificationDeltaExpression to use this function (see siModificationDeltaType for a list of ActionDelta types).

Parameters:

  | in_Target | Target path for source item
  | in_Expression | The definition (formula) that defines the expression. For more information on how to define an expression, see @xtop@ ExprRef Expression Reference).

Returns:
  The new ActionDeltaItem

Example:
  Illustrates how to add an ActionDeltaItem of type siModificationDeltaExpression to a ActionDelta.

              using namespace XSI;
              Application app;

              // NewScene command
              CValueArray cargs; CValue oarg;
              cargs.Add( L"" ); cargs.Add( false );
              app.ExecuteCommand( L"NewScene", cargs, oarg );
              cargs.Clear();

              //Add cube geometry and create the reference model
              Model root = app.GetActiveSceneRoot();
              X3DObject myCube;
              root.AddGeometry( L"Cube", L"MeshSurface",L"",myCube);

              // CreateModelAndConvertToRef command
              CString strFactPath = app.GetInstallationPath(siProjectPath) ;
                  strFactPath += L"/Models/MyModel.emdl";
              cargs.Add( myCube.GetFullName() ); cargs.Add( strFactPath );
              app.ExecuteCommand( L"CreateModelAndConvertToRef", cargs, oarg );
              cargs.Clear();

              X3DObject myCone;
              root.AddGeometry( L"Cone", L"MeshSurface",L"",myCone);

              // Translate command
              cargs.Add(myCone.GetFullName()); cargs.Add(2.0); cargs.Add(1.3); cargs.Add(0.0);
              cargs.Add(L"siRelative"); cargs.Add(L"siView"); cargs.Add(L"siObj"); cargs.Add(L"siXYZ");
              app.ExecuteCommand( L"Translate", cargs, oarg );
              cargs.Clear();

              Delta myDelta;
              // AddDelta command
              cargs.Add( L"Model" );
              app.ExecuteCommand( L"AddDelta", cargs, oarg );
              cargs.Clear();
              myDelta = oarg;

              // Add an action of type siModificationDeltaExpression
              ActionDelta myDeltaAction = myDelta.AddAction(siModificationDeltaExpression);

              // Add the Expression item
              ActionDeltaItem myActionDeltaItem = myDeltaAction.AddExpressionItem ( myCube.GetFullName() + L".kine.global.posx",
                  L"5*sin(" + myCone.GetFullName() + L".kine.local.posx * 15)");

              // Apply modification
              myDelta.Apply();

CString GetName | ( |  | ) | const

Returns the name of the ActionDelta.

Returns:
  The name of the ActionDelta

Example:
  See the main ActionDelta example which demonstrates how to use this function.

Reimplemented from SIObject.

CString GetType | ( |  | ) | const

Returns the type of the ActionDelta.

Returns:
  A value from the siModificationDeltaType enum.

Example:
  See the main ActionDelta example which demonstrates how to use this function.

Reimplemented from SIObject.

CStatus RemoveItem | ( | const CString & | in_target | ) |

Removes an ActionDeltaItem from the ActionDelta.

Note:
  After a removal, the ActionDeltaItem object may not target the same item (see example).

Parameters:

  | in_target | The name of the ActionDeltaItem to remove.

Returns:
  CStatus::OK success

  CStatus::Fail is returned in case of failure

Example:
  Illustrates how to to remove an ActionDeltaItem.

              using namespace XSI;
              Application app;

              // NewScene command
              CValueArray cargs; CValue oarg;
              cargs.Add( L"" ); cargs.Add( false );
              app.ExecuteCommand( L"NewScene", cargs, oarg );
              cargs.Clear();

              //Add cube geometry and create the reference model
              Model root = app.GetActiveSceneRoot();
              X3DObject myCube;
              root.AddGeometry( L"Cube", L"MeshSurface",L"",myCube);

              // CreateModelAndConvertToRef command
              CString strFactPath = app.GetInstallationPath(siProjectPath) ;
                  strFactPath += L"/Models/MyModel.emdl";
              cargs.Add( myCube.GetFullName() ); cargs.Add( strFactPath );
              app.ExecuteCommand( L"CreateModelAndConvertToRef", cargs, oarg );
              cargs.Clear();

              X3DObject myCone;
              root.AddGeometry( L"Cone", L"MeshSurface",L"",myCone);

              // Translate command
              cargs.Add(myCone.GetFullName()); cargs.Add(2.0); cargs.Add(1.3); cargs.Add(0.0);
              cargs.Add(L"siRelative"); cargs.Add(L"siView"); cargs.Add(L"siObj"); cargs.Add(L"siXYZ");
              app.ExecuteCommand( L"Translate", cargs, oarg );
              cargs.Clear();

              Delta myDelta;
              // AddDelta command
              cargs.Add( L"Model" );
              app.ExecuteCommand( L"AddDelta", cargs, oarg );
              cargs.Clear();
              myDelta = oarg;

              // Translate command
              cargs.Add(myCube.GetFullName()); cargs.Add(2.0); cargs.Add(1.3); cargs.Add(0.0);
              cargs.Add(L"siRelative"); cargs.Add(L"siView"); cargs.Add(L"siObj"); cargs.Add(L"siXYZ");
              app.ExecuteCommand( L"Translate", cargs, oarg );
              cargs.Clear();

              // Get the static item
              ActionDelta ActionDeltaStatic = myDelta.GetActionDeltas().GetItem(0);
              ActionDeltaItem ActionDeltaItem0 = ActionDeltaStatic.GetItems().GetItem(0);
              ActionDeltaItem ActionDeltaItem1 = ActionDeltaStatic.GetItems().GetItem(0);

              // Print the name of ActionDeltaItem1
              app.LogMessage ( L"Second item name before removing oActionDeltaItem1: " + ActionDeltaItem1.GetName());

              // Remove oActionDeltaItem0
              ActionDeltaStatic.RemoveItem(ActionDeltaItem0.GetName());

              // Print the name of ActionDeltaItem1
              app.LogMessage ( L"Second item name after removing oActionDeltaItem1: " + ActionDeltaItem1.GetName());

              // Add an action of type siModificationDeltaExpression
              ActionDelta DeltaActionExp = myDelta.AddAction(siModificationDeltaExpression);

              // Add the Expression item
              ActionDeltaItem myActionDeltaItem = DeltaActionExp.AddExpressionItem ( myCube.GetFullName() + L".kine.global.posx",
                  L"5*sin(" + myCone.GetFullName() + L".kine.local.posx * 15)");

              DeltaActionExp.RemoveAllItems();

              // Apply modification
              myDelta.Apply();

CStatus RemoveAllItems | ( |  | ) |

Removes all ActionDeltaItem objects from the ActionDelta.

Returns:
  CStatus::OK success

  CStatus::Fail is returned in case of failure

Example:
  See the ActionDelta::RemoveItem example which demonstrates how to use this function.

CRefArray GetItems | ( |  | ) | const

Returns all ActionDeltaItem objects that make up the ActionDelta.

Returns:
  Array of references to each ActionDeltaItem contained in the ActionDelta.

Example:
  See the main ActionDelta example which demonstrates how to use this function.

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

- xsi_actiondelta.h