public void ChangeFSM(FSM_LAYER_ID eLayer, FSM_ID fsmID) { layerNum = (int)eLayer; if (!CurLayerCheck(eLayer)) { UDL.LogWarning("Fail Change Layer : " + eLayer, nLogOption, warningLoglv); return; } if (!dicFSM_EachLayer[layerNum].TryGetValue(fsmID, out tFSMBuffer)) { UDL.LogWarning(eLayer + " 에 " + fsmID + " 가 등록되어 있지 않습니다", nLogOption, warningLoglv); return; } if (CurLayerCheck(eLayer)) { layerFSM_Buffer[layerNum] = curFSM_EachLayer[layerNum].fsmID; curFSM_EachLayer[layerNum].Pause(); UnRegisterToFSM_ChangeLayerState(eLayer); curFSM_EachLayer[layerNum] = dicFSM_EachLayer[layerNum][fsmID]; RegisterToFSM_ChangeLayerState(eLayer); curFSM_EachLayer[layerNum].Resume(); } UDL.Log("(ChangeFSM) curFSM : " + curFSM_EachLayer[layerNum].fsmID.ToString(), nLogOption, logLv); }
private static StatePopupList MakePopupArray(FSM_ID fsmid) { string prefix = fsmid.ToString(); string ts; string[] split; List <string> tArr_Name = new List <string>(); List <int> tArr_ID = new List <int>(); for (int i = 0; i < arr_sStateID.Length; i++) { ts = arr_sStateID.GetValue(i).ToString(); split = ts.Split('_'); if (split[0] == prefix) { tArr_Name.Add(ts); tArr_ID.Add((int)arr_sStateID.GetValue(i)); } } tArr_Name.Add(STATE_ID.HistoryBack.ToString()); tArr_ID.Add((int)STATE_ID.HistoryBack); StatePopupList result = new StatePopupList(); result.arr_sName = tArr_Name.ToArray() as string[]; result.arr_nID = tArr_ID.ToArray(); return(result); }
public FSM(FSM_ID id) { fsmID = id; anyState = new State(STATE_ID.AnyState); curState = anyState; dicStateList.Add(STATE_ID.AnyState, anyState); }
static void MakePopupArray() { dic_ePopupArray.Clear(); System.Array arr_FSMID = System.Enum.GetValues(typeof(FSM_ID)); for (int idx = 0; idx < arr_FSMID.Length; idx++) { FSM_ID targetID = (FSM_ID)arr_FSMID.GetValue(idx); dic_ePopupArray.Add(targetID, MakePopupArray(targetID)); } }
void SelectFSM() { GUILayout.Space(30); curFSMID = (FSM_ID)EditorGUILayout.EnumPopup(curFSMID); curStatePopupList = FSM_Utility.GetPopupList(curFSMID); if (GUI.changed) { LoadFSM(); } GUILayout.Space(30); }
public void ChangeFSM_Manual(FSM_LAYER_ID eLayer, FSM_ID fsmID) { layerNum = (int)eLayer; if (CurLayerCheck(eLayer)) { layerFSM_Buffer[layerNum] = curFSM_EachLayer[layerNum].fsmID; UnRegisterToFSM_ChangeLayerState(eLayer); curFSM_EachLayer[layerNum] = dicFSM_EachLayer[layerNum][fsmID]; RegisterToFSM_ChangeLayerState(eLayer); } }
FSM RegistFSM(FSM_LAYER_ID layer, FSM_ID id) { FSM tFSM = FileManager.Inst.ResourceLoad("FSMData/" + id.ToString()) as FSM; if (tFSM == null) { Debug.LogWarning("No FSM Data " + id.ToString()); return(null); } tFSM.InitNonSerializedField(); FSM_Layer.Inst.AddFSM(layer, tFSM, id); return(tFSM); }
public void RemoveFSM(FSM_LAYER_ID eLayer, FSM_ID id) { layerNum = (int)eLayer; if (dicFSM_EachLayer[layerNum].ContainsKey(id)) { dicFSM_EachLayer[layerNum].Remove(id); } else { UDL.LogWarning("가지고 있지 않은 FSM을 삭제하려 함", nLogOption, warningLoglv); } if (curFSM_EachLayer[layerNum].fsmID == id) { curFSM_EachLayer[layerNum] = null; } }
public void AddFSM(FSM_LAYER_ID eLayer, FSM newFSM, FSM_ID id = FSM_ID.NONE) { layerNum = (int)eLayer; if (dicFSM_EachLayer.Length <= layerNum) { UDL.LogError("할당되지 않은 레이어를 호출하고 있습니다 Layer 및 iMaxLayer를 확인해주세요", nLogOption, errorLoglv); return; } if (dicFSM_EachLayer[layerNum] == null) { dicFSM_EachLayer[layerNum] = new Dictionary <FSM_ID, FSM>(); } if (id != FSM_ID.NONE) { if (dicFSM_EachLayer[layerNum].ContainsKey(id)) { UDL.LogWarning("동일 레이어에 중복된 FSM ID 를 등록하려함!", nLogOption, warningLoglv); } else { newFSM.SetFSMID(id); } } dicFSM_EachLayer[layerNum].Add(newFSM.fsmID, newFSM); UDL.Log(eLayer + " // add : " + newFSM.fsmID, nLogOption, logLv); if (curFSM_EachLayer[layerNum] == null) { curFSM_EachLayer[layerNum] = newFSM; RegisterToFSM_ChangeLayerState(eLayer); curFSM_EachLayer[layerNum].Resume(); } else { ChangeFSM(eLayer, newFSM.fsmID); } }
public State GetState(FSM_LAYER_ID eLayer, FSM_ID fsmID, STATE_ID stateID) { layerNum = (int)eLayer; if (dicFSM_EachLayer == null) { return(null); } if (dicFSM_EachLayer[layerNum] == null) { UDL.LogError("지정한 레이어에 FSM이 지정되 있지 않음 ", nLogOption, errorLoglv); return(null); } if (!dicFSM_EachLayer[layerNum].TryGetValue(fsmID, out tFSMBuffer)) { UDL.LogError(fsmID.ToString() + " FSM 이 등록되어 있지 않음", nLogOption, errorLoglv); return(null); } return(tFSMBuffer.GetState(stateID)); }
public void SetFSMID(FSM_ID id) { fsmID = id; }
public static StatePopupList GetPopupList(FSM_ID target) { return(dic_ePopupArray[target]); }