コード例 #1
0
        private void AddItem(object obj)
        {
            AssetInfo <ReorderableList> assetInfo = obj as AssetInfo <ReorderableList>;

            string assetName = (assetInfo.AssetPath);

            System.Type assetType = System.Type.GetType("UnityTools.Atom." + assetName + ", Assembly-CSharp");
            if (assetType == null)
            {
                assetType = System.Type.GetType(assetName + ", Assembly-CSharp");
            }

            if (assetType == null)
            {
                Logger.Log(Logger.Type.Error, "Blackboard parameter of unknown type. Please put your type in the UnityTools.Atom namespace.", this);
                return;
            }

            InternalBlackboardParameter param = ScriptableObject.CreateInstance(assetType) as InternalBlackboardParameter;

            string path = PlayerPrefs.GetString("Unity-Tools-Atom-DataCache", "");

            if (path.Length == 0)
            {
                SetDefaultDataCache(out path);
            }

            path += "BlackboardsKeys/" + GUID.Generate() + ".asset";

            {
                // Create the directory if needed.
                (new System.IO.FileInfo(path)).Directory.Create();
            }

            //param.hideFlags = HideFlags.HideInHierarchy;// | HideFlags.NotEditable;
            AssetDatabase.CreateAsset(param, path);
            EditorUtility.SetDirty(param);
            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();

            if (!param)
            {
                Debug.Break();
                Debug.LogError(this + ": ScriptableObject.CreateInstance(assetType) as DATA_BlackboardParameter is null!");
            }

            param.Name.Value = "Param" + Target.BlackboardParameters.Count.ToString();
            Target.BlackboardParameters.Add(param);
            int index = assetInfo.ComplementaryData.serializedProperty.arraySize++;

            assetInfo.ComplementaryData.serializedProperty.GetArrayElementAtIndex(index).objectReferenceValue = param;


            serializedObject.Update();
            serializedObject.ApplyModifiedProperties();

            Target.NeedRefresh = true;
        }
コード例 #2
0
        public virtual IClonable Clone()
        {
            InternalBlackboardParameter obj = CreateInstance(GetType()) as InternalBlackboardParameter;

            obj.Name         = Name;
            obj.Description  = Description;
            obj.MustBeShared = MustBeShared;
            return(obj);
        }
コード例 #3
0
            public TAsset GetVariable <T, TAsset, TVariable>(string entryName)
                where TAsset : TAsset <T>
                where TVariable : TVariable <T, TAsset>
            {
                if (entryName != null && entryName != "" && ParametersMap.ContainsKey(entryName))
                {
                    InternalBlackboardParameter <T, TAsset, TVariable> b = ParametersMap[entryName] as InternalBlackboardParameter <T, TAsset, TVariable>;
                    return(b != null ? b.Value : null);
                }

                return(null);
            }
コード例 #4
0
            public bool SetReference <T, TAsset, TVariable>(string entryName, ref TAsset var)
                where TAsset : TAsset <T>
                where TVariable : TVariable <T, TAsset>
            {
                if (ParametersMap.ContainsKey(entryName))
                {
                    InternalBlackboardParameter <T, TAsset, TVariable> b = ParametersMap[entryName] as InternalBlackboardParameter <T, TAsset, TVariable>;
                    b.Value = var;
                    return(b != null ? b.Value : null);
                }

                return(false);
            }
コード例 #5
0
        private void RemoveItem(int index)
        {
            InternalBlackboardParameter dataCondition = Target.BlackboardParameters[index];

            Target.BlackboardParameters.RemoveAt(index);

            if (dataCondition)
            {
                //dataCondition.hideFlags = HideFlags.None;
                EditorUtility.SetDirty(dataCondition);
                string pathToScript = AssetDatabase.GetAssetPath(dataCondition);
                AssetDatabase.DeleteAsset(pathToScript);
                DestroyImmediate(dataCondition, true);
            }
        }
コード例 #6
0
            public void Build(List <InternalBlackboardParameter> bbp)
            {
                if (ParametersMap != null)
                {
                    ParametersMap.Clear();
                }
                else
                {
                    ParametersMap = new Dictionary <string, InternalBlackboardParameter>(bbp.Count);
                }

                for (int i = 0, c = bbp.Count; i < c; ++i)
                {
                    InternalBlackboardParameter cur = bbp[i].Clone() as InternalBlackboardParameter;
                    cur.Init();
                    ParametersMap.Add(cur.Name, cur);
                }
            }