protected override tnBaseAIInputFiller CreateBaseAIInputFiller(int i_TeamIndex, int i_Index, GameObject i_Character)
    {
        if (i_TeamIndex < 0 || i_TeamIndex >= m_AIFactories.Length)
        {
            return(new tnNullBaseAIInputFiller(i_Character));
        }

        tnStandardMatchAIFactory aiFactory = m_AIFactories[i_TeamIndex];

        if (aiFactory != null)
        {
            return(aiFactory.CreateAI(i_Index, i_Character));
        }

        return(new tnNullBaseAIInputFiller(i_Character)); // Invalid AI Factory, create null input filler.
    }
    protected override void OnCreateTeam(int i_TeamIndex, tnTeamDescription i_TeamDescription)
    {
        base.OnCreateTeam(i_TeamIndex, i_TeamDescription);

        if (i_TeamIndex < 0 || i_TeamIndex >= m_AIFactories.Length || i_TeamIndex >= m_TeamSize.Length)
        {
            return;
        }

        if (i_TeamDescription == null)
        {
            return;
        }

        tnStandardMatchAIFactory aiFactory = new tnStandardMatchAIFactory();

        aiFactory.Configure(i_TeamDescription);

        m_AIFactories[i_TeamIndex] = aiFactory;
        m_TeamSize[i_TeamIndex]    = i_TeamDescription.charactersCount;
    }