public T Get <T>(string key) { ANP_BBValue result = Get(key); if (result == null) { return(default);
public BlackboardCondition(string key, Operator op, ANP_BBValue value, Stops stopsOnChange, Node decoratee) : base("BlackboardCondition", stopsOnChange, decoratee) { this.op = op; this.key = key; this.value = value; this.stopsOnChange = stopsOnChange; }
private void OnBBKeySelected() { string path = UnityEngine.PlayerPrefs.GetString("LastCanvasPath"); UnityEngine.Object[] subAssets = AssetDatabase.LoadAllAssetsAtPath(path); if (subAssets != null) { foreach (var subAsset in subAssets) { if (subAsset is NPBehaveCanvasDataManager npBehaveCanvasDataManager) { foreach (var bbValues in npBehaveCanvasDataManager.BBValues) { if (bbValues.Key == this.BBKey) { NP_BBValue = bbValues.Value.DeepCopy(); NP_BBValueType = this.NP_BBValue.NP_BBValueType.ToString(); } } } } } }
private bool CheckBBValue() { if (Ope == Operator.ALWAYS_TRUE) { return(true); } string key = NpBlackBoardRelationData.BBKey; Blackboard selfBlackboard = this.BelongtoRuntimeTree.GetBlackboard(); if (!selfBlackboard.Isset(key)) { return(Ope == Operator.IS_NOT_SET); } ANP_BBValue preSetValue = this.NpBlackBoardRelationData.NP_BBValue; ANP_BBValue bbValue = selfBlackboard.Get(key); switch (this.Ope) { case Operator.IS_SET: return(true); case Operator.IS_EQUAL: { switch (preSetValue) { case NP_BBValue_Bool npBbValue: return(npBbValue == bbValue as NP_BBValue_Bool); case NP_BBValue_Float npBbValue: return(npBbValue == bbValue as NP_BBValue_Float); case NP_BBValue_Int npBbValue: return(npBbValue == bbValue as NP_BBValue_Int); case NP_BBValue_String npBbValue: return(npBbValue == bbValue as NP_BBValue_String); case NP_BBValue_Vector3 npBbValue: return(npBbValue == bbValue as NP_BBValue_Vector3); case NP_BBValue_Long npBbValue: return(npBbValue == bbValue as NP_BBValue_Long); default: Log.Error($"类型为{preSetValue.GetType()}的数未注册为NP_BBValue"); return(false); } } case Operator.IS_NOT_EQUAL: { switch (preSetValue) { case NP_BBValue_Bool npBbValue: return(npBbValue != bbValue as NP_BBValue_Bool); case NP_BBValue_Float npBbValue: return(npBbValue != bbValue as NP_BBValue_Float); case NP_BBValue_Int npBbValue: return(npBbValue != bbValue as NP_BBValue_Int); case NP_BBValue_String npBbValue: return(npBbValue != bbValue as NP_BBValue_String); case NP_BBValue_Long npBbValue: return(npBbValue != bbValue as NP_BBValue_Long); case NP_BBValue_Vector3 npBbValue: return(npBbValue != bbValue as NP_BBValue_Vector3); default: Log.Error($"类型为{preSetValue.GetType()}的数未注册为NP_BBValue"); return(false); } } case Operator.IS_GREATER_OR_EQUAL: { switch (preSetValue) { case NP_BBValue_Bool npBbValue: return((bbValue as NP_BBValue_Bool) >= npBbValue); case NP_BBValue_Float npBbValue: return((bbValue as NP_BBValue_Float) >= npBbValue); case NP_BBValue_Int npBbValue: return((bbValue as NP_BBValue_Int) >= npBbValue); case NP_BBValue_String npBbValue: return((bbValue as NP_BBValue_String) >= npBbValue); case NP_BBValue_Long npBbValue: return((bbValue as NP_BBValue_Long) >= npBbValue); case NP_BBValue_Vector3 npBbValue: return((bbValue as NP_BBValue_Vector3) >= npBbValue); default: Log.Error($"类型为{preSetValue.GetType()}的数未注册为NP_BBValue"); return(false); } } case Operator.IS_GREATER: { switch (preSetValue) { case NP_BBValue_Bool npBbValue: return((bbValue as NP_BBValue_Bool) > npBbValue); case NP_BBValue_Float npBbValue: return((bbValue as NP_BBValue_Float) > npBbValue); case NP_BBValue_Int npBbValue: return((bbValue as NP_BBValue_Int) > npBbValue); case NP_BBValue_String npBbValue: return((bbValue as NP_BBValue_String) > npBbValue); case NP_BBValue_Long npBbValue: return((bbValue as NP_BBValue_Long) > npBbValue); case NP_BBValue_Vector3 npBbValue: return((bbValue as NP_BBValue_Vector3) > npBbValue); default: Log.Error($"类型为{preSetValue.GetType()}的数未注册为NP_BBValue"); return(false); } } case Operator.IS_SMALLER_OR_EQUAL: switch (preSetValue) { case NP_BBValue_Bool npBbValue: return((bbValue as NP_BBValue_Bool) <= npBbValue); case NP_BBValue_Float npBbValue: return((bbValue as NP_BBValue_Float) <= npBbValue); case NP_BBValue_Int npBbValue: return((bbValue as NP_BBValue_Int) <= npBbValue); case NP_BBValue_String npBbValue: return((bbValue as NP_BBValue_String) <= npBbValue); case NP_BBValue_Long npBbValue: return((bbValue as NP_BBValue_Long) <= npBbValue); case NP_BBValue_Vector3 npBbValue: return((bbValue as NP_BBValue_Vector3) <= npBbValue); default: Log.Error($"类型为{preSetValue.GetType()}的数未注册为NP_BBValue"); return(false); } case Operator.IS_SMALLER: switch (preSetValue) { case NP_BBValue_Bool npBbValue: return((bbValue as NP_BBValue_Bool) < npBbValue); case NP_BBValue_Float npBbValue: return((bbValue as NP_BBValue_Float) < npBbValue); case NP_BBValue_Int npBbValue: return((bbValue as NP_BBValue_Int) < npBbValue); case NP_BBValue_String npBbValue: return((bbValue as NP_BBValue_String) < npBbValue); case NP_BBValue_Long npBbValue: return((bbValue as NP_BBValue_Long) < npBbValue); case NP_BBValue_Vector3 npBbValue: return((bbValue as NP_BBValue_Vector3) < npBbValue); default: Log.Error($"类型为{preSetValue.GetType()}的数未注册为NP_BBValue"); return(false); } default: return(false); } }
public Notification(string key, Type type, ANP_BBValue value) { this.Key = key; this.Type = type; this.Value = value; }
private void onValueChanged(Blackboard.Type type, ANP_BBValue newValue) { Evaluate(); }
public bool CheckCondition(string key, ANP_BBValue value, Operator op) { if (op == Operator.ALWAYS_TRUE) { return(true); } if (!this.RootNode.Blackboard.Isset(key)) { return(op == Operator.IS_NOT_SET); } ANP_BBValue bbValue = this.RootNode.Blackboard.Get(key); switch (op) { case Operator.IS_SET: return(true); case Operator.IS_EQUAL: { switch (value) { case NP_BBValue_Bool npBbValue: return(npBbValue == bbValue as NP_BBValue_Bool); case NP_BBValue_Float npBbValue: return(npBbValue == bbValue as NP_BBValue_Float); case NP_BBValue_Int npBbValue: return(npBbValue == bbValue as NP_BBValue_Int); case NP_BBValue_String npBbValue: return(npBbValue == bbValue as NP_BBValue_String); case NP_BBValue_Vector3 npBbValue: return(npBbValue == bbValue as NP_BBValue_Vector3); default: Log.Error($"类型为{value.GetType()}的数未注册为NP_BBValue"); return(false); } } case Operator.IS_NOT_EQUAL: { switch (value) { case NP_BBValue_Bool npBbValue: return(npBbValue != bbValue as NP_BBValue_Bool); case NP_BBValue_Float npBbValue: return(npBbValue != bbValue as NP_BBValue_Float); case NP_BBValue_Int npBbValue: return(npBbValue != bbValue as NP_BBValue_Int); case NP_BBValue_String npBbValue: return(npBbValue != bbValue as NP_BBValue_String); case NP_BBValue_Vector3 npBbValue: return(npBbValue != bbValue as NP_BBValue_Vector3); default: Log.Error($"类型为{value.GetType()}的数未注册为NP_BBValue"); return(false); } } case Operator.IS_GREATER_OR_EQUAL: { switch (value) { case NP_BBValue_Bool npBbValue: return(npBbValue >= (bbValue as NP_BBValue_Bool)); case NP_BBValue_Float npBbValue: return(npBbValue >= (bbValue as NP_BBValue_Float)); case NP_BBValue_Int npBbValue: return(npBbValue >= (bbValue as NP_BBValue_Int)); case NP_BBValue_String npBbValue: return(npBbValue >= (bbValue as NP_BBValue_String)); case NP_BBValue_Vector3 npBbValue: return(npBbValue >= (bbValue as NP_BBValue_Vector3)); default: Log.Error($"类型为{value.GetType()}的数未注册为NP_BBValue"); return(false); } } case Operator.IS_GREATER: { switch (value) { case NP_BBValue_Bool npBbValue: return(npBbValue > (bbValue as NP_BBValue_Bool)); case NP_BBValue_Float npBbValue: return(npBbValue > (bbValue as NP_BBValue_Float)); case NP_BBValue_Int npBbValue: return(npBbValue > (bbValue as NP_BBValue_Int)); case NP_BBValue_String npBbValue: return(npBbValue > (bbValue as NP_BBValue_String)); case NP_BBValue_Vector3 npBbValue: return(npBbValue > (bbValue as NP_BBValue_Vector3)); default: Log.Error($"类型为{value.GetType()}的数未注册为NP_BBValue"); return(false); } } case Operator.IS_SMALLER_OR_EQUAL: switch (value) { case NP_BBValue_Bool npBbValue: return(npBbValue <= (bbValue as NP_BBValue_Bool)); case NP_BBValue_Float npBbValue: return(npBbValue <= (bbValue as NP_BBValue_Float)); case NP_BBValue_Int npBbValue: return(npBbValue <= (bbValue as NP_BBValue_Int)); case NP_BBValue_String npBbValue: return(npBbValue <= (bbValue as NP_BBValue_String)); case NP_BBValue_Vector3 npBbValue: return(npBbValue <= (bbValue as NP_BBValue_Vector3)); default: Log.Error($"类型为{value.GetType()}的数未注册为NP_BBValue"); return(false); } case Operator.IS_SMALLER: switch (value) { case NP_BBValue_Bool npBbValue: return(npBbValue < (bbValue as NP_BBValue_Bool)); case NP_BBValue_Float npBbValue: return(npBbValue < (bbValue as NP_BBValue_Float)); case NP_BBValue_Int npBbValue: return(npBbValue < (bbValue as NP_BBValue_Int)); case NP_BBValue_String npBbValue: return(npBbValue < (bbValue as NP_BBValue_String)); case NP_BBValue_Vector3 npBbValue: return(npBbValue < (bbValue as NP_BBValue_Vector3)); default: Log.Error($"类型为{value.GetType()}的数未注册为NP_BBValue"); return(false); } default: return(false); } }
override protected bool IsConditionMet() { if (op == Operator.ALWAYS_TRUE) { return(true); } if (!this.RootNode.Blackboard.Isset(key)) { return(op == Operator.IS_NOT_SET); } ANP_BBValue bbValue = this.RootNode.Blackboard.Get(key); switch (this.op) { case Operator.IS_SET: return(true); case Operator.IS_EQUAL: { switch (this.value) { case NP_BBValue_Bool npBbValue: return(npBbValue == bbValue as NP_BBValue_Bool); case NP_BBValue_Float npBbValue: return(npBbValue == bbValue as NP_BBValue_Float); case NP_BBValue_Int npBbValue: return(npBbValue == bbValue as NP_BBValue_Int); case NP_BBValue_String npBbValue: return(npBbValue == bbValue as NP_BBValue_String); case NP_BBValue_Vector3 npBbValue: return(npBbValue == bbValue as NP_BBValue_Vector3); case NP_BBValue_Long npBbValue: return(npBbValue == bbValue as NP_BBValue_Long); default: Log.Error($"类型为{this.value.GetType()}的数未注册为NP_BBValue"); return(false); } } case Operator.IS_NOT_EQUAL: { switch (this.value) { case NP_BBValue_Bool npBbValue: return(npBbValue != bbValue as NP_BBValue_Bool); case NP_BBValue_Float npBbValue: return(npBbValue != bbValue as NP_BBValue_Float); case NP_BBValue_Int npBbValue: return(npBbValue != bbValue as NP_BBValue_Int); case NP_BBValue_String npBbValue: return(npBbValue != bbValue as NP_BBValue_String); case NP_BBValue_Long npBbValue: return(npBbValue != bbValue as NP_BBValue_Long); case NP_BBValue_Vector3 npBbValue: return(npBbValue != bbValue as NP_BBValue_Vector3); default: Log.Error($"类型为{this.value.GetType()}的数未注册为NP_BBValue"); return(false); } } case Operator.IS_GREATER_OR_EQUAL: { switch (this.value) { case NP_BBValue_Bool npBbValue: return((bbValue as NP_BBValue_Bool) >= npBbValue); case NP_BBValue_Float npBbValue: return((bbValue as NP_BBValue_Float) >= npBbValue); case NP_BBValue_Int npBbValue: return((bbValue as NP_BBValue_Int) >= npBbValue); case NP_BBValue_String npBbValue: return((bbValue as NP_BBValue_String) >= npBbValue); case NP_BBValue_Long npBbValue: return((bbValue as NP_BBValue_Long) >= npBbValue); case NP_BBValue_Vector3 npBbValue: return((bbValue as NP_BBValue_Vector3) >= npBbValue); default: Log.Error($"类型为{this.value.GetType()}的数未注册为NP_BBValue"); return(false); } } case Operator.IS_GREATER: { switch (this.value) { case NP_BBValue_Bool npBbValue: return((bbValue as NP_BBValue_Bool) > npBbValue); case NP_BBValue_Float npBbValue: return((bbValue as NP_BBValue_Float) > npBbValue); case NP_BBValue_Int npBbValue: return((bbValue as NP_BBValue_Int) > npBbValue); case NP_BBValue_String npBbValue: return((bbValue as NP_BBValue_String) > npBbValue); case NP_BBValue_Long npBbValue: return((bbValue as NP_BBValue_Long) > npBbValue); case NP_BBValue_Vector3 npBbValue: return((bbValue as NP_BBValue_Vector3) > npBbValue); default: Log.Error($"类型为{this.value.GetType()}的数未注册为NP_BBValue"); return(false); } } case Operator.IS_SMALLER_OR_EQUAL: switch (this.value) { case NP_BBValue_Bool npBbValue: return((bbValue as NP_BBValue_Bool) <= npBbValue); case NP_BBValue_Float npBbValue: return((bbValue as NP_BBValue_Float) <= npBbValue); case NP_BBValue_Int npBbValue: return((bbValue as NP_BBValue_Int) <= npBbValue); case NP_BBValue_String npBbValue: return((bbValue as NP_BBValue_String) <= npBbValue); case NP_BBValue_Long npBbValue: return((bbValue as NP_BBValue_Long) <= npBbValue); case NP_BBValue_Vector3 npBbValue: return((bbValue as NP_BBValue_Vector3) <= npBbValue); default: Log.Error($"类型为{this.value.GetType()}的数未注册为NP_BBValue"); return(false); } case Operator.IS_SMALLER: switch (this.value) { case NP_BBValue_Bool npBbValue: return((bbValue as NP_BBValue_Bool) < npBbValue); case NP_BBValue_Float npBbValue: return((bbValue as NP_BBValue_Float) < npBbValue); case NP_BBValue_Int npBbValue: return((bbValue as NP_BBValue_Int) < npBbValue); case NP_BBValue_String npBbValue: return((bbValue as NP_BBValue_String) < npBbValue); case NP_BBValue_Long npBbValue: return((bbValue as NP_BBValue_Long) < npBbValue); case NP_BBValue_Vector3 npBbValue: return((bbValue as NP_BBValue_Vector3) < npBbValue); default: Log.Error($"类型为{this.value.GetType()}的数未注册为NP_BBValue"); return(false); } default: return(false); } }