mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/MI-38.git
synced 2026-01-24 03:45:37 +03:00
06.07.2022
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
<<<<<<< HEAD
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
@@ -761,765 +760,3 @@ public class Manager : MonoBehaviour
|
||||
|
||||
|
||||
}
|
||||
=======
|
||||
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;
|
||||
|
||||
|
||||
Dictionary<string, GameObject> panel3D = new Dictionary<string, GameObject>(); // Панели 3D
|
||||
public Dictionary<string, Panel2D> panel2D = new Dictionary<string, Panel2D>(); // Панели 2D
|
||||
|
||||
//public Dictionary<string, string> allPanelsStatesList = new Dictionary<string, string>(); //Словарь соответствия панелей 2D и 3D
|
||||
public Dictionary<GameObject, GameObject> allPanelsStatesList = new Dictionary<GameObject, GameObject>(); //Словарь соответствия панелей 2D и 3D
|
||||
Transform[] layersPass;
|
||||
Transform[] layersPilot;
|
||||
Transform[] layersExternalPanels;
|
||||
Transform[] layerHeli;
|
||||
Transform[] otherPanels;
|
||||
public List<LayerMask> layersOrigHeli = new List<LayerMask>();
|
||||
public List<LayerMask> layersOrigPass = new List<LayerMask>();
|
||||
public List<LayerMask> layersOrigPilot = new List<LayerMask>();
|
||||
public List<LayerMask> layersOrigExternalPanels = new List<LayerMask>();
|
||||
public List<GameObject> layersOrigOtherPanels = new List<GameObject>();
|
||||
public List<GameObject> layersChangedOtherPanels = new List<GameObject>();
|
||||
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<Player>();
|
||||
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<Camera>();//зедсь показывается бутерброд
|
||||
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<forCamera>();
|
||||
cabinCamera.gameObject.AddComponent<forCamera>();
|
||||
backBtn.SetActive(false);
|
||||
is3D = true;
|
||||
// viewmode = 3; // По умолчанию мы находимся в обзорке
|
||||
|
||||
mfi1 = GameObject.Find("Panel0110").GetComponent<MFIScript>(); mfi1.LoadPrefab("mfi1");
|
||||
mfi2 = GameObject.Find("Panel0111").GetComponent<MFIScript>(); mfi2.LoadPrefab("mfi2");
|
||||
mfi3 = GameObject.Find("Panel0116").GetComponent<MFIScript>(); mfi3.LoadPrefab("mfi3");
|
||||
mfi4 = GameObject.Find("Panel0121").GetComponent<MFIScript>(); mfi4.LoadPrefab("mfi4");
|
||||
mfi5 = GameObject.Find("Panel0122").GetComponent<MFIScript>(); mfi5.LoadPrefab("mfi5");
|
||||
mfi1_cam = GameObject.Find("CameraMFI1").GetComponent<Camera>(); mfi2_cam = GameObject.Find("CameraMFI2").GetComponent<Camera>();
|
||||
mfi3_cam = GameObject.Find("CameraMFI3").GetComponent<Camera>(); mfi4_cam = GameObject.Find("CameraMFI4").GetComponent<Camera>();
|
||||
mfi5_cam = GameObject.Find("CameraMFI5").GetComponent<Camera>();
|
||||
mfi1_cam.enabled = false; mfi2_cam.enabled = false; mfi3_cam.enabled = false; mfi4_cam.enabled = false; mfi5_cam.enabled = false;
|
||||
|
||||
objects = new Mi38Objects();
|
||||
StartCoroutine(objects.Load());
|
||||
player.Init();
|
||||
|
||||
StartCoroutine(Init());
|
||||
//Try skybox
|
||||
sky = Resources.Load<Material>("Materials/MatSky");
|
||||
parking = Resources.Load<Material>("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>();
|
||||
Transform[] allPanels3D = copter.GetComponentsInChildren<Transform>();
|
||||
|
||||
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<GameObject, GameObject> kvp in allPanelsStatesList)
|
||||
// Debug.Log(kvp.Key.name + " " + kvp.Value.name);
|
||||
|
||||
GameObject[] activezones = GameObject.FindGameObjectsWithTag("activezone");
|
||||
foreach (GameObject _activezones in activezones)
|
||||
{
|
||||
_activezones.AddComponent<MakeActive>();
|
||||
_activezones.GetComponentInChildren<Collider>();
|
||||
// BoxCollider childcol = _activezones.GetComponentInChildren<BoxCollider>();
|
||||
// Debug.Log(_activezones.GetComponentInChildren<BoxCollider2D>() + " коллайдеры");
|
||||
//Debug.Log(_activezones.name + " объекты с activezone");
|
||||
//_activezones.GetComponentInChildren<BoxCollider>();
|
||||
//Debug.Log(_activezones.GetComponentInChildren<BoxCollider>() + " коллайдеры");
|
||||
}
|
||||
|
||||
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<hintUI>();
|
||||
menuPassButton = GameObject.Find("Air/view2").GetComponent<hintUI>();
|
||||
menuViewButton = GameObject.Find("Air/view3").GetComponent<hintUI>();
|
||||
}
|
||||
|
||||
//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<Panel2D>();
|
||||
//Debug.LogError("Loading Panel2D: " + _panel2d.name);
|
||||
while (!_panel2d.GetComponent<Panel2D>().isStarted)
|
||||
yield return null;
|
||||
|
||||
_panel2d.GetComponent<Panel2D>().setDisabled();//отключаем панели кроме мфи
|
||||
//_panel2d.SetActive(false); // ! не далать так! отключается МФИ
|
||||
|
||||
panel2D.Add(_panel2d.name, _panel2d.GetComponent<Panel2D>());
|
||||
}
|
||||
|
||||
//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<Transform>())
|
||||
{
|
||||
_allPanels.gameObject.SetActive(true);
|
||||
}
|
||||
// Меняем слои,чтобы переключении в 2D блокировать элементы 3D кабины
|
||||
// viewmode 1-кабина пилотов, 2-пассажирская кабина, 3-режим свободного обзора (системы)
|
||||
is3D = true; opened2Dpanel = "";
|
||||
|
||||
if(!isProgressBarChangingInProgress)
|
||||
mouseExitUI();
|
||||
|
||||
//Camera.main.gameObject.AddComponent<forCamera>();
|
||||
cabinCamera.gameObject.AddComponent<forCamera>();
|
||||
if (viewmode == 2) //Camera.main.GetComponent<forCamera>().limitVert = 179.99f; // Если мы в кабине пассажирской,то угол вращения увеличиваем
|
||||
cabinCamera.GetComponent<forCamera>().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<Panel2D>().setDisabled();
|
||||
//if (String.Compare(p.name, "Panel0110") == 0) p.GetComponent<Panel2D>().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<forCamera>());
|
||||
Component.Destroy(cabinCamera.gameObject.GetComponent<forCamera>());
|
||||
// Блокируем в 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<ButtonCubik>().SetView();
|
||||
if (_panels2d == "Panel0702")
|
||||
panel2D[_panels2d].transform.Find("Button0702").gameObject.GetComponent<ButtonCubik>().SetView();
|
||||
if (_panels2d == "Panel0801")
|
||||
panel2D[_panels2d].transform.Find("Button0801").gameObject.GetComponent<ButtonCubik>().SetView();
|
||||
if (_panels2d == "Panel0802")
|
||||
panel2D[_panels2d].transform.Find("Button0802").gameObject.GetComponent<ButtonCubik>().SetView(); */
|
||||
if (mode == "play")
|
||||
backBtn.SetActive(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
//panel2D[_panels2d].setDisabled();
|
||||
//SwitchTo3D();
|
||||
}
|
||||
}
|
||||
IEnumerator SwitchTo2DSetCurrentStates(UnityObject switchTo2DPanelObject)
|
||||
{
|
||||
while (!switchTo2DPanelObject.gameObject.GetComponent<Panel2D>().isStarted)
|
||||
yield return null;
|
||||
//Debug.Log("Panel " + switchTo2DPanelObject.name + " isStarted " + switchTo2DPanelObject.gameObject.GetComponent<Panel2D>().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<Transform>();
|
||||
foreach (Transform _layerHeli in layerHeli)
|
||||
{
|
||||
layersOrigHeli.Add(_layerHeli.gameObject.layer);
|
||||
}
|
||||
}
|
||||
public void RecordOrigLayerPass()
|
||||
{
|
||||
layersOrigPass.Clear();
|
||||
layersPass = passcabin.transform.GetComponentsInChildren<Transform>();
|
||||
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<Transform>();
|
||||
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<Transform>();
|
||||
foreach (Transform _layersExternalPanels in layersExternalPanels)
|
||||
{
|
||||
layersOrigExternalPanels.Add(_layersExternalPanels.gameObject.layer);
|
||||
}
|
||||
}
|
||||
|
||||
/* public void ChangeLayerIgnore()
|
||||
{
|
||||
foreach (Transform _allPanels in copter.transform.GetComponentsInChildren<Transform>())
|
||||
{
|
||||
_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<Transform>())
|
||||
{
|
||||
_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<Collider>().enabled = false;
|
||||
}
|
||||
foreach (Collider _allPanelsPilot in pilotcabin.transform.GetComponentsInChildren<Collider>())
|
||||
{
|
||||
_allPanelsPilot.GetComponent<Collider>().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<Collider>().enabled = true;
|
||||
}
|
||||
foreach (Collider _allPanelsPilot in pilotcabin.transform.GetComponentsInChildren<Collider>())
|
||||
{
|
||||
_allPanelsPilot.GetComponent<Collider>().enabled = true;
|
||||
}
|
||||
}
|
||||
public void DisablePilotCabineCollider()
|
||||
{
|
||||
foreach (Collider _allPanelsPilot in pilotcabin.transform.GetComponentsInChildren<Collider>())
|
||||
{
|
||||
//_allPanelsPilot.collider.enabled = false;
|
||||
_allPanelsPilot.GetComponent<Collider>().enabled = false;
|
||||
}
|
||||
}
|
||||
public void EnablePilotCabineCollider()
|
||||
{
|
||||
foreach (Collider _allPanelsPilot in pilotcabin.transform.GetComponentsInChildren<Collider>())
|
||||
{
|
||||
//_allPanelsPilot.collider.enabled = false;
|
||||
_allPanelsPilot.GetComponent<Collider>().enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Пассажирская кабина слои и коллайдеры
|
||||
public void ChangeLayerPassCabineIgnore()
|
||||
{
|
||||
/* foreach (Transform _allPanelsPilot in passcabin.transform.GetComponentsInChildren<Transform>())
|
||||
{
|
||||
_allPanelsPilot.gameObject.layer = LayerMask.NameToLayer("Ignore Raycast");
|
||||
}*/
|
||||
foreach (Collider _allPanelsPass in passcabin.transform.GetComponentsInChildren<Collider>())
|
||||
{
|
||||
_allPanelsPass.GetComponent<Collider>().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<Collider>())
|
||||
{
|
||||
_allPanelsPass.GetComponent<Collider>().enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void DisablePassCabineCollider()
|
||||
{
|
||||
foreach (Collider _allCollidersPass in passcabin.transform.GetComponentsInChildren<Collider>())
|
||||
{
|
||||
//Debug.Log(_allPanelsPilot);
|
||||
//_allPanelsPilot.collider.enabled = false;
|
||||
_allCollidersPass.GetComponent<Collider>().enabled = false;
|
||||
}
|
||||
}
|
||||
public void EnablePassCabineCollider()
|
||||
{
|
||||
foreach (Collider _allCollidersPass in passcabin.transform.GetComponentsInChildren<Collider>())
|
||||
{
|
||||
//Debug.Log(_allPanelsPilot);
|
||||
//_allPanelsPilot.collider.enabled = false;
|
||||
_allCollidersPass.GetComponent<Collider>().enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Внешние системы слои
|
||||
public void ChangeLayerExternalPanelsIgnore()
|
||||
{
|
||||
/* foreach (Transform _allPanelsExt in externalpanels.transform.GetComponentsInChildren<Transform>())
|
||||
{
|
||||
_allPanelsExt.gameObject.layer = LayerMask.NameToLayer("Ignore Raycast");
|
||||
*//* if(_allPanelsExt.GetComponentInChildren<Collider>() != null) // Для режима scedit raycast все равно пробивает объекты "ignore raycast"
|
||||
_allPanelsExt.GetComponentInChildren<Collider>().enabled = false;*//*
|
||||
}*/
|
||||
foreach (Collider _allPanelsExt in externalpanels.transform.GetComponentsInChildren<Collider>())
|
||||
{
|
||||
//Debug.Log(_allPanelsPilot);
|
||||
//_allPanelsPilot.collider.enabled = false;
|
||||
_allPanelsExt.GetComponent<Collider>().enabled = false;
|
||||
}
|
||||
}
|
||||
public void ChangeLayerExternalPanelsDefault()
|
||||
{
|
||||
/* for (int i = 0; i < layersOrigExternalPanels.Count; i++)
|
||||
{
|
||||
layersExternalPanels[i].gameObject.layer = layersOrigExternalPanels[i];
|
||||
*//* if (layersExternalPanels[i].GetComponentInChildren<Collider>() != null)
|
||||
layersExternalPanels[i].GetComponentInChildren<Collider>().enabled = true;*//*
|
||||
}*/
|
||||
foreach (Collider _allPanelsExt in externalpanels.transform.GetComponentsInChildren<Collider>())
|
||||
{
|
||||
//Debug.Log(_allPanelsPilot);
|
||||
//_allPanelsPilot.collider.enabled = false;
|
||||
_allPanelsExt.GetComponent<Collider>().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<Button>().onClick.Invoke();
|
||||
fusel.GetComponent<ChangeSystem>().SwitchOffAllCams();
|
||||
//GameObject.Find("ButtonMainBack").SetActive(false); GameObject.Find("ButtonMainBackTMP").SetActive(false);
|
||||
|
||||
if (menuCabinButton == null)
|
||||
{
|
||||
menuCabinButton = GameObject.Find("Air/view1").GetComponent<hintUI>();
|
||||
menuPassButton = GameObject.Find("Air/view2").GetComponent<hintUI>();
|
||||
menuViewButton = GameObject.Find("Air/view3").GetComponent<hintUI>();
|
||||
}
|
||||
menuCabinButton.isGreen = false; menuCabinButton.OnPointerUp(null);
|
||||
menuPassButton.isGreen = false; menuPassButton.OnPointerUp(null);
|
||||
menuViewButton.isGreen = true; menuViewButton.OnPointerUp(null);
|
||||
|
||||
|
||||
}
|
||||
public void switchModeFree() // внутри: кабина или грузовой
|
||||
{
|
||||
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);
|
||||
copterProz.SetActive(false);// Отключать прозрачный вертолет при выходе из обзорки
|
||||
EnablePassCabineCollider();
|
||||
EnablePilotCabineCollider();
|
||||
ChangeLayerExternalPanelsIgnore();
|
||||
menuCabinButton.isGreen = true; menuCabinButton.OnPointerUp(null);
|
||||
menuPassButton.isGreen = false; menuPassButton.OnPointerUp(null);
|
||||
menuViewButton.isGreen = false; menuViewButton.OnPointerUp(null);
|
||||
}
|
||||
|
||||
public void changeSkyBoxToSky()
|
||||
{
|
||||
RenderSettings.skybox = sky;
|
||||
}
|
||||
public void changeSkyBoxToPark()
|
||||
{
|
||||
RenderSettings.skybox = parking;
|
||||
}
|
||||
private bool IsMouseOverUI()
|
||||
{
|
||||
return EventSystem.current.IsPointerOverGameObject();
|
||||
}
|
||||
// && !IsMouseOverUI()
|
||||
//&& !EventSystem.current.IsPointerOverGameObject()
|
||||
|
||||
|
||||
|
||||
/* **** Подсветка Selectable панелей **** */
|
||||
//private void Update()
|
||||
//{
|
||||
|
||||
/* Debug.Log("bool IsMouseOverUI " + IsMouseOverUI());
|
||||
if (_selection != null )
|
||||
{
|
||||
var selectionRenderer = _selection.GetComponent<Renderer>();
|
||||
selectionRenderer.material = defaultMaterial;
|
||||
_selection = null;
|
||||
|
||||
}
|
||||
var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
|
||||
RaycastHit hit;
|
||||
if (Physics.Raycast(ray, out hit) && !IsMouseOverUI() )
|
||||
{
|
||||
//Debug.Log("bool IsMouseOverUI " + IsMouseOverUI());
|
||||
var selection = hit.transform;
|
||||
if (selection.CompareTag(selectableTag) )
|
||||
{
|
||||
var selectionRenderer = selection.GetComponent<Renderer>();
|
||||
var defaultRender = selectionRenderer;
|
||||
if (selectionRenderer != null)
|
||||
{
|
||||
defaultMaterial = selectionRenderer.material;
|
||||
//Debug.Log(defaultMaterial);
|
||||
selectionRenderer.material = highlightMaterial;
|
||||
}
|
||||
_selection = selection;
|
||||
}
|
||||
}*/
|
||||
//}
|
||||
|
||||
|
||||
}
|
||||
>>>>>>> 3b1b9479a46e90d056b92897ea9f8422b25fc052
|
||||
|
||||
Reference in New Issue
Block a user