Exemple #1
0
        private IAIBehaviour GetOrCreateAI(string type)
        {
            if (type.Equals(string.Empty, StringComparison.Ordinal))
            {
                return(null);
            }

            if (_behaviourInstance != null && _behaviourInstance.GetType().Name.Split('.').Last()
                .Equals(type, StringComparison.Ordinal))
            {
                return(_behaviourInstance);
            }

            Type t = AppDomain.CurrentDomain.GetAssemblies()
                     .SelectMany(s => s.GetTypes()).Where(p => typeof(IAIBehaviour).IsAssignableFrom(p) && p.IsClass)
                     .FirstOrDefault(p => p.Name.Split('.').Last().Equals(type, StringComparison.Ordinal));

            if (t == null)
            {
                Debug.LogError(
                    $"[AI BEHAVIOUR ROOT] Cannot create {type} type behaviour class! Aborting AI composition");
                behaviourType = "";
                return(null);
            }

            _behaviourInstance = Activator.CreateInstance(t) as IAIBehaviour;
            return(_behaviourInstance);
        }