Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        public FSM(FSM_ID id)
        {
            fsmID = id;

            anyState = new State(STATE_ID.AnyState);

            curState = anyState;

            dicStateList.Add(STATE_ID.AnyState, anyState);
        }
Exemplo n.º 4
0
        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));
            }
        }
Exemplo n.º 5
0
    void SelectFSM()
    {
        GUILayout.Space(30);

        curFSMID          = (FSM_ID)EditorGUILayout.EnumPopup(curFSMID);
        curStatePopupList = FSM_Utility.GetPopupList(curFSMID);

        if (GUI.changed)
        {
            LoadFSM();
        }

        GUILayout.Space(30);
    }
Exemplo n.º 6
0
        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);
            }
        }
Exemplo n.º 7
0
    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);
    }
Exemplo n.º 8
0
        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;
            }
        }
Exemplo n.º 9
0
        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);
            }
        }
Exemplo n.º 10
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));
        }
Exemplo n.º 11
0
 public void SetFSMID(FSM_ID id)
 {
     fsmID = id;
 }
Exemplo n.º 12
0
 public static StatePopupList GetPopupList(FSM_ID target)
 {
     return(dic_ePopupArray[target]);
 }