06.07.2022

This commit is contained in:
Plotnikov
2022-07-06 12:36:49 +03:00
parent 696daa0b2e
commit b0a0566f19
32 changed files with 5 additions and 39308 deletions

View File

@@ -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