コード例 #1
0
    public virtual IClonable Clone()
    {
        InternalBlackboardParameter obj = CreateInstance(GetType()) as InternalBlackboardParameter;

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

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

            return(false);
        }
コード例 #4
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);
        }
    }
コード例 #5
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);
            }
        }
コード例 #6
0
    private void AddItem(object obj)
    {
        AssetInfo <ReorderableList> assetInfo = (AssetInfo <ReorderableList>)obj;

        string assetName = (assetInfo.AssetPath);

        System.Type assetType = System.Type.GetType(assetName + ", Assembly-CSharp");

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

        string path = PlayerPrefs.GetString("DataFolder", "Assets/XX-DATA/") + "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!");
        }


        Target.BlackboardParameters.Add(param);
        int index = assetInfo.ComplementaryData.serializedProperty.arraySize++;

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

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