#include 
| Public Member Functions | |
| virtual void | GetMemoryUsage (ICrySizer *) const =0 | 
| virtual void | Release ()=0 | 
| virtual void | Clear ()=0 | 
| virtual const IActionMapAction * | GetAction (const ActionId &actionId) const =0 | 
| virtual IActionMapAction * | GetAction (const ActionId &actionId)=0 | 
| virtual bool | CreateAction (const ActionId &actionId)=0 | 
| virtual bool | RemoveAction (const ActionId &actionId)=0 | 
| virtual int | GetActionsCount () const =0 | 
| virtual bool | AddActionInput (const ActionId &actionId, const SActionInput &actionInput, const int iByDeviceIndex=-1)=0 | 
| virtual bool | AddAndBindActionInput (const ActionId &actionId, const SActionInput &actionInput)=0 | 
| virtual bool | RemoveActionInput (const ActionId &actionId, const char *szInput)=0 | 
| virtual bool | ReBindActionInput (const ActionId &actionId, const char *szCurrentInput, const char *szNewInput)=0 | 
| virtual bool | ReBindActionInput (const ActionId &actionId, const char *szNewInput, const EActionInputDevice device, const int iByDeviceIndex)=0 | 
| virtual int | GetNumRebindedInputs ()=0 | 
| virtual bool | Reset ()=0 | 
| virtual bool | LoadFromXML (const XmlNodeRef &actionMapNode)=0 | 
| virtual bool | LoadRebindingDataFromXML (const XmlNodeRef &actionMapNode)=0 | 
| virtual bool | SaveRebindingDataToXML (XmlNodeRef &actionMapNode) const =0 | 
| virtual IActionMapActionIteratorPtr | CreateActionIterator ()=0 | 
| virtual void | SetActionListener (EntityId id)=0 | 
| virtual EntityId | GetActionListener () const =0 | 
| virtual const char * | GetName ()=0 | 
| virtual void | Enable (bool enable)=0 | 
| virtual bool | Enabled () const =0 | 
Represents an action map group that can be enabled / disabled independently Can contain a larger number of actions that remap raw input either statically (defined by developer) or remapped at runtime by the player
| 
 | pure virtual | 
Binds a raw input to the action, ensuring that the action will be triggered when the raw input is detected
| actionId | Identifier / name of the action we want to add the input for | 
| actionInput | Definition of the raw input that we want to listen for | 
#include 
// Example of how action maps can be registered, and how to receive callbacks when their actions are triggered
class CMyActionListener final : public IActionListener
{
    // Define the name of the action map in which our action will reside
    const char* m_szMyActionMapName = "MyActionGroup";
    // Define the identifier of the action we are registering, this should be a constant over the runtime of the application
    const ActionId m_myActionId = ActionId("MyAction");
    virtual ~CMyActionListener()
    {
        // Make sure to remove the listener when we are done
        gEnv->pGameFramework->GetIActionMapManager()->RemoveExtraActionListener(this, m_szMyActionMapName);
    }
    void RegisterAction()
    {
        IActionMapManager* pActionMapManager = gEnv->pGameFramework->GetIActionMapManager();
        // Create the action map in which our action will reside
        IActionMap* pActionMap = pActionMapManager->CreateActionMap(m_szMyActionMapName);
        // Register a listener to receive callbacks when actions in our action map are triggered
        pActionMapManager->AddExtraActionListener(this, m_szMyActionMapName);
        // Register the action in the group
        pActionMap->CreateAction(m_myActionId);
        // Now define the first input with which the user can trigger the input
        SActionInput input;
        // Define that this input is triggered with the keyboard or mouse
        input.inputDevice = eAID_KeyboardMouse;
        // Set the input to "enter"
        // defaultInput is used in case of future rebinding by the end-user at runtime
        input.input = input.defaultInput = "enter";
        // Determine the activation modes we want to listen for
        input.activationMode = eIS_Pressed | eIS_Released;
        // Now bind the input to the action we created earlier
        pActionMap->AddAndBindActionInput(m_myActionId, input);
        // Make sure that the action map is enabled by default
        // This function can also be used to toggle action maps at runtime, for example to disable vehicle inputs when exiting
        pActionMap->Enable(true);
    }
    // Called when any action is triggered
    virtual void OnAction(const ActionId &actionId, int activationMode, float value) override
    {
        const bool isInputPressed = (activationMode & eIS_Pressed) != 0;
        const bool isInputReleased = (activationMode & eIS_Released) != 0;
        // Check if the triggered action
        if (actionId == m_myActionId)
        {
            if (isInputPressed)
            {
                CryLogAlways("Action pressed!");
            }
            else if (isInputReleased)
            {
                CryLogAlways("Action released!");
            }
        }
    }
};| 
 | pure virtual | 
Creates an abstracted action that can be triggered by one or more input state changes
| actionId | Identifier / name of the action we want to create | 
#include 
// Example of how action maps can be registered, and how to receive callbacks when their actions are triggered
class CMyActionListener final : public IActionListener
{
    // Define the name of the action map in which our action will reside
    const char* m_szMyActionMapName = "MyActionGroup";
    // Define the identifier of the action we are registering, this should be a constant over the runtime of the application
    const ActionId m_myActionId = ActionId("MyAction");
    virtual ~CMyActionListener()
    {
        // Make sure to remove the listener when we are done
        gEnv->pGameFramework->GetIActionMapManager()->RemoveExtraActionListener(this, m_szMyActionMapName);
    }
    void RegisterAction()
    {
        IActionMapManager* pActionMapManager = gEnv->pGameFramework->GetIActionMapManager();
        // Create the action map in which our action will reside
        IActionMap* pActionMap = pActionMapManager->CreateActionMap(m_szMyActionMapName);
        // Register a listener to receive callbacks when actions in our action map are triggered
        pActionMapManager->AddExtraActionListener(this, m_szMyActionMapName);
        // Register the action in the group
        pActionMap->CreateAction(m_myActionId);
        // Now define the first input with which the user can trigger the input
        SActionInput input;
        // Define that this input is triggered with the keyboard or mouse
        input.inputDevice = eAID_KeyboardMouse;
        // Set the input to "enter"
        // defaultInput is used in case of future rebinding by the end-user at runtime
        input.input = input.defaultInput = "enter";
        // Determine the activation modes we want to listen for
        input.activationMode = eIS_Pressed | eIS_Released;
        // Now bind the input to the action we created earlier
        pActionMap->AddAndBindActionInput(m_myActionId, input);
        // Make sure that the action map is enabled by default
        // This function can also be used to toggle action maps at runtime, for example to disable vehicle inputs when exiting
        pActionMap->Enable(true);
    }
    // Called when any action is triggered
    virtual void OnAction(const ActionId &actionId, int activationMode, float value) override
    {
        const bool isInputPressed = (activationMode & eIS_Pressed) != 0;
        const bool isInputReleased = (activationMode & eIS_Released) != 0;
        // Check if the triggered action
        if (actionId == m_myActionId)
        {
            if (isInputPressed)
            {
                CryLogAlways("Action pressed!");
            }
            else if (isInputReleased)
            {
                CryLogAlways("Action released!");
            }
        }
    }
};| 
 | pure virtual | 
Rebinds the specified action from the current input to a new input of the same device type
| actionId | Identifier / name of the action we want to rebind | 
| szCurrentInput | The input that the action is currently bound to, note that this will traverse all inputs regardless of input device | 
| szNewInput | The input that we want to bind to, has to remain the same device as szCurrentInput! | 
#include 
void ReBindActionInput()
{
    // Define the name of the action map in which our action resides
    const char* szMyActionMapName = "MyActionGroup";
    // Define the identifier of the action we are rebinding
    const ActionId myActionId = ActionId("MyAction");
    IActionMapManager* pActionMapManager = gEnv->pGameFramework->GetIActionMapManager();
    // Query the action map manager for our action map
    if (IActionMap* pActionMap = pActionMapManager->GetActionMap(szMyActionMapName))
    {
        // Specify the input that the action is currently triggered by
        const char* szCurrentInput = "enter";
        // Now specify the new input that the action should be triggered by
        const char* szNewInput = "space";
        // Rebind the action
        pActionMap->ReBindActionInput(myActionId, szCurrentInput, szNewInput);
    }
}
void ReBindActionInputWithDevice()
{
    // Define the name of the action map in which our action resides
    const char* szMyActionMapName = "MyActionGroup";
    // Define the identifier of the action we are rebinding
    const ActionId myActionId = ActionId("MyAction");
    IActionMapManager* pActionMapManager = gEnv->pGameFramework->GetIActionMapManager();
    // Query the action map manager for our action map
    if (IActionMap* pActionMap = pActionMapManager->GetActionMap(szMyActionMapName))
    {
        // Specify the device for which we want to rebind the input
        const EActionInputDevice inputDevice = eAID_KeyboardMouse;
        // Specify the device index, in case of multiple devices of the same type
        const int inputDeviceIndex = 0;
        // Now specify the new input that the action should be triggered by
        const char* szNewInput = "space";
        // Rebind the action
        pActionMap->ReBindActionInput(myActionId, szNewInput, inputDevice, inputDeviceIndex);
    }
}| 
 | pure virtual | 
Rebinds the specified action from the current input to a new input of a specific device type
| actionId | Identifier / name of the action we want to rebind | 
| szNewInput | New input we want to bind to | 
| device | Device type that we want to remap | 
| iByDeviceIndex | Index of the device that we want to remap, typically 0 but can be used in case of multiple devices of the same type | 
#include 
void ReBindActionInput()
{
    // Define the name of the action map in which our action resides
    const char* szMyActionMapName = "MyActionGroup";
    // Define the identifier of the action we are rebinding
    const ActionId myActionId = ActionId("MyAction");
    IActionMapManager* pActionMapManager = gEnv->pGameFramework->GetIActionMapManager();
    // Query the action map manager for our action map
    if (IActionMap* pActionMap = pActionMapManager->GetActionMap(szMyActionMapName))
    {
        // Specify the input that the action is currently triggered by
        const char* szCurrentInput = "enter";
        // Now specify the new input that the action should be triggered by
        const char* szNewInput = "space";
        // Rebind the action
        pActionMap->ReBindActionInput(myActionId, szCurrentInput, szNewInput);
    }
}
void ReBindActionInputWithDevice()
{
    // Define the name of the action map in which our action resides
    const char* szMyActionMapName = "MyActionGroup";
    // Define the identifier of the action we are rebinding
    const ActionId myActionId = ActionId("MyAction");
    IActionMapManager* pActionMapManager = gEnv->pGameFramework->GetIActionMapManager();
    // Query the action map manager for our action map
    if (IActionMap* pActionMap = pActionMapManager->GetActionMap(szMyActionMapName))
    {
        // Specify the device for which we want to rebind the input
        const EActionInputDevice inputDevice = eAID_KeyboardMouse;
        // Specify the device index, in case of multiple devices of the same type
        const int inputDeviceIndex = 0;
        // Now specify the new input that the action should be triggered by
        const char* szNewInput = "space";
        // Rebind the action
        pActionMap->ReBindActionInput(myActionId, szNewInput, inputDevice, inputDeviceIndex);
    }
}