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; }
public virtual IClonable Clone() { InternalBlackboardParameter obj = CreateInstance(GetType()) as InternalBlackboardParameter; obj.Name = Name; obj.Description = Description; obj.MustBeShared = MustBeShared; return(obj); }
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); }
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); }
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); } }
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); } }