void OnEnable()
 {
     _Data = Asset.Load();
     CreateUI();
     if (_Data != null)
     {
         if (_Data.Keys != null)
         {
             foreach (var item in _Data.Keys)
             {
                 if (item != null)
                 {
                     AccessKeyListItem field = new AccessKeyListItem(this, item);
                     field.UpdateName();
                     _ItemsList.Controls.Add(field);
                 }
             }
         }
     }
     else
     {
         _ItemsList.Controls.Clear();
     }
     if (_ItemsList.Controls.Count > 0)
     {
         _ItemsList.SelectedIndex = 0;
     }
 }
Beispiel #2
0
        public SharedAccessKeysData Load()
        {
            SharedAccessKeysData data = null;

            if (!string.IsNullOrEmpty(XmlData))
            {
                try
                {
                    Skill.Framework.IO.XmlDocument document = new Framework.IO.XmlDocument();
                    document.LoadXml(XmlData);
                    data = new SharedAccessKeysData();
                    data.Load(document.FirstChild);
                }
                catch (System.Exception ex)
                {
                    data = null;
                    Debug.LogException(ex, this);
                }
            }
            else
            {
                data      = new SharedAccessKeysData();
                data.Keys = new AccessKeyData[0];
                Save(data);
            }
            data.Name = this.name;
            return(data);
        }
Beispiel #3
0
        private void Build()
        {
            BehaviorTreeData bTree = _Data.Load();

            if (bTree != null)
            {
                SharedAccessKeysData[] sharedAccessKeys = new SharedAccessKeysData[_Data.SharedKeys.Length];
                for (int i = 0; i < _Data.SharedKeys.Length; i++)
                {
                    if (_Data.SharedKeys[i] != null)
                    {
                        sharedAccessKeys[i] = _Data.SharedKeys[i].Load();
                    }
                }

                bool compiled = BehaviorTreeCompiler.Compile(bTree, sharedAccessKeys);
                if (compiled)
                {
                    Builder.Build(bTree, _Data.BuildPath, _Data.name);
                }
            }
            else
            {
                Debug.LogError("Invalid SaveData");
            }
        }
Beispiel #4
0
 public static void Build(Skill.Editor.AI.SharedAccessKeysData keys, string localDir, string name)
 {
     ValidateGenerator();
     _Generator.Reset();
     _Generator.Generate(keys);
     CreateFile(_Generator, localDir, name);
 }
Beispiel #5
0
        /// <summary>
        /// Generate code for SharedAccessKeys
        /// </summary>
        /// <param name="sharedAccessKeys">SharedAccessKeys</param>
        public void Generate(Skill.Editor.AI.SharedAccessKeysData sharedAccessKeys)
        {
            SharedAccessKeysClass saClass = new SharedAccessKeysClass(sharedAccessKeys);

            _Document.AddUsingSkillAI();
            _Document.Add(saClass);
            HasPartial = false;
        }
Beispiel #6
0
        public static bool Compile(SharedAccessKeysData data)
        {
            _ErrorFound = false;
            _Data       = data;

            CheckForErrors();

            _Data = null;
            return(!_ErrorFound);
        }
Beispiel #7
0
 public void Save(SharedAccessKeysData data)
 {
     if (!this)
     {
         return;        // if deleted
     }
     if (data == null)
     {
         return;
     }
     data.Name = this.name;
     Skill.Framework.IO.XmlDocument document = new Framework.IO.XmlDocument();
     document.AppendChild(data.ToXmlElement());
     XmlData = document.OuterXml;
     UnityEditor.EditorUtility.SetDirty(this);
 }
Beispiel #8
0
        private static void CheckAccessKey(DecoratorData decorator)
        {
            if (decorator.Type == Framework.AI.DecoratorType.AccessLimit)
            {
                AccessLimitDecoratorData accessLimitDecorator = (AccessLimitDecoratorData)decorator;
                if (string.IsNullOrEmpty(accessLimitDecorator.AccessKey))
                {
                    Debug.LogError(string.Format("The provided AccessKey '{0}' for behavior node '{1}' does not exist.", accessLimitDecorator.AccessKey, accessLimitDecorator.Name));
                    _ErrorFound = true;
                    return;
                }

                if (string.IsNullOrEmpty(accessLimitDecorator.ClassName))
                {
                    Debug.LogError(string.Format(" Invalid AccessKey for behavior node '{0}'", accessLimitDecorator.Name));
                    _ErrorFound = true;
                }
                else
                {
                    SharedAccessKeysData ac = null;
                    foreach (var item in _AccessKeys)
                    {
                        if (item != null)
                        {
                            if (item.Name == accessLimitDecorator.ClassName)
                            {
                                ac = item;
                                break;
                            }
                        }
                    }
                    if (ac == null)
                    {
                        Debug.LogError(string.Format(" Invalid AccessKey for behavior node '{0}'", accessLimitDecorator.Name));
                        _ErrorFound = true;
                    }
                    else
                    {
                        if (ac.Keys.Count(c => c.Key == accessLimitDecorator.AccessKey) < 1)
                        {
                            Debug.LogError(string.Format("The provided AccessKey '{0}' for behavior node '{1}' does not exist.", accessLimitDecorator.AccessKey, accessLimitDecorator.Name));
                            _ErrorFound = true;
                        }
                    }
                }
            }
        }