Browse Source

非消防车辆不能下车。

返回再进入主场景执行某些功能报错,因为没有移除监听。
修改火的蔓延方式的回放记录。
修改旋转的回放记录。
连接管线的消防员收起管线后不能再连接管线问题修改。
出水旋转的回放记录修改。
二级节点添加滚动条。
修改区域设置回访记录。
天气记录不在记录xml文件。
develop
曹衍涛 4 years ago
parent
commit
9b50059e89
  1. BIN
      Assets/Prefab/UI/Canvas.prefab
  2. BIN
      Assets/Resources/Prefab/Car/Ambulance.prefab
  3. BIN
      Assets/Resources/Prefab/Car/GasEmergencyCar.prefab
  4. BIN
      Assets/Resources/Prefab/Car/PoliceCar.prefab
  5. BIN
      Assets/Resources/Prefab/Car/PowerRepairVehicles.prefab
  6. BIN
      Assets/Resources/Prefab/Car/WaterSupplyRepairCar.prefab
  7. 1
      Assets/Scripts/BaseUI/BaseInstanceMono.cs
  8. 2
      Assets/Scripts/DisasterSetting/FireSettingPanel.cs
  9. 43
      Assets/Scripts/DisasterSetting/FireSpreadCtrl.cs
  10. 79
      Assets/Scripts/DisasterSetting/SpreadFire.cs
  11. 5
      Assets/Scripts/Equip/Bag/Bag.cs
  12. 1
      Assets/Scripts/Equip/Bag/BagPanel.cs
  13. 4
      Assets/Scripts/Equip/EquipNumSelect/EquipNumSelectPanel.cs
  14. 39
      Assets/Scripts/GameObjectCtrl/ObjRotate.cs
  15. 40
      Assets/Scripts/HelpScripts/CloneGameObjInfo.cs
  16. 1
      Assets/Scripts/HelpScripts/CloneObjType.cs
  17. 3
      Assets/Scripts/InputSystem/InputManager/InputManager.cs
  18. 50
      Assets/Scripts/Power/AgentController.cs
  19. 17
      Assets/Scripts/Power/FiremanSkill/FireManMessage.cs
  20. 2
      Assets/Scripts/Power/FiremanSkill/XiaoFangYuanDrawLine.cs
  21. 64
      Assets/Scripts/Power/Task/ControlSprayHead.cs
  22. 1
      Assets/Scripts/Power/Task/ControlTruckArm.cs
  23. 4
      Assets/Scripts/Power/Task/FiremanControlSprayHead.cs
  24. 4
      Assets/Scripts/Power/Task/TruckMessages.cs
  25. 5
      Assets/Scripts/Replay/JsonObject.cs
  26. 29
      Assets/Scripts/Replay/NodeDetailShow.cs
  27. 13
      Assets/Scripts/Replay/RecordObjectBase.cs
  28. 3
      Assets/Scripts/Replay/ReplayManager.cs
  29. 7
      Assets/Scripts/Tool/InstanceText/TextControl.cs
  30. 2
      Assets/Scripts/Tool/RecordSetArea.cs
  31. 72
      Assets/Scripts/Tool/SetArea/DragVertice.cs
  32. 2
      Assets/Scripts/Tool/SetArea/Polygon.cs
  33. 205
      Assets/Scripts/Tool/SetArea/PolygonController.cs
  34. 6
      Assets/Scripts/Tool/SetArea/SetArea.cs
  35. 5
      Assets/Scripts/UIScripts/UIFloor.cs
  36. 8
      Assets/Scripts/UIScripts/WeatherSettingManager.cs

BIN
Assets/Prefab/UI/Canvas.prefab

Binary file not shown.

BIN
Assets/Resources/Prefab/Car/Ambulance.prefab

Binary file not shown.

BIN
Assets/Resources/Prefab/Car/GasEmergencyCar.prefab

Binary file not shown.

BIN
Assets/Resources/Prefab/Car/PoliceCar.prefab

Binary file not shown.

BIN
Assets/Resources/Prefab/Car/PowerRepairVehicles.prefab

Binary file not shown.

BIN
Assets/Resources/Prefab/Car/WaterSupplyRepairCar.prefab

Binary file not shown.

1
Assets/Scripts/BaseUI/BaseInstanceMono.cs

@ -53,6 +53,7 @@ public abstract class BaseInstanceMono : MonoBehaviour
MessageDispatcher.RemoveListener("CANCEL_SELECTED_COMMAND", Close);//ESC取消选中处理
MessageDispatcher.RemoveListener("DELETE_ALL_COMMAND", Close);
MessageDispatcher.RemoveListener("DELETE_COMMAND", Close);
MessageDispatcher.RemoveListener("RADIO_SELECTED_COMMAND", RadioSelect);//单选选中处理
}
private void OnDestroy()
{

2
Assets/Scripts/DisasterSetting/FireSettingPanel.cs

@ -362,7 +362,7 @@ public class FireSettingPanel : ResourceLoadPanel<FireSettingPanel>
}
else
{
if (Mathf.Abs(hit.transform.position.y - NowObj.transform.position.y) > 2)
if (Mathf.Abs(hit.transform.position.y - NowObj.transform.position.y) > 3)
return;
}
if (PathPointList.Count == 0)//第一次设置或重置后再设置蔓延路径的情况

43
Assets/Scripts/DisasterSetting/FireSpreadCtrl.cs

@ -1,9 +1,16 @@
using AX.MessageSystem;
using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[Serializable]
public class SpreadEndData//蔓延结束
{
public long gameObjectId;
}
[Serializable]
public class FireSpreadData : RecordObjectBase
{
@ -173,6 +180,21 @@ public class FireSpreadCtrl : MonoBehaviour
GetSpreadFirePositions();
StartCoroutine(WaitForStart(data.time));
}
public void AddSpreadEndRecordData()
{
if (ReplaySetting.PlayStatus == PlayStatus.isEditor && RecordManager.Instance.recordStatus == RecordStatus.normal)
{
SpreadEndData data = new SpreadEndData();
data.gameObjectId = GetComponent<BaseGameObjInfo>().gameObjID;
var eventData = new EventData();
eventData.time = RecordManager.Instance.RecordTimer;
eventData.cloneObjType = CloneObjType.None;
eventData.eventType = RecordEventType.FireSpreadEnd;
eventData.json = JsonConvert.SerializeObject(data);
RecordManager.Instance.jsonData.eventDataList.Add(eventData);
}
}
public IEnumerator WaitForStart(float time)
{
yield return new WaitForSeconds(time * 60 / ReplayManager.playSpeed);
@ -193,6 +215,7 @@ public class FireSpreadCtrl : MonoBehaviour
RecordManager.Instance.jsonData.eventDataList.Add(eventData);
}
}
//
private void CtrlFireSpread()
{
if (fire == null)
@ -203,6 +226,12 @@ public class FireSpreadCtrl : MonoBehaviour
{
if (straightSpread)
{
if (spreadFirePositions.Count == 0)
{
CancelInvoke("CtrlFireSpread");
isSpreading = false;
ResourceLoadWindow.Instance.LoadTextHintWindow("路径过窄请重新规划!", 3f);
}
if (index < spreadFirePositions.Count)
{
GameObject spreadFire = Instantiate(fire, spreadFirePositions[index++], Quaternion.identity,
@ -210,11 +239,13 @@ public class FireSpreadCtrl : MonoBehaviour
var spreadedFire = spreadFire.GetComponent<SpreadFire>();
spreadedFire.SourceId = GetComponent<CloneGameObjInfo>().GameObjID;
spreadFire.name = "straightSpread" + (index - 1);
AddRecordEventSpreadFire(gameObject, GetSpreadData());
spreadedFire.AddRecordDataCreat(gameObject);
// AddRecordEventSpreadFire(gameObject, GetSpreadData());
if (index == spreadFirePositions.Count)
{
CancelInvoke("CtrlFireSpread");
isSpreading = false;
AddSpreadEndRecordData();
ResourceLoadWindow.Instance.LoadTextHintWindow("蔓延已经完成!", 0.5f);
}
}
@ -222,6 +253,12 @@ public class FireSpreadCtrl : MonoBehaviour
if (areaSpread || aroundSpread)
{
if (spdFirePositions.Count == 0)
{
CancelInvoke("CtrlFireSpread");
isSpreading = false;
ResourceLoadWindow.Instance.LoadTextHintWindow("路径过窄请重新规划!", 3f);
}
if (index < spdFirePositions.Count)
{
List<Vector3> tempFirePosList = spdFirePositions[index++];
@ -236,12 +273,14 @@ public class FireSpreadCtrl : MonoBehaviour
spreadFire.name = "areaSpread" + (index - 1);
else
spreadFire.name = "aroundSpread" + (index - 1);
spreadedFire.AddRecordDataCreat(gameObject);
}
AddRecordEventSpreadFire(gameObject, GetSpreadData());
//AddRecordEventSpreadFire(gameObject, GetSpreadData());
if (index == spdFirePositions.Count)
{
CancelInvoke("CtrlFireSpread");
isSpreading = false;
AddSpreadEndRecordData();
ResourceLoadWindow.Instance.LoadTextHintWindow("蔓延已经完成!", 0.5f);
}
}

79
Assets/Scripts/DisasterSetting/SpreadFire.cs

@ -1,8 +1,85 @@
using System.Collections;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[Serializable]
public class SpreadFireCreatData //蔓延出来的火的创建
{
public long sourceId;
public string name;
public Vector3 position;//位置
public Vector3 eulerAngles;//旋转
public Vector3 scale;//缩放
public string buildNum;//楼号
public int floorNum;//层号
public int interlayerNum;//夹层号,0表示不是夹层,1表示第一个夹层
public int Layer;
}
[Serializable]
public class SpreadFireDestoryData//蔓延出来的火的删除
{
public long sourceId;
public string name;
}
public class SpreadFire : CloneGameObjInfo
{
public long SourceId;
public void AddRecordDataCreat(GameObject sourceObj)
{
SourceId = sourceObj.GetComponent<CloneGameObjInfo>().gameObjID;
GetComponent<CloneGameObjInfo>().buildNum = sourceObj.GetComponent<CloneGameObjInfo>().buildNum;//楼号
GetComponent<CloneGameObjInfo>().floorNum = sourceObj.GetComponent<CloneGameObjInfo>().floorNum;//层号
GetComponent<CloneGameObjInfo>().interlayerNum = sourceObj.GetComponent<CloneGameObjInfo>().interlayerNum;//夹层号,0表示不是夹层,1表示第一个夹层
GetComponent<CloneGameObjInfo>().Layer = sourceObj.GetComponent<CloneGameObjInfo>().Layer;
if (ReplaySetting.PlayStatus == PlayStatus.isEditor && RecordManager.Instance.recordStatus == RecordStatus.normal)
{
SpreadFireCreatData data = new SpreadFireCreatData();
data.name = gameObject.name;
data.sourceId = SourceId;
data.position = transform.localPosition;
data.eulerAngles = transform.localRotation.eulerAngles;
data.scale = transform.localScale;
data.buildNum = sourceObj.GetComponent<CloneGameObjInfo>().buildNum;//楼号
data.floorNum = sourceObj.GetComponent<CloneGameObjInfo>().floorNum;//层号
data.interlayerNum = sourceObj.GetComponent<CloneGameObjInfo>().interlayerNum;//夹层号,0表示不是夹层,1表示第一个夹层
data.Layer = sourceObj.GetComponent<CloneGameObjInfo>().Layer;
var eventData = new EventData();
eventData.time = RecordManager.Instance.RecordTimer;
eventData.cloneObjType = CloneObjType.None;
eventData.eventType = RecordEventType.SpreadFireCreat;
eventData.json = Newtonsoft.Json.JsonConvert.SerializeObject(data);
RecordManager.Instance.jsonData.eventDataList.Add(eventData);
}
//if (sourceObj.layer == LayerMask.NameToLayer("Hidden"))//蔓延出来的火如果主火隐藏
//{
// gameObject.layer = LayerMask.NameToLayer("Hidden");
// foreach (Transform child in transform)
// {
// child.gameObject.layer = LayerMask.NameToLayer("Hidden");
// }
//}
}
public void AddRecordDataDestroy()
{
if (ReplaySetting.PlayStatus == PlayStatus.isEditor && RecordManager.Instance.recordStatus == RecordStatus.normal)
{
SpreadFireDestoryData data = new SpreadFireDestoryData();
data.name = gameObject.name;
data.sourceId = SourceId;
var eventData = new EventData();
eventData.time = RecordManager.Instance.RecordTimer;
eventData.cloneObjType = CloneObjType.None;
eventData.eventType = RecordEventType.SpreadFireDestory;
eventData.json = Newtonsoft.Json.JsonConvert.SerializeObject(data);
RecordManager.Instance.jsonData.eventDataList.Add(eventData);
}
}
}

5
Assets/Scripts/Equip/Bag/Bag.cs

@ -110,6 +110,11 @@ public class Bag : MonoBehaviour
GetComponent<NavMeshAgent>().enabled = true;
GetComponent<AgentController>().enabled = true;
}
if (GetComponent<XiaoFangYuanDrawLine>())
{
// if (GetComponent<XiaoFangYuanDrawLine>() == null)
GetComponent<XiaoFangYuanDrawLine>().setLine();
}
}
}

1
Assets/Scripts/Equip/Bag/BagPanel.cs

@ -42,6 +42,7 @@ public class BagPanel : ResourceLoadPanel<BagPanel>
{
//隐藏背包时清空
Empty();
MessageDispatcher.RemoveListener("BagChaneg", BagInfoChange);
}
private void OnDestroy()
{

4
Assets/Scripts/Equip/EquipNumSelect/EquipNumSelectPanel.cs

@ -28,6 +28,10 @@ public class EquipNumSelectPanel : ResourceLoadPanel<EquipNumSelectPanel>
{
MessageDispatcher.RemoveListener("EquipItemSelectMore", SelectMore);
}
private void OnDestroy()
{
MessageDispatcher.RemoveListener("EquipItemSelectMore", SelectMore);
}
private void SelectMore(IMessage obj)
{
Toggle sender = (Toggle)obj.Data;

39
Assets/Scripts/GameObjectCtrl/ObjRotate.cs

@ -19,24 +19,27 @@ public class ObjRotate : MonoBehaviour
var eventData = new EventData();
eventData.time = RecordManager.Instance.RecordTimer;
eventData.cloneObjType = GetComponent<BaseGameObjInfo>().gameObjType;
eventData.eventType = type;
eventData.json = gameObject.name;
eventData.eventType = RecordEventType.Rotate;
RotateData data = new RotateData()
{
gamename = gameObject.name,
localEulerAngles = transform.localEulerAngles,
};
eventData.json = Newtonsoft.Json.JsonConvert.SerializeObject(data);
RecordManager.Instance.jsonData.eventDataList.Add(eventData);
}
}
protected virtual void ReplayEventRoate(IMessage obj)
{
var eventData = (EventData)obj.Data;
if (eventData.json == gameObject.name)
if (eventData.eventType == RecordEventType.Rotate)
{
if (eventData.eventType == RecordEventType.LeftRotate)
{
transform.Rotate(0, -Time.deltaTime * rotateSpeed, 0, Space.World);
}
else if (eventData.eventType == RecordEventType.RightRotate)
RotateData data = Newtonsoft.Json.JsonConvert.DeserializeObject<RotateData>(eventData.json);
if (data.gamename == gameObject.name)
{
transform.Rotate(0, Time.deltaTime * rotateSpeed, 0, Space.World);
transform.localEulerAngles = data.localEulerAngles;
}
}
}
@ -74,8 +77,15 @@ public class ObjRotate : MonoBehaviour
protected virtual void LeftRotate(IMessage obj)
{
if (SelectedObjs.selectedObj == gameObject)
if (SelectedObjs.selectedObj == gameObject || (SelectedObjs.selectedCharacters.Count>0&&gameObject == SelectedObjs.selectedCharacters[0]))
{
if (gameObject.GetComponent<ControlTruckArm>())
{
if (gameObject.GetComponent<ControlTruckArm>().ControlTruckArmFlag)
{
return;
}
}
transform.Rotate(0, -Time.deltaTime * rotateSpeed, 0, Space.World);
AddRecordEventRoage(RecordEventType.LeftRotate);
}
@ -83,8 +93,15 @@ public class ObjRotate : MonoBehaviour
protected virtual void RightRotate(IMessage obj)
{
if (SelectedObjs.selectedObj == gameObject)
if (SelectedObjs.selectedObj == gameObject|| (SelectedObjs.selectedCharacters.Count > 0 && gameObject == SelectedObjs.selectedCharacters[0]))
{
if (gameObject.GetComponent<ControlTruckArm>())
{
if (gameObject.GetComponent<ControlTruckArm>().ControlTruckArmFlag)
{
return;
}
}
transform.Rotate(0, Time.deltaTime * rotateSpeed, 0, Space.World);
AddRecordEventRoage(RecordEventType.RightRotate);
}

40
Assets/Scripts/HelpScripts/CloneGameObjInfo.cs

@ -63,25 +63,27 @@ public class CloneGameObjInfo : BaseGameObjInfo
}
private static void UpdateEnabled(FloorData data, CloneGameObjInfo obj)
{
if (obj.floorNum == 0)
{
if (!data.isOn)
{
obj.ShoworHidden = true;
}
else
{
if (data.floorNum > obj.floorNum)
{
obj.ShoworHidden = true;
}
else if (data.floorNum < obj.floorNum)
{
obj.ShoworHidden = false;
}
}
}
else if (data.buildNum == obj.buildNum)
if (string.IsNullOrEmpty(obj.buildNum))//室外物体不隐藏
return;
//if (obj.floorNum == 0)
//{
// //if (!data.isOn)
// //{
// // obj.ShoworHidden = true;
// //}
// //else
// //{
// // if (data.floorNum > obj.floorNum)
// // {
// obj.ShoworHidden = true;
// // }
// // else if (data.floorNum < obj.floorNum)
// // {
// // obj.ShoworHidden = false;
// // }
// //}
//}
if (data.buildNum == obj.buildNum)
{
if (!data.isOn)
{

1
Assets/Scripts/HelpScripts/CloneObjType.cs

@ -480,6 +480,7 @@ public enum CloneObjType
/// </summary>
PowerSupplyCar,
#endregion
SpreadFireFrame,
}
/// <summary>
/// 根据克隆类型获取中文名称。

3
Assets/Scripts/InputSystem/InputManager/InputManager.cs

@ -100,7 +100,7 @@ public class InputManager : MonoBehaviour
{
gameObjID = SelectedObjs.selectedObj.GetComponent<BaseGameObjInfo>().GameObjID;
var cmdargs = new WeightCmdArgs();
cmdargs.Weight += Time.deltaTime * 10f;
cmdargs.Weight += Time.deltaTime *10f;
if (Input.GetButtonDown("LeftShift"))
{
LeftShift = true;
@ -113,6 +113,7 @@ public class InputManager : MonoBehaviour
if (SelectedObjs.selectedObj.GetComponent<ControlTruckArm>())
{
cmdargs.Weight += GlobalVariable.TruckArmSpeed;
cmdargs.Weight *= 0.1f;
if (Input.GetButton("W"))
{
if (LeftShift)

50
Assets/Scripts/Power/AgentController.cs

@ -452,9 +452,14 @@ public class AgentController : MonoBehaviour
}
var objinfo = GetComponent<BaseGameObjInfo>();
if (objinfo.gameObjType == CloneObjType.FireMan)
{
setFloorMessage();
}
else if (objinfo.GetComponent<TruckMessages>())
{
setFloorMessage(false);
}
i++;
}
@ -465,29 +470,50 @@ public class AgentController : MonoBehaviour
}
}
private void setFloorMessage()
private void setFloorMessage(bool isFireman = true)
{
//璁剧疆瀵昏矾瀵硅薄妤煎眰灞炴€?
Vector3 adPos2 = transform.position;
Ray ray = new Ray(adPos2, -Vector3.up);
Ray ray = new Ray(adPos2 + Vector3.up, Vector3.down);
RaycastHit hit = new RaycastHit();
if (Physics.Raycast(ray, out hit, LayerMask.NameToLayer("ShiNei")))
if (isFireman)
{
if (hit.transform.gameObject.GetComponent<CloneGameObjInfo>())
if (Physics.Raycast(ray, out hit, 1000, LayerMask.GetMask("ManRode", "CarRode")))
{
CloneGameObjInfo msg = GetComponent<CloneGameObjInfo>();
CloneGameObjInfo hitinfo = hit.transform.gameObject.GetComponent<CloneGameObjInfo>();
msg.buildNum = hitinfo.buildNum;
msg.floorNum = hitinfo.floorNum;
msg.interlayerNum = hitinfo.interlayerNum;
if (hit.transform.gameObject.GetComponent<CloneGameObjInfo>())
{
CloneGameObjInfo msg = GetComponent<CloneGameObjInfo>();
CloneGameObjInfo hitinfo = hit.transform.gameObject.GetComponent<CloneGameObjInfo>();
msg.buildNum = hitinfo.buildNum;
msg.floorNum = hitinfo.floorNum;
msg.interlayerNum = hitinfo.interlayerNum;
//msg.inOutType = hitinfo.inOutType;
if (!SelectedObjs.selectedCharacters.Contains(gameObject))
if (!SelectedObjs.selectedCharacters.Contains(gameObject))
{
msg.UpdateFloorEnabled(GlobalVariable.CurrentFloor);
}
return;
}
}
}
else
{
if (Physics.Raycast(ray, out hit, LayerMask.NameToLayer("CarRoad")))
{
if (hit.transform.gameObject.GetComponent<CloneGameObjInfo>())
{
msg.UpdateFloorEnabled(GlobalVariable.CurrentFloor);
CloneGameObjInfo msg = GetComponent<CloneGameObjInfo>();
CloneGameObjInfo hitinfo = hit.transform.gameObject.GetComponent<CloneGameObjInfo>();
msg.buildNum = hitinfo.buildNum;
msg.floorNum = hitinfo.floorNum;
msg.interlayerNum = hitinfo.interlayerNum;
return;
}
return;
}
}
}
bool setPathCorners(Vector3 sourcePosition, Vector3 targetPosition, List<Vector3> corners)
{

17
Assets/Scripts/Power/FiremanSkill/FireManMessage.cs

@ -244,7 +244,13 @@ public class FireManMessage : MonoBehaviour
drawline.destoryLine();
GetComponent<NavMeshAgent>().enabled = true;
GetComponent<AgentController>().enabled = true;
if (GetComponent<WaterReceiver>())
{
if (GetComponent<WaterReceiver>().waterlinelist.Count > 0)
{
GetComponent<WaterReceiver>().waterlinelist.Clear();
}
}
if ((EnabledSkills & FireManSkills.SprayWater) != 0)
{
EnabledSkills &= ~FireManSkills.SprayWater;
@ -592,9 +598,18 @@ public class FireManMessage : MonoBehaviour
GetComponent<NavMeshAgent>().enabled = !connect;
GetComponent<AgentController>().enabled = !connect;
}
if (workType != FireManSkills.SprayWater ||
workType != FireManSkills.SprayFoam ||
workType != FireManSkills.Decontamination||
workType!= FireManSkills.LayWaterHose)
{
GetComponent<NavMeshAgent>().enabled = !connect;
GetComponent<AgentController>().enabled = !connect;
}
}
else
{
GetComponent<NavMeshAgent>().enabled = true;
GetComponent<AgentController>().enabled = true;
}

2
Assets/Scripts/Power/FiremanSkill/XiaoFangYuanDrawLine.cs

@ -810,7 +810,7 @@ public class XiaoFangYuanDrawLine : MonoBehaviour
cloneObj.transform.parent = prlineObj.transform;
cloneObj.transform.forward = (cloneObj.transform.position - placementPos).normalized;//改变线条的朝向
float distance = Vector3.Distance(placementPos, placementPos2);//计算两点的距离
cloneObj.transform.localScale = new Vector3(6f, 6f, distance * jugelength);//延长线条,连接两点。
cloneObj.transform.localScale = new Vector3(24f, 24f, distance * jugelength);//延长线条,连接两点。
cloneObj.GetComponent<DrawLinMessage>().Linelength = distance;
cloneObj.GetComponent<DrawLinMessage>().AllLength = getDrawLine() + distance;
Record(cloneObj.GetComponent<DrawLinMessage>(), false, true);

64
Assets/Scripts/Power/Task/ControlSprayHead.cs

@ -5,6 +5,12 @@ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public enum RotateType
{
part1,
part2,
transform,
}
//[DisallowMultipleComponent]
//[RequireComponent(typeof(SprayHeadRecord))]
public class ControlSprayHead : MonoBehaviour
@ -238,6 +244,25 @@ public class ControlSprayHead : MonoBehaviour
}
}
}
else if (eventData.eventType == RecordEventType.SprayRotate)
{
var data = Newtonsoft.Json.JsonConvert.DeserializeObject<SprayRotateRecordData>(eventData.json);
if (data.objectName == GameObjID.ToString())
{
if (data.RotateType == RotateType.part1)
{
part1.localEulerAngles = data.localEulerAngles;
}
else if (data.RotateType == RotateType.part2)
{
part2.localEulerAngles = data.localEulerAngles;
}
else if (data.RotateType == RotateType.transform)
{
transform.localEulerAngles = data.localEulerAngles;
}
}
}
}
public void Increase(float Weight)
{
@ -341,8 +366,8 @@ public class ControlSprayHead : MonoBehaviour
var gameObjID = (long)message.Sender;
if (gameObjID == GameObjID)
{
if (RecordEvent.IsRecord())
CreateRotationEvent(part1);
//if (RecordEvent.IsRecord())
// CreateRotationEvent(part1);
var speed = ((WeightCmdArgs)message.Data).Weight;
float x = part1.localEulerAngles.x;
float y = part1.localEulerAngles.y;
@ -350,6 +375,7 @@ public class ControlSprayHead : MonoBehaviour
x -= speed;
x = Mathf.Clamp(x, -50, 15);
part1.localEulerAngles = new Vector3(x, y, 0);
AddRotateEvent(part1.localEulerAngles, RotateType.part1);
}
}
internal virtual void J(IMessage message)
@ -357,8 +383,8 @@ public class ControlSprayHead : MonoBehaviour
var gameObjID = (long)message.Sender;
if (gameObjID == GameObjID)
{
if (RecordEvent.IsRecord())
CreateRotationEvent(part1);
//if (RecordEvent.IsRecord())
// CreateRotationEvent(part1);
var speed = ((WeightCmdArgs)message.Data).Weight;
float x = part1.localEulerAngles.x;
float y = part1.localEulerAngles.y;
@ -366,6 +392,7 @@ public class ControlSprayHead : MonoBehaviour
x += speed;
x = Mathf.Clamp(x, -50, 15);
part1.localEulerAngles = new Vector3(x, y, 0);
AddRotateEvent(part1.localEulerAngles, RotateType.part1);
}
}
internal virtual void H(IMessage message)
@ -373,8 +400,8 @@ public class ControlSprayHead : MonoBehaviour
var gameObjID = (long)message.Sender;
if (gameObjID == GameObjID)
{
if (RecordEvent.IsRecord())
CreateRotationEvent(part1);
//if (RecordEvent.IsRecord())
// CreateRotationEvent(part1);
var speed = ((WeightCmdArgs)message.Data).Weight;
float x = part1.localEulerAngles.x;
float y = part1.localEulerAngles.y;
@ -382,6 +409,7 @@ public class ControlSprayHead : MonoBehaviour
y -= speed;
y = Mathf.Clamp(y, -90, 90);
part1.localEulerAngles = new Vector3(x, y, 0);
AddRotateEvent(part1.localEulerAngles, RotateType.part1);
}
}
internal virtual void K(IMessage message)
@ -389,8 +417,8 @@ public class ControlSprayHead : MonoBehaviour
var gameObjID = (long)message.Sender;
if (gameObjID == GameObjID)
{
if (RecordEvent.IsRecord())
CreateRotationEvent(part1);
//if (RecordEvent.IsRecord())
// CreateRotationEvent(part1);
var speed = ((WeightCmdArgs)message.Data).Weight;
float x = part1.localEulerAngles.x;
float y = part1.localEulerAngles.y;
@ -398,6 +426,26 @@ public class ControlSprayHead : MonoBehaviour
y += speed;
y = Mathf.Clamp(y, -90, 90);
part1.localEulerAngles = new Vector3(x, y, 0);
AddRotateEvent(part1.localEulerAngles, RotateType.part1);
}
}
public void AddRotateEvent(Vector3 localEulerAngles, RotateType type)
{
if (ReplaySetting.PlayStatus == PlayStatus.isEditor && RecordManager.Instance.recordStatus == RecordStatus.normal)
{
var eventData = new EventData();
eventData.time = RecordManager.Instance.RecordTimer;
eventData.cloneObjType = GetComponent<BaseGameObjInfo>().gameObjType;
eventData.eventType = RecordEventType.SprayRotate;
SprayRotateRecordData data = new SprayRotateRecordData
{
objectName = GameObjID.ToString(),
localEulerAngles = localEulerAngles,
RotateType = type,
};
eventData.json = Newtonsoft.Json.JsonConvert.SerializeObject(data);
RecordManager.Instance.jsonData.eventDataList.Add(eventData);
//RecordManager.Instance.SaveEventToSever(eventData, true).Forget();
}
}
internal virtual void SprayWater(IMessage message)

1
Assets/Scripts/Power/Task/ControlTruckArm.cs

@ -188,6 +188,7 @@ public abstract class ControlTruckArm : MonoBehaviour
MessageDispatcher.RemoveListener("PackUpTheLiftArm", PackUpTheLiftArm);
MessageDispatcher.RemoveListener("FixedSupport", FixedSupport);
MessageDispatcher.RemoveListener("RADIO_SELECTED_COMMAND", RadioSelect);
MessageDispatcher.RemoveListener("ReplayEvent", ReplayAgent);
}
void OnEnable()
{

4
Assets/Scripts/Power/Task/FiremanControlSprayHead.cs

@ -27,6 +27,7 @@ public class FiremanControlSprayHead : ControlSprayHead
float z =part2.localEulerAngles.z;
y -= speed;
part2.localEulerAngles = new Vector3(x, y, z);
AddRotateEvent(transform.localEulerAngles, RotateType.transform);
}
}
internal override void K(IMessage message)
@ -42,6 +43,7 @@ public class FiremanControlSprayHead : ControlSprayHead
float z = transform.localEulerAngles.z;
y += speed;
transform.localEulerAngles = new Vector3(x, y, z);
AddRotateEvent(transform.localEulerAngles, RotateType.transform);
}
}
internal override void U(IMessage message)
@ -58,6 +60,7 @@ public class FiremanControlSprayHead : ControlSprayHead
x += speed;
x = Mathf.Clamp(x, -20, 55);
part1.localEulerAngles = new Vector3(x, y, 0);
AddRotateEvent(transform.localEulerAngles, RotateType.transform);
}
}
internal override void J(IMessage message)
@ -74,6 +77,7 @@ public class FiremanControlSprayHead : ControlSprayHead
x -= speed;
x = Mathf.Clamp(x, -20, 55);
part1.localEulerAngles = new Vector3(x, y, 0);
AddRotateEvent(transform.localEulerAngles, RotateType.transform);
}
}
internal override void SetAnimAndHose(bool value)

4
Assets/Scripts/Power/Task/TruckMessages.cs

@ -119,6 +119,10 @@ public class TruckMessages : MonoBehaviour
GetComponent<AgentController>().pathFindEnable = false;
else
{
if (GetComponent<WaterSupplier>().waterLineInfos.Contains(data.waterLineID))
{
GetComponent<WaterSupplier>().waterLineInfos.Remove(data.waterLineID);
}
if (GetComponent<WaterSupplier>().waterLineInfos.Count <= 0)
GetComponent<AgentController>().pathFindEnable = true;
}

5
Assets/Scripts/Replay/JsonObject.cs

@ -120,6 +120,11 @@ public enum RecordEventType
AutoSwing,
TruckArmRice = 66,
TruckArmRotation = 67,
Rotate,
SprayRotate,
SpreadFireCreat,
SpreadFireDestory,
FireSpreadEnd
}
public enum FileType
{

29
Assets/Scripts/Replay/NodeDetailShow.cs

@ -11,10 +11,11 @@ public class NodeDetailShow : MonoBehaviour, IPointerClickHandler
public ReplayManager replayManager;
public bool control = false;
private float time;
public TagShow TagShow;
// Use this for initialization
void Start()
void Awake()
{
TagShow = GameObject.Find("Canvas/TopUI/TagPanel/TagShow") .GetComponent<TagShow>();
}
// Update is called once per frame
@ -38,12 +39,32 @@ public class NodeDetailShow : MonoBehaviour, IPointerClickHandler
{
detail.text = text;
time = 5;
control = true;
control = true;
}
public void SetControl()
{
control = false;
if (GameObject.Find("Canvas/TopUI/TagPanel/TagShow"))
{
TagShow= GameObject.Find("Canvas/TopUI/TagPanel/TagShow").GetComponent<TagShow>();
TagShow.tagDetail.SetActive(false);
TagShow.tagMessage.SetActive(false);
TagShow.gameObject.SetActive(false);
}
gameObject.SetActive(false);
}
public void OnPointerClick(PointerEventData eventData)
{
gameObject.SetActive(false);
TagShow.tagDetail.SetActive(false);
TagShow.tagMessage.SetActive(false);
TagShow.gameObject.SetActive(false);
if (transform.parent.name== "TopUI")
{
gameObject.SetActive(false);
}
control = false;
replayManager.Play();
}

13
Assets/Scripts/Replay/RecordObjectBase.cs

@ -20,6 +20,13 @@ public class RecordObjectBase
}
}
[Serializable]
public class RotateData
{
public string gamename;
public Vector3 localEulerAngles;
public List<Vector3> DashedLineRotatelocalEulerAngles;
}
[Serializable]
public class PowerRecordObjectBase : RecordObjectBase
{
public string Affiliation;
@ -53,6 +60,12 @@ public class DrawLineRecordData : RecordObjectBase
public bool IsEndDraw;//是否是结束铺设
}
[Serializable]
public class SprayRotateRecordData : RecordObjectBase
{
public Vector3 localEulerAngles;
public RotateType RotateType;
}
[Serializable]
public class DrawLineListRecordData
{
public List<DrawLineRecordData> data;

3
Assets/Scripts/Replay/ReplayManager.cs

@ -97,7 +97,7 @@ public class ReplayManager : MonoBehaviour
tagManager.HideTagShow();
MessageDispatcher.SendMessage("ReplayStatusChanged", ReplayStatus);
//在结束播放的时候如果正在显示提示信息,结束倒计时并隐藏信息窗口
nodeDetailShow.GetComponent<NodeDetailShow>().control = false;
nodeDetailShow.GetComponent<NodeDetailShow>().SetControl();// = false;
nodeDetailShow.SetActive(false);
}
@ -388,6 +388,7 @@ public class ReplayManager : MonoBehaviour
if (replayTime > jsonData.sumTime)
{
ReplayStatus = ReplayStatus.over;
nodeDetailShow.GetComponent<NodeDetailShow>().SetControl();
playOrPause.isOn = false;
ReplaySetting.PlayStatus = PlayStatus.normal;
ChangeReplaySpeed = null;//回放结束清空关心回放速度的事件

7
Assets/Scripts/Tool/InstanceText/TextControl.cs

@ -75,7 +75,7 @@ public class TextControl : MonoBehaviour
{
transform.localScale = new Vector3(value, value, 1);
Scale = value;
AddRecordEventChange(transform);
//AddRecordEventChange(transform);
}
/// <summary>
/// 设置文本
@ -84,16 +84,15 @@ public class TextControl : MonoBehaviour
{
text.text = str;
InputField = str;
AddRecordEventChange(transform);
// AddRecordEventChange(transform);
}
/// <summary>
/// 设置颜色
/// </summary>
public void SetColor(Color value)
{
text.GetComponent<MeshRenderer>().materials[0].color = value;
text.color = value;
Color = value;
AddRecordEventChange(transform);
}
private void LateUpdate()
{

2
Assets/Scripts/Tool/RecordSetArea.cs

@ -18,7 +18,7 @@ public class RecordSetAreaChange : RecordObjectBase
{
public int index;
public Vector3 position;
public Vector3 mousePosition;
public Vector3 point;
}
public class RecordSetAreaAdd : RecordObjectBase
{

72
Assets/Scripts/Tool/SetArea/DragVertice.cs

@ -6,7 +6,7 @@ using UnityEngine.EventSystems;
using UnityEngine.UI;
using AX.MessageSystem;
[RequireComponent(typeof(Image))]
public class DragVertice : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IDragHandler
public class DragVertice : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IDragHandler, IEndDragHandler
{
public PolygonController PolygonController;
RaycastHit hit;
@ -29,12 +29,12 @@ public class DragVertice : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
addToggle = addPanel.transform.Find("Add").GetComponent<Toggle>();
delButton = addPanel.transform.Find("DelButton").GetComponent<Button>();
delButton.onClick.AddListener(DelVertice);
MessageDispatcher.AddListener("SelectedVertice", ChangeColor);
MessageDispatcher.AddListener("SelectedVertice", ChangeColor);
}
private void OnDestroy()
{
MessageDispatcher.RemoveListener("SelectedVertice", ChangeColor);
MessageDispatcher.RemoveListener("SelectedVertice", ChangeColor);
}
private void Update()
{
@ -57,6 +57,25 @@ public class DragVertice : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
}
}
}
if (Input.GetButtonUp("Fire1") && addToggle.isOn)
{
if (selectedObj == this.gameObject)
{
if (!EventSystem.current.IsPointerOverGameObject())
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
var rayCast = getRayCastAll(ray);
if (rayCast)
{
PolygonController.AddPolygon(index + 1, hit.point, Input.mousePosition);
/*if (PolygonController.GetComponent<CloneGameObjInfo>().gameObjType == CloneObjType.EvacuationExit)
{
MessageDispatcher.SendMessage("SaveEvacuationExit", PolygonController.gameObject);
}*/
}
}
}
}
if (Input.GetButtonDown("Fire2") && addToggle.isOn)
{
addToggle.isOn = false;
@ -82,27 +101,27 @@ public class DragVertice : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
if (index >= 0 && PolygonController.ChangePosition(index, eventData.position))
{
IsOnDrag = true;
(transform as RectTransform).anchoredPosition = anchoredPosition;
(transform as RectTransform).anchoredPosition = anchoredPosition;
}
}
}
public void OnPointerDown(PointerEventData eventData)
{
index = PolygonController.FindIndex(eventData.position);
selectedObj = this.gameObject;
image.color = Color.red;
addPanel.SetActive(true);
MessageDispatcher.SendMessage("SelectedVertice");
MessageDispatcher.SendMessage("SelectedVertice");
}
public void OnPointerUp(PointerEventData eventData)
{
{
if (IsOnDrag)
{
IsOnDrag = false;
{
IsOnDrag = false;
}
}
}
private void OnDisable()
{
if (selectedObj == this.gameObject)
@ -116,7 +135,16 @@ public class DragVertice : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
if (selectedObj == this.gameObject)
{
PolygonController.DelPolygon(index);
if (index < 0)
{
Debug.Log($"-><color=#CD2200>{"index小于0"}</color>");
return;
}
PolygonController.DelPolygon(index);
if (PolygonController.worldPositions.Count < 0)
{
return;
}
if (index == 0)
{
PolygonController.transform.Find("info").transform.position = PolygonController.worldPositions[0];
@ -168,5 +196,21 @@ public class DragVertice : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
}
return rayCast;
}
public void OnEndDrag(PointerEventData eventData)
{
if (!PolygonController.Editable)
return;
Vector2 anchoredPosition;
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(Canvas.transform as RectTransform, eventData.position, null, out anchoredPosition))
{
if (index >= 0 && PolygonController.ChangePosition(index, eventData.position, true))
{
IsOnDrag = true;
(transform as RectTransform).anchoredPosition = anchoredPosition;
}
}
}
}

2
Assets/Scripts/Tool/SetArea/Polygon.cs

@ -156,7 +156,7 @@ public class Polygon : MonoBehaviour
if (canFragementIndex < 0)
{
Debug.LogError("数据有误找不到可划分顶点");
Debug.Log($"-><color=#CD8500>{""}</color>");
return new List<int>();
}

205
Assets/Scripts/Tool/SetArea/PolygonController.cs

@ -63,41 +63,41 @@ public class PolygonController : MonoBehaviour
private void ExecuteEvent(IMessage obj)
{
var eventData = (EventData)obj.Data;
if(eventData.cloneObjType == CloneObjType.SetArea)
if (eventData.cloneObjType == CloneObjType.SetArea)
{
if (eventData.eventType == RecordEventType.ToolTask)
{
var arg = JsonUtility.FromJson<RecordSetArea>(eventData.json);
var arg = Newtonsoft.Json.JsonConvert.DeserializeObject<RecordSetArea>(eventData.json);
if (arg.objectName == gameObject.name)
{
SetPolygon(arg.hitPos, arg.mousePos);
SetPolygon(arg.hitPos, arg.mousePos, arg);
}
}
else if (eventData.eventType == RecordEventType.SetAreaChange)
{
var arg = JsonUtility.FromJson<RecordSetAreaChange>(eventData.json);
var arg = Newtonsoft.Json.JsonConvert.DeserializeObject<RecordSetAreaChange>(eventData.json);
if (arg.objectName == gameObject.name)
{
ReplayChangePosition(arg.index, arg.position, arg.mousePosition);
ReplayChangePosition(arg.index, arg.position, arg.point, arg);
}
}
else if(eventData.eventType == RecordEventType.SetAreaAdd)
else if (eventData.eventType == RecordEventType.SetAreaAdd)
{
var arg = JsonUtility.FromJson<RecordSetAreaAdd>(eventData.json);
var arg = Newtonsoft.Json.JsonConvert.DeserializeObject<RecordSetAreaAdd>(eventData.json);
if (arg.objectName == gameObject.name)
{
AddPolygon(arg.addIndex, arg.hitPos,arg.MousePos);
AddPolygon(arg.addIndex, arg.hitPos, arg.MousePos, arg);
}
}
else if (eventData.eventType == RecordEventType.SetAreaDel)
{
var arg = JsonUtility.FromJson<RecordSetAreaDel>(eventData.json);
var arg = Newtonsoft.Json.JsonConvert.DeserializeObject<RecordSetAreaDel>(eventData.json);
if (arg.objectName == gameObject.name)
{
DelPolygon(arg.delIndex);
}
}
}
}
}
private void Start()
@ -215,6 +215,74 @@ public class PolygonController : MonoBehaviour
}
}
}
public void SetPolygon(Vector3 hitPos, Vector3 MousePos, RecordSetArea arg, float offset = 1)
{
var position = MousePos;
var index = FindIndex(position);
if (index == -1)
{
HeightOffset = new Vector3(0, offset, 0);
var worldPos = hitPos + HeightOffset;
if (worldPositions.Count > 0)
worldPos.Set(worldPos.x, GetHeight(), worldPos.z);
var screenPos = position;
if (worldPositions.Count == 0)
{
MessageDispatcher.SendMessage(1f, "NodeTreeHints", (object)"在此区域设置");
}
screenPositions.Add(screenPos);
worldPositions.Add(worldPos);
if (worldPositions.Count == 3)
{
var s = Info.gameObject.AddComponent<CloneGameObjInfo>();
s.buildNum = GetComponent<CloneGameObjInfo>().buildNum;
s.gameObjType = GetComponent<CloneGameObjInfo>().gameObjType;
s.floorNum = GetComponent<CloneGameObjInfo>().floorNum;
s.interlayerNum = GetComponent<CloneGameObjInfo>().interlayerNum;
//s.deltaFloor = GetComponent<CloneGameObjInfo>().deltaFloor;
//Info.position = worldPositions[0] + new Vector3(0, 1f, 0);
Info.gameObject.SetActive(true);
}
//FIXME: 时间紧迫,将来这里可能需要解耦
var go = Instantiate(VerticePrefab);
var rectTransform = go.GetComponent<RectTransform>();
// var polyVerticeFather = Canvas.transform.Find("PolyVerticeFather");
rectTransform.parent = PolyVerticeFather;
rectTransform.localScale = Vector3.one;
var script = go.GetComponent<DragVertice>();
script.PolygonController = this;
script.Canvas = Canvas;
vertices.Add(go);
Vector3 nowcamerapos = Camera.main.transform.position;
Quaternion nowrotate = Camera.main.transform.rotation;
Camera.main.transform.localPosition = arg.myTransform.getMyPosition();
Camera.main.transform.localRotation = arg.myTransform.getMyRotation();
//go.name = GetComponent<CloneGameObjInfo>().gameObjID.ToString() +"-"+ vertices.IndexOf(go).ToString();
if (Canvas.renderMode == RenderMode.ScreenSpaceOverlay)
{
Vector2 anchoredPos;
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(PolyVerticeFather, screenPos, null, out anchoredPos))
rectTransform.anchoredPosition = anchoredPos;
}
else if (Canvas.renderMode == RenderMode.ScreenSpaceCamera)
{
Vector2 mousePos;
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(PolyVerticeFather, screenPos, Canvas.worldCamera, out mousePos))
rectTransform.anchoredPosition = mousePos;
}
if (worldPositions.Count > 2)
{
polygon.SetVertices(worldPositions.ToArray());
Info.position = polygon.getCenterOfGravityPoint(worldPositions) + InfoOffset;
}
Camera.main.transform.position = nowcamerapos;
Camera.main.transform.rotation = nowrotate;
}
}
/// <summary>
/// 回放帧状态
/// </summary>
@ -338,6 +406,75 @@ public class PolygonController : MonoBehaviour
}
AddRecordAdd(addIndex, hitPos, MousePos);
}
public void AddPolygon(int addIndex, Vector3 hitPos, Vector3 MousePos, RecordSetAreaAdd arg)
{
var position = MousePos;
var index = FindIndex(position);
if (index == -1)
{
var worldPos = hitPos + HeightOffset;
if (worldPositions.Count > 0)
worldPos.Set(worldPos.x, GetHeight(), worldPos.z);
var screenPos = position;
if (worldPositions.Count == 0)
{
MessageDispatcher.SendMessage(1f, "NodeTreeHints", (object)"在此区域设置");
}
screenPositions.Insert(addIndex, screenPos);
worldPositions.Insert(addIndex, worldPos);
if (worldPositions.Count == 3)
{
var s = Info.gameObject.AddComponent<CloneGameObjInfo>();
s.buildNum = GetComponent<CloneGameObjInfo>().buildNum;
s.gameObjType = GetComponent<CloneGameObjInfo>().gameObjType;
s.floorNum = GetComponent<CloneGameObjInfo>().floorNum;
s.interlayerNum = GetComponent<CloneGameObjInfo>().interlayerNum;
//s.deltaFloor = GetComponent<CloneGameObjInfo>().deltaFloor;
//Info.position = worldPositions[0] + new Vector3(0, 1f, 0);
Info.gameObject.SetActive(true);
}
//FIXME: 时间紧迫,将来这里可能需要解耦
var go = Instantiate(VerticePrefab);
var rectTransform = go.GetComponent<RectTransform>();
// var polyVerticeFather = Canvas.transform.Find("PolyVerticeFather");
rectTransform.SetParent(PolyVerticeFather);
rectTransform.localScale = Vector3.one;
var script = go.GetComponent<DragVertice>();
script.PolygonController = this;
script.Canvas = Canvas;
vertices.Insert(addIndex, go);
Vector3 nowcamerapos = Camera.main.transform.position;
Quaternion nowrotate = Camera.main.transform.rotation;
Camera.main.transform.localPosition = arg.myTransform.getMyPosition();
Camera.main.transform.localRotation = arg.myTransform.getMyRotation();
if (Canvas.renderMode == RenderMode.ScreenSpaceOverlay)
{
Vector2 anchoredPos;
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(PolyVerticeFather, screenPos, null, out anchoredPos))
rectTransform.anchoredPosition = anchoredPos;
}
else if (Canvas.renderMode == RenderMode.ScreenSpaceCamera)
{
Vector2 mousePos;
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(PolyVerticeFather, screenPos, Canvas.worldCamera, out mousePos))
rectTransform.anchoredPosition = mousePos;
}
if (worldPositions.Count > 2)
{
polygon.SetVertices(worldPositions.ToArray());
Info.position = polygon.getCenterOfGravityPoint(worldPositions) + InfoOffset;
}
Camera.main.transform.position = nowcamerapos;
Camera.main.transform.rotation = nowrotate;
}
AddRecordAdd(addIndex, hitPos, MousePos);
}
public void AddRecordAdd(int addIndex, Vector3 hitPos, Vector3 MousePos)
{
if (ReplaySetting.PlayStatus == PlayStatus.isEditor && RecordManager.Instance.recordStatus == RecordStatus.normal)
@ -352,7 +489,9 @@ public class PolygonController : MonoBehaviour
data.addIndex = addIndex;
data.hitPos = hitPos;
data.MousePos = MousePos;
string json = JsonUtility.ToJson(data);
data.myTransform.setMyPosition(Camera.main.transform.localPosition);
data.myTransform.setMyRotation(Camera.main.transform.localRotation);
string json = Newtonsoft.Json.JsonConvert.SerializeObject(data);
eventData.json = json;
RecordManager.Instance.jsonData.eventDataList.Add(eventData);
}
@ -382,8 +521,8 @@ public class PolygonController : MonoBehaviour
var data = new RecordSetAreaDel();
data.gameObjType = CloneObjType.SetArea;
data.objectName = gameObject.gameObject.name;
data.delIndex = delIndex;
string json = JsonUtility.ToJson(data);
data.delIndex = delIndex;
string json = Newtonsoft.Json.JsonConvert.SerializeObject(data);
eventData.json = json;
RecordManager.Instance.jsonData.eventDataList.Add(eventData);
}
@ -413,13 +552,13 @@ public class PolygonController : MonoBehaviour
/// 改变多边形顶点位置,按照屏幕坐标来计算。
/// </summary>
/// <returns>如果可以改变,返回 true;否则返回 false</returns>
public bool ChangePosition(int index, Vector3 position)
public bool ChangePosition(int index, Vector3 position, bool record = false)
{
//Ray ray = Camera.main.ScreenPointToRay(position);
Plane plane = new Plane(Vector3.up, worldPositions[index]);
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
AddRecordChangePosition(index, position, Input.mousePosition);
// AddRecordChangePosition(index, position, Input.mousePosition);
//RaycastHit hit;
//int ignoreRaycast = LayerMask.NameToLayer("Ignore Raycast");
//bool a = Physics.Raycast(ray, out hit, Mathf.Infinity, ~(1 << ignoreRaycast));
@ -437,6 +576,10 @@ public class PolygonController : MonoBehaviour
polygon.SetVertices(worldPositions.ToArray());
Info.position = polygon.getCenterOfGravityPoint(worldPositions) + InfoOffset;
}
if (record)
{
AddRecordChangePosition(index, position, point);
}
return true;
}
else
@ -444,27 +587,15 @@ public class PolygonController : MonoBehaviour
return false;
}
}
public bool ReplayChangePosition(int index, Vector3 position,Vector3 mousePosition)
{
Plane plane = new Plane(Vector3.up, worldPositions[index]);
Ray ray = Camera.main.ScreenPointToRay(mousePosition);
float enter;
if (plane.Raycast(ray, out enter))
{
var point = ray.GetPoint(enter);
screenPositions[index] = position;
worldPositions[index] = new Vector3(point.x, worldPositions[index].y, point.z);
public void ReplayChangePosition(int index, Vector3 position, Vector3 mousePosition, RecordSetAreaChange arg)
{
screenPositions[index] = position;
worldPositions[index] = new Vector3(arg.point.x, worldPositions[index].y, arg.point.z);
if (worldPositions.Count > 2)
{
polygon.SetVertices(worldPositions.ToArray());
Info.position = polygon.getCenterOfGravityPoint(worldPositions) + InfoOffset;
}
return true;
}
else
if (worldPositions.Count > 2)
{
return false;
polygon.SetVertices(worldPositions.ToArray());
Info.position = polygon.getCenterOfGravityPoint(worldPositions) + InfoOffset;
}
}
/// <summary>
@ -472,7 +603,7 @@ public class PolygonController : MonoBehaviour
/// </summary>
/// <param name="index"></param>
/// <param name="position"></param>
public void AddRecordChangePosition(int index, Vector3 position,Vector3 mousePosition)
public void AddRecordChangePosition(int index, Vector3 position,Vector3 point)
{
if (ReplaySetting.PlayStatus == PlayStatus.isEditor && RecordManager.Instance.recordStatus == RecordStatus.normal)
{
@ -485,8 +616,8 @@ public class PolygonController : MonoBehaviour
data.objectName = gameObject.gameObject.name;
data.index = index;
data.position = position;
data.mousePosition = mousePosition;
string json = JsonUtility.ToJson(data);
data.point = point;
string json = Newtonsoft.Json.JsonConvert.SerializeObject(data);
eventData.json = json;
RecordManager.Instance.jsonData.eventDataList.Add(eventData);
}

6
Assets/Scripts/Tool/SetArea/SetArea.cs

@ -99,7 +99,7 @@ public class SetArea : MonoBehaviour
pos = Vector3.zero;
transform.localPosition = new Vector3(pos.x, pos.y + value, pos.z);
High = value;
AddRecordArea();
//AddRecordArea();
}
public void ReplayFrameData(RecordSetArea data)
{
@ -111,13 +111,13 @@ public class SetArea : MonoBehaviour
{
text.text = value;
Name = value;
AddRecordArea();
//AddRecordArea();
}
public void SetColor(Color value)
{
render.material.color = value;
Color = value;
AddRecordArea();
//AddRecordArea();
}
public void Confirm()
{

5
Assets/Scripts/UIScripts/UIFloor.cs

@ -88,7 +88,10 @@ public class UIFloor : BaseToggle
{
item.gameObject.SetActive(false);
}
if (item.buildNum == data.buildNum && item.floorNum == data.floorNum && item.interlayerNum > data.interlayerNum && Mathf.Abs(item.floorNum) > 0)
{
item.gameObject.SetActive(false);
}
}
foreach (var item in floorsPanelManager.AllNei)
{

8
Assets/Scripts/UIScripts/WeatherSettingManager.cs

@ -94,8 +94,8 @@ public class WeatherSettingManager : MonoBehaviour
SetToggle = setToggle;
if (!HasInit)
InitMethord();
CreateXml();
TianQiSettingData = LoadXmlTianQi();
//CreateXml();
//TianQiSettingData = LoadXmlTianQi();
if (TianQiSettingData == null)
{
TianQiSettingData = new TianQiSetting
@ -108,7 +108,7 @@ public class WeatherSettingManager : MonoBehaviour
Hasneight = HasNeight.,
neightLast = 1
};
SetXml(TianQiSettingData);
//SetXml(TianQiSettingData);
}
InitTianQi();
}
@ -370,7 +370,7 @@ public class WeatherSettingManager : MonoBehaviour
TianQiSettingData.neightLast = int.Parse(NeightTimeInput.text);
AddRecordEventWeather(TianQiSettingData);
SetXml(TianQiSettingData);
//SetXml(TianQiSettingData);
if (SetToggle.isOn)
SetToggle.isOn = false;
}

Loading…
Cancel
Save