using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.EventSystems; using System; using UnityEngine.UI; public class Manager : MonoBehaviour { public Mi38Objects objects = new Mi38Objects(); public Player player; public GameObject copter; public GameObject cabines2d; public GameObject canvas; public GameObject fusel; public GameObject copterProz; public GameObject skv; public GameObject air; public GameObject menuPlayButtons; public GameObject viewCamera, cabinCamera; GameObject pilotcabin; GameObject passcabin; GameObject externalpanels; GameObject backBtn; public GameObject ViewBackButton; Transform allPanelsInCanvas; public string mode = "view"; // free, view, scedit, play public int viewmode; // 1 кабина пилотов, 2 пассажирский отсек , 3 снаружи вертолета public bool is3D; // Находимся мы в 2D режиме или 3D public bool isInitiated = false; public bool isPanelsActivated = false; public bool isMouseOverUI = false; [HideInInspector] public bool isProgressBarChangingInProgress = false; hintUI menuViewButton, menuCabinButton, menuPassButton; [HideInInspector] Camera mfi1_cam, mfi2_cam, mfi3_cam, mfi4_cam, mfi5_cam; [HideInInspector] public MFPUScript mfpuScript; Dictionary panel3D = new Dictionary(); // Панели 3D public Dictionary panel2D = new Dictionary(); // Панели 2D //public Dictionary allPanelsStatesList = new Dictionary(); //Словарь соответствия панелей 2D и 3D public Dictionary allPanelsStatesList = new Dictionary(); //Словарь соответствия панелей 2D и 3D Transform[] layersPass; Transform[] layersPilot; Transform[] layersExternalPanels; Transform[] layerHeli; Transform[] otherPanels; public List layersOrigHeli = new List(); public List layersOrigPass = new List(); public List layersOrigPilot = new List(); public List layersOrigExternalPanels = new List(); public List layersOrigOtherPanels = new List(); public List layersChangedOtherPanels = new List(); public Camera cam; public GameObject prefabHint; // Глобальные переменные для хранения текущих углов поворотов ручек 0701,0702,0801,0802,0901-0902(Педали) [HideInInspector] public float cur070XangleVert; //Текущий угол наклона ручки 0701 и 0702 по вертикали [HideInInspector] public float cur080XangleVert; //Текущий угол наклона ручки 0801 и 0802 по вертикали [HideInInspector] public float cur080XangleHor; //Текущий угол наклона ручки 0801 и 0802 по горизонтали [HideInInspector] public float cur090XangleHor; //Текущий угол поворота педалей 0901 и 0902 [HideInInspector] public string opened2Dpanel=""; [HideInInspector] public MFIScript mfi1, mfi2, mfi3, mfi4, mfi5; // change skybox private Material sky, parking; public string skyboxmat = "park"; // sky,park - полет и земля; Варианты скайбокса для земли и воздуха //[HideInInspector] public int memLeak = 0; void Awake() { //Debug.Log("Starting Manager.Awake."); player = GameObject.Find("Player").GetComponent(); copter = GetRootObject("Copter"); pilotcabin = GameObject.Find("Copter/Pilot_cabin"); passcabin = GameObject.Find("Copter/Passanger_cabine"); externalpanels = GameObject.Find("Copter/Fuzeliazh"); //canvas = GameObject.Find("Canvas"); //В старом варианте canvas = GameObject.Find("CanvasPanel");//бутерброд не отключать cam = GameObject.Find("Camera").GetComponent();//зедсь показывается бутерброд cabines2d = GameObject.Find("Cabines"); //здесть только основная камера для внутренних кабин и площадки перемещения внутри пассажирской кабины + eventSystems для канваса (не бутерброда) fusel = GameObject.Find("Obzor"); fusel.SetActive(false); //copterProz = GameObject.Find("CopterProz"); copterProz.SetActive(false); // ViewBackButton = GameObject.FindGameObjectWithTag("ViewBackButton"); //ViewBackButton.SetActive(false); skv = GameObject.Find("Copter/SKV"); // Система СКВ,которая задублирована в FBX и которую нужно отключать в режиме кабина air = GameObject.Find("Air"); // Панель с видами вертолета menuPlayButtons = GameObject.Find("PlayButtons"); // панель плеера //allPanelsInCanvas = canvas.transform.GetChild(0); backBtn = GameObject.Find("backButton"); // Скрывать кнопку <<В кабину в режиме 3D //Camera.main.gameObject.AddComponent(); cabinCamera.gameObject.AddComponent(); backBtn.SetActive(false); is3D = true; // viewmode = 3; // По умолчанию мы находимся в обзорке mfi1 = GameObject.Find("Panel0110").GetComponent(); mfi1.LoadPrefab("mfi1"); mfi2 = GameObject.Find("Panel0111").GetComponent(); mfi2.LoadPrefab("mfi2"); mfi3 = GameObject.Find("Panel0116").GetComponent(); mfi3.LoadPrefab("mfi3"); mfi4 = GameObject.Find("Panel0121").GetComponent(); mfi4.LoadPrefab("mfi4"); mfi5 = GameObject.Find("Panel0122").GetComponent(); mfi5.LoadPrefab("mfi5"); mfi1_cam = GameObject.Find("CameraMFI1").GetComponent(); mfi2_cam = GameObject.Find("CameraMFI2").GetComponent(); mfi3_cam = GameObject.Find("CameraMFI3").GetComponent(); mfi4_cam = GameObject.Find("CameraMFI4").GetComponent(); mfi5_cam = GameObject.Find("CameraMFI5").GetComponent(); mfi1_cam.enabled = false; mfi2_cam.enabled = false; mfi3_cam.enabled = false; mfi4_cam.enabled = false; mfi5_cam.enabled = false; mfpuScript = GameObject.Find("MFPU_Screens").GetComponent(); objects = new Mi38Objects(); StartCoroutine(objects.Load()); player.Init(); StartCoroutine(Init()); //Try skybox sky = Resources.Load("Materials/MatSky"); parking = Resources.Load("Materials/MatPark"); //Change SkyBox if (skyboxmat == "sky") changeSkyBoxToSky(); if (skyboxmat == "park") changeSkyBoxToPark(); } IEnumerator Init() { //Debug.Log("Starting Manager.Init."); while (!objects.isLoaded) yield return null; //Debug.Log("Objects loaded."); /* Записываем оригинальные слои кабины пилотов,пассажирской кабины, и вертолета*/ RecordOrigLayerHeli(); RecordOrigLayerPilot(); RecordOrigLayerPass(); RecordOrigExternalPanels(); Transform[] allPanels = canvas.transform.GetChild(0).GetComponentsInChildren(); Transform[] allPanels3D = copter.GetComponentsInChildren(); foreach (Transform _allPanels in allPanels) { if (_allPanels.name.StartsWith("Panel") && _allPanels.name.Length > 5) { foreach (Transform _allPanels3D in allPanels3D) { if (_allPanels3D.name.StartsWith(_allPanels.name) && string.Compare(_allPanels3D.name.Substring(_allPanels3D.name.Length - 2), "3D") == 0 && _allPanels3D.name != null) { //Debug.Log("панели 3D" + _allPanels3D.name + " панели 2D " + _allPanels.name); allPanelsStatesList.Add(_allPanels3D.gameObject, _allPanels.gameObject); } } } } //foreach (KeyValuePair kvp in allPanelsStatesList) // Debug.Log(kvp.Key.name + " " + kvp.Value.name); GameObject[] activezones = GameObject.FindGameObjectsWithTag("activezone"); foreach (GameObject _activezones in activezones) { _activezones.AddComponent(); _activezones.GetComponentInChildren(); // BoxCollider childcol = _activezones.GetComponentInChildren(); // Debug.Log(_activezones.GetComponentInChildren() + " коллайдеры"); //Debug.Log(_activezones.name + " объекты с activezone"); //_activezones.GetComponentInChildren(); //Debug.Log(_activezones.GetComponentInChildren() + " коллайдеры"); } StartCoroutine(ActivatePanels()); //yield return //**************************** if (mode == "view") { fusel.SetActive(true); copter.SetActive(true); cabines2d.SetActive(false); cam.gameObject.SetActive(false); //canvas.SetActive(false); skv.SetActive(true); // Для Макса СКВ трубка menuPlayButtons.SetActive(true); // Закомментить //ChangeLayerPassCabineIgnore(); //ChangeLayerPilotCabineIgnore(); //ChangeLayerExternalPanelsDefault(); DisablePassCabineCollider(); DisablePilotCabineCollider(); } else { if (mode == "free") menuPlayButtons.SetActive(false); copter.SetActive(true); cabines2d.SetActive(true); cam.gameObject.SetActive(false); //canvas.SetActive(false); fusel.SetActive(false); skv.SetActive(false); EnablePassCabineCollider(); EnablePilotCabineCollider(); } if(menuCabinButton == null) { menuCabinButton = GameObject.Find("Air/view1").GetComponent(); menuPassButton = GameObject.Find("Air/view2").GetComponent(); menuViewButton = GameObject.Find("Air/view3").GetComponent(); } //SwitchTo3D(); if (viewmode == 1) { EnablePassCabineCollider(); EnablePilotCabineCollider(); ChangeLayerPilotCabineDefault(); ChangeLayerExternalPanelsIgnore(); ChangeLayerPassCabineIgnore(); menuCabinButton.isGreen = true; menuCabinButton.OnPointerUp(null); menuPassButton.isGreen = false; menuPassButton.OnPointerUp(null); menuViewButton.isGreen = false; menuViewButton.OnPointerUp(null); } else if (viewmode == 2) { EnablePassCabineCollider(); EnablePilotCabineCollider(); ChangeLayerPilotCabineIgnore(); ChangeLayerPassCabineDefault(); ChangeLayerExternalPanelsIgnore(); menuCabinButton.isGreen = false; menuCabinButton.OnPointerUp(null); menuPassButton.isGreen = true; menuPassButton.OnPointerUp(null); menuViewButton.isGreen = false; menuViewButton.OnPointerUp(null); } else if (viewmode == 3) { DisablePassCabineCollider(); DisablePilotCabineCollider(); //ChangeLayerPilotCabineIgnore(); //ChangeLayerPassCabineIgnore(); ChangeLayerExternalPanelsDefault(); menuCabinButton.isGreen = false; menuCabinButton.OnPointerUp(null); menuPassButton.isGreen = false; menuPassButton.OnPointerUp(null); menuViewButton.isGreen = true; menuViewButton.OnPointerUp(null); } isInitiated = true; //player.LoadScenario("System_2"); //debug //Debug.Log("Manager Initiated."); } IEnumerator ActivatePanels() { //Debug.Log("Starting Manager.ActivatePanels."); GameObject[] panel2d = GameObject.FindGameObjectsWithTag("panels2d"); foreach (GameObject _panel2d in panel2d) { _panel2d.AddComponent(); //Debug.LogError("Loading Panel2D: " + _panel2d.name); while (!_panel2d.GetComponent().isStarted) yield return null; _panel2d.GetComponent().setDisabled();//отключаем панели кроме мфи //_panel2d.SetActive(false); // ! не далать так! отключается МФИ panel2D.Add(_panel2d.name, _panel2d.GetComponent()); } //if (mode != "scedit") objects.SetDefaultValues(); mfi1_cam.enabled = true; mfi2_cam.enabled = true; mfi3_cam.enabled = true; mfi4_cam.enabled = true; mfi5_cam.enabled = true; mfi1.SwitchScreen("ПИ_МАРШ"); mfi2.SwitchScreen("НИ_НАВ"); mfi3.SwitchScreen("НИ_ОВО"); mfi4.SwitchScreen("НИ_НАВ"); mfi5.SwitchScreen("ПИ_МАРШ"); isPanelsActivated = true; //Debug.Log("Panels activated."); // System.GC.Collect(); } public void SwitchTo3D() { if (is3D) return; foreach (Transform _allPanels in canvas.transform.GetChild(0).GetComponentsInChildren()) { _allPanels.gameObject.SetActive(true); } // Меняем слои,чтобы переключении в 2D блокировать элементы 3D кабины // viewmode 1-кабина пилотов, 2-пассажирская кабина, 3-режим свободного обзора (системы) is3D = true; opened2Dpanel = ""; if(!isProgressBarChangingInProgress) mouseExitUI(); //Camera.main.gameObject.AddComponent(); cabinCamera.gameObject.AddComponent(); if (viewmode == 2) //Camera.main.GetComponent().limitVert = 179.99f; // Если мы в кабине пассажирской,то угол вращения увеличиваем cabinCamera.GetComponent().limitVert = 179.99f; //Camera.main.transform.localEulerAngles = new Vector3(0, 0, 0); //Возврат камеры в исходное cam.gameObject.SetActive(false); //canvas.SetActive(false); foreach (Panel2D p in panel2D.Values)//отключаем панели кроме мфи { p.GetComponent().setDisabled(); //if (String.Compare(p.name, "Panel0110") == 0) p.GetComponent().setEnabled(); } copter.SetActive(true); backBtn.SetActive(false); skv.SetActive(false); //air.SetActive(true); } public void SwitchTo2D(string _panels2d) { if (!panel2D.ContainsKey(_panels2d)) return; cam.gameObject.SetActive(true);// canvas.SetActive(true); copter.SetActive(true); backBtn.SetActive(true); //air.SetActive(false); //Component.Destroy(Camera.main.gameObject.GetComponent()); Component.Destroy(cabinCamera.gameObject.GetComponent()); // Блокируем в 2D все 3D панели //ChangeLayerIgnore(); mouseEnterUI(); //Включаем Канвас и выключаем все 2D панели внутри Canvas -> Panel foreach (string panelName in panel2D.Keys) { panel2D[panelName].setDisabled(); } if (panel2D[_panels2d] != null) { is3D = false; panel2D[_panels2d].setEnabled(); opened2Dpanel = _panels2d; UnityObject switchTo2DPanelObject = objects.Find(_panels2d); if (switchTo2DPanelObject != null) StartCoroutine(SwitchTo2DSetCurrentStates(switchTo2DPanelObject)); /*if (_panels2d == "Panel0701") panel2D[_panels2d].transform.Find("Button0701").gameObject.GetComponent().SetView(); if (_panels2d == "Panel0702") panel2D[_panels2d].transform.Find("Button0702").gameObject.GetComponent().SetView(); if (_panels2d == "Panel0801") panel2D[_panels2d].transform.Find("Button0801").gameObject.GetComponent().SetView(); if (_panels2d == "Panel0802") panel2D[_panels2d].transform.Find("Button0802").gameObject.GetComponent().SetView(); */ if (mode == "play") backBtn.SetActive(false); } else { //panel2D[_panels2d].setDisabled(); //SwitchTo3D(); } } IEnumerator SwitchTo2DSetCurrentStates(UnityObject switchTo2DPanelObject) { while (!switchTo2DPanelObject.gameObject.GetComponent().isStarted) yield return null; //Debug.Log("Panel " + switchTo2DPanelObject.name + " isStarted " + switchTo2DPanelObject.gameObject.GetComponent().isStarted); if (switchTo2DPanelObject.name == "Panel0901") objects.Find("Rampa0901").SetObjectState((int)cur090XangleHor); if (switchTo2DPanelObject.name == "Panel0902") objects.Find("Rampa0902").SetObjectState((int)cur090XangleHor); if (switchTo2DPanelObject.name == "Panel0801") objects.Find("view3_0801").SetObjectState((int)cur080XangleHor); //.curState = if (switchTo2DPanelObject.name == "Panel0802") objects.Find("view3_0802").SetObjectState((int)cur080XangleHor); if (switchTo2DPanelObject.name == "Panel0801") objects.Find("view2_0801").SetObjectState((int)cur080XangleVert); if (switchTo2DPanelObject.name == "Panel0802") objects.Find("view2_0802").SetObjectState((int)cur080XangleVert); if (switchTo2DPanelObject.name == "Panel0701") objects.Find("Handle3_0701").SetObjectState((int)cur070XangleVert); if (switchTo2DPanelObject.name == "Panel0702") objects.Find("Handle3_0702").SetObjectState((int)cur070XangleVert); objects.SetCurrentValues(switchTo2DPanelObject); } public void RecordOrigLayerHeli() { layersOrigHeli.Clear(); layerHeli = copter.transform.GetComponentsInChildren(); foreach (Transform _layerHeli in layerHeli) { layersOrigHeli.Add(_layerHeli.gameObject.layer); } } public void RecordOrigLayerPass() { layersOrigPass.Clear(); layersPass = passcabin.transform.GetComponentsInChildren(); foreach (Transform _layersPass in layersPass) { //Debug.Log(_layerHeli.gameObject.layer + " layer"); layersOrigPass.Add(_layersPass.gameObject.layer); } } public void RecordOrigLayerPilot() { layersOrigPilot.Clear(); layersOrigOtherPanels.Clear(); layersChangedOtherPanels.Clear(); layersPilot = pilotcabin.transform.GetComponentsInChildren(); foreach (Transform _layersPilot in layersPilot) { layersOrigPilot.Add(_layersPilot.gameObject.layer); } /* Добавляем те панели, которые не попали в panelcabin,passcabin*/ // layersOrigOtherPanels - список с оригинальными слоями остальных панелей // layersChangedOtherPanels - список в котором мы переводим объекты в Ignore /* layersOrigOtherPanels.Add(GameObject.Find("Copter/ROSH_UprDvigateliamy/Dummy005/Panel0701_3D").gameObject.layer); layersOrigOtherPanels.Add(GameObject.Find("Copter/ROSH_UprDvigateliamy/Dummy004/Panel0702_3D").gameObject.layer); layersOrigOtherPanels.Add(GameObject.Find("Panel0801_3D").gameObject.layer); layersOrigOtherPanels.Add(GameObject.Find("Panel0802_3D").gameObject.layer); layersOrigOtherPanels.Add(GameObject.Find("Copter/Putevoe_upravlenie/Panel0901_3D").gameObject.layer); layersOrigOtherPanels.Add(GameObject.Find("Copter/Putevoe_upravlenie/Panel0902_3D").gameObject.layer); layersOrigOtherPanels.Add(GameObject.Find("Copter/Panel1001_3D").gameObject.layer); layersChangedOtherPanels.Add(GameObject.Find("Copter/ROSH_UprDvigateliamy/Dummy005/Panel0701_3D").gameObject.layer); layersChangedOtherPanels.Add(GameObject.Find("Copter/ROSH_UprDvigateliamy/Dummy004/Panel0702_3D").gameObject.layer); layersChangedOtherPanels.Add(GameObject.Find("Panel0801_3D").gameObject.layer); layersChangedOtherPanels.Add(GameObject.Find("Panel0802_3D").gameObject.layer); layersChangedOtherPanels.Add(GameObject.Find("Copter/Putevoe_upravlenie/Panel0901_3D").gameObject.layer); layersChangedOtherPanels.Add(GameObject.Find("Copter/Putevoe_upravlenie/Panel0902_3D").gameObject.layer); layersChangedOtherPanels.Add(GameObject.Find("Copter/Panel1001_3D").gameObject.layer); */ layersChangedOtherPanels.Add(GameObject.Find("Copter/ROSH_UprDvigateliamy/Dummy005/Panel0701_3D")); layersChangedOtherPanels.Add(GameObject.Find("Copter/ROSH_UprDvigateliamy/Dummy004/Panel0702_3D")); layersChangedOtherPanels.Add(GameObject.Find("Panel0801_3D")); layersChangedOtherPanels.Add(GameObject.Find("Panel0802_3D")); layersChangedOtherPanels.Add(GameObject.Find("Copter/Putevoe_upravlenie/Panel0901_3D")); layersChangedOtherPanels.Add(GameObject.Find("Copter/Putevoe_upravlenie/Panel0902_3D")); layersChangedOtherPanels.Add(GameObject.Find("Copter/Panel1001_3D")); } public void RecordOrigExternalPanels() // Записываем слои внешних панелей { layersOrigExternalPanels.Clear(); layersExternalPanels = externalpanels.transform.GetComponentsInChildren(); foreach (Transform _layersExternalPanels in layersExternalPanels) { layersOrigExternalPanels.Add(_layersExternalPanels.gameObject.layer); } } /* public void ChangeLayerIgnore() { foreach (Transform _allPanels in copter.transform.GetComponentsInChildren()) { _allPanels.gameObject.layer = LayerMask.NameToLayer("Ignore Raycast"); } }*/ public void ChangeLayerDefault() { for (int i = 0; i < layersOrigHeli.Count; i++) { layerHeli[i].gameObject.layer = layersOrigHeli[i]; } } // Кабина пилотов слои и коллайдеры public void ChangeLayerPilotCabineIgnore() { /* foreach (Transform _allPanelsPilot in pilotcabin.transform.GetComponentsInChildren()) { _allPanelsPilot.gameObject.layer = LayerMask.NameToLayer("Ignore Raycast"); }*/ // Остальные панели(те которые находятся в других системах) переводим в Ignore for (int i = 0; i < layersChangedOtherPanels.Count; i++) { // layersChangedOtherPanels[i] = LayerMask.NameToLayer("Ignore Raycast"); layersChangedOtherPanels[i].GetComponentInChildren().enabled = false; } foreach (Collider _allPanelsPilot in pilotcabin.transform.GetComponentsInChildren()) { _allPanelsPilot.GetComponent().enabled = false; } } public void ChangeLayerPilotCabineDefault() { /* for (int i = 0; i < layersOrigPilot.Count; i++) { layersPilot[i].gameObject.layer = layersOrigPilot[i]; }*/ // Возвращаем оставшиеся панели обратно в родные слои // upd Коллайдеры включаем //for (int y = 0; y < layersChangedOtherPanels.Count; y++) for (int i = 0; i < layersChangedOtherPanels.Count; i++) { layersChangedOtherPanels[i].GetComponentInChildren().enabled = true; } foreach (Collider _allPanelsPilot in pilotcabin.transform.GetComponentsInChildren()) { _allPanelsPilot.GetComponent().enabled = true; } } public void DisablePilotCabineCollider() { foreach (Collider _allPanelsPilot in pilotcabin.transform.GetComponentsInChildren()) { //_allPanelsPilot.collider.enabled = false; _allPanelsPilot.GetComponent().enabled = false; } } public void EnablePilotCabineCollider() { foreach (Collider _allPanelsPilot in pilotcabin.transform.GetComponentsInChildren()) { //_allPanelsPilot.collider.enabled = false; _allPanelsPilot.GetComponent().enabled = true; } } // Пассажирская кабина слои и коллайдеры public void ChangeLayerPassCabineIgnore() { /* foreach (Transform _allPanelsPilot in passcabin.transform.GetComponentsInChildren()) { _allPanelsPilot.gameObject.layer = LayerMask.NameToLayer("Ignore Raycast"); }*/ foreach (Collider _allPanelsPass in passcabin.transform.GetComponentsInChildren()) { _allPanelsPass.GetComponent().enabled = false; } } public void ChangeLayerPassCabineDefault() { /* for (int i = 0; i < layersOrigPass.Count; i++) { layersPass[i].gameObject.layer = layersOrigPass[i]; }*/ foreach (Collider _allPanelsPass in passcabin.transform.GetComponentsInChildren()) { _allPanelsPass.GetComponent().enabled = true; } } public void DisablePassCabineCollider() { foreach (Collider _allCollidersPass in passcabin.transform.GetComponentsInChildren()) { //Debug.Log(_allPanelsPilot); //_allPanelsPilot.collider.enabled = false; _allCollidersPass.GetComponent().enabled = false; } } public void EnablePassCabineCollider() { foreach (Collider _allCollidersPass in passcabin.transform.GetComponentsInChildren()) { //Debug.Log(_allPanelsPilot); //_allPanelsPilot.collider.enabled = false; _allCollidersPass.GetComponent().enabled = true; } } // Внешние системы слои public void ChangeLayerExternalPanelsIgnore() { /* foreach (Transform _allPanelsExt in externalpanels.transform.GetComponentsInChildren()) { _allPanelsExt.gameObject.layer = LayerMask.NameToLayer("Ignore Raycast"); *//* if(_allPanelsExt.GetComponentInChildren() != null) // Для режима scedit raycast все равно пробивает объекты "ignore raycast" _allPanelsExt.GetComponentInChildren().enabled = false;*//* }*/ foreach (Collider _allPanelsExt in externalpanels.transform.GetComponentsInChildren()) { //Debug.Log(_allPanelsPilot); //_allPanelsPilot.collider.enabled = false; _allPanelsExt.GetComponent().enabled = false; } } public void ChangeLayerExternalPanelsDefault() { /* for (int i = 0; i < layersOrigExternalPanels.Count; i++) { layersExternalPanels[i].gameObject.layer = layersOrigExternalPanels[i]; *//* if (layersExternalPanels[i].GetComponentInChildren() != null) layersExternalPanels[i].GetComponentInChildren().enabled = true;*//* }*/ foreach (Collider _allPanelsExt in externalpanels.transform.GetComponentsInChildren()) { //Debug.Log(_allPanelsPilot); //_allPanelsPilot.collider.enabled = false; _allPanelsExt.GetComponent().enabled = true; } } public void mouseEnterUI() { //Debug.Log("зашли на UI"); isMouseOverUI = true; ChangeLayerPassCabineIgnore(); ChangeLayerPilotCabineIgnore(); ChangeLayerExternalPanelsIgnore(); } public void mouseExitUI() { if (!is3D || !isInitiated || isProgressBarChangingInProgress) return; // if (mode == "play" && player.playMode != "waitForClick") return; // если в глобальном режиме play, то подсвечиваем объекты только при waitForClick //Debug.Log("вышли из UI"); // ChangeLayerDefault(); isMouseOverUI = false; if (viewmode == 1) { //EnablePassCabineCollider(); EnablePilotCabineCollider(); ChangeLayerPilotCabineDefault(); ChangeLayerExternalPanelsIgnore(); ChangeLayerPassCabineIgnore(); menuCabinButton.isGreen = true; menuCabinButton.OnPointerUp(null); menuPassButton.isGreen = false; menuPassButton.OnPointerUp(null); menuViewButton.isGreen = false; menuViewButton.OnPointerUp(null); } else if (viewmode == 2) { EnablePassCabineCollider(); //EnablePilotCabineCollider(); ChangeLayerPilotCabineIgnore(); ChangeLayerPassCabineDefault(); ChangeLayerExternalPanelsIgnore(); menuCabinButton.isGreen = false; menuCabinButton.OnPointerUp(null); menuPassButton.isGreen = true; menuPassButton.OnPointerUp(null); menuViewButton.isGreen = false; menuViewButton.OnPointerUp(null); } else if (viewmode == 3) { DisablePassCabineCollider(); DisablePilotCabineCollider(); //ChangeLayerPilotCabineIgnore(); //ChangeLayerPassCabineIgnore(); ChangeLayerExternalPanelsDefault(); menuCabinButton.isGreen = false; menuCabinButton.OnPointerUp(null); menuPassButton.isGreen = false; menuPassButton.OnPointerUp(null); menuViewButton.isGreen = true; menuViewButton.OnPointerUp(null); } } static GameObject GetRootObject(string objName) { UnityEngine.SceneManagement.Scene activeScene = UnityEngine.SceneManagement.SceneManager.GetActiveScene(); GameObject[] rootObjects = activeScene.GetRootGameObjects(); // GameObject res = new GameObject(); for (int i = 0; i < rootObjects.Length; i++) { //Debug.Log(rootObjects[i].name); if (string.Compare(rootObjects[i].name, objName) == 0) { return (rootObjects[i]); } } return (null); } public void switchModeView() // внешний вид { //mode = "view"; viewmode = 3; fusel.SetActive(true); copter.SetActive(true); cabines2d.SetActive(false); cam.gameObject.SetActive(false); //canvas.SetActive(false); skv.SetActive(true); // Для Макса СКВ трубка //menuPlayButtons.SetActive(true); // Закомментить //ChangeLayerPassCabineIgnore(); //ChangeLayerPilotCabineIgnore(); //ChangeLayerExternalPanelsDefault(); DisablePassCabineCollider(); DisablePilotCabineCollider(); ChangeLayerExternalPanelsDefault(); ViewBackButton.GetComponent