Esempio n. 1
0
        public T Get <T>(string key)
        {
            ANP_BBValue result = Get(key);

            if (result == null)
            {
                return(default);
Esempio n. 2
0
 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;
 }
Esempio n. 3
0
        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();
                            }
                        }
                    }
                }
            }
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
 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);
            }
        }
Esempio n. 8
0
        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);
            }
        }