using AX.MessageSystem; using AX.NetworkSystem; using System.Collections; using System.Collections.Generic; using UnityEngine; public class DisasterLoad : MonoBehaviour { private DisasterLibraryFile disaster; private WindZone windZone; private GameObject P_FireNormal; public GameObject fireNormalPrefab; private GameObject P_FireSpreadLine; public GameObject fireSpreadLinePrefab; private GameObject P_FireLiquidLevel; public GameObject fireLiquidLevelPrefab; private GameObject P_Leak1; public GameObject leak1Prefab; private GameObject P_Leak2; public GameObject leak2Prefab; private GameObject P_Wounded; public GameObject woundedPrefab; private GameObject P_TrappedPerson; public GameObject trappedPrefab; private GameObject P_Insider; public GameObject insiderPrefab; public GameObject dangerousPrefab; private GameObject P_Dangerous; void Awake() { } // Use this for initialization void Start() { disaster = GameSettings.othersSettings.disaster; windZone = GameObject.Find("WindZone").GetComponent(); P_FireNormal = GameObject.Find("P_FireNormal"); P_FireSpreadLine = GameObject.Find("P_FireSpreadLine"); P_FireLiquidLevel = GameObject.Find("P_FireLiquidLevel"); P_Leak1 = GameObject.Find("P_Leak1"); P_Leak2 = GameObject.Find("P_Leak2"); P_Wounded = GameObject.Find("P_Wounded"); P_TrappedPerson = GameObject.Find("P_TrappedPerson"); P_Insider = GameObject.Find("P_Insider"); P_Dangerous = GameObject.Find("P_DangerousCargo"); if (disaster != null && !GameSettings.disasterSetting.isCteateDisaster//只有创建灾情时,此isCteateDisaster不为true;查看,编辑为false ) { if (GameSettings.othersSettings.mode==Mode.DisasterManagement) { LoadDisaster(); } } } // Update is called once per frame void Update() { } /// /// 加载灾情 /// public void LoadDisaster() { if (disaster!=null) { //设置风向风力 WindZoneSet(); //设置油罐 OilTanksSet(); //设置油罐设置UI,风向风力UI,胜利条件UI,报警信息UI,普通火属性设置UI及他们的是否可以修改 MessageDispatcher.SendMessage("LOAD_UIDISASTER"); //生成普通火 CloneNormalFire(); //生成全液面火 CloneLiquidLevelFire(); //生成泄露1 CloneLeak1(); //生成泄露2 CloneLeak2(); //生成伤员 CloneWounded(); //生成被困人员 CloneTrapped(); //生成知情人 CloneInsider(); CloneDangerous(); } } /// /// 设置风向风力 /// private void WindZoneSet() { var baseGameObjInfo = windZone.gameObject.GetComponent(); var cloneGameObjInfo = windZone.gameObject.GetComponent(); WindDisaster windDisaster; for (int i = 0; i < disaster.DisasterList.Count; i++) { if (disaster.DisasterList[i].Disaster.GetType().Name == "WindDisaster") { windDisaster = (WindDisaster)disaster.DisasterList[i].Disaster; BaseInfoSet(baseGameObjInfo, cloneGameObjInfo, windDisaster); windZone.transform.rotation = windDisaster.Rotation; windZone.windMain = windDisaster.WidnForce; //风力风向设置同步 if (GameSettings.othersSettings.mode!=Mode.DisasterManagement) { WindZoneSyncData arg = new WindZoneSyncData(); arg.SendUserID = CurrentUserInfo.mySelf.Id; arg.gameObjID = baseGameObjInfo.gameObjID; arg.Rotation = windDisaster.Rotation; arg.windMain = windDisaster.WidnForce; NetworkManager.Default.SendAsync("WIND_ZONE_SYNC", arg); } break; } } } /// /// 设置油罐信息 /// public void OilTanksSet() { OilTankDisaster oilTankDisaster; GameObject oilTank; BaseGameObjInfo baseGameObjInfo; CloneGameObjInfo cloneGameObjInfo; OilTankMessage oilTankMessage; for (int i = 0; i < disaster.DisasterList.Count; i++) { if (disaster.DisasterList[i].Disaster.GetType().Name == "OilTankDisaster") { oilTankDisaster = (OilTankDisaster)disaster.DisasterList[i].Disaster; oilTank = EntitiesManager.Instance.GetEntityByID(oilTankDisaster.GameObjID); if (oilTank) { baseGameObjInfo = oilTank.GetComponent(); cloneGameObjInfo = oilTank.GetComponent(); BaseInfoSet(baseGameObjInfo, cloneGameObjInfo, oilTankDisaster); oilTankMessage = oilTank.GetComponent(); oilTankMessage.MatterContainer = oilTankDisaster.MatterContainer; oilTankMessage.Reserves = oilTankDisaster.Reserves; oilTankMessage.OutShowHeight = oilTankMessage.MyHeight * oilTankDisaster.Reserves; oilTankMessage.SetOilStandard(); oilTankMessage.TakeTime = oilTankDisaster.TakeTime; oilTankMessage.DurationTime = oilTankDisaster.DurationTime; oilTankMessage.FlowRate = oilTankDisaster.FlowRate; oilTankMessage.BoilProb = oilTankDisaster.BoilProb; oilTankMessage.HasLeakeSet = oilTankDisaster.HasLeakeSet; // 设置爆炸信息 if (oilTankDisaster.IsCanExplode) { oilTankMessage.IsCanExplode = oilTankDisaster.IsCanExplode; oilTankMessage.ExplodeTime = oilTankDisaster.ExplodeTime; oilTankMessage.ExplodeDeadRange = oilTankDisaster.ExplodeDeadRange; oilTankMessage.ExplodeHurtRange = oilTankDisaster.ExplodeHurtRange; } // 设置喷溅沸溢信息 oilTankMessage.SplashTime = oilTankDisaster.SplashTime; oilTankMessage.BoilOverTime = oilTankDisaster.BoilOverTime; oilTankMessage.SplashProbability = oilTankDisaster.SplashProbability; oilTankMessage.BoilOverProbability = oilTankDisaster.BoilOverProbability; oilTankMessage.BoilOverDeadRange = oilTankDisaster.BoilOverDeadRange; oilTankMessage.IsCanBoilOver = oilTankDisaster.isBoilOver; //油罐信息同步 if (GameSettings.othersSettings.mode!=Mode.DisasterManagement) { OilTankInfoSyncData arg = new OilTankInfoSyncData(); arg.gameObjID = baseGameObjInfo.gameObjID; arg.SendUserID = CurrentUserInfo.mySelf.Id; arg.MatterContainer = oilTankMessage.MatterContainer; arg.Reserves = oilTankMessage.Reserves; arg.OutShowHeight = oilTankMessage.OutShowHeight; arg.Taketime = oilTankMessage.TakeTime; arg.DurationTime = oilTankMessage.DurationTime; arg.FlowRate = oilTankMessage.FlowRate; arg.BoilProb = oilTankMessage.BoilProb; arg.HasLeakeSet = oilTankMessage.HasLeakeSet; // 同步爆炸信息 arg.isExplode = oilTankMessage.IsCanExplode; arg.ExplodeTime = oilTankMessage.ExplodeTime; arg.ExplodeDeadRange = oilTankMessage.ExplodeDeadRange; arg.ExplodeHurtRange = oilTankMessage.ExplodeHurtRange; // 设置喷溅沸溢信息 arg.SplashTime = oilTankMessage.SplashTime; arg.BoilOverTime = oilTankMessage.BoilOverTime; arg.SplashProbability = oilTankMessage.SplashProbability; arg.BoilOverProbability = oilTankMessage.BoilOverProbability; arg.BoilOverDeadRange = oilTankMessage.BoilOverDeadRange; arg.isBoilOver = oilTankMessage.IsCanBoilOver; NetworkManager.Default.SendAsync("OIL_TANK_INFO_SYNC", arg); } } } } } /// /// 生成普通火 /// private void CloneNormalFire() { FireNormalDisaster fireNormalDisaster; BaseGameObjInfo baseGameObjInfo; CloneGameObjInfo cloneGameObjInfo; for (int i = 0; i < disaster.DisasterList.Count; i++) { if (disaster.DisasterList[i].Disaster.GetType().Name == "FireNormalDisaster") { fireNormalDisaster = (FireNormalDisaster)disaster.DisasterList[i].Disaster; GameObject obj = EntitiesManager.Instance.CreateObj(fireNormalPrefab, fireNormalDisaster.Position, P_FireNormal.transform, fireNormalDisaster.GameObjID); obj.name = CloneObjNameTool.Instance().GetCloneObjectName(fireNormalDisaster.GameObjType); SelectedObjs.gameObjs.Add(obj); baseGameObjInfo = obj.GetComponent(); cloneGameObjInfo = obj.GetComponent(); BaseInfoSet(baseGameObjInfo, cloneGameObjInfo, fireNormalDisaster); //克隆同步 if (GameSettings.othersSettings.mode!=Mode.DisasterManagement) { CloneDisasterSyncData clonesync = new CloneDisasterSyncData(); clonesync.ClonePosition = fireNormalDisaster.Position; clonesync.SendUserID = CurrentUserInfo.mySelf.Id; clonesync.name = obj.name; clonesync.floorNum = cloneGameObjInfo.floorNum; clonesync.buildNum = cloneGameObjInfo.buildNum; clonesync.interlayerNum = cloneGameObjInfo.interlayerNum; clonesync.gameObjID = cloneGameObjInfo.gameObjID; clonesync.gameObjType = cloneGameObjInfo.gameObjType; clonesync.UserID = cloneGameObjInfo.UserID; NetworkManager.Default.SendAsync("CLONE_SINGLE_DISASTER_SYNC", clonesync); } obj.GetComponent().fireAttribute = fireNormalDisaster.fireAttribute; obj.GetComponent().GetSpreadFirePositions();//生成火蔓延点 //火的蔓延设置同步 if (GameSettings.othersSettings.mode!=Mode.DisasterManagement) { FireOriginAttributeSyncData arg = new FireOriginAttributeSyncData(); arg.FireAttribute = fireNormalDisaster.fireAttribute; arg.SendUserID = CurrentUserInfo.mySelf.Id; arg.gameObjID = baseGameObjInfo.gameObjID; NetworkManager.Default.SendAsync("FIRE_ORIGINAL_ATTRIBUTE", arg); } MessageDispatcher.SendMessage(fireNormalDisaster.GameObjID, "FIRE_INITIALSIZE_SET", fireNormalDisaster.fireAttribute.initialSize); MessageDispatcher.SendMessage("SET_SMOKE_DIRECTION"); if (GameSettings.othersSettings.isSelectedDisaster) { if (GameSettings.othersSettings.mode == Mode.DisasterManagement) { //灾情库编辑,灾情库查看; 加载灾情库进入演练的情况下不显示火的蔓延范围 CloneSpreadFireLine(fireNormalDisaster); } } } } } private void CloneSpreadFireLine(FireNormalDisaster fireNormalDisaster) { List pathPoints = fireNormalDisaster.fireAttribute.pathPoints; Vector3 startPoint; Vector3 endPoint; for (int i = 0; i < pathPoints.Count; i++) {//三种蔓延方式都要画 if ((i + 1) < pathPoints.Count) { startPoint = pathPoints[i]; endPoint = pathPoints[i + 1]; Vector3 clonedObjPos = (startPoint + endPoint) / 2; clonedObjPos = new Vector3(clonedObjPos.x, clonedObjPos.y + 0.1f, clonedObjPos.z); var clonedObj = EntitiesManager.Instance.CreateObj(fireSpreadLinePrefab, clonedObjPos, P_FireSpreadLine.transform, EntitiesManager.Instance.CreateObjID(CurrentUserInfo.mySelf.Id)); clonedObj.transform.forward = (-(endPoint - startPoint)).normalized;//改变线条的朝向 float distance = Vector3.Distance(startPoint, endPoint);//计算两点的距离 clonedObj.transform.localScale = new Vector3(30f, 30f, distance * 108);//延长线条,连接两点。 clonedObj.GetComponent().fireGameObjID = fireNormalDisaster.GameObjID; //设置克隆物体所在楼层等基本属性,属性从点击的对象上获取 CloneGameObjInfo cloneObjInfo = clonedObj.GetComponent(); cloneObjInfo.gameObjType = CloneObjType.FireSpreadLine; cloneObjInfo.UserID = CurrentUserInfo.mySelf.Id; cloneObjInfo.buildNum = fireNormalDisaster.BuildNum; cloneObjInfo.floorNum = fireNormalDisaster.FloorNum; cloneObjInfo.interlayerNum = fireNormalDisaster.InterlayerNum; clonedObj.SetActive(false); } } if (fireNormalDisaster.fireAttribute.spreadWay == SpreadWay.Are || fireNormalDisaster.fireAttribute.spreadWay == SpreadWay.Around) { startPoint = pathPoints[pathPoints.Count - 1]; endPoint = pathPoints[0]; Vector3 clonedObjPos = (startPoint + endPoint) / 2; clonedObjPos = new Vector3(clonedObjPos.x, clonedObjPos.y + 0.1f, clonedObjPos.z); var clonedObj = EntitiesManager.Instance.CreateObj(fireSpreadLinePrefab, clonedObjPos, P_FireSpreadLine.transform, EntitiesManager.Instance.CreateObjID(CurrentUserInfo.mySelf.Id)); clonedObj.transform.forward = (-(endPoint - startPoint)).normalized;//改变线条的朝向 float distance = Vector3.Distance(startPoint, endPoint);//计算两点的距离 clonedObj.transform.localScale = new Vector3(30f, 30f, distance * 108);//延长线条,连接两点。 clonedObj.GetComponent().fireGameObjID = fireNormalDisaster.GameObjID; clonedObj.GetComponent().flag = true; //设置克隆物体所在楼层等基本属性,属性从点击的对象上获取 CloneGameObjInfo cloneObjInfo = clonedObj.GetComponent(); cloneObjInfo.gameObjType = CloneObjType.FireSpreadLine; cloneObjInfo.UserID = CurrentUserInfo.mySelf.Id; cloneObjInfo.buildNum = fireNormalDisaster.BuildNum; cloneObjInfo.floorNum = fireNormalDisaster.FloorNum; cloneObjInfo.interlayerNum = fireNormalDisaster.InterlayerNum; clonedObj.SetActive(false); } } /// /// 生成全液面火 /// private void CloneLiquidLevelFire() { FireLiquidLevelDisaster FireLiquidLevelDisaster; BaseGameObjInfo baseGameObjInfo; CloneGameObjInfo cloneGameObjInfo; for (int i = 0; i < disaster.DisasterList.Count; i++) { if (disaster.DisasterList[i].Disaster.GetType().Name == "FireLiquidLevelDisaster") { FireLiquidLevelDisaster = (FireLiquidLevelDisaster)disaster.DisasterList[i].Disaster; GameObject obj = EntitiesManager.Instance.CreateObj(fireLiquidLevelPrefab, FireLiquidLevelDisaster.Position, P_FireLiquidLevel.transform, FireLiquidLevelDisaster.GameObjID); obj.name = CloneObjNameTool.Instance().GetCloneObjectName(FireLiquidLevelDisaster.GameObjType); SelectedObjs.gameObjs.Add(obj); baseGameObjInfo = obj.GetComponent(); cloneGameObjInfo = obj.GetComponent(); BaseInfoSet(baseGameObjInfo, cloneGameObjInfo, FireLiquidLevelDisaster); obj.GetComponent().FireScale = FireLiquidLevelDisaster.fireScale; obj.GetComponent().showTime = FireLiquidLevelDisaster.showTime; obj.GetComponent().TargetNormalID = FireLiquidLevelDisaster.OilTankId; MessageDispatcher.SendMessage("SetTime", new SetLiquipdata() { LiquipId = obj.GetComponent().gameObjID, time = FireLiquidLevelDisaster.showTime, }); MessageDispatcher.SendMessage("SET_SMOKE_DIRECTION"); //克隆同步 if (GameSettings.othersSettings.mode!=Mode.DisasterManagement) { CloneDisasterSyncData clonesync = new CloneDisasterSyncData(); clonesync.ClonePosition = FireLiquidLevelDisaster.Position; clonesync.SendUserID = CurrentUserInfo.mySelf.Id; //clonesync.parentUID =GetComponent().Id; clonesync.name = obj.name; //clonesync.PrefabsPath = PrefabsPath + cloneObjType.ToString(); clonesync.floorNum = cloneGameObjInfo.floorNum; clonesync.buildNum = cloneGameObjInfo.buildNum; clonesync.interlayerNum = cloneGameObjInfo.interlayerNum; clonesync.gameObjID = cloneGameObjInfo.gameObjID; clonesync.gameObjType = cloneGameObjInfo.gameObjType; clonesync.UserID = cloneGameObjInfo.UserID; NetworkManager.Default.SendAsync("CLONE_SINGLE_DISASTER_SYNC", clonesync); //全液面火同步 FireLiquidScaleSyncData arg = new FireLiquidScaleSyncData(); arg.gameObjID = cloneGameObjInfo.gameObjID; arg.SendUserID = CurrentUserInfo.mySelf.Id; arg.firescale = FireLiquidLevelDisaster.fireScale; arg.oilTankID = FireLiquidLevelDisaster.OilTankId; NetworkManager.Default.SendAsync("SET_FIRE_LIQUID_SYNC", arg); if(FireLiquidLevelDisaster.showTime!="00:00:00") { obj.SetActive(false); NetworkManager.Default.SendAsync("SET_LIQUIP_HIDE_SYNC", obj.GetComponent().gameObjID); } } } } } /// /// 生成泄露1 /// private void CloneLeak1() { Leak1Disaster Leak1Disaster; BaseGameObjInfo baseGameObjInfo; CloneGameObjInfo cloneGameObjInfo; for (int i = 0; i < disaster.DisasterList.Count; i++) { if (disaster.DisasterList[i].Disaster.GetType().Name == "Leak1Disaster") { Leak1Disaster = (Leak1Disaster)disaster.DisasterList[i].Disaster; GameObject obj = EntitiesManager.Instance.CreateObj(leak1Prefab, Leak1Disaster.Position, P_Leak1.transform, Leak1Disaster.GameObjID); obj.name = CloneObjNameTool.Instance().GetCloneObjectName(Leak1Disaster.GameObjType); SelectedObjs.gameObjs.Add(obj); baseGameObjInfo = obj.GetComponent(); cloneGameObjInfo = obj.GetComponent(); BaseInfoSet(baseGameObjInfo, cloneGameObjInfo, Leak1Disaster); obj.GetComponent().OilTankId = Leak1Disaster.OilTankId; //克隆同步 if (GameSettings.othersSettings.mode!=Mode.DisasterManagement) { CloneDisasterSyncData clonesync = new CloneDisasterSyncData(); clonesync.ClonePosition = Leak1Disaster.Position; clonesync.SendUserID = CurrentUserInfo.mySelf.Id; //clonesync.parentUID =GetComponent().Id; clonesync.name = obj.name; //clonesync.PrefabsPath = PrefabsPath + cloneObjType.ToString(); clonesync.floorNum = cloneGameObjInfo.floorNum; clonesync.buildNum = cloneGameObjInfo.buildNum; clonesync.interlayerNum = cloneGameObjInfo.interlayerNum; clonesync.gameObjID = cloneGameObjInfo.gameObjID; clonesync.gameObjType = cloneGameObjInfo.gameObjType; clonesync.UserID = cloneGameObjInfo.UserID; clonesync.HitObjID = Leak1Disaster.OilTankId; NetworkManager.Default.SendAsync("CLONE_SINGLE_DISASTER_SYNC", clonesync); } } } } /// /// 生成泄露2 /// private void CloneLeak2() { Leak2Disaster Leak2Disaster; BaseGameObjInfo baseGameObjInfo; CloneGameObjInfo cloneGameObjInfo; for (int i = 0; i < disaster.DisasterList.Count; i++) { if (disaster.DisasterList[i].Disaster.GetType().Name == "Leak2Disaster") { Leak2Disaster = (Leak2Disaster)disaster.DisasterList[i].Disaster; GameObject obj = EntitiesManager.Instance.CreateObj(leak2Prefab, Leak2Disaster.Position, P_Leak2.transform, Leak2Disaster.GameObjID); obj.name = CloneObjNameTool.Instance().GetCloneObjectName(Leak2Disaster.GameObjType); SelectedObjs.gameObjs.Add(obj); baseGameObjInfo = obj.GetComponent(); cloneGameObjInfo = obj.GetComponent(); BaseInfoSet(baseGameObjInfo, cloneGameObjInfo, Leak2Disaster); obj.GetComponent().level = Leak2Disaster.level; obj.GetComponent().OilTankId = Leak2Disaster.OilTankId; //克隆同步 if (GameSettings.othersSettings.mode!=Mode.DisasterManagement) { CloneDisasterSyncData clonesync = new CloneDisasterSyncData(); clonesync.ClonePosition = Leak2Disaster.Position; clonesync.SendUserID = CurrentUserInfo.mySelf.Id; //clonesync.parentUID =GetComponent().Id; clonesync.name = obj.name; //clonesync.PrefabsPath = PrefabsPath + cloneObjType.ToString(); clonesync.floorNum = cloneGameObjInfo.floorNum; clonesync.buildNum = cloneGameObjInfo.buildNum; clonesync.interlayerNum = cloneGameObjInfo.interlayerNum; clonesync.gameObjID = cloneGameObjInfo.gameObjID; clonesync.gameObjType = cloneGameObjInfo.gameObjType; clonesync.UserID = cloneGameObjInfo.UserID; clonesync.HitObjID = Leak2Disaster.OilTankId; NetworkManager.Default.SendAsync("CLONE_SINGLE_DISASTER_SYNC", clonesync); //Leak2同步 Leak2SyncData arg = new Leak2SyncData(); arg.SendUserID = CurrentUserInfo.mySelf.Id; arg.gameObjID = cloneGameObjInfo.gameObjID; arg.Level = Leak2Disaster.level; NetworkManager.Default.SendAsync("SET_LEAK2_SYNC", clonesync); } } } } /// /// 生成伤员 /// private void CloneWounded() { WoundedDisaster WoundedDisaster; BaseGameObjInfo baseGameObjInfo; CloneGameObjInfo cloneGameObjInfo; for (int i = 0; i < disaster.DisasterList.Count; i++) { if (disaster.DisasterList[i].Disaster.GetType().Name == "WoundedDisaster") { WoundedDisaster = (WoundedDisaster)disaster.DisasterList[i].Disaster; GameObject obj = EntitiesManager.Instance.CreateObj(woundedPrefab, WoundedDisaster.Position, P_Wounded.transform, WoundedDisaster.GameObjID); obj.name = CloneObjNameTool.Instance().GetCloneObjectName(WoundedDisaster.GameObjType); SelectedObjs.gameObjs.Add(obj); baseGameObjInfo = obj.GetComponent(); cloneGameObjInfo = obj.GetComponent(); BaseInfoSet(baseGameObjInfo, cloneGameObjInfo, WoundedDisaster); //克隆同步 if (GameSettings.othersSettings.mode!=Mode.DisasterManagement) { CloneDisasterSyncData clonesync = new CloneDisasterSyncData(); clonesync.ClonePosition = WoundedDisaster.Position; clonesync.SendUserID = CurrentUserInfo.mySelf.Id; //clonesync.parentUID =GetComponent().Id; clonesync.name = obj.name; //clonesync.PrefabsPath = PrefabsPath + cloneObjType.ToString(); clonesync.floorNum = cloneGameObjInfo.floorNum; clonesync.buildNum = cloneGameObjInfo.buildNum; clonesync.interlayerNum = cloneGameObjInfo.interlayerNum; clonesync.gameObjID = cloneGameObjInfo.gameObjID; clonesync.gameObjType = cloneGameObjInfo.gameObjType; clonesync.UserID = cloneGameObjInfo.UserID; NetworkManager.Default.SendAsync("CLONE_SINGLE_DISASTER_SYNC", clonesync); } } } } /// /// 生成被困人员 /// private void CloneTrapped() { TrappedDisaster TrappedDisaster; BaseGameObjInfo baseGameObjInfo; CloneGameObjInfo cloneGameObjInfo; for (int i = 0; i < disaster.DisasterList.Count; i++) { if (disaster.DisasterList[i].Disaster.GetType().Name == "TrappedDisaster") { TrappedDisaster = (TrappedDisaster)disaster.DisasterList[i].Disaster; GameObject obj = EntitiesManager.Instance.CreateObj(trappedPrefab, TrappedDisaster.Position, P_TrappedPerson.transform, TrappedDisaster.GameObjID); obj.name = CloneObjNameTool.Instance().GetCloneObjectName(TrappedDisaster.GameObjType); SelectedObjs.gameObjs.Add(obj); baseGameObjInfo = obj.GetComponent(); cloneGameObjInfo = obj.GetComponent(); BaseInfoSet(baseGameObjInfo, cloneGameObjInfo, TrappedDisaster); //克隆同步 if (GameSettings.othersSettings.mode!=Mode.DisasterManagement) { CloneDisasterSyncData clonesync = new CloneDisasterSyncData(); clonesync.ClonePosition = TrappedDisaster.Position; clonesync.SendUserID = CurrentUserInfo.mySelf.Id; //clonesync.parentUID =GetComponent().Id; clonesync.name = obj.name; //clonesync.PrefabsPath = PrefabsPath + cloneObjType.ToString(); clonesync.floorNum = cloneGameObjInfo.floorNum; clonesync.buildNum = cloneGameObjInfo.buildNum; clonesync.interlayerNum = cloneGameObjInfo.interlayerNum; clonesync.gameObjID = cloneGameObjInfo.gameObjID; clonesync.gameObjType = cloneGameObjInfo.gameObjType; clonesync.UserID = cloneGameObjInfo.UserID; NetworkManager.Default.SendAsync("CLONE_SINGLE_DISASTER_SYNC", clonesync); } } } } /// /// 生成知情人 /// private void CloneInsider() { InsiderDisaster InsiderDisaster; BaseGameObjInfo baseGameObjInfo; CloneGameObjInfo cloneGameObjInfo; for (int i = 0; i < disaster.DisasterList.Count; i++) { if (disaster.DisasterList[i].Disaster.GetType().Name == "InsiderDisaster") { InsiderDisaster = (InsiderDisaster)disaster.DisasterList[i].Disaster; GameObject obj = EntitiesManager.Instance.CreateObj(insiderPrefab, InsiderDisaster.Position, P_Insider.transform, InsiderDisaster.GameObjID); obj.name = CloneObjNameTool.Instance().GetCloneObjectName(InsiderDisaster.GameObjType); SelectedObjs.gameObjs.Add(obj); baseGameObjInfo = obj.GetComponent(); cloneGameObjInfo = obj.GetComponent(); BaseInfoSet(baseGameObjInfo, cloneGameObjInfo, InsiderDisaster); //克隆同步 if (GameSettings.othersSettings.mode!=Mode.DisasterManagement) { CloneDisasterSyncData clonesync = new CloneDisasterSyncData(); clonesync.ClonePosition = InsiderDisaster.Position; clonesync.SendUserID = CurrentUserInfo.mySelf.Id; //clonesync.parentUID =GetComponent().Id; clonesync.name = obj.name; //clonesync.PrefabsPath = PrefabsPath + cloneObjType.ToString(); clonesync.floorNum = cloneGameObjInfo.floorNum; clonesync.buildNum = cloneGameObjInfo.buildNum; clonesync.interlayerNum = cloneGameObjInfo.interlayerNum; clonesync.gameObjID = cloneGameObjInfo.gameObjID; clonesync.gameObjType = cloneGameObjInfo.gameObjType; clonesync.UserID = cloneGameObjInfo.UserID; NetworkManager.Default.SendAsync("CLONE_SINGLE_DISASTER_SYNC", clonesync); } } } } /// /// 生成危险品 /// private void CloneDangerous() { DangerousDisaster DangerousDisaster; BaseGameObjInfo baseGameObjInfo; CloneGameObjInfo cloneGameObjInfo; for (int i = 0; i < disaster.DisasterList.Count; i++) { if (disaster.DisasterList[i].Disaster.GetType().Name == "DangerousDisaster") { DangerousDisaster = (DangerousDisaster)disaster.DisasterList[i].Disaster; GameObject obj = EntitiesManager.Instance.CreateObj(dangerousPrefab, DangerousDisaster.Position, P_Dangerous.transform, DangerousDisaster.GameObjID); obj.name = CloneObjNameTool.Instance().GetCloneObjectName(DangerousDisaster.GameObjType); SelectedObjs.gameObjs.Add(obj); baseGameObjInfo = obj.GetComponent(); cloneGameObjInfo = obj.GetComponent(); BaseInfoSet(baseGameObjInfo, cloneGameObjInfo, DangerousDisaster); //克隆同步 if (GameSettings.othersSettings.mode != Mode.DisasterManagement) { CloneDisasterSyncData clonesync = new CloneDisasterSyncData(); clonesync.ClonePosition = DangerousDisaster.Position; clonesync.SendUserID = CurrentUserInfo.mySelf.Id; //clonesync.parentUID =GetComponent().Id; clonesync.name = obj.name; //clonesync.PrefabsPath = PrefabsPath + cloneObjType.ToString(); clonesync.floorNum = cloneGameObjInfo.floorNum; clonesync.buildNum = cloneGameObjInfo.buildNum; clonesync.interlayerNum = cloneGameObjInfo.interlayerNum; clonesync.gameObjID = cloneGameObjInfo.gameObjID; clonesync.gameObjType = cloneGameObjInfo.gameObjType; clonesync.UserID = cloneGameObjInfo.UserID; NetworkManager.Default.SendAsync("CLONE_SINGLE_DISASTER_SYNC", clonesync); } } } } /// /// 设置对象基本信息 /// /// /// /// private void BaseInfoSet(BaseGameObjInfo baseGameObjInfo, CloneGameObjInfo cloneGameObjInfo, Disaster disaster) { if (baseGameObjInfo || cloneGameObjInfo) { Transform obj = null; if (baseGameObjInfo) { obj = baseGameObjInfo.transform; } if (cloneGameObjInfo) { obj = cloneGameObjInfo.transform; } if (obj != null) { obj.position = disaster.Position; obj.rotation = disaster.Rotation; obj.localScale = disaster.Scale; } } if (baseGameObjInfo) { baseGameObjInfo.gameObjID = disaster.GameObjID; baseGameObjInfo.gameObjType = disaster.GameObjType; baseGameObjInfo.UserID = CurrentUserInfo.mySelf.Id; baseGameObjInfo.UserID = disaster.UserID; } if (cloneGameObjInfo) { cloneGameObjInfo.buildNum = disaster.BuildNum; cloneGameObjInfo.floorNum = disaster.FloorNum; cloneGameObjInfo.interlayerNum = disaster.InterlayerNum; cloneGameObjInfo.ShoworHidden = disaster.ShoworHidden; } } }