## ActionDelta

Object Hierarchy | Related C++ Class: ActionDelta

### Inheritance

SIObject

ActionDelta

### Introduced

v6.0

### Description

The ActionDelta object tracks changes made on a parameter that is part of a reference model. Every ActionDelta contains one or more ActionDeltaItems, 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 (ActionDeltaCollection) and are accessible via the Delta.ActionDeltas property. To add a new ActionDelta to an existing Delta object, use the Delta.AddAction method.

### Methods

AddConstraintItem | AddExpressionItem | AddFCurveItem | AddStaticValueItem
IsClassOf | IsEqualTo | RemoveAllItems | RemoveItem

### Properties

Application | Categories | FullName | Help
Items | Name | NestedObjects | Origin
OriginPath | Parent | Type |

### Examples

#### 1. JScript Example

    /*
            This example demonstrates how to add an ActionDeltaItem of type siModificationDeltaConstraint to a ActionDelta.
    */
    NewScene (null, false);
    // Create a reference model from a cube
    var oRoot = Application.ActiveProject.ActiveScene.Root;
    var oCube = oRoot.AddGeometry("Cube","MeshSurface");
    var emdlFileRefModel = XSIUtils.BuildPath(Application.InstallationPath(siProjectPath), "Models", "MyModel.emdl");
    CreateModelAndConvertToRef(oCube, emdlFileRefModel );
    // Create a cone
    var oCone = oRoot.AddGeometry("Cone","MeshSurface");
    Translate(oCone, 3.20, 0.00, 1.65, siRelative, siView, siObj, siXYZ, null, null, null, null, null, null, null, null, null, 0, null);
    // Add the Delta object
    var oDelta = AddDelta(oCube.Model);
    // Add an action of type siModificationDeltaConstraint
    var oActionDelta = oDelta.AddAction(siModificationDeltaConstraint);
    // Add the fcurve item
    var oActionDeltaItems = oActionDelta.AddConstraintItem("Position",oCube,oCone);
    for(var i=0; i<oActionDeltaItems.Count; i++) {
            Application.LogMessage ( " The item " +  oActionDeltaItems(i).Name + " is active: " + oActionDeltaItems(i).Mute );
    }
    // Apply modification
    oDelta.Apply();
    // Output of above script:
    //INFO :  The item cube.kine.global.sclx is active: true
    //INFO :  The item cube.kine.global.scly is active: true
    //INFO :  The item cube.kine.global.sclz is active: true
    //INFO :  The item cube.kine.global.rotx is active: true
    //INFO :  The item cube.kine.global.roty is active: true
    //INFO :  The item cube.kine.global.rotz is active: true
    //INFO :  The item cube.kine.global.posx is active: false
    //INFO :  The item cube.kine.global.posy is active: false
    //INFO :  The item cube.kine.global.posz is active: false

#### 2. JScript Example

    /*
            This example demonstrates how to get the type of the item.
    */
    NewScene (null, false);
    // Create a reference model from a cube
    var oRoot = Application.ActiveProject.ActiveScene.Root;
    var oCube = oRoot.AddGeometry("Cube","MeshSurface");
    var emdlFileRefModel = XSIUtils.BuildPath(Application.InstallationPath(siProjectPath), "Models", "MyModel.emdl");
    CreateModelAndConvertToRef(oCube, emdlFileRefModel );
    // Add the Delta object
    var oDelta = AddDelta(oCube.Model);
    // Add an action of type siModificationDeltaStaticValue
    var oDeltaAction = oDelta.AddAction(siModificationDeltaStaticValue)
    // Add a static value item
    oDeltaAction.AddStaticValueItem ( oCube + ".kine.global.posx",  10 );
    // Get the first ActionDeltaItem in the first ActionDelta
    var oActionDelta = oDelta.ActionDeltas(0);
    // Print the type
    Application.LogMessage(oActionDelta.Type);
    // Output of above script:
    //INFO : siModificationDeltaStaticValue