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); }
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); }
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); }
public override ResultType Execute() { NodeNotify.NotifyExecute(NodeId, Time.realtimeSinceStartup); bool result = _iconditionCheck.Condition(conditionParameter); ResultType resultType = result ? ResultType.Success : ResultType.Fail; return(resultType); }
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); }
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(); }
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); }
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); }
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); }
private void RuntimePlay(BehaviorPlayType state) { NodeNotify.SetPlayState((int)state); _playState = state; }
private void RuntimePlay(BehaviorPlayType state) { BehaviorRunTime.Instance.RuntimePlay(_playState, state); NodeNotify.SetPlayState((int)state); _playState = state; }
public override ResultType Execute() { NodeNotify.NotifyExecute(NodeId, Time.realtimeSinceStartup); return(ResultType.Fail); }