You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1123 lines
52 KiB
1123 lines
52 KiB
3 years ago
|
using UnityEngine;
|
||
|
using System.Collections;
|
||
|
using System;
|
||
|
using UnityEngine.UI;
|
||
|
using UnityEngine.EventSystems;
|
||
|
using AX.MessageSystem;
|
||
|
using AX.TrackRecord;
|
||
|
using System.Collections.Generic;
|
||
|
/// <summary>
|
||
|
/// 1、鼠标通过射线点击对应的UI,实现实例化工具栏物体
|
||
|
/// 2、挂载在Canvas下DomeView下ToolButtonPicture;
|
||
|
/// 3、核心方法:GetObj();
|
||
|
/// </summary>
|
||
|
|
||
|
public class InstantiationTool : MonoBehaviour
|
||
|
{
|
||
|
public static InstantiationTool Instance;
|
||
|
|
||
|
//[HideInInspector]
|
||
|
public Vector3 placementPos2;//第二碰撞点
|
||
|
//[HideInInspector]
|
||
|
public Vector3 placementPos;//第一碰撞点
|
||
|
[HideInInspector]
|
||
|
public Vector3 Pos1_late = new Vector3(0, 0, 0);//第一碰撞点原来的位置
|
||
|
[HideInInspector]
|
||
|
public Vector3 Pos2_late = new Vector3(0, 0, 0);//第二碰撞点原来的位置
|
||
|
[HideInInspector]
|
||
|
public bool Pos2Controller = false;
|
||
|
GameObject prlineObj;
|
||
|
GameObject pPaiYanGuanObj;
|
||
|
private LayerMask ground_layerMask = -1;
|
||
|
private LayerMask Tr_layerMask = -1;
|
||
|
public string ToolName;
|
||
|
private RaycastHit hit;//射线
|
||
|
DateTime t1, t2;
|
||
|
private bool kongzhi = false;
|
||
|
private bool lol = false;
|
||
|
private int delta_millisecond = 400;
|
||
|
//public Toggle JGToggle; //进攻复选框
|
||
|
//public Toggle RSDToggle; //软水带复选框
|
||
|
|
||
|
//public Toggle CTToggle; //撤退复选框
|
||
|
[HideInInspector]
|
||
|
public bool lineFlag = false;
|
||
|
[HideInInspector]
|
||
|
public bool lineFiagchetui = false;
|
||
|
[HideInInspector]
|
||
|
public bool JG;
|
||
|
//public GameObject nullobject;
|
||
|
private GameObject ToolGrid;
|
||
|
private BaseClass JG_CT;
|
||
|
private BaseClass RSD;
|
||
|
private GameObject CTuiOBj;
|
||
|
private GameObject RSDObj;
|
||
|
private GameObject SSRSDObj;
|
||
|
private int RSDIndex = 0;
|
||
|
private GameObject PaiYanGuanObj;
|
||
|
private int PaiYanGuanIndex = 0;
|
||
|
private bool chetuilol = false;
|
||
|
private bool chetuikongzhi = false;
|
||
|
private GameObject JGongOBj;
|
||
|
private GameObject FGeOBJ;
|
||
|
private GameObject DJieOBJ;
|
||
|
[HideInInspector]
|
||
|
public bool CT;
|
||
|
[HideInInspector]
|
||
|
public bool SD_one;
|
||
|
[HideInInspector]
|
||
|
public bool SD_two;
|
||
|
[HideInInspector]
|
||
|
public bool shuidai_one = false;
|
||
|
[HideInInspector]
|
||
|
public bool shuidai_two = false;
|
||
|
private LayerMask RLinelayer = -1;
|
||
|
[HideInInspector]
|
||
|
public bool isRLineSelect = false;
|
||
|
[HideInInspector]
|
||
|
public LayerMask indoor_layerMask = -1;//室内层
|
||
|
public List<GameObject> LineSourceList = new List<GameObject>();
|
||
|
[HideInInspector]
|
||
|
public List<GameObject> LineRecrdList = new List<GameObject>();
|
||
|
GameObject FirstGame;
|
||
|
GameObject SecondGame;
|
||
|
private GameObject LineRenderGameObject;
|
||
|
private GameObject LineGameObject;
|
||
|
//[HideInInspector]
|
||
|
//public bool isToolSelect = false;
|
||
|
private void SetPlacePos(Vector3 hitPoint, out Vector3 placePos, RaycastHit hit)
|
||
|
{
|
||
|
//LineRecrdList.Add(hit.transform.gameObject);
|
||
|
if (hit.transform.gameObject.name.IndexOf("xiaofangyuan") >= 0)
|
||
|
{
|
||
|
placePos = hit.transform.position;
|
||
|
//LineSourceList.Add(hit.transform.gameObject);
|
||
|
placePos.y += 0.0f;//0.8f
|
||
|
}
|
||
|
else if (hit.transform.gameObject.name.IndexOf("xiaofangche") >= 0
|
||
|
|| hit.transform.gameObject.name.IndexOf("mb") >= 0)
|
||
|
{
|
||
|
placePos = hit.transform.gameObject.transform.position;
|
||
|
placePos = new Vector3(hit.transform.gameObject.transform.position.x, hit.transform.gameObject.transform.position.y + 0.5f, hit.point.z);
|
||
|
//if(hit.transform.gameObject)
|
||
|
//placePos = new Vector3
|
||
|
// (hit.transform.gameObject.transform.position.x,
|
||
|
// hit.transform.gameObject.transform.position.y,
|
||
|
// hit.transform.gameObject.transform.position.z);
|
||
|
//LineSourceList.Add(hit.transform.gameObject);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
placePos = new Vector3(hit.point.x, hit.point.y + 0.3f, hit.point.z);
|
||
|
}
|
||
|
}
|
||
|
void Awake()
|
||
|
{
|
||
|
if (Instance == null)
|
||
|
{
|
||
|
Instance = this;
|
||
|
}
|
||
|
Tr_layerMask = 1 << 25 | 1 << 26;
|
||
|
RLinelayer = 1 << 25 | 1 << 26 | 1 << 27 | 1 << 30;
|
||
|
ground_layerMask = 1 << 25 | 1 << 26;
|
||
|
indoor_layerMask = 1 << 29 | 1 << 25 | 1 << 26;
|
||
|
if (ExamInfoHelpClass.applicationMode == ExamInfoHelpClass.ApplicationMode.SANDTABLE)
|
||
|
{
|
||
|
this.transform.Find("ScrollRect/ToolGrid/AnQuanShao").gameObject.SetActive(false);
|
||
|
}
|
||
|
#region
|
||
|
ToolGrid = GameObject.Find("DomeView/BroweMenu").transform.Find("ToolButtonPicture/ScrollRect/ToolGrid").gameObject;
|
||
|
MessageDispatcher.AddListener("ResettingButton", ResettingButton);
|
||
|
MessageDispatcher.AddListener("InstantiateButton", GetObj);
|
||
|
#endregion
|
||
|
}
|
||
|
|
||
|
|
||
|
void OnDestroy()
|
||
|
{
|
||
|
MessageDispatcher.RemoveListener("ResettingButton", ResettingButton);
|
||
|
MessageDispatcher.RemoveListener("InstantiateButton", GetObj);
|
||
|
|
||
|
|
||
|
WaterKnockoutTrap.waterIndex = 0;
|
||
|
StagingArea.stagingAreaIndex = 0;
|
||
|
AQS.aqsIndex = 0;
|
||
|
AttackArrow.arrowIndex = 0;
|
||
|
DuJieArrow.arrowIndex = 0;
|
||
|
SplitLine.SplitLineIndex = 0;
|
||
|
CommandPost.commandIndex = 0;
|
||
|
Ladder.ladderIndex = 0;
|
||
|
StagingArea.stagingAreaIndex = 0;
|
||
|
PoliceLine.lineIndex = 0;
|
||
|
BaseNameText.baseNameText = 0;
|
||
|
}
|
||
|
//重置方法
|
||
|
void ResettingButton(IMessage message)
|
||
|
{
|
||
|
|
||
|
foreach (Transform child in ToolGrid.transform)
|
||
|
{
|
||
|
if (child.gameObject.GetComponent<Button>().interactable == true)
|
||
|
{
|
||
|
child.Find("Image").gameObject.SetActive(false);
|
||
|
}
|
||
|
}
|
||
|
if (RecordManager.Instance.IsRecording)
|
||
|
{
|
||
|
switch (ToolName)
|
||
|
{
|
||
|
case "JinGong":
|
||
|
if (JGongOBj)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("RecordInstantiateEvent", (object)JGongOBj.name);
|
||
|
JGongOBj = null;
|
||
|
}
|
||
|
break;
|
||
|
case "CheTui":
|
||
|
if (CTuiOBj)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("RecordInstantiateEvent", (object)CTuiOBj.name);
|
||
|
CTuiOBj = null;
|
||
|
}
|
||
|
break;
|
||
|
case "ShuiDai":
|
||
|
if (RSDObj)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("RecordInstantiateEvent", (object)RSDObj.name);
|
||
|
RSDObj = null;
|
||
|
}
|
||
|
break;
|
||
|
case "SSShuiDai":
|
||
|
if (SSRSDObj)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("RecordInstantiateEvent", (object)SSRSDObj.name);
|
||
|
SSRSDObj = null;
|
||
|
}
|
||
|
break;
|
||
|
case "FenGeXian":
|
||
|
if (FGeOBJ)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("RecordInstantiateEvent", (object)FGeOBJ.name);
|
||
|
FGeOBJ = null;
|
||
|
}
|
||
|
break;
|
||
|
case "DuJieXian":
|
||
|
if (DJieOBJ)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("RecordInstantiateEvent", (object)DJieOBJ.name);
|
||
|
DJieOBJ = null;
|
||
|
}
|
||
|
break;
|
||
|
case "PaiYanGuan":
|
||
|
if (PaiYanGuanObj)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("RecordInstantiateEvent", (object)PaiYanGuanObj.name);
|
||
|
PaiYanGuanObj = null;
|
||
|
}
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
ToolName = "";
|
||
|
JiantouColorControl.ToolName = ToolName;
|
||
|
}
|
||
|
/*
|
||
|
public void valueChangeJG( bool a)
|
||
|
{
|
||
|
if (JGToggle.isOn)
|
||
|
{
|
||
|
lineFlag = false;
|
||
|
placementPos = Vector3.zero;
|
||
|
ToolName = JingGongButton.name;
|
||
|
//GetObj(JingGongButton);
|
||
|
JG = true;
|
||
|
|
||
|
|
||
|
JGongOBj = null;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
|
||
|
lineFlag = true;
|
||
|
placementPos = Vector3.zero;
|
||
|
|
||
|
//JingGongButton.transform.FindChild("Image").gameObject.SetActive(false);
|
||
|
JG = false;
|
||
|
if (JGongOBj)
|
||
|
{
|
||
|
AttackArrow.arrowIndex++;
|
||
|
if (RecordManager.Instance.IsRecording)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("RecordInstantiateEvent", (object)JGongOBj.name);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
public void valueChangeCT(bool a)
|
||
|
{
|
||
|
if (CTToggle.isOn)
|
||
|
{
|
||
|
placementPos = Vector3.zero;
|
||
|
lineFiagchetui = false;
|
||
|
ToolName = CeTuiButton.name;
|
||
|
//GetObj(CeTuiButton);
|
||
|
CT = true;
|
||
|
CTuiOBj = null;
|
||
|
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
lineFiagchetui = true;
|
||
|
placementPos = Vector3.zero;
|
||
|
|
||
|
//CeTuiButton.transform.FindChild("Image").gameObject.SetActive(false);
|
||
|
CT = false;
|
||
|
if (CTuiOBj)
|
||
|
{
|
||
|
RetreatArrow.arrowIndex++;
|
||
|
if (RecordManager.Instance.IsRecording)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("RecordInstantiateEvent", (object)CTuiOBj.name);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
public void valueCheckSD1(bool a)
|
||
|
{
|
||
|
if (RSDToggle.isOn)
|
||
|
{
|
||
|
|
||
|
LineamentEvemt.IsDrawLine = true;
|
||
|
placementPos = Vector3.zero;
|
||
|
shuidai_two = false;
|
||
|
//RuanShuiDaiButton.transform.FindChild("Image").gameObject.SetActive(true);
|
||
|
SD_two = true;
|
||
|
ToolName = "";
|
||
|
RSDObj = null;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
LineamentEvemt.IsDrawLine = false;
|
||
|
placementPos = Vector3.zero;
|
||
|
shuidai_two = true;
|
||
|
SD_two = false;
|
||
|
//RuanShuiDaiButton.transform.FindChild("Image").gameObject.SetActive(false);
|
||
|
if (RSDObj)
|
||
|
{
|
||
|
RSDIndex++;
|
||
|
if (RecordManager.Instance.IsRecording)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("RecordInstantiateEvent", (object)RSDObj.name);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
*/
|
||
|
public void GetObj(IMessage message)
|
||
|
{
|
||
|
if (gameObject.name.Contains(message.Sender.ToString()))
|
||
|
{
|
||
|
var obj = (GameObject)message.Data;
|
||
|
t2 = DateTime.Now;
|
||
|
if (t2 - t1 < new TimeSpan(0, 0, 0, 0, delta_millisecond))//防止一次单击被检测到多次
|
||
|
return;
|
||
|
MessageDispatcher.SendMessage("ResettingButton");
|
||
|
obj.transform.Find("Image").gameObject.SetActive(true);
|
||
|
ToolName = obj.name;
|
||
|
shuidai_two = false;
|
||
|
lineFiagchetui = false;
|
||
|
lineFlag = false;
|
||
|
placementPos = Vector3.zero;
|
||
|
JiantouColorControl.ToolName = ToolName;
|
||
|
}
|
||
|
}
|
||
|
void Update()
|
||
|
{
|
||
|
|
||
|
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
|
||
|
if (Physics.Raycast(ray, out hit, Mathf.Infinity, indoor_layerMask))
|
||
|
{
|
||
|
if (hit.collider.name.Equals("VoidWall"))
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (Physics.Raycast(ray, out hit, Mathf.Infinity, RLinelayer) && Input.GetMouseButtonDown(0) && !EventSystem.current.IsPointerOverGameObject())
|
||
|
{
|
||
|
|
||
|
if (ToolName.Equals("ShuiDai"))
|
||
|
{
|
||
|
if (isRLineSelect)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
if (ToolName == null)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
//isRLineSelect = true;
|
||
|
GameObject parentsd = GameObject.Find("prguanxian");
|
||
|
string prline = "中队名" + "-" + "rguanxian" + "-" + "rline" + "-" + RSDIndex;
|
||
|
if (!shuidai_two)
|
||
|
{
|
||
|
if (placementPos.x == 0 && placementPos.y == 0 && placementPos.z == 0)
|
||
|
{
|
||
|
FirstGame = null;
|
||
|
FirstGame = hit.transform.gameObject;
|
||
|
|
||
|
if (hit.transform.gameObject.name.IndexOf("xiaofang") >= 0)
|
||
|
{
|
||
|
FirstGame = hit.transform.gameObject;
|
||
|
}
|
||
|
if (hit.transform.gameObject.name.IndexOf("xiaofangyuan") >= 0 || hit.transform.gameObject.name.Contains("mb"))
|
||
|
{
|
||
|
if (hit.transform.gameObject.GetComponent<RLineControl>().LineList_GameObject.Count > 0)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"已经连接管线");
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
SetPlacePos(hit.point, out placementPos, hit);
|
||
|
prlineObj = Instantiate(Resources.Load<GameObject>("Prefabs/ToolPrefab/NullPrefab")) as GameObject;
|
||
|
//prlineObj.AddComponent<lineParentMessage>();//增加管线父对象信息,用于显示长度
|
||
|
prlineObj.name = prline;
|
||
|
prlineObj.transform.parent = parentsd.transform;
|
||
|
RSDObj = prlineObj;
|
||
|
RSDIndex++;
|
||
|
}
|
||
|
shuidai_two = true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
SetPlacePos(hit.point, out placementPos2, hit);
|
||
|
if (placementPos.x != placementPos2.x)
|
||
|
{
|
||
|
SecondGame = null;
|
||
|
if (hit.transform.gameObject.name.Contains("xiaofangyuan") || hit.transform.gameObject.name.Contains("mb"))
|
||
|
{
|
||
|
if (hit.transform.gameObject.GetComponent<RLineControl>().LineList_GameObject.Count > 0)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"已经连接管线");
|
||
|
MessageDispatcher.SendMessage("SelectControl", (object)"");
|
||
|
LineamentEvent.gameobj = null;
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
//如果管线的另一头是消防员,要判断一下之前那一头是不是消防员
|
||
|
if (FirstGame&&FirstGame.name.Contains("xiaofangyuan"))
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
SecondGame = hit.transform.gameObject;
|
||
|
if (hit.transform.gameObject.name.IndexOf("xiaofang") >= 0 || hit.transform.gameObject.name.Contains("mb"))
|
||
|
{
|
||
|
SecondGame = hit.transform.gameObject;
|
||
|
}
|
||
|
if (prlineObj.GetComponent<GuanXianIDScript>().GuanXianList.Contains(SecondGame)) //判断管线两头是否连接了相同的物体
|
||
|
{
|
||
|
if (SecondGame.name.Contains("xiaofang") || SecondGame.name.Contains("XHS") || SecondGame.name.Contains("mb"))
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"已经连接此物体");
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Vector3 tempPos = (placementPos + placementPos2) / 2;//计算两个点的中点坐标,
|
||
|
LineRenderGameObject = Instantiate(Resources.Load<GameObject>("Prefabs/ToolPrefab/rline"), tempPos, Quaternion.identity) as GameObject;
|
||
|
LineRenderGameObject.name = prlineObj.name;
|
||
|
Destroy(LineRenderGameObject.GetComponent<RecordInstantiateEvent>());
|
||
|
LineGameObject = LineRenderGameObject;
|
||
|
LineRenderGameObject.transform.parent = prlineObj.transform;
|
||
|
LineRenderGameObject.GetComponent<BoxCollider>().isTrigger = true;
|
||
|
LineRenderGameObject.transform.up = (-(placementPos2 - placementPos)).normalized;//改变线条的朝向
|
||
|
float distance = Vector3.Distance(placementPos, placementPos2);//计算两点的距离
|
||
|
prlineObj.GetComponent<lineParentMessage>().lineLength += distance;
|
||
|
//prlineObj.GetComponent<lineParentMessage>().endPos = placementPos2;
|
||
|
LineRenderGameObject.transform.localScale = new Vector3(5f, distance * 18, 5f);//延长线条,连接两点。
|
||
|
LineRenderGameObject.GetComponent<LineMessage>().SetPos(placementPos, placementPos2);//记录该节管线的首尾点坐标,用于后期管线位置矫正
|
||
|
placementPos = placementPos2;
|
||
|
Pos2Controller = !Pos2Controller;
|
||
|
prlineObj.GetComponent<GuanXianIDScript>().GetTheMessage(FirstGame, SecondGame);
|
||
|
if (LineRenderGameObject.GetComponent<CengID>() && hit.transform.GetComponent<CengID>())
|
||
|
{
|
||
|
LineRenderGameObject.transform.GetComponent<CengID>().cengID = hit.transform.GetComponent<CengID>().cengID;//设置层ID,方便切层时隐藏管线
|
||
|
LineRenderGameObject.transform.GetComponent<CengID>().CengIDBuildType = hit.transform.GetComponent<CengID>().CengIDBuildType;//表示不同的楼
|
||
|
}
|
||
|
|
||
|
if (FirstGame.name == SecondGame.name)
|
||
|
{//防止消火栓被连续点中两次
|
||
|
SecondGame = null;
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (FirstGame != null && SecondGame != null)
|
||
|
{
|
||
|
FangFa(FirstGame, SecondGame);
|
||
|
StartCoroutine(DelaySet(FirstGame, SecondGame));//要在最后一帧设置。。防止跟RlineControl中的Update冲突
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
if (ToolName.Equals("SSShuiDai"))
|
||
|
{
|
||
|
if (isRLineSelect)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
if (ToolName == null)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
//isRLineSelect = true;
|
||
|
GameObject parentsd = GameObject.Find("prguanxian");
|
||
|
string prline = "中队名" + "-" + "rguanxian" + "-" + "ssrline" + "-" + RSDIndex;
|
||
|
if (!shuidai_two)
|
||
|
{
|
||
|
if (placementPos.x == 0 && placementPos.y == 0 && placementPos.z == 0)
|
||
|
{
|
||
|
FirstGame = null;
|
||
|
FirstGame = hit.transform.gameObject;
|
||
|
|
||
|
if (hit.transform.gameObject.name.IndexOf("xiaofang") >= 0)
|
||
|
{
|
||
|
FirstGame = hit.transform.gameObject;
|
||
|
}
|
||
|
if (hit.transform.gameObject.name.IndexOf("xiaofangyuan") >= 0 || hit.transform.gameObject.name.Contains("mb"))
|
||
|
{
|
||
|
if (hit.transform.gameObject.GetComponent<RLineControl>().LineList_GameObject.Count > 0)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"已经连接管线");
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
SetPlacePos(hit.point, out placementPos, hit);
|
||
|
prlineObj = Instantiate(Resources.Load<GameObject>("Prefabs/ToolPrefab/NullPrefab")) as GameObject;
|
||
|
//prlineObj.AddComponent<lineParentMessage>();//增加管线父对象信息,用于显示长度
|
||
|
prlineObj.name = prline;
|
||
|
prlineObj.transform.parent = parentsd.transform;
|
||
|
SSRSDObj = prlineObj;
|
||
|
RSDIndex++;
|
||
|
}
|
||
|
shuidai_two = true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
SetPlacePos(hit.point, out placementPos2, hit);
|
||
|
if (placementPos.x != placementPos2.x)
|
||
|
{
|
||
|
SecondGame = null;
|
||
|
if (hit.transform.gameObject.name.Contains("xiaofangyuan") || hit.transform.gameObject.name.Contains("mb"))
|
||
|
{
|
||
|
if (hit.transform.gameObject.GetComponent<RLineControl>().LineList_GameObject.Count > 0)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"已经连接管线");
|
||
|
MessageDispatcher.SendMessage("SelectControl", (object)"");
|
||
|
LineamentEvent.gameobj = null;
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
SecondGame = hit.transform.gameObject;
|
||
|
if (hit.transform.gameObject.name.IndexOf("xiaofang") >= 0 || hit.transform.gameObject.name.Contains("mb"))
|
||
|
{
|
||
|
SecondGame = hit.transform.gameObject;
|
||
|
}
|
||
|
if (prlineObj.GetComponent<GuanXianIDScript>().GuanXianList.Contains(SecondGame)) //判断管线两头是否连接了相同的物体
|
||
|
{
|
||
|
if (SecondGame.name.Contains("xiaofang") || SecondGame.name.Contains("XHS") || SecondGame.name.Contains("mb"))
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"已经连接此物体");
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Vector3 tempPos = (placementPos + placementPos2) / 2;//计算两个点的中点坐标,
|
||
|
LineRenderGameObject = Instantiate(Resources.Load<GameObject>("Prefabs/ToolPrefab/ssrline"), tempPos, Quaternion.identity) as GameObject;
|
||
|
LineRenderGameObject.name = prlineObj.name;
|
||
|
Destroy(LineRenderGameObject.GetComponent<RecordInstantiateEvent>());
|
||
|
LineGameObject = LineRenderGameObject;
|
||
|
LineRenderGameObject.transform.parent = prlineObj.transform;
|
||
|
LineRenderGameObject.GetComponent<BoxCollider>().isTrigger = true;
|
||
|
LineRenderGameObject.transform.up = (-(placementPos2 - placementPos)).normalized;//改变线条的朝向
|
||
|
float distance = Vector3.Distance(placementPos, placementPos2);//计算两点的距离
|
||
|
prlineObj.GetComponent<lineParentMessage>().lineLength += distance;
|
||
|
//prlineObj.GetComponent<lineParentMessage>().endPos = placementPos2;
|
||
|
LineRenderGameObject.transform.localScale = new Vector3(5f, distance * 18, 5f);//延长线条,连接两点。
|
||
|
LineRenderGameObject.GetComponent<LineMessage>().SetPos(placementPos, placementPos2);//记录该节管线的首尾点坐标,用于后期管线位置矫正
|
||
|
placementPos = placementPos2;
|
||
|
Pos2Controller = !Pos2Controller;
|
||
|
prlineObj.GetComponent<GuanXianIDScript>().GetTheMessage(FirstGame, SecondGame);
|
||
|
if (LineRenderGameObject.GetComponent<CengID>() && hit.transform.GetComponent<CengID>())
|
||
|
{
|
||
|
LineRenderGameObject.transform.GetComponent<CengID>().cengID = hit.transform.GetComponent<CengID>().cengID;//设置层ID,方便切层时隐藏管线
|
||
|
LineRenderGameObject.transform.GetComponent<CengID>().CengIDBuildType = hit.transform.GetComponent<CengID>().CengIDBuildType;//表示不同的楼
|
||
|
}
|
||
|
|
||
|
if (FirstGame.name == SecondGame.name)
|
||
|
{//防止消火栓被连续点中两次
|
||
|
SecondGame = null;
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (FirstGame != null && SecondGame != null)
|
||
|
{
|
||
|
FangFa(FirstGame, SecondGame);
|
||
|
StartCoroutine(DelaySet(FirstGame, SecondGame));//要在最后一帧设置。。防止跟RlineControl中的Update冲突
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if (Physics.Raycast(ray, out hit, Mathf.Infinity) && Input.GetMouseButtonDown(0) && !EventSystem.current.IsPointerOverGameObject())
|
||
|
{
|
||
|
if (ToolName == null)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
if (ToolName.Equals("PaiYanGuan"))
|
||
|
{
|
||
|
//isRLineSelect = true;
|
||
|
GameObject parentPyg = GameObject.Find("ppaiyanguan");
|
||
|
string ppyg = "中队名" + "-" + "paiyanguan" + "-" + "PaiYanGuan" + "-" + PaiYanGuanIndex;
|
||
|
if (!shuidai_two)
|
||
|
{
|
||
|
if (placementPos.x == 0 && placementPos.y == 0 && placementPos.z == 0)
|
||
|
{
|
||
|
// FirstGame = null;
|
||
|
// FirstGame = hit.transform.gameObject;
|
||
|
|
||
|
// if (hit.transform.gameObject.name.IndexOf("xiaofang") >= 0)
|
||
|
// {
|
||
|
// FirstGame = hit.transform.gameObject;
|
||
|
// }
|
||
|
// if (hit.transform.gameObject.name.IndexOf("xiaofangyuan") >= 0 || hit.transform.gameObject.name.Contains("mb"))
|
||
|
// {
|
||
|
// if (hit.transform.gameObject.GetComponent<RLineControl>().LineList_GameObject.Count > 0)
|
||
|
// {
|
||
|
// MessageDispatcher.SendMessage("Operatinghints", (object)"已经连接管线");
|
||
|
|
||
|
// return;
|
||
|
// }
|
||
|
// }
|
||
|
// SetPlacePos(hit.point, out placementPos, hit);
|
||
|
placementPos = new Vector3(hit.point.x, hit.point.y + 0.5f, hit.point.z);
|
||
|
pPaiYanGuanObj = Instantiate(Resources.Load<GameObject>("Prefabs/ToolPrefab/NullPrefab")) as GameObject;
|
||
|
//prlineObj.AddComponent<lineParentMessage>();//增加管线父对象信息,用于显示长度
|
||
|
pPaiYanGuanObj.name = ppyg;
|
||
|
pPaiYanGuanObj.transform.parent = parentPyg.transform;
|
||
|
PaiYanGuanObj = pPaiYanGuanObj;
|
||
|
PaiYanGuanIndex++;
|
||
|
}
|
||
|
shuidai_two = true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
//SetPlacePos(hit.point, out placementPos2, hit);
|
||
|
placementPos2 = new Vector3(hit.point.x, hit.point.y + 0.5f, hit.point.z);
|
||
|
if (placementPos.x != placementPos2.x)
|
||
|
{
|
||
|
//SecondGame = null;
|
||
|
//if (hit.transform.gameObject.name.Contains("xiaofangyuan") || hit.transform.gameObject.name.Contains("mb"))
|
||
|
//{
|
||
|
// if (hit.transform.gameObject.GetComponent<RLineControl>().LineList_GameObject.Count > 0)
|
||
|
// {
|
||
|
// MessageDispatcher.SendMessage("Operatinghints", (object)"已经连接管线");
|
||
|
// MessageDispatcher.SendMessage("SelectControl", (object)"");
|
||
|
// LineamentEvent.gameobj = null;
|
||
|
// return;
|
||
|
// }
|
||
|
//}
|
||
|
//SecondGame = hit.transform.gameObject;
|
||
|
//if (hit.transform.gameObject.name.IndexOf("xiaofang") >= 0 || hit.transform.gameObject.name.Contains("mb"))
|
||
|
//{
|
||
|
// SecondGame = hit.transform.gameObject;
|
||
|
//}
|
||
|
//if (prlineObj.GetComponent<GuanXianIDScript>().GuanXianList.Contains(SecondGame)) //判断管线两头是否连接了相同的物体
|
||
|
//{
|
||
|
// if (SecondGame.name.Contains("xiaofang") || SecondGame.name.Contains("XHS") || SecondGame.name.Contains("mb"))
|
||
|
// {
|
||
|
// MessageDispatcher.SendMessage("Operatinghints", (object)"已经连接此物体");
|
||
|
// return;
|
||
|
// }
|
||
|
//}
|
||
|
|
||
|
Vector3 tempPos = (placementPos + placementPos2) / 2;//计算两个点的中点坐标,
|
||
|
LineRenderGameObject = Instantiate(Resources.Load<GameObject>("Prefabs/ToolPrefab/PaiYanGuan"), tempPos, Quaternion.identity) as GameObject;
|
||
|
LineRenderGameObject.name = pPaiYanGuanObj.name;
|
||
|
Destroy(LineRenderGameObject.GetComponent<RecordInstantiateEvent>());
|
||
|
LineGameObject = LineRenderGameObject;
|
||
|
LineRenderGameObject.transform.parent = pPaiYanGuanObj.transform;
|
||
|
LineRenderGameObject.GetComponent<BoxCollider>().isTrigger = true;
|
||
|
LineRenderGameObject.transform.up = (-(placementPos2 - placementPos)).normalized;//改变线条的朝向
|
||
|
float distance = Vector3.Distance(placementPos, placementPos2);//计算两点的距离
|
||
|
//prlineObj.GetComponent<lineParentMessage>().lineLength += distance;
|
||
|
//prlineObj.GetComponent<lineParentMessage>().endPos = placementPos2;
|
||
|
LineRenderGameObject.transform.localScale = new Vector3(0.5f, distance * 0.34f, 0.5f);//延长线条,连接两点。
|
||
|
//LineRenderGameObject.GetComponent<LineMessage>().SetPos(placementPos, placementPos2);//记录该节管线的首尾点坐标,用于后期管线位置矫正
|
||
|
placementPos = placementPos2;
|
||
|
Pos2Controller = !Pos2Controller;
|
||
|
//prlineObj.GetComponent<GuanXianIDScript>().GetTheMessage(FirstGame, SecondGame);
|
||
|
if (LineRenderGameObject.GetComponent<CengID>() && hit.transform.GetComponent<CengID>())
|
||
|
{
|
||
|
LineRenderGameObject.transform.GetComponent<CengID>().cengID = hit.transform.GetComponent<CengID>().cengID;//设置层ID,方便切层时隐藏管线
|
||
|
LineRenderGameObject.transform.GetComponent<CengID>().CengIDBuildType = hit.transform.GetComponent<CengID>().CengIDBuildType;//表示不同的楼
|
||
|
}
|
||
|
|
||
|
//if (FirstGame.name == SecondGame.name)
|
||
|
//{//防止消火栓被连续点中两次
|
||
|
// SecondGame = null;
|
||
|
// return;
|
||
|
//}
|
||
|
|
||
|
//if (FirstGame != null && SecondGame != null)
|
||
|
//{
|
||
|
// FangFa(FirstGame, SecondGame);
|
||
|
// StartCoroutine(DelaySet(FirstGame, SecondGame));//要在最后一帧设置。。防止跟RlineControl中的Update冲突
|
||
|
//}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if (Physics.Raycast(ray, out hit, Mathf.Infinity, Tr_layerMask) && Input.GetMouseButtonDown(0) && !EventSystem.current.IsPointerOverGameObject())
|
||
|
{
|
||
|
if (InstantiationCar.Instance.isCarSelect)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
if (ToolName == null)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
if (ToolName.Equals("FenShuiQi"))
|
||
|
{
|
||
|
WaterKnockoutTrap fsq = new WaterKnockoutTrap(Resources.Load<GameObject>("Prefabs/ToolPrefab/fsq"), GameObject.Find("pfenshuiqi"), ToolGrid, WaterKnockoutTrap.waterIndex, hit, 0.2f);
|
||
|
fsq.InstatiateItem("中队名" + "-" + "fenshuiqi" + "-" + "fsq" + "-");
|
||
|
}
|
||
|
else if (ToolName.Equals("ShuSanRenYuan"))
|
||
|
{
|
||
|
ShuSanRenYuan ssry = new ShuSanRenYuan(Resources.Load<GameObject>("Prefabs/ToolPrefab/ssry"), GameObject.Find("pshusanrenyuan"), ToolGrid, ShuSanRenYuan.ssryIndex, hit, 1.0f);
|
||
|
// topname = "观察哨-" + GuanChaShao.gcsIndex;
|
||
|
string topname = "";
|
||
|
ssry.InstatiateItem("中队名" + "-" + "shusanrenyuan" + "-" + "ssry" + "-", topname);
|
||
|
}
|
||
|
else if (ToolName.Equals("SignalTower"))
|
||
|
{
|
||
|
SignalTower st = new SignalTower(Resources.Load<GameObject>("Prefabs/ToolPrefab/st"), GameObject.Find("pst"), ToolGrid, SignalTower.SignalTowerIndex, hit, 0.6f);
|
||
|
st.InstatiateItem("中队名" + "-" + "st" + "-" + "st" + "-");
|
||
|
}
|
||
|
else if (ToolName.Equals("NGJJQ"))
|
||
|
{
|
||
|
StagingArea jjq = new StagingArea(Resources.Load<GameObject>("Prefabs/ToolPrefab/ngjjq"), GameObject.Find("pjijiequ"), ToolGrid, StagingArea.stagingAreaIndex, hit, 0.2f);
|
||
|
jjq.InstatiateItem("中队名" + "-" + "jijiequ" + "-" + "ngjjq" + "-");
|
||
|
}
|
||
|
else if (ToolName.Equals("ChuQi"))
|
||
|
{
|
||
|
//指挥部头顶用户名处理
|
||
|
ChuQi zwd = new ChuQi(Resources.Load<GameObject>("Prefabs/ToolPrefab/ChuQi"), GameObject.Find("pChuQi"), ToolGrid, ChuQi.zwdIndex, hit, 0.5f);
|
||
|
zwd.InstatiateItem("中队名" + "-" + "ChuQi" + "-" + "ChuQi" + "-");
|
||
|
|
||
|
}
|
||
|
else if (ToolName.Equals("AnQuanShao"))
|
||
|
{
|
||
|
AQS aqs = new AQS(Resources.Load<GameObject>("Prefabs/ToolPrefab/aqs"), GameObject.Find("panquanshao"), ToolGrid, AQS.aqsIndex, hit, 0.2f);
|
||
|
string topname = "安全哨-" + AQS.aqsIndex;
|
||
|
aqs.InstatiateItem("中队名" + "-" + "anquanshao" + "-" + "aqs" + "-", topname);
|
||
|
} //观察哨
|
||
|
else if (ToolName.Equals("Volunteer"))
|
||
|
{
|
||
|
Volunteer v = new Volunteer(Resources.Load<GameObject>("Prefabs/ToolPrefab/volunteer"), GameObject.Find("pvolunteer"), ToolGrid, Volunteer.VolunteerIndex, hit, 0.2f);
|
||
|
string topname = "义务消防员-" + Volunteer.VolunteerIndex;
|
||
|
v.InstatiateItem("中队名" + "-" + "volunteer" + "-" + "volunteer" + "-", topname);
|
||
|
}
|
||
|
else if (ToolName.Equals("MobileBlisters"))//移动水炮
|
||
|
{
|
||
|
|
||
|
|
||
|
string TopName = "移动水炮" + "-" + MobileBlisters.MobileBlistersIndex;
|
||
|
|
||
|
string Name = "中队名" + "-" + "mb" + "-" + "mb" + "-";
|
||
|
|
||
|
MobileBlisters mb = new MobileBlisters(Resources.Load<GameObject>("Prefabs/ToolPrefab/mb"), GameObject.Find("pmb"), ToolGrid, MobileBlisters.MobileBlistersIndex, hit, 0.3f);
|
||
|
mb.InstatiateItem(Name, TopName);
|
||
|
//mb.Obj.transform.localEulerAngles = new Vector3(-90, 0, 360);
|
||
|
}
|
||
|
|
||
|
else if (ToolName.Equals("JinGong"))
|
||
|
{
|
||
|
////进攻箭头
|
||
|
GameObject parentjg = GameObject.Find("pjingong");
|
||
|
if (!lineFlag)
|
||
|
{
|
||
|
print(ToolName);
|
||
|
if (placementPos.x == 0 && placementPos.y == 0 && placementPos.z == 0)
|
||
|
{
|
||
|
JG_CT = new AttackArrow(Resources.Load<GameObject>("Prefabs/ToolPrefab/NullPrefab"), parentjg, Resources.Load<GameObject>("Prefabs/ToolPrefab/jg"), "中队名" + "-" + "jingong" + "-" + "jg" + "-", ToolGrid, AttackArrow.arrowIndex++, hit, 0.15f);
|
||
|
JGongOBj = JG_CT.Obj.transform.parent.gameObject;
|
||
|
JGongOBj.GetComponent<lineParentMessage>().size = JG_CT.Obj.transform.localScale.x;
|
||
|
}
|
||
|
lineFlag = true;
|
||
|
kongzhi = false;
|
||
|
lol = false;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
//if (JGToggle.isOn == false)
|
||
|
//{
|
||
|
// return;
|
||
|
//}
|
||
|
placementPos2 = new Vector3(hit.point.x, hit.point.y + 0.05f, hit.point.z);
|
||
|
JG_CT.InstatiateItem(placementPos2, kongzhi, lol, hit);
|
||
|
|
||
|
lol = true;
|
||
|
kongzhi = true; ;
|
||
|
}
|
||
|
}
|
||
|
else if (ToolName.Equals("DuJieXian"))
|
||
|
{
|
||
|
////进攻堵截
|
||
|
GameObject parentjg = GameObject.Find("pdujiexian");
|
||
|
if (!lineFlag)
|
||
|
{
|
||
|
print(ToolName);
|
||
|
if (placementPos.x == 0 && placementPos.y == 0 && placementPos.z == 0)
|
||
|
{
|
||
|
JG_CT = new DuJieArrow(Resources.Load<GameObject>("Prefabs/ToolPrefab/NullPrefab"), parentjg, Resources.Load<GameObject>("Prefabs/ToolPrefab/dj"), "中队名" + "-" + "dujiexian" + "-" + "dj" + "-", ToolGrid, DuJieArrow.arrowIndex++, hit, 0.15f);
|
||
|
DJieOBJ = JG_CT.Obj.transform.parent.gameObject;
|
||
|
DJieOBJ.GetComponent<lineParentMessage>().size = JG_CT.Obj.transform.localScale.x;
|
||
|
}
|
||
|
lineFlag = true;
|
||
|
kongzhi = false;
|
||
|
lol = false;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
//if (JGToggle.isOn == false)
|
||
|
//{
|
||
|
// return;
|
||
|
//}
|
||
|
placementPos2 = new Vector3(hit.point.x, hit.point.y + 0.05f, hit.point.z);
|
||
|
JG_CT.InstatiateItem_DuJie(placementPos2, kongzhi, lol, hit);
|
||
|
|
||
|
lol = true;
|
||
|
kongzhi = true; ;
|
||
|
}
|
||
|
}
|
||
|
else if (ToolName.Equals("FenGeXian"))
|
||
|
{
|
||
|
|
||
|
GameObject parentjg = GameObject.Find("pfengexian");
|
||
|
if (!lineFlag)
|
||
|
{
|
||
|
print(ToolName);
|
||
|
if (placementPos.x == 0 && placementPos.y == 0 && placementPos.z == 0)
|
||
|
{
|
||
|
JG_CT = new SplitLine(Resources.Load<GameObject>("Prefabs/ToolPrefab/NullPrefab"), parentjg, Resources.Load<GameObject>("Prefabs/ToolPrefab/fg"), "中队名" + "-" + "fengexian" + "-" + "fg" + "-", ToolGrid, SplitLine.SplitLineIndex++, hit, 0.15f);
|
||
|
FGeOBJ = JG_CT.Obj.transform.parent.gameObject;
|
||
|
FGeOBJ.GetComponent<lineParentMessage>().size = JG_CT.Obj.transform.localScale.x;
|
||
|
}
|
||
|
lineFlag = true;
|
||
|
kongzhi = false;
|
||
|
lol = false;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
placementPos2 = new Vector3(hit.point.x, hit.point.y + 0.05f, hit.point.z);
|
||
|
JG_CT.InstatiateItem_Fege(placementPos2, kongzhi, lol, hit);
|
||
|
|
||
|
lol = true;
|
||
|
kongzhi = true; ;
|
||
|
}
|
||
|
}
|
||
|
else if (ToolName.Equals("CheTui"))
|
||
|
{
|
||
|
//撤退箭头
|
||
|
GameObject parentct = GameObject.Find("pchetui");
|
||
|
|
||
|
if (!lineFiagchetui)
|
||
|
{
|
||
|
print(ToolName);
|
||
|
if (placementPos.x == 0 && placementPos.y == 0 && placementPos.z == 0)
|
||
|
{
|
||
|
JG_CT = new RetreatArrow(Resources.Load<GameObject>("Prefabs/ToolPrefab/NullPrefab"), parentct, Resources.Load<GameObject>("Prefabs/ToolPrefab/ct"), "中队名" + "-" + "chetui" + "-" + "ct" + "-", ToolGrid, RetreatArrow.arrowIndex++, hit, 0.05f);
|
||
|
CTuiOBj = JG_CT.Obj.transform.parent.gameObject;
|
||
|
CTuiOBj.GetComponent<lineParentMessage>().size = JG_CT.Obj.transform.localScale.x;
|
||
|
|
||
|
}
|
||
|
lineFiagchetui = true;
|
||
|
chetuikongzhi = false;
|
||
|
chetuilol = false;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
|
||
|
//if (CTToggle.isOn == false)
|
||
|
//{
|
||
|
// return;
|
||
|
//}
|
||
|
placementPos2 = new Vector3(hit.point.x, hit.point.y + 0.05f, hit.point.z);
|
||
|
JG_CT.InstatiateItem(placementPos2, chetuikongzhi, chetuilol, hit);
|
||
|
|
||
|
chetuilol = true;
|
||
|
chetuikongzhi = true;
|
||
|
}
|
||
|
}
|
||
|
else if (ToolName.Equals("ShiWuMi"))
|
||
|
{
|
||
|
//拉梯9m头顶用户名处理
|
||
|
Ladder lati9m = new Ladder(Resources.Load<GameObject>("Prefabs/ToolPrefab/lati15m"), GameObject.Find("plati"), ToolGrid, Ladder.ladderIndex, hit, 0);
|
||
|
string topname = "拉梯15米";
|
||
|
string zhbname = topname + "-" + "lati" + "-" + "lati15m" + "-";
|
||
|
lati9m.InstatiateItem(zhbname, topname);
|
||
|
}
|
||
|
else if (ToolName.Equals("LiuMi"))
|
||
|
{
|
||
|
//拉梯6m头顶用户名处理
|
||
|
Ladder lati6m = new Ladder(Resources.Load<GameObject>("Prefabs/ToolPrefab/lati6m"), GameObject.Find("plati"), ToolGrid, Ladder.ladderIndex, hit, 0);
|
||
|
string topname = "拉梯6米";
|
||
|
string zhbname = topname + "-" + "lati" + "-" + "lati6m" + "-";
|
||
|
lati6m.InstatiateItem(zhbname, topname);
|
||
|
}
|
||
|
else if (ToolName.Equals("JiJieQu"))
|
||
|
{
|
||
|
StagingArea jjq = new StagingArea(Resources.Load<GameObject>("Prefabs/ToolPrefab/jjq"), GameObject.Find("pjijiequ"), ToolGrid, StagingArea.stagingAreaIndex, hit, 0.2f);
|
||
|
jjq.InstatiateItem("中队名" + "-" + "jijiequ" + "-" + "jjq" + "-");
|
||
|
}
|
||
|
else if (ToolName.Equals("ShouTaiBeng"))
|
||
|
{
|
||
|
ShouTaiBeng stb = new ShouTaiBeng(Resources.Load<GameObject>("Prefabs/ToolPrefab/stb"), GameObject.Find("pshoutaibeng"), ToolGrid, ShouTaiBeng.ShouTaiBengIndex, hit, 0.2f);
|
||
|
string topname = "手抬泵-" + ShouTaiBeng.ShouTaiBengIndex;
|
||
|
|
||
|
stb.InstatiateItem("中队名" + "-" + "shoutaibeng" + "-" + "stb" + "-", topname);
|
||
|
}
|
||
|
else if (ToolName.Equals("QuyuSet"))
|
||
|
{
|
||
|
|
||
|
MessageDispatcher.SendMessage("ControlPolygonFalse", (object)"");
|
||
|
if (UIController.instance.PolygonPlane != null)
|
||
|
{
|
||
|
UIController.instance.PolygonPlane.SetActive(true);
|
||
|
UIController.instance.PolygonPlane.transform.position = new Vector3(hit.point.x, hit.point.y + 0.1f, hit.point.z);
|
||
|
}
|
||
|
|
||
|
|
||
|
GameObject game = Instantiate(Resources.Load<GameObject>("Prefabs/ToolPrefab/Polygon")) as GameObject;
|
||
|
game.transform.parent = GameObject.Find("AllParent/pPolygon").transform;
|
||
|
string Now = System.DateTime.Now.Year.ToString() + System.DateTime.Now.Month.ToString() + System.DateTime.Now.Day.ToString() + System.DateTime.Now.Hour.ToString() + System.DateTime.Now.Minute.ToString() + System.DateTime.Now.Second.ToString();
|
||
|
game.name = "Polygon" + Now;
|
||
|
|
||
|
MessageDispatcher.SendMessage(3f, "NodeTreeHints", (object)"在此区域设定");
|
||
|
|
||
|
if (RecordManager.Instance.IsRecording)
|
||
|
{
|
||
|
TrackRecordHelpClass.RECORDPolygon(game);
|
||
|
}
|
||
|
MessageDispatcher.SendMessage("ResettingButton");
|
||
|
}
|
||
|
else
|
||
|
if (ToolName.Equals("NameText"))
|
||
|
{
|
||
|
//指挥部头顶用户名处理
|
||
|
BaseNameText zhb = new BaseNameText(Resources.Load<GameObject>("Prefabs/ToolPrefab/NameText"), GameObject.Find("pnametext"), ToolGrid, BaseNameText.baseNameText, hit, 0);
|
||
|
string topname = "文字设置";
|
||
|
string zhbname = topname + "-" + "nametext" + "-" + "NameText" + "-";
|
||
|
zhb.InstatiateItem(zhbname, topname);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
//地面层
|
||
|
if (Physics.Raycast(ray, out hit, Mathf.Infinity, ground_layerMask) && Input.GetMouseButtonDown(0) &&
|
||
|
!EventSystem.current.IsPointerOverGameObject())
|
||
|
{
|
||
|
if (hit.collider.gameObject.layer == 26)
|
||
|
return;
|
||
|
if (InstantiationCar.Instance.isCarSelect)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
if (ToolName == null)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
if (ToolName.Equals("ZhiHuiBu"))
|
||
|
{
|
||
|
//指挥部头顶用户名处理
|
||
|
CommandPost zhb = new CommandPost(Resources.Load<GameObject>("Prefabs/ToolPrefab/zhb"), GameObject.Find("pzhihuibu"), ToolGrid, CommandPost.commandIndex, hit, 0.13f);
|
||
|
string topname = "指挥部";
|
||
|
string zhbname = topname + "-" + "zhihuibu" + "-" + "zhb" + "-";
|
||
|
zhb.InstatiateItem(zhbname, topname);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
else if (ToolName.Equals("JingJie"))
|
||
|
{
|
||
|
if ((placementPos.x == 0 && placementPos.y == 0 && placementPos.z == 0) || !Pos2Controller)
|
||
|
{
|
||
|
placementPos = new Vector3(hit.point.x, hit.point.y, hit.point.z);
|
||
|
Pos2Controller = !Pos2Controller;
|
||
|
Debug.Log(placementPos);
|
||
|
return;
|
||
|
}
|
||
|
//警戒线
|
||
|
placementPos2 = new Vector3(hit.point.x, hit.point.y, hit.point.z);
|
||
|
Debug.Log(placementPos2);
|
||
|
//判断第二次点击是否和第一次重合,同时避免因为每帧调用的误处理。
|
||
|
if ((placementPos.x != placementPos2.x) && (Pos2_late.x != placementPos2.x) && (Pos1_late.x != placementPos.x) && Pos2Controller)
|
||
|
{
|
||
|
//警戒线
|
||
|
PoliceLine jjx = new PoliceLine(Resources.Load<GameObject>("Prefabs/ToolPrefab/jjx"), GameObject.Find("pjingjiexian"), ToolGrid, PoliceLine.lineIndex, hit, placementPos, placementPos2);
|
||
|
jjx.InstatiateItem("中队名" + "-" + "jingjiexian" + "-" + "jjx" + "-", true);
|
||
|
|
||
|
Pos1_late = placementPos;
|
||
|
Pos2_late = placementPos2;
|
||
|
Pos2Controller = !Pos2Controller;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (ToolName.Equals("GuanChaShao"))
|
||
|
{
|
||
|
GuanChaShao gcs = new GuanChaShao(Resources.Load<GameObject>("Prefabs/ToolPrefab/gcs"), GameObject.Find("pguanchashao"), ToolGrid, GuanChaShao.gcsIndex, hit, 0.2f);
|
||
|
string topname = "观察哨-" + GuanChaShao.gcsIndex;
|
||
|
gcs.InstatiateItem("中队名" + "-" + "guanchashao" + "-" + "gcs" + "-", topname);
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
IEnumerator DelaySet(GameObject FirstGame, GameObject SecondGame)
|
||
|
{//哪边是消防车,哪边连着管线后就不能移动
|
||
|
yield return new WaitForEndOfFrame();
|
||
|
if (FirstGame.name.Contains("xiaofangche"))
|
||
|
{
|
||
|
FirstGame.GetComponent<LineamentEvent>().isConnectCar = true;
|
||
|
}
|
||
|
if (SecondGame.name.Contains("xiaofangche"))
|
||
|
{
|
||
|
SecondGame.GetComponent<LineamentEvent>().isConnectCar = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 此方法限制消防车、消火栓、消防员可以设置几条消防水带
|
||
|
/// </summary>
|
||
|
/// <param name="接水带时第一次点的物体"></param>
|
||
|
/// <param name="接水带时第二次点的物体"></param>
|
||
|
public void FangFa(GameObject FirstGame, GameObject SecondGame)
|
||
|
{
|
||
|
#region 消防员身上只能连一根管线
|
||
|
if (FirstGame.name.IndexOf("xiaofangyuan") > 0 || FirstGame.name.IndexOf("mb") > 0)
|
||
|
{
|
||
|
if (FirstGame.GetComponent<RLineControl>().LineList_GameObject.Count > 1)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
if (SecondGame.name.IndexOf("xiaofangyuan") > 0 || SecondGame.name.IndexOf("mb") > 0)
|
||
|
{//消防员只能接一条水带
|
||
|
if (SecondGame.GetComponent<RLineControl>().LineList_GameObject.Count > 1)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
#endregion
|
||
|
|
||
|
|
||
|
|
||
|
if ((FirstGame.name.Contains("xiaofang") || FirstGame.name.Contains("XHS") || FirstGame.name.Contains("mb") || FirstGame.name.Contains("xhs")) &&
|
||
|
(SecondGame.name.Contains("xiaofang") || SecondGame.name.Contains("XHS") || SecondGame.name.Contains("mb") || SecondGame.name.Contains("xhs")))
|
||
|
{
|
||
|
//MessageDispatcher.SendMessage("Operatinghints", (object)"连接管线成功");
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
//if (SecondGame.GetComponent<RLineControl>() && SecondGame.gameObject.layer != LayerMask.GetMask("dimain"))
|
||
|
//{
|
||
|
// SecondGame.GetComponent<RLineControl>().GetLianJieOb(prlineObj);
|
||
|
// MessageDispatcher.SendMessage("Operatinghints", (object)"连接管线成功");
|
||
|
// return;
|
||
|
//}
|
||
|
//if (FirstGame.GetComponent<RLineControl>())
|
||
|
//{
|
||
|
// FirstGame.GetComponent<RLineControl>().GetLianJieOb(prlineObj);
|
||
|
// MessageDispatcher.SendMessage("Operatinghints", (object)"连接管线成功");
|
||
|
//}
|
||
|
if ((FirstGame.name.Contains("XHS") || FirstGame.name.Contains("xhs") || FirstGame.name.Contains("pmc") || FirstGame.name.Contains("sgc")))
|
||
|
{
|
||
|
if (SecondGame.name.Contains("xiaofang") || SecondGame.name.Contains("mb"))
|
||
|
{
|
||
|
if (SecondGame.GetComponent<RLineControl>().LineList_GameObject.Contains(prlineObj))
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
SecondGame.GetComponent<RLineControl>().GetLianJieOb(prlineObj);
|
||
|
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"连接管线成功");
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
if ((SecondGame.name.Contains("XHS") || FirstGame.name.Contains("xhs") || SecondGame.name.Contains("pmc") || SecondGame.name.Contains("sgc")))
|
||
|
{
|
||
|
if (FirstGame.name.Contains("xiaofang") || FirstGame.name.Contains("mb"))
|
||
|
{
|
||
|
if (FirstGame.GetComponent<RLineControl>().LineList_GameObject.Contains(prlineObj))
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
FirstGame.GetComponent<RLineControl>().GetLianJieOb(prlineObj);
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"连接管线成功");
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
if ((FirstGame.name.Contains("xiaofang") || FirstGame.name.Contains("XHS") || FirstGame.name.Contains("xhs") || FirstGame.name.Contains("pmc") || FirstGame.name.Contains("sgc")))
|
||
|
{
|
||
|
if (SecondGame.gameObject.layer==25|| SecondGame.gameObject.layer == 26)
|
||
|
{
|
||
|
|
||
|
if (FirstGame.GetComponent<RLineControl>())
|
||
|
{
|
||
|
if (FirstGame.GetComponent<RLineControl>().LineList_GameObject.Contains(prlineObj))
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
FirstGame.GetComponent<RLineControl>().GetLianJieOb_Layer(prlineObj);
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ((SecondGame.name.Contains("xiaofang") || SecondGame.name.Contains("XHS") || SecondGame.name.Contains("xhs") || SecondGame.name.Contains("pmc") || SecondGame.name.Contains("sgc")))
|
||
|
{
|
||
|
if (FirstGame.gameObject.layer == 25 || FirstGame.gameObject.layer == 26)
|
||
|
{
|
||
|
if (SecondGame.GetComponent<RLineControl>())
|
||
|
{
|
||
|
if (SecondGame.GetComponent<RLineControl>().LineList_GameObject.Contains(prlineObj))
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
SecondGame.GetComponent<RLineControl>().GetLianJieOb_Layer(prlineObj);
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|