Esempio n. 1
0
    private void LoadFile(string fileName)
    {
        if (string.IsNullOrEmpty(fileName))
        {
            return;
        }

        _configDataDic.Clear();

        BehaviorReadWrite readWrite        = new BehaviorReadWrite();
        BehaviorTreeData  behaviorTreeData = ReadFile(fileName, true);

        if (null == behaviorTreeData)
        {
            //ProDebug.Logger.LogError("file is null:" + fileName);
            return;
        }

        _playState = BehaviorPlayType.STOP;
        NodeNotify.SetPlayState((int)_playState);

        _fileName             = fileName;
        _behaviorTreeData     = behaviorTreeData;
        _currentSelectId      = -1;
        _currentOpenSubTreeId = -1;

        BehaviorRunTime.Instance.Reset(behaviorTreeData);
    }
Esempio n. 2
0
    private void LoadFile(string fileName)
    {
        string path = GetFilePath(fileName);

        if (!File.Exists(path))
        {
            if (!EditorUtility.DisplayDialog("提示", "文件不存在", "yes"))
            {
            }
            return;
        }

        _playState = BehaviorPlayType.STOP;
        NodeNotify.SetPlayState((int)_playState);

        BehaviorReadWrite readWrite        = new BehaviorReadWrite();
        BehaviorTreeData  behaviorTreeData = readWrite.ReadJson(path);

        if (null == behaviorTreeData)
        {
            Debug.LogError("file is null:" + fileName);
            return;
        }

        _fileName         = fileName;
        _behaviorTreeData = behaviorTreeData;

        BehaviorRunTime.Instance.Reset(behaviorTreeData);
    }
Esempio n. 3
0
    private void LoadFile(string fileName)
    {
        string path = GetFilePath(fileName);

        if (!File.Exists(path))
        {
            if (!EditorUtility.DisplayDialog("提示", "文件不存在", "yes"))
            {
            }
            return;
        }

        _playState = HSMPlayType.STOP;
        NodeNotify.SetPlayState((int)_playState);

        HSMReadWrite readWrite = new HSMReadWrite();
        SkillHsmConfigHSMTreeData HSMTreeData = readWrite.ReadJson(path);

        if (null == HSMTreeData)
        {
            Debug.LogError("file is null:" + fileName);
            return;
        }

        _fileName                = fileName;
        _HSMTreeData             = HSMTreeData;
        _currentOpenSubMachineId = -1;

        HSMRunTime.Instance.Reset(HSMTreeData);
    }
Esempio n. 4
0
    public override ResultType Execute()
    {
        NodeNotify.NotifyExecute(NodeId, Time.realtimeSinceStartup);
        bool       result     = _iconditionCheck.Condition(conditionParameter);
        ResultType resultType = result ? ResultType.Success : ResultType.Fail;

        return(resultType);
    }
Esempio n. 5
0
    public override ResultType Execute()
    {
        NodeNotify.NotifyExecute(NodeId, Time.realtimeSinceStartup);

        bool result = HumanController.Instance.Human.Cooking(0.3f);

        ResultType resultType = result ? ResultType.Running : ResultType.Success;

        return(resultType);
    }
Esempio n. 6
0
    public static void Draw(NodeValue nodeValue, int selectNodeId, float value = 0f)
    {
        nodeValue.position.height = GetHight(nodeValue);
        height = (int)nodeValue.position.height - 15;

        EditorGUILayout.BeginVertical(/*"box",*/ GUILayout.Height(height));
        {
            Rect backRect = new Rect(5, 20, nodeValue.position.width - 10, height - 8);
            GUI.backgroundColor = GetColor(nodeValue, selectNodeId);
            GUI.Box(backRect, string.Empty);
            GUI.backgroundColor = Color.white;

            string idMsg = string.Empty;
            if (nodeValue.NodeType == (int)NODE_TYPE.SUB_TREE)
            {
                idMsg = string.Format("子树ID:{0}", nodeValue.id);
            }
            else
            {
                if (nodeValue.NodeType == (int)NODE_TYPE.CONDITION)
                {
                    idMsg = string.Format("条件ID:{0}", nodeValue.id);
                }
                else if (nodeValue.NodeType == (int)NODE_TYPE.ACTION)
                {
                    idMsg = string.Format("行为ID:{0}", nodeValue.id);
                }
                else
                {
                    idMsg = string.Format("ID:{0}", nodeValue.id);
                }
            }
            EditorGUILayout.LabelField(idMsg);

            nodeValue.descript = EditorGUILayout.TextField(nodeValue.descript);

            int        resultIntType = (int)ResultType.Fail;
            float      slider        = NodeNotify.NodeDraw(nodeValue.id, ref resultIntType);
            ResultType resultType    = (ResultType)resultIntType;

            Rect runRect = new Rect(8, height, nodeValue.position.width - 16, 8);
            GUI.Box(runRect, string.Empty);
            if (slider > 0)
            {
                runRect.width       = runRect.width * slider;
                GUI.backgroundColor = GetSliderColor(resultType);
                GUI.Box(runRect, string.Empty);
                GUI.backgroundColor = Color.white;
            }
        }
        EditorGUILayout.EndVertical();
    }
Esempio n. 7
0
    public override ResultType Execute()
    {
        NodeNotify.NotifyExecute(NodeId, Time.realtimeSinceStartup);
        if (null == HumanController.Instance || null == HumanController.Instance.Human)
        {
            return(ResultType.Fail);
        }

        bool result = HumanController.Instance.Human.IsHungry();

        ResultType resultType = result ? ResultType.Running : ResultType.Success;

        return(resultType);
    }
Esempio n. 8
0
    public static void Draw(NodeValue nodeValue, int selectNodeId, float value = 0f)
    {
        EditorGUILayout.BeginVertical("box", GUILayout.Height(height));
        {
            if (nodeValue.id == selectNodeId)
            {
                GUI.backgroundColor = new Color(0, 1, 0, 0.15f);
                GUI.Box(new Rect(5, 20, nodeValue.position.width - 10, height), string.Empty);
                GUI.backgroundColor = Color.white;
            }

            EditorGUILayout.BeginHorizontal();
            {
                EditorGUILayout.LabelField(new GUIContent("根节点"), GUILayout.Width(50));
                nodeValue.isRootNode = EditorGUILayout.Toggle(nodeValue.isRootNode, GUILayout.Width(50));
            }
            EditorGUILayout.EndHorizontal();

            int parentID = nodeValue.parentNodeID;
            //if (parentID > 0)
            {
                string msg = string.Format("父节点_{0}", parentID);
                EditorGUILayout.LabelField(msg);
            }

            nodeValue.descript = EditorGUILayout.TextArea(nodeValue.descript);

            {
                float slider = NodeNotify.NodeDraw(nodeValue.id);

                Rect runRect = new Rect(8, 80, nodeValue.position.width - 16, 8);
                GUI.Box(runRect, string.Empty);
                if (slider > 0)
                {
                    runRect.width       = runRect.width * slider;
                    GUI.backgroundColor = Color.green;
                    GUI.Box(runRect, string.Empty);
                    GUI.backgroundColor = Color.white;
                }
            }

            //GUILayout.HorizontalSlider(value, 0, 1);
        }
        EditorGUILayout.EndVertical();

        SetHight(nodeValue);
    }
Esempio n. 9
0
    public override ResultType Execute()
    {
        NodeNotify.NotifyExecute(NodeId, Time.realtimeSinceStartup);

        if (null == HumanController.Instance)
        {
            return(ResultType.Fail);
        }

        Vector3 targetPos = Vector3.zero;

        if (_parameterList.Count >= 0 && _parameterList[0].parameterName.CompareTo("MoveTarget") == 0)
        {
            BehaviorParameter parameter = _parameterList[0];
            if (parameter.intValue == 0)
            {
                targetPos = HumanController.Instance.Human.KitchenPos();
            }
            else if (parameter.intValue == 1)
            {
                targetPos = HumanController.Instance.Human.DiningTablePos();
            }
            else if (parameter.intValue == 2)
            {
                targetPos = HumanController.Instance.Human.TVPos();
            }
        }

        ResultType resultType = ResultType.Running;

        if (Vector3.Distance(HumanController.Instance.Human.Position(), targetPos) < 0.5f)
        {
            return(ResultType.Success);
        }

        HumanController.Instance.Human.Translate(targetPos);
        return(resultType);
    }
Esempio n. 10
0
 private void RuntimePlay(BehaviorPlayType state)
 {
     NodeNotify.SetPlayState((int)state);
     _playState = state;
 }
Esempio n. 11
0
 private void RuntimePlay(BehaviorPlayType state)
 {
     BehaviorRunTime.Instance.RuntimePlay(_playState, state);
     NodeNotify.SetPlayState((int)state);
     _playState = state;
 }
Esempio n. 12
0
 public override ResultType Execute()
 {
     NodeNotify.NotifyExecute(NodeId, Time.realtimeSinceStartup);
     return(ResultType.Fail);
 }