/// <summary> /// 执行转换 /// </summary> /// <param name="transitionID"></param> public void PerformTransition(TransitionID transitionID) { if (transitionID == TransitionID.NullTransition) { Debug.LogError("转换为空!"); return; } StateID stateID = CurrentState.GetOutputState(transitionID); if (stateID == StateID.NullState) { Debug.LogError("转换 " + transitionID.ToString() + " 为空!"); return; } foreach (BaseState state in states) { if (state.ID == stateID) { _currentState.DoBeforeLeaving(); _currentState = state; _currentID = stateID; _currentState.DoBeforeEnterState(); } } }
public void Transition(TransitionID transitionID) { var tempT = currentState.transitionPairs; StateID stateID; if (tempT.TryGetValue(transitionID, out stateID)) { FSMState state; if (transitionPairs.TryGetValue(stateID, out state)) { currentState.ExitState(); state.EnterState(); state.Excute(); currentState = state; } else { Debug.Log("无法转换到下一个状态,因为State不存在!"); } } else { Debug.Log("无法转换到下一个状态,因为StateID不存在!"); } }
public void PerformTransition(TransitionID transition) //Asigna el estado al que lleva la transicion a current. { if (transition == TransitionID.NullTransition) { Debug.LogError("Transición nula."); return; } StateID state = currentState.GetOutputState(transition); //Recibe el estado al que se le asigno la transición. if (state == StateID.NullState) { Debug.LogError("La trancición no lleva a ningun estado."); return; } currentID = state; foreach (FSMState s in stateList) { if (s.getID == currentID) { currentState = s; break; //Si lo encuentra lo asigna a Current. } } }
/// <summary> /// 获得转换对应的状态 /// </summary> /// <param name="transitionID"></param> /// <returns></returns> public StateID GetOutputState(TransitionID transitionID) { if (map.ContainsKey(transitionID)) { return(map[transitionID]); } return(StateID.NullState); }
public StateTransition(TransitionID transitionID, StateID nextStateID) { this.TransitionID = transitionID; this.NextStateID = nextStateID; this.EventsRunning = false; RemoveAllEvents(); }
public SceneTransition CreateTransition(ScenePart src, ScenePart dest, TransitionID type) { SceneTransition t = SceneTransition.Create(type); t.nextScene = dest; src.transitions.Add(t); dest.AddRef(src); group.Invalidate(); return(t); }
public static SceneTransition Create(TransitionID id) { switch (id) { case TransitionID.Keyboard: return(new SceneTransitionKeyboard()); default: return(new SceneTransitionAutomatic()); } }
protected void AddTransition(TransitionID transitionID, StateID stateID) { if (transitionPairs.ContainsKey(transitionID)) { Debug.Log("条件转换表中已存在该条件!"); } else { transitionPairs.Add(transitionID, stateID); } }
public StateID GetOutputState(TransitionID transition) //Devuelve el StateID al que lleva la respectiva Transición. { if (stateDictionary.ContainsKey(transition)) { return(stateDictionary[transition]); } else { return(StateID.NullState); } }
/// <summary> /// 添加转换 /// </summary> /// <param name="transitionID"></param> /// <param name="stateID"></param> public void AddTransition(TransitionID transitionID, StateID stateID) { if (transitionID == TransitionID.NullTransition || stateID == StateID.NullState) { Debug.Log("无效的状态切换!"); return; } if (stateID == ID) { Debug.Log("目标状态是自身!"); return; } map.Add(transitionID, stateID); }
public void DeleteTransition(TransitionID transition) { if (transition == TransitionID.NullTransition) { Debug.LogError("!!!"); return; } if (stateDictionary.ContainsKey(transition)) { stateDictionary.Remove(transition); } else { Debug.LogError("La transicion no se encuentra en la lista."); } }
/// <summary> /// 删去转换 /// </summary> /// <param name="transitionID"></param> public void DeleteTransition(TransitionID transitionID) { if (transitionID == TransitionID.NullTransition) { Debug.Log("该转换为空!"); return; } if (map.ContainsKey(transitionID)) { map.Remove(transitionID); } else { Debug.Log("不存在该转换!"); } return; }
public void AddTransition(TransitionID transition, StateID state) { if (transition == TransitionID.NullTransition) { Debug.LogError("!!!"); return; } if (state == StateID.NullState) { Debug.LogError("!!!"); return; } if (stateDictionary.ContainsKey(transition)) { Debug.LogError("El estado ya tiene esta trancisión asignada."); } else { stateDictionary.Add(transition, state); } }
public void SetTransition(TransitionID t) { fsm.PerformTransition(t); }
public void Load(string filename) { try { fname = filename; int firstScene = -1; bool hasFirstScene = false; XmlReader xml = XmlReader.Create(fname); while (xml.Read()) { if (xml.NodeType == XmlNodeType.Element) { if (xml.Name == "project" && xml.HasAttributes) { title = xml.GetAttribute("title"); author = xml.GetAttribute("author"); } else if (xml.Name == "storyboard" && xml.HasAttributes) { ScenePart.id_inc = int.Parse(xml.GetAttribute("lastId")); hasFirstScene = int.TryParse(xml.GetAttribute("firstScene"), out firstScene); } else if (xml.Name == "scene" && xml.HasAttributes) { ScenePart p = storyboard.CreateScene( xml.GetAttribute("videoSrc"), xml.GetAttribute("title"), int.Parse(xml.GetAttribute("id")) ); p.thumbnail.ImageLocation = xml.GetAttribute("thumbSrc"); p.timeout = int.Parse(xml.GetAttribute("timeout")); int x = int.Parse(xml.GetAttribute("posX")); int y = int.Parse(xml.GetAttribute("posY")); p.thumbnail.Location = new System.Drawing.Point(x, y); } else if (xml.Name == "transition" && xml.HasAttributes) { ScenePart src = storyboard.GetScene(int.Parse(xml.GetAttribute("srcScene"))); ScenePart dest = storyboard.GetScene(int.Parse(xml.GetAttribute("nextScene"))); TransitionID type = (TransitionID)Enum.Parse(typeof(TransitionID), xml.GetAttribute("type")); SceneTransition t = storyboard.CreateTransition(src, dest, type); if (type == TransitionID.Keyboard) { SceneTransitionKeyboard tk = (SceneTransitionKeyboard)t; tk.keycode = int.Parse(xml.GetAttribute("keycode")); if (!bool.TryParse(xml.GetAttribute("showOverlay"), out tk.showOverlay)) { tk.showOverlay = false; } if (xml.GetAttribute("caption") != null) { tk.caption = xml.GetAttribute("caption"); } } } } } xml.Close(); if (hasFirstScene) { storyboard.SetAsFirstScene(firstScene); } } catch (Exception e) { #if DEBUG MessageBox.Show(e.StackTrace); #else MessageBox.Show("Arquivo de projeto inválido."); #endif if (storyboard != null) { storyboard.Clear(); } } }
protected void RemoveTransition(TransitionID transitionID) { if (transitionID != TransitionID.Null) { StateTransition transition = GetTransitionByID(transitionID); if (transition != null) Transitions.Remove(transition); } }
public void SetNewTransition(int src, TransitionID type) { selectNextScene = true; selected = scenes[src]; transitionType = type; }
public void RunEventsByTransitionID(TransitionID transitionID) { StateTransition transition = GetTransitionByID(transitionID); if (transition != null) transition.RunEvents(); }
protected StateTransition GetTransitionByID(TransitionID transitionID) { if (transitionID != TransitionID.Null && Transitions.Count > 0) { foreach (StateTransition transition in Transitions) { if (transition.TransitionID == transitionID) return transition; } } return null; }
// public void SetTransition(TransitionID t) //Le envia transiciones a PerformTransition. { fsm.PerformTransition(t); //Asigna el estado al que lleva la trancision a current. }