public void UnRegisterGroupChangedListener(INTERACTION group, IInteractionGroupListener listener)
    {
        InteractionGroup interactionGroup = null;

        if (!groupLists.TryGetValue(group, out interactionGroup) || interactionGroup.groupListeners.Count == 0)
        {
            return;
        }
        interactionGroup.groupListeners.Remove(listener);
    }
    public void RegisterGroupChangedListener(INTERACTION group, IInteractionGroupListener listener)
    {
        InteractionGroup interactionGroup = null;

        if (!groupLists.TryGetValue(group, out interactionGroup))
        {
            interactionGroup  = new InteractionGroup();
            groupLists[group] = interactionGroup;
        }

        // add to group listers, avoid duplicates
        if (interactionGroup.groupListeners.Contains(listener))
        {
            return;
        }
        else
        {
            interactionGroup.groupListeners.Add(listener);
        }
    }