using UnityEngine; using System.IO; using System; using System.Xml.Serialization; using AX.MessageSystem; using System.Collections.Generic; using System.Collections; using System.Linq; namespace AX.TrackRecord { struct sss_ { EventRecordItem_two h;// = new EventRecordItem_two(); } /// /// 轨迹记录加载类 /// /// public class LoadManager : MonoBehaviour { public static LoadManager Instance; [HideInInspector] public Record_One_root record_Load = new Record_One_root(); [HideInInspector] public bool IsPlayBacking = false; [HideInInspector] public int EventIndex = 0; //public static RecordManager Instance = new RecordManager(); [HideInInspector] public string filename = "filename2.xml"; public GameObject TheShowUI; //[HideInInspector] //public bool RecorControl = true; [HideInInspector] public float LoadTimer = 0; //时间累加 [HideInInspector] public GameObject TheTime; [HideInInspector] public GameObject reload; [HideInInspector] public bool isChanged = false; private GameObject oneClickCanle; //[HideInInspector] //public bool has = false; [HideInInspector] public bool IsPause = false; private bool StartTimerFlag = false; [HideInInspector] public int LoadSpeed = 1;//快进速度 [HideInInspector] public string FileName; public bool RecordBtn = true;//点击按钮时候控制进度 private Transform RecordFather;//时间轴预设父物体 //private GameObject ADDTagBtn;//添加标签按钮 [HideInInspector] public int index; [HideInInspector] public bool IsMakeScore = false;//打分时,播放结束,不隐藏时间轴,等待手动点击保存评分时关闭时间轴等 public event EventHandler PlayBackOverEvent;//回放完毕事件 public BuildType buildType = BuildType.TypeA; public Dictionary> eventListDic = new Dictionary>(); public string Format = "F1"; public int speedFactor = 1; void Awake() { if (Instance == null) { Instance = this; } RecordFather = GameObject.Find("Canvas").transform.Find("时间轴/father"); PlayBackOverEvent += PlayBackOverFunc; MessageDispatcher.AddListener("ProcessSkipEvent", ProcessSkipEvent); } void Start() { } void OnDestroy() { PlayBackOverEvent -= PlayBackOverFunc; MessageDispatcher.RemoveListener("ProcessSkipEvent", ProcessSkipEvent); AgentRecord.speedFactor = 1; } void FixedUpdate() { //开始按时间顺序回放记录 if (RecordBtn) { if (IsPlayBacking && !IsPause && StartTimerFlag) { LoadTimer += Time.deltaTime * LoadSpeed; if (LoadTimer <= record_Load.SumTime) { eventListDic.ExecuteEventFromDict(LoadTimer, false); } else////////回放结束 { PlayBackOver(); } } } } private void PlayBackOver() { LoadSpeed = 1; AgentRecord.speedFactor = 1; PlayBackOverEvent(this, new PlayBackEventArgs(IsMakeScore)); MessageDispatcher.SendMessage("ShowToolbar", (object)this.name); MessageDispatcher.SendMessage("CLOSE", (object)"杂物清理界面", "CUBE"); MessageDispatcher.SendMessage("CLOSE", (object)"自动评判", "CUBE"); MessageDispatcher.SendMessage("CLOSE", (object)"PoChaiUI", "CUBE"); MessageDispatcher.SendMessage("CLOSE", (object)"AddScoreTag", "CUBE"); } private void ProcessSkipEvent(IMessage msg) { var time = (SkipEventAttri)msg.Data; RecordBtn = false; //if (time.to < time.from)//往回执行 //{ // LoadObjSetToOriginalTrans(record_Load);//重新加载物体 // eventListDic.ExecuteEvents(0, time.to); //} //else//继续往后执行 //{ // eventListDic.ExecuteEvents(time.from, time.to); //} LoadTimer = time.to + DictProcessHelpClass.threshold; Time.timeScale = 1; //StartCoroutine(SetLoadTimer(time.to)); //RecordBtn = true; //if (Mathf.Approximately(time.to, record_Load.SumTime)) //{ // IsPause = false; //} } IEnumerator SetLoadTimer(float timer) { yield return new WaitForSeconds((Frames + 1f) * Time.deltaTime); LoadTimer = timer; } public void ExePlayBackOverEvent(bool IsMakeScore) { PlayBackOverFunc(this, new PlayBackEventArgs(IsMakeScore)); GameObject.Find("Canvas").transform.Find("时间轴").gameObject.SetActive(false); } public void ChangeIntro(EventRecordItem_two eventI, string intro)//修改简介方法 { foreach (var item in record_Load.EventList) { if (item.Equals(eventI)) { item.objAttriList[0].TaskName = intro; break; } } var key = DictProcessHelpClass.GetKeyFromTimer(eventI.timer); if (eventListDic.ContainsKey(key))//key确定的查找 { foreach (var item in eventListDic[key]) { if (item.Equals(eventI)) { item.objAttriList[0].TaskName = intro; break; } } } } public void ChangeBiaoQian(EventRecordItem_two eventI)//修改标签方法 { foreach (var item in record_Load.EventList) { if (item.Equals(eventI)) { item.objAttriList[0].TaskName = eventI.objAttriList[0].TaskName; item.objAttriList[0].ObjName = eventI.objAttriList[0].ObjName; item.objAttriList[0].VideoFile = eventI.objAttriList[0].VideoFile; item.objAttriList[0].PictureFile = eventI.objAttriList[0].PictureFile; item.objAttriList[0].modeadd = eventI.objAttriList[0].modeadd; break; } } var key = DictProcessHelpClass.GetKeyFromTimer(eventI.timer); if (eventListDic.ContainsKey(key))//key确定的查找 { foreach (var item in eventListDic[key]) { if (item.Equals(eventI)) { item.objAttriList[0].TaskName = eventI.objAttriList[0].TaskName; item.objAttriList[0].ObjName = eventI.objAttriList[0].ObjName; item.objAttriList[0].VideoFile = eventI.objAttriList[0].VideoFile; item.objAttriList[0].PictureFile = eventI.objAttriList[0].PictureFile; item.objAttriList[0].modeadd = eventI.objAttriList[0].modeadd; break; } } } } int AlterID; float deltaTime_Lat = -0.2f; private void PlayBackOverFunc(object sender, EventArgs e) { if (!((PlayBackEventArgs)e).IsMakeScore) { IsPlayBacking = false; if (isChanged) { TrackRecordHelpClass.SerializeRecordToXML(ExamInfoHelpClass.CurrentWorkPath+NodeSet.Instance.RecordFileName, record_Load); isChanged = false; } } else//打分模式下 { //重置状态,EventIndex=0,时间轴复位到原点,等待再次点击播放,以便添加记录 //ToDo... LoadTimer = 0; IsPlayBacking = true; EventIndex = 0; IsPause = true;//置于暂停状态,等待播放 //MakeSorceSet.instance.MakeSorceSetTime();//右下时间清零 TheBackView.instance.EndBtn.SetActive(false); //TrackRecordHelpClass.LoadObjSetToOriginalTrans(record_Load); } } /// /// 获取Record_Load /// /// public void GetRecord_Load(string filename) { FileName = filename; if (RecordManager.Instance.IsRecording) { Debug.Log("Please Stop the record first!"); return; } record_Load = null; //string filename_ = "recordList/" + ((int)ExamInfoHelpClass.selectSceneID).ToString() + "/" + filename; record_Load = TrackRecordHelpClass.LoadRecord_DeserializeXMLToRecord(filename); } public void StartPlayBack(string filename) { //未停止记录前不能开始回放 FileName = filename; if (RecordManager.Instance.IsRecording) { Debug.Log("Please Stop the record first!"); return; } record_Load = null; //string filename_ = "recordList/" + ((int)ExamInfoHelpClass.selectSceneID).ToString() + "/" + filename; record_Load = TrackRecordHelpClass.LoadRecord_DeserializeXMLToRecord(filename); if (record_Load != null) { MessageDispatcher.SendMessage("CloseToolbar", (object)this.name); MessageDispatcher.SendMessage("ResettingButton", (object)this.name); MessageDispatcher.SendMessage("RESET_OILTANKDISASTER_ATRRI", (object)"All");//重置罐体属性 MessageDispatcher.SendMessage("ResetTheScene"); MessageDispatcher.SendMessage("ShuiPaoMessage"); //GameObject.Find("Main Camera").GetComponent().enabled = false; //GameObject.Find("Main Camera").GetComponent().Reset(); //Debug.Log(record_Load.EventList[0].eventType + "to" + record_Load.EventList[0].Navto); //BackView.gameObject.SetActive(true); AgentRecord.speedFactor = 1; LoadTimer = 0; IsPlayBacking = true; EventIndex = 0; IsPause = false; StartTimerFlag = false;//在加载完初始物体前禁用计时标志,加载完成后再开始计时,避免错过。 TheBackView.instance.BoFang(); LoadObjSetToOriginalTrans(record_Load); //TrackRecordHelpClass.LoadObjSetToOriginalTrans(record_Load); eventListDic.GetDicFromEventList(record_Load.EventList);//首先获取字典 TheBackView.instance.CheckCount();//遍历字典生成标签 } } private IEnumerator ILoadObjSetToOriginalTrans(Record_One_root record_Load) { yield return null; TrackRecordHelpClass.LoadObjSetToOriginalTrans(record_Load); //加载完初始物体开始计时顺次执行事件 StartTimerFlag = true; } public void LoadObjSetToOriginalTrans(Record_One_root record_Load) { MessageDispatcher.SendMessage("DestroyObj", (object)"All"); StartCoroutine(ILoadObjSetToOriginalTrans(record_Load)); } public void LoadObjSetToOriginalTransTag() { var eventItems = eventListDic[eventListDic.Keys.Last()]; var eventItem = eventItems[0]; foreach (EventRecordItem_two item in eventItems) { if (item.eventType == eventTypeRecord.None) { eventItem = item; break; } } StartCoroutine(LoadObjSetToOriginalTransTag(eventItem/*record_Load.EventList[record_Load.EventList.Count - 1]*/)); } private IEnumerator LoadObjSetToOriginalTransTag(EventRecordItem_two eventAttri) { MessageDispatcher.SendMessage("DestroyObj", (object)"All"); MessageDispatcher.SendMessage("RESET_OILTANKDISASTER_ATRRI", (object)"All");//重置所有 MessageDispatcher.SendMessage("ShuiPaoMessage"); InputManager.Instance_.characters.Clear(); yield return null; TrackRecordHelpClass.LoadObjSetToOriginalTransTag(eventAttri); } public void SubmitScore(string filename) { //评分结束,停止回放,保存为Xml文件 TrackRecordHelpClass.SerializeRecordToXML(filename, record_Load); } public void AddLoadTagEvent(string name_, string intro_,string show, GameObject game, float Time, ModelADD modle, string VideoPath, string PicturePath) { EventRecordItem_two EventAttribute = new EventRecordItem_two(); EventAttribute.eventType = eventTypeRecord.AddLoadTag; RecordManager.Instance.RecordBasicEventAttri(ref EventAttribute); ObjAttribute objAttri = new ObjAttribute(); objAttri.ObjName = name_;//记录Tag名称 objAttri.TaskName = intro_;//记录Tag简介 objAttri.TopName = show; objAttri.modeadd = modle;//判断是什么模式 图片或者视频 objAttri.VideoFile = VideoPath; objAttri.PictureFile = PicturePath; if (Time > 0 && ExamInfoHelpClass.applicationMode == ExamInfoHelpClass.ApplicationMode.PATHFINDING) { EventAttribute.timer = Time + 0.5f; if (game.name.Equals("zidong_ZJ")) { EventAttribute.eventType = eventTypeRecord.ZongJiePingPanTag; //总结自动评判 } else { EventAttribute.eventType = eventTypeRecord.AddGpcAUTOTag;//高喷车自动评判 } EventAttribute.PingPan = true; } CameraAttribute camAttribute = MouseFollowRotation.Instance.CameraAttri; EventAttribute.orthographic = Camera.main.orthographic;//使用pingpan字段来记录相机顶视图Flag EventAttribute.size = Camera.main.orthographicSize;//使用size字段来记录相机顶视图orthographicSize EventAttribute.camAttributeList.Add(camAttribute); EventAttribute.objAttriList.Add(objAttri); TrackRecordHelpClass.RecordAboutTag(ref EventAttribute); AddToLoadEventList(EventAttribute, game); game.GetComponent().EventItem = EventAttribute;//////////////// EventIndex++;//待测试是否有必要 IsPause = false;//添加标签完毕,继续开始计时 } private void AddToLoadEventList(EventRecordItem_two eventItem, GameObject Game) { //index = 0; //int id = 0; //float min = 100000; //for (int i = record_Load.EventList.Count - 1; i >= 0; i--) //{ // float delta = record_Load.EventList[i].timer - eventItem.timer; // float deltaAbs = Mathf.Abs(delta); // if (deltaAbs < min) // { // if (delta > 0) // { // id = i; // } // else // { // id = i + 1; // } // min = deltaAbs; // index = i; // } //} //foreach (Transform child in RecordFather) //{ // int Id = child.GetComponent().ID; // if (Id >= id) // { // child.GetComponent().ID = Id + 1; // } //} //Game.GetComponent().ID = id; //Game.GetComponent().Timer = LoadTimer; record_Load.EventList.Add(eventItem); eventListDic.AddEventToDict(eventItem); eventListDic.DictSort(); } private int Frames = 0; private int Frames_Count = 0; GameObject Car; public void SetFrames(float multiple)//multiple代表需要快进的倍数 { Frames = 0; Frames_Count = 0; TheBackView.instance.ExeSpeedChangeEvent((int)multiple + 1);//倍速播放 } public void ExecuteEventFromDict(float key, bool flag) { Frames++; Frames_Count++; Debug.Log("Frames++" + Frames+ " LoadTimer:" + LoadTimer); StartCoroutine(ExecuteEventFromDict_Coroutine(key, flag)); } private IEnumerator ExecuteEventFromDict_Coroutine(float key, bool flag) { yield return null; eventListDic.ExecuteEventFromDict(key, true); Frames_Count--; Debug.Log("Frames_Count++" + Frames_Count + " LoadTimer:" + LoadTimer); if (Frames_Count == 0)// { AgentRecord.speedFactor = 1; Debug.Log("execute events over!Sum of events:"+ Frames); //TheBackView.instance.ExeSpeedChangeEvent(LoadSpeed);//恢复播放速度 } } /// /// 回放一件事 /// public void ExcuteEventFromRecord(EventRecordItem_two eventItem, bool IsShowTiShi) { //TheBackView.instance.BackApect(EventIndex);(停用) switch (eventItem.eventType) { case eventTypeRecord.None: if (eventItem.camAttributeList.Count != 0) { MouseFollowRotation.Instance.CameraAttri = eventItem.camAttributeList[0]; } break; case eventTypeRecord.Instantiate: string pName = TrackRecordHelpClass.GetParentName(eventItem.objAttriList[0].ObjName); MessageDispatcher.SendMessage(pName, "LoadInstantiateEvent", eventItem.objAttriList[0]);//触发实例化事件,发送一个EventRecordItem_two类型数据,会不会很耗费资源,有待测试改进 //GetTheJieDian.lock_ = false; break; case eventTypeRecord.TaskChange: MessageDispatcher.SendMessage("LoadTaskChangeEvent", eventItem); //TheBackView.instance.BackApect(eventItem); break; case eventTypeRecord.TopNameChange: MessageDispatcher.SendMessage("LoadTopNameChangeEvent", eventItem); //TheBackView.instance.BackApect(eventItem); break; case eventTypeRecord.PathFinding: MessageDispatcher.SendMessage("LoadPathFindingEvent", eventItem); break; case eventTypeRecord.TriggerEvent: var triggerType = eventItem.CreatName; switch (triggerType) { case "UpAndDownAttack": //Debug.Log("bbbbbbbb:" + eventItem.TheFloor);//TheFoor为-1时,表示记录开始时透明主体已经被显示出来了 //if (eventItem.TheFloor == -1) //{ // GameObject.Find("SceneAll").transform.Find("toumingzhuti").gameObject.SetActive(true); //} StartCoroutine(delayActive()); break; case "MoveUpFloor": int cengID = eventItem.TheFloor; MessageDispatcher.SendMessage("MoveUpFloor", (object)cengID); break; case "MoveDownFloor": MessageDispatcher.SendMessage("MoveDownFloor", (object)""); break; case "NameControl": PrePareModeSet.instance.TheShowText.text = eventItem.PingPan ? "显示名称" : "隐藏名称"; PrePareModeSet.instance.TheHideNameWay(eventItem.PingPan); break; case "DoubleClick": SubwayControl.Instance.SetTop(eventItem.PingPan);// break; case "ShowHideSmoke": SubwayControl.Instance.SetSmoke(eventItem.PingPan);//ShowHideSmoke break; default: break; } break; case eventTypeRecord.MaskChange: MessageDispatcher.SendMessage("LOADMASKCHANGEEVENT", eventItem.objAttriList[0]); break; case eventTypeRecord.ChangeTextMesh: MessageDispatcher.SendMessage("LoadTextMesh", eventItem.objAttriList[0]); break; case eventTypeRecord.RescueWounded: YingjiuRenYuan.Instance.PlayVideo(eventItem.CreatName);//营救伤员:CreatName,伤员名 break; case eventTypeRecord.EditGCSEvent: MessageDispatcher.SendMessage("LoadEditGCSEvent", eventItem.objAttriList[0]); break; case eventTypeRecord.Delete://使用TaskName字段记录的父物体名 //MessageDispatcher.SendMessage(eventItem.objAttriList[0].TaskName, "DestroyObj", (object)eventItem.objAttriList[0].ObjName); //该处直接删除物体,不调用DestroyObj事件,避免与其他情况冲突而不执行删除 var parent = GameObject.Find(eventItem.objAttriList[0].TaskName).transform; foreach (Transform child in parent) { if (child.name == eventItem.objAttriList[0].ObjName) { if (child.name.Contains("rline") && LoadManager.Instance.IsPlayBacking) { Car=null; if (child.GetComponent().GuanXianList.Count > 1) { if (child.GetComponent().End.name.Contains("pmc")) { Car = child.GetComponent().End; } else if (child.GetComponent().End.name.Contains("sgc")) { Car = child.GetComponent().End; } else if (child.GetComponent().Begin.name.Contains("pmc")) { Car = child.GetComponent().Begin; } else if (child.GetComponent().Begin.name.Contains("sgc")) { Car = child.GetComponent().Begin; } MessageDispatcher.SendMessage(child.name, "CheckConnectCar", Car); } child.GetComponent().DeletGuanXian(); } if (child.name.Contains("xiaofangche") && LoadManager.Instance.IsPlayBacking) { MessageDispatcher.SendMessage("DeleteShuiYuan", child.gameObject); } if (InputManager.Instance_.characters.Contains(child.gameObject)) { InputManager.Instance_.characters.Remove(child.gameObject); } if (InputManager.Instance_.GetSelectedCharacters().Contains(child.gameObject)) { InputManager.Instance_.GetSelectedCharacters().Remove(child.gameObject); } //if(child.name.Contains("shangyuan") && child.GetComponent())//回放营救伤员视频 //{ // child.GetComponent().PlayVideo(); //} Destroy(child.gameObject); break; } } break; case eventTypeRecord.ActiveWater: MessageDispatcher.SendMessage(eventItem.objAttriList[0].ObjName, "LoadActiveWaterEvent", eventItem.objAttriList[0]); break; case eventTypeRecord.StopWater: MessageDispatcher.SendMessage("LoadStopWaterEvent", (object)eventItem.objAttriList[0].ObjName); break; case eventTypeRecord.ChangeJiJieQu: MessageDispatcher.SendMessage("LoadJiJieSET", (object)eventItem.objAttriList[0]); break; case eventTypeRecord.ChangeLineSize: MessageDispatcher.SendMessage("LoadChangeLineSize", (object)eventItem.objAttriList[0]); break; case eventTypeRecord.ChangeSmogAlpha: MessageDispatcher.SendMessage("LoadSmogAlpha", (object)eventItem.objAttriList[0]); break; //case eventTypeRecord.GetOffCar: // MessageDispatcher.SendMessage("LOADGETOFFCAR", (object)eventItem.objAttriList[0]); // break; case eventTypeRecord.ControlJuBi: MessageDispatcher.SendMessage("LoadControlJuBiEvent", eventItem.objAttriList[0]); //TheBackView.instance.BackApect(EventIndex); break; case eventTypeRecord.EditFire: MessageDispatcher.SendMessage("LoadEditFireEvent", eventItem.objAttriList[0]); break; case eventTypeRecord.EditOilTankAttri: MessageDispatcher.SendMessage("LOAD_EDITOILTANKATTRI_EVENT", eventItem.objAttriList[0]); break; case eventTypeRecord.OilTankStartExplosion: MessageDispatcher.SendMessage("LoadOilTankStartExplosionEventF", eventItem.objAttriList[0]); break; case eventTypeRecord.ResetOilTank: MessageDispatcher.SendMessage("LoadResetOilTankEvent", (object)eventItem.objAttriList[0].ObjName); break; case eventTypeRecord.OilTankTimer: MessageDispatcher.SendMessage("LoadOilTankTimerEvent", eventItem.objAttriList[0]); break; case eventTypeRecord.EditFluvio: MessageDispatcher.SendMessage("LoadEditFluvioEvent", eventItem.objAttriList[0]); break; case eventTypeRecord.RecordStartPosOfLine: //obj.GetComponent().GetTheLine(eventItem.Navto); break; case eventTypeRecord.LatiAttri: MessageDispatcher.SendMessage("LoadControlLatiEvent", eventItem.objAttriList[0]); break; case eventTypeRecord.AddLineToXFY: //MessageDispatcher.SendMessage("LoadAddLineToXFYEvent", eventItem.objAttriList[0]); var lineName = eventItem.objAttriList[0].ObjName; var XFY_XFC = eventItem.objAttriList[0].TaskName; var begin = GameObject.Find(eventItem.objAttriList[0].TopName); var end = GameObject.Find(eventItem.objAttriList[0].OtherAttri); GameObject line = GameObject.Find(lineName) as GameObject; if(line && GameObject.Find(XFY_XFC)) { line.GetComponent().GetTheMessage(begin, end); //line.GetComponent().cengID = eventItem.objAttriList[0].CengID; //line.GetComponent().CengIDBuildType = eventItem.objAttriList[0].buildTpye; GameObject.Find(XFY_XFC).GetComponent().LineList_GameObject.Add(line); GameObject.Find(XFY_XFC).GetComponent().isConnectCar = true; CorrectLine(line);//矫正下管线 } break; case eventTypeRecord.StartPractice: MessageDispatcher.SendMessage("LoadStartPracticeEvent"); break; case eventTypeRecord.FireStartSpread: MessageDispatcher.SendMessage("LoadFireStartSpreadEvent", (object)eventItem.objAttriList[0].ObjName); break; case eventTypeRecord.ResetFire: MessageDispatcher.SendMessage("LoadResetFireEvent", (object)eventItem.objAttriList[0].ObjName); break; case eventTypeRecord.StartAttack: MessageDispatcher.SendMessage("LoadStartAttackEvent"); break; case eventTypeRecord.SwitchingFloor: InputManager.Instance_.ClearSelectedCharacters(); if (eventItem.objAttriList.Count != 0) { for (int i = 0; i < eventItem.objAttriList[0].AllMembers.Count; i++) { var xiaofangyuan = GameObject.Find("pxiaofangyuan").transform.Find(eventItem.objAttriList[0].AllMembers[i]); if (xiaofangyuan!=null) InputManager.Instance_.addItem(xiaofangyuan.gameObject); } } MessageDispatcher.SendMessage(eventItem.BuildTYPE, "SELECTFLOOR_EVENT", (object)eventItem.TheFloor); BuildItem build = new BuildItem(); build.buildType = eventItem.BuildTYPE; build.floor = eventItem.TheFloor; MessageDispatcher.SendMessage("ChangeFloor", build); if (eventItem.camAttributeList.Count != 0) { MouseFollowRotation.Instance.CameraAttri = eventItem.camAttributeList[0]; } break; case eventTypeRecord.AddRecordTag://不用做什么处理 TheBackView.instance.BackApect(eventItem); break; case eventTypeRecord.AddFilterTag://不用做什么处理 TheBackView.instance.BackApect(eventItem); break; case eventTypeRecord.AddLoadTag://不用做什么处理 TheBackView.instance.BackApect(eventItem); break; case eventTypeRecord.AddGpcAUTOTag://不用做什么处理 if (ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.CheckScore || ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.MakeScore) { TheBackView.instance.BackApect(eventItem); } break; //case eventTypeRecord.ZongJiePingPanTag: // if (ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.CheckScore || // ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.MakeScore) // { // TheBackView.instance.BackApect(eventItem); // } //break; case eventTypeRecord.FineTuning: TheBackView.instance.BackApect(eventItem); MessageDispatcher.SendMessage("LoadFineTuningEvent", eventItem.objAttriList[0]); break; case eventTypeRecord.RecordZhiJiaBack: MessageDispatcher.SendMessage("LoadZhiJiaBack", (object)eventItem.objAttriList[0].ObjName); break; case eventTypeRecord.EditWeather: MessageDispatcher.SendMessage("LoadEditWeatherEvent", eventItem.weatherAttriList[0]); break; case eventTypeRecord.EditInsiderUI: MessageDispatcher.SendMessage("LoadEditInsiderEvent", eventItem.insderUIAttriList[0]); break; //case eventTypeRecord.CompleteAttack: // obj.GetComponent().GetDestroy(); // EventIndex++; // break; case eventTypeRecord.OpenEquipWin: TrackRecordHelpClass.LoadOpenEquipWinEvent(eventItem); break; case eventTypeRecord.CloseEquipWin: TrackRecordHelpClass.LoadCloseEquipWinEvent(eventItem); break; case eventTypeRecord.RecordQUYU: TrackRecordHelpClass.LoadPolygonDian(eventItem); break; case eventTypeRecord.RecordPolygonThreeList: TrackRecordHelpClass.LoadPolygonDianThreeList(eventItem); break; case eventTypeRecord.SubmitEquip: TrackRecordHelpClass.LoadSubmitEquipEvent(eventItem.objAttriList[0]); break; case eventTypeRecord.OpenUI: TrackRecordHelpClass.OpenUIEvent(eventItem,EventIndex); break; case eventTypeRecord.CloseUI: TrackRecordHelpClass.CloseUIEvent(eventItem, EventIndex); break; case eventTypeRecord.EditZaWurUI: TrackRecordHelpClass.EditZaWuEvent(eventItem); break; case eventTypeRecord.PoChaiUI: break; case eventTypeRecord.StairGo: TrackRecordHelpClass.LoadGoStairEvent(eventItem); break; case eventTypeRecord.Y: MessageDispatcher.SendMessage("Y",(object)eventItem.TheFloor); break; case eventTypeRecord.EseCameraPos: if (MySceneManager.GetActiveScene().name.Equals("1") || MySceneManager.GetActiveScene().name.Equals("3"))//处理城市综合体超高层 { if (GameObject.Find("YueTanShangSha")) { MouseFollowRotation.Instance.CameraAttri = eventItem.camAttributeList[0]; } } break; default: return; } if (IsShowTiShi) { EventIndex++; } } IEnumerator delayActive() { // GameObject.Find("Canvas/RightSet/备课模式/Grid/辅助工具").GetComponent().isOn = true; yield return new WaitForEndOfFrame(); UPAndDownAttack.Instance.UpAndDownAttack(false);//此bool值在此无意义 // GameObject.Find("Canvas/RightSet/备课模式/Grid/辅助工具").GetComponent().isOn = false; } public void CorrectLine(GameObject line) { var begin = line.GetComponent().Begin; var end = line.GetComponent().End; if ((end && end.name.Contains("xiaofangche")) && (begin && begin.name.Contains("xiaofangche"))) { return; } if (end && end.name.Contains("xiaofang"))//管线结尾链接的是消防员/车,矫正下终点位置 { var lineCount = line.transform.childCount; if (lineCount > 0) { var line_correct = line.transform.GetChild(lineCount - 1); var p1 = line_correct.GetComponent().beginP; var p2 = end.transform.position; CorrectLine(line_correct, p1, p2); } } if (begin && begin.name.Contains("xiaofang"))//管线结尾链接的是消防员/车,矫正下终点位置 { var lineCount = line.transform.childCount; if (lineCount > 0) { var line_correct = line.transform.GetChild(0); var p2 = line_correct.GetComponent().endP; var p1 = begin.transform.position; CorrectLine(line_correct, p1, p2); } } } private void CorrectLine(Transform line_correct, Vector3 p1,Vector3 p2) { Vector3 tempPos = (p1 + p2) / 2;//计算两个点的中点坐标, line_correct.position = tempPos; line_correct.up = (-(p2 - p1)).normalized;//改变线条的朝向 float distance = Vector3.Distance(p1, p2);//计算两点的距离 line_correct.localScale = new Vector3(5f, distance * 18, 5f);//延长线条,连接两点。 line_correct.GetComponent().SetPos(p1, p2);//记录该节管线的首尾点坐标,用于后期管线位置矫正 } } public class PlayBackEventArgs : EventArgs { public bool IsMakeScore; public PlayBackEventArgs(bool isMakeScore) { IsMakeScore = isMakeScore; } } }