How to access Action’s data

It is possible to access the data of all actions in the current session.

Note

Make sure you to use the MAGES namespace;

Basic Data Example

  • This function prints the name, state, and ID of every single action in the scenegraph.

private void PrintActionData(ActionState targetState)
{
    // Access the SceneGraphModule through the MAGES Hub
    SceneGraphModule sceneGraphModule = Hub.Instance.Get<SceneGraphModule>();
    List<BaseActionData> relevantActions = new List<BaseActionData>();

    sceneGraphModule.ForEachAction(action =>
    {
        Debug.Log(action.name);
        Debug.Log(action.State);
        Debug.Log(action.ID);
    });
}

Advanced Data Example

  • This function prints the name, state, and ID of every single action in the scenegraph.

  • Clears effects of every single action.

  • Then, for every action that is currently running, it accesses the first game object of its actions and prints their name.

  • Then, for every action that is currently running, it accesses the next immediate actions and prints the name of the first one.

  • The same applies to previous actions.

private void PrintActionDataAdvanced()
{
    // Access the SceneGraphModule through the MAGES Hub
    SceneGraphModule sceneGraphModule = Hub.Instance.Get<SceneGraphModule>();
    List<BaseActionData> relevantActions = new List<BaseActionData>();

    sceneGraphModule.ForEachAction(action =>
    {
        Debug.Log(action.name);
        Debug.Log(action.State);
        Debug.Log(action.ID);
        action.Effects.Effects.Clear();

        if (action.State == ActionState.Running)
        {
            // Get the count of the Game Objects this Action Uses and print the name of the first one.
            Debug.Log("Actions Game Objects Count: " + action.ActionGameObjects.Length);
            if (action.ActionGameObjects.Length > 0) Debug.Log(action.ActionGameObjects[0].gameObject.name);

            // Get the count of the next immediate actions and print the name of the first one.
            Debug.Log("Next Actions Count: " + action.NextActions.Count);
            if (action.NextActions.Count > 0) Debug.Log(action.NextActions[0].name);

            // Get the count of the previous immediate actions and print the name of the first one.
            Debug.Log("Previous Actions Count: " + action.PrevActions.Count);
            if (action.PrevActions.Count > 0) Debug.Log(action.PrevActions[0].name);
        }
    });
}