public void SetFreeAction(int hash, byte state, int layer = 0)
    {
        if (hash == CharAnimHashes.GetActionHashByLayer(layer, 0))
        {
            m_FreeAction[layer, 0] = state;
        }
        else if (hash == CharAnimHashes.GetActionHashByLayer(layer, 1))
        {
            m_FreeAction[layer, 1] = state;
        }
        else if (hash == CharAnimHashes.GetActionHashByLayer(layer, 2))
        {
            m_FreeAction[layer, 2] = state;
        }
#if UNITY_EDITOR
        //else Debug.LogWarning(GetType() + " GetFreeAction все очень плохо( нет такого хэша " + hash + " )");
#endif
    }
    string GetFreeActionName(int layer = 0)
    {
        if (m_FreeAction[layer, 0] != 0)
        {
            return(CharAnimHashes.GetNameActionByHash(layer, 0));
        }
        if (m_FreeAction[layer, 1] != 0)
        {
            return(CharAnimHashes.GetNameActionByHash(layer, 1));
        }
        if (m_FreeAction[layer, 2] != 0)
        {
            return(CharAnimHashes.GetNameActionByHash(layer, 2));
        }
#if UNITY_EDITOR
        Debug.LogError(GetType() + " GetFreeActionName все очень плохо( нет свободных хэшей анимаций )");
#endif
        return(string.Empty);
    }
    int GetFreeAction(int layer = 0)
    {
        if (m_FreeAction[layer, 0] != 0)
        {
            return(CharAnimHashes.GetActionHashByLayer(layer, 0));
        }
        if (m_FreeAction[layer, 1] != 0)
        {
            return(CharAnimHashes.GetActionHashByLayer(layer, 1));
        }
        if (m_FreeAction[layer, 2] != 0)
        {
            return(CharAnimHashes.GetActionHashByLayer(layer, 2));
        }
#if UNITY_EDITOR
        Debug.LogError(GetType() + " GetFreeAction все очень плохо( нет свободных хэшей анимаций )");
#endif
        return(0);
    }