/// <summary> /// Requests the screen with data. /// </summary> /// <param name="screenType">Screen type.</param> /// <param name="data">Data.</param> public void RequestView(Type screenType, SObject data) { if (_targetScreen == null || (_targetScreen.GetType() != screenType && !_targetScreen.IsSettingUp)) { GameObject obj = GameObject.Instantiate(Resources.Load(_scaffoldingConfig.ViewPrefabPath(screenType.Name) + screenType.Name)) as GameObject; #if UNITY_4_6 || UNITY_5 obj.transform.SetParent(_scaffoldingConfig.DetermineParentGameObjectPath().transform); #else obj.transform.parent = _scaffoldingConfig.DetermineParentGameObjectPath().transform; #endif obj.transform.name = screenType.Name; _targetScreen = obj.GetComponent <AbstractView>(); string s = screenType.Name + "Model"; Type t = ScaffoldingConfig.GetType(s); if (t != null) { AbstractModel model = FindObjectOfType(t) as AbstractModel; if (model != null) { model.RegisterView(_targetScreen); } } if (_scaffoldingConfig.ScaffoldingEnableAllGameobjects) { _targetScreen.gameObject.EnableAllChildren(); } _targetScreen.Setup(this); obj.SetActive(false); _lastScreen = _currentScreen; _targetScreenData = data; if (_currentScreen != null) { if (_targetScreen.showingType == AbstractView.ShowingTypes.ShowImmediately) { ScreenClose(_currentScreen.GetType()); ScreenOpen(); } else { ScreenClose(_currentScreen.GetType()); } } else { ScreenOpen(); } } }
/// <summary> /// Requests the overlay open with data. /// </summary> /// <param name="overlayType">Overlay type.</param> /// <param name="data">Data.</param> public void RequestOverlay(Type overlayType, SObject viewData) { if (!_currentOverlays.ContainsKey(overlayType)) { GameObject obj = GameObject.Instantiate(Resources.Load(_scaffoldingConfig.ViewPrefabPath(overlayType.Name) + overlayType.Name)) as GameObject; #if UNITY_4_6 || UNITY_5 obj.transform.SetParent(_scaffoldingConfig.DetermineParentGameObjectPath().transform); #else obj.transform.parent = _scaffoldingConfig.DetermineParentGameObjectPath().transform; #endif obj.transform.name = overlayType.Name; string s = overlayType.Name + "Model"; Type t = ScaffoldingConfig.GetType(s); if (t != null) { AbstractModel model = FindObjectOfType(t) as AbstractModel; if (model != null) { model.RegisterView(_targetScreen); } } _targetOverlay = obj.GetComponent <AbstractView>(); if (_scaffoldingConfig.ScaffoldingEnableAllGameobjects) { _targetOverlay.gameObject.EnableAllChildren(); } _targetOverlay.Setup(this); obj.SetActive(false); if (viewData != null && viewData.GetBool("Scaffolding:DisableInputsOnOverlay")) { if (_disabledInputsOnView.ContainsKey(_currentScreen.GetType())) { _disabledInputsOnView[_currentScreen.GetType()].Add(overlayType); } else { List <Type> overlays = new List <Type>(); overlays.Add(overlayType); _disabledInputsOnView.Add(_currentScreen.GetType(), overlays); } _currentScreen.DisableAllInputs(); } _currentOverlays.Add(overlayType, _targetOverlay); OverlayOpen(_targetOverlay.GetType(), viewData); } }