Exemple #1
0
        private void DrawProp(string nodeName, List <NodeFieldDesc> fieldList, NodeParamType nodeParamType)
        {
            for (int i = 0; i < fieldList.Count; i++)
            {
                NodeFieldDesc desc      = fieldList[i];
                Type          fieldType = NodeMetaHelper.GetFieldType(nodeName, desc.name);
                NodeMeta      nodeMeta  = BTEntity.Instance.GetNodeMeta(nodeName);

                // 如果不存在这个参数,给一个默认的
                if (!mCurBehaviorNode.Args.ContainsKey(desc.name))
                {
                    object obj = desc.value ?? BTTypeManager.GetDefaultValue(fieldType);
                    mCurBehaviorNode.Args.Add(desc.name, obj);
                }

                object newValue = null;
                if (TypeHelper.IsStringType(fieldType))
                {
                    if (nodeParamType == NodeParamType.Input)
                    {
                        newValue = InputEnumFieldValue(desc);
                    }
                    else if (nodeParamType == NodeParamType.Output && nodeMeta.classify == NodeClassifyType.Root.ToString())
                    {
                        newValue = ConstTextFieldValue(desc);
                    }
                    else
                    {
                        newValue = TextFieldValue(desc);
                    }
                }
                else if (TypeHelper.IsFloatType(fieldType))
                {
                    newValue = FloatFieldValue(desc);
                }
                else if (TypeHelper.IsDoubleType(fieldType))
                {
                    newValue = DoubletFieldValue(desc);
                }
                else if (TypeHelper.IsIntType(fieldType))
                {
                    newValue = IntFieldValue(desc);
                }
                else if (TypeHelper.IsLongType(fieldType))
                {
                    newValue = LongFieldValue(desc);
                }
                else if (TypeHelper.IsBoolType(fieldType))
                {
                    newValue = BoolFieldValue(desc);
                }
                else if (TypeHelper.IsObjectType(fieldType))
                {
                    newValue = ObjectFieldValue(desc);
                }
                else if (TypeHelper.IsIntArrType(fieldType))
                {
                    newValue = IntArrFieldValue(desc);
                }
                else if (TypeHelper.IsLongArrType(fieldType))
                {
                    newValue = LongArrFieldValue(desc);
                }
                else if (TypeHelper.IsStringArrType(fieldType))
                {
                    newValue = StrArrFieldValue(desc);
                }
                else if (TypeHelper.IsFloatArrType(fieldType))
                {
                    newValue = FloatArrFieldValue(desc);
                }
                else if (TypeHelper.IsDoubleArrType(fieldType))
                {
                    newValue = DoubleArrFieldValue(desc);
                }
                else if (TypeHelper.IsEnumType(fieldType))
                {
                    newValue = EnumFieldValue(desc);
                }
                else if (TypeHelper.IsObjectArrayType(fieldType))
                {
                    newValue = ObjectArrFieldValue(desc);
                }
                else
                {
                    Log.Error($"行为树节点暂时未支持此类型:{fieldType}!");
                    return;
                }
                mCurBehaviorNode.Args.SetKeyValueComp(desc.name, newValue);
            }
        }
 private void DrawProp(string nodeName, List <NodeFieldDesc> fieldList, NodeParamType nodeParamType)
 {
     for (int i = 0; i < fieldList.Count; i++)
     {
         NodeFieldDesc       desc       = fieldList[i];
         Type                fieldType  = ExportNodeTypeConfig.GetFieldType(nodeName, desc.name);
         ClientNodeTypeProto clientNode = ExportNodeTypeConfig.GetNodeTypeProtoFromDll(nodeName);
         object              newValue   = null;
         if (!mCurBehaviorNode.args_dict.ContainsKey(desc.name))
         {
             mCurBehaviorNode.args_dict.Add(desc.name, new ValueBase());
         }
         if (BehaviorTreeArgsDict.IsStringType(fieldType))
         {
             if (nodeParamType == NodeParamType.Input)
             {
                 newValue = InputEnumFieldValue(desc);
             }
             else if (nodeParamType == NodeParamType.Output && clientNode.classify == NodeClassifyType.Root.ToString())
             {
                 newValue = ConstTextFieldValue(desc);
             }
             else
             {
                 newValue = TextFieldValue(desc);
             }
         }
         else if (BehaviorTreeArgsDict.IsFloatType(fieldType))
         {
             newValue = FloatFieldValue(desc);
         }
         else if (BehaviorTreeArgsDict.IsDoubleType(fieldType))
         {
             newValue = DoubletFieldValue(desc);
         }
         else if (BehaviorTreeArgsDict.IsIntType(fieldType))
         {
             newValue = IntFieldValue(desc);
         }
         else if (BehaviorTreeArgsDict.IsLongType(fieldType))
         {
             newValue = LongFieldValue(desc);
         }
         else if (BehaviorTreeArgsDict.IsBoolType(fieldType))
         {
             newValue = BoolFieldValue(desc);
         }
         else if (BehaviorTreeArgsDict.IsObjectType(fieldType))
         {
             newValue = ObjectFieldValue(desc);
         }
         else if (BehaviorTreeArgsDict.IsIntArrType(fieldType))
         {
             newValue = IntArrFieldValue(desc);
         }
         else if (BehaviorTreeArgsDict.IsLongArrType(fieldType))
         {
             newValue = LongArrFieldValue(desc);
         }
         else if (BehaviorTreeArgsDict.IsStringArrType(fieldType))
         {
             newValue = StrArrFieldValue(desc);
         }
         else if (BehaviorTreeArgsDict.IsFloatArrType(fieldType))
         {
             newValue = FloatArrFieldValue(desc);
         }
         else if (BehaviorTreeArgsDict.IsDoubleArrType(fieldType))
         {
             newValue = DoubleArrFieldValue(desc);
         }
         else if (BehaviorTreeArgsDict.IsEnumType(fieldType))
         {
             if (nodeParamType == NodeParamType.Input)
             {
                 newValue = InputEnumFieldValue(desc);
             }
             else if (nodeParamType == NodeParamType.Output)
             {
                 newValue = OutPutEnumFieldValue(desc);
             }
             else
             {
                 newValue = EnumFieldValue(desc);
             }
         }
         else if (BehaviorTreeArgsDict.IsObjectArrayType(fieldType))
         {
             newValue = ObjectArrFieldValue(desc);
         }
         else
         {
             Log.Error($"行为树节点暂时未支持此类型:{fieldType}!");
             return;
         }
         mCurBehaviorNode.args_dict.SetKeyValueComp(fieldType, desc.name, newValue);
     }
 }