public GUIObject(List <IScriptUpdateable <Button> > buttonScripts) { Input inputSytem = EngineServices.GetSystem <IGameSystems>().InputSystem; m_buttonScripts = new Dictionary <string, IScriptUpdateable <GUIObject> >(4); m_treeNode = new GUINode(); m_treeNode.UserData = this; m_currentState = GUIInteractStates.Idle; m_mouseObserver = inputSytem.GetMouseObserver(); InitialiseScripts(buttonScripts); ConnectedEvents(inputSytem); EngineServices.GetSystem <IGameSystems>().Components.Add(this); Enabled = true; }
public Menu() { Input inputSystem = EngineServices.GetSystem <IGameSystems>().InputSystem; m_mouseObserver = inputSystem.GetMouseObserver(); m_states = new Dictionary <String, State <Menu> >(5); m_buttonDictionary = new Dictionary <String, Button>(50); m_states.Add("Idle", new StateIdle()); m_states.Add("Activating", new StateActivating()); m_states.Add("Active", new StateActive()); m_states.Add("Deactivating", new StateDeactivating()); m_stateMachine = new StateMachine <Menu>(m_states["Idle"], this); m_node = new TreeNode <Menu>(); m_node.UserData = this; m_bIsActive = false; EngineServices.GetSystem <IGameSystems>().Components.Add(this); }
//---------------------------------------------------------------------------- //---------------------------------------------------------------------------- public virtual void Dispose(bool bDisposing) { if (bDisposing) { bool bFlag = false; try { Monitor.Enter(this, ref bFlag); m_treeNode.RemoveNode(true); m_treeNode.Dispose(); m_treeNode = null; m_currentScript = null; m_currentState = GUIInteractStates.Idle; m_buttonScripts.Clear(); m_buttonScripts = null; m_mouseObserver = null; OnClick -= OnClickEvent; OnOff -= OnOffEvent; OnOver -= OnOverEvent; OnUnClick -= OnUnClickEvent; OnClickPolling -= OnClickEventPolling; if (EngineServices.GetSystem <IGameSystems>() != null) { EngineServices.GetSystem <IGameSystems>().Components.Remove(this); } } finally { if (bFlag) { Monitor.Exit(this); } } } }