public void SetFloat_NoCondChk(FSM_LAYER_ID eLayer, TRANS_PARAM_ID paramID, float value) { if (CurLayerCheck(eLayer)) { curFSM_EachLayer[(int)eLayer].SetFloat_NoCondChk(paramID, value); } }
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); }
public void SetTrigger(FSM_LAYER_ID eLayer, TRANS_PARAM_ID paramID) { if (CurLayerCheck(eLayer)) { curFSM_EachLayer[(int)eLayer].SetTrigger(paramID); } }
public void SetBool(FSM_LAYER_ID eLayer, TRANS_PARAM_ID paramID, bool value) { if (CurLayerCheck(eLayer)) { curFSM_EachLayer[(int)eLayer].SetBool(paramID, value); } }
public void HistoryBack(FSM_LAYER_ID eLayer) { if (CurLayerCheck(eLayer)) { curFSM_EachLayer[(int)eLayer].HistoryBack(); } }
public bool GetBool(FSM_LAYER_ID eLayer, TRANS_PARAM_ID paramID) { if (!CurLayerCheck(eLayer)) { return(false); } return(curFSM_EachLayer[(int)eLayer].GetParamBool(paramID)); }
public float GetFloat(FSM_LAYER_ID eLayer, TRANS_PARAM_ID paramID) { if (!CurLayerCheck(eLayer)) { return(0); } return(curFSM_EachLayer[(int)eLayer].GetParamFloat(paramID)); }
public FSM GetCurFSM(FSM_LAYER_ID eLayer) { if (!CurLayerCheck(eLayer)) { return(null); } return(curFSM_EachLayer[(int)eLayer]); }
public STATE_ID GetCurStateID(FSM_LAYER_ID eLayer) { layerNum = (int)eLayer; if (curFSM_EachLayer[layerNum] == null) { return(STATE_ID.None); } return(curFSM_EachLayer[layerNum].GetCurStateID()); }
public State GetCurState(FSM_LAYER_ID eLayer) { layerNum = (int)eLayer; if (curFSM_EachLayer[layerNum] == null) { return(null); } return(curFSM_EachLayer[layerNum].GetCurState()); }
bool CurLayerCheck(FSM_LAYER_ID eLayer) { if (curFSM_EachLayer[(int)eLayer] == null) { UDL.LogWarning(eLayer + " 지정한 레이어에 FSM이 지정되 있지 않음", nLogOption, warningLoglv); return(false); } else { return(true); } }
public void Resume(FSM_LAYER_ID eLayer) { if (!CurLayerCheck(eLayer)) { return; } curFSM_EachLayer[layerNum].Resume(); if (EventLayerResume != null) { EventLayerResume(eLayer); } }
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 UnRegisterChangeLayerState(FSM_LAYER_ID eLayer, deleStateTransEvent _deleFunc) { if (!dicLayerChangeState.ContainsKey(eLayer)) { return; } dicLayerChangeState[eLayer].Remove(_deleFunc); foreach (Dictionary <FSM_ID, FSM> dic in dicFSM_EachLayer) { foreach (FSM fsm in dic.Values) { fsm.EventStateChange -= _deleFunc; } } }
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); } }
private int UnRegisterToFSM_ChangeLayerState(FSM_LAYER_ID eLayer) { if (!CurLayerCheck(eLayer)) { return(1); } if (!dicLayerChangeState.ContainsKey(eLayer)) { return(2); } for (int idx = 0; idx < dicLayerChangeState[eLayer].Count; idx++) { curFSM_EachLayer[layerNum].EventStateChange -= dicLayerChangeState[eLayer][idx]; } return(0); }
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)); }
private int RegisterToFSM_ChangeLayerState(FSM_LAYER_ID eLayer) { layerNum = (int)eLayer; if (!CurLayerCheck(eLayer)) { return(1); } UnRegisterToFSM_ChangeLayerState(eLayer);//중복등록을 방지하기 위해 호출한다. if (!dicLayerChangeState.ContainsKey(eLayer)) { return(2); } for (int idx = 0; idx < dicLayerChangeState[eLayer].Count; idx++) { curFSM_EachLayer[layerNum].EventStateChange += dicLayerChangeState[eLayer][idx]; } return(0); }
public void RegisterEventChangeLayerState(FSM_LAYER_ID eLayer, deleStateTransEvent _deleFunc) { layerNum = (int)eLayer; if (layerNum >= iMaxLayer) { UDL.LogError("할당 되지 않은 레이어를 호출했습니다", nLogOption, errorLoglv); return; } if (!dicLayerChangeState.ContainsKey(eLayer)) { dicLayerChangeState.Add(eLayer, new List <deleStateTransEvent>()); } dicLayerChangeState[eLayer].Add(_deleFunc); int result = RegisterToFSM_ChangeLayerState(eLayer); if (result == 1) { UDL.LogWarning(eLayer + " " + errMsgAbout_Register_ChangeLayerState[result] + " // 이 후 해당 레이어에 ChangeFSM이 호출 될 때 반영될 수 있습니다. ", nLogOption, warningLoglv); } }
public void ReleaseLayer(FSM_LAYER_ID eLayer) { dicFSM_EachLayer[layerNum].Clear(); curFSM_EachLayer[layerNum] = null; }
public void ChangeFSM_BufferBack(FSM_LAYER_ID eLayer) { ChangeFSM(eLayer, layerFSM_Buffer[layerNum]); }