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.
772 lines
30 KiB
772 lines
30 KiB
using UnityEngine; |
|
using System.Collections; |
|
using AX.TrackRecord; |
|
using System.Collections.Generic; |
|
using AX.MessageSystem; |
|
using UnityEngine.UI; |
|
using NavMeshExtension; |
|
using UnityEngine.AI; |
|
|
|
public class BaseClass : MonoBehaviour { |
|
|
|
protected GameObject prefab; |
|
protected RaycastHit hit; |
|
protected GameObject parent; |
|
protected GameObject TheUIFather; |
|
protected int index = 0; |
|
public GameObject Obj; |
|
protected Vector3 placementPos; |
|
protected Vector3 pos1; |
|
protected Vector3 pos2; |
|
|
|
public BaseClass() |
|
{ |
|
|
|
} |
|
/// <summary> |
|
/// 物体统一实例化 |
|
/// </summary> |
|
/// <param name="prefab"></param> |
|
/// <param name="parent"></param> |
|
/// <param name="objAttri"></param> |
|
/// <param name="hasTopInfo"></param> |
|
public virtual void InstantiateItem(GameObject prefab, GameObject parent, ObjAttribute objAttri, bool hasTopInfo, bool multi) |
|
{ |
|
if (objAttri.ObjName.Contains("rline") || objAttri.ObjName.Contains("jg") || objAttri.ObjName.Contains("ct")|| objAttri.ObjName.Contains("dj")|| objAttri.ObjName.Contains("PaiYanGuan")) //PaiYanGuan |
|
{ |
|
Obj = Instantiate(Resources.Load<GameObject>("Prefabs/ToolPrefab/NullPrefab"), placementPos, Quaternion.identity) as GameObject; |
|
} |
|
else |
|
{ |
|
Obj = Instantiate(prefab, placementPos, Quaternion.identity) as GameObject; |
|
} |
|
|
|
if (objAttri.ObjName.Contains("jijiequ")) |
|
{ |
|
Obj.GetComponent<LoadJijie>().Jijie = objAttri.jijiequ; |
|
} |
|
if (objAttri.ObjName.Contains("chetui") || objAttri.ObjName.Contains("jingong") || objAttri.ObjName.Contains("fengexian")|| objAttri.ObjName.Contains("dujiexian")) |
|
{ |
|
Obj.GetComponent<lineParentMessage>().size = objAttri.lineSize; |
|
} |
|
if (objAttri.ObjName.Contains("nametext")) |
|
{ |
|
Obj.GetComponent<TextMesh>().text = objAttri.jijiequ.Name; |
|
Obj.GetComponent<TextMesh>().color = objAttri.jijiequ.color; |
|
Obj.transform.localScale = objAttri.trans.scale; |
|
} |
|
|
|
Obj.transform.parent = parent.transform; |
|
if (objAttri.ObjName.Contains("GroundFire_LG")) |
|
{ |
|
var spreadedFire = Obj.GetComponent<SpreadedFire>(); |
|
spreadedFire.fireSourceName = objAttri.ObjName.Split('+')[1];// + "(Node)"; 父火名字 |
|
} |
|
if (objAttri.ObjName.Contains("GroundFire_OilTank")) |
|
{ |
|
var oilTankName = objAttri.ObjName.Split('-')[3];//取得罐体名 |
|
Transform GrandParent = Obj.transform.parent.parent; |
|
GameObject oilTankObj = Obj; |
|
if (oilTankName.Contains("FuDingGuan")) |
|
{ |
|
GrandParent = GameObject.Find("5/WaiFuDingGuan_GuanQu").transform; |
|
} |
|
else if (oilTankName.Contains("GongDingGuan")) |
|
{ |
|
|
|
//GrandParent = GameObject.Find("5/GongDingGuan_GuanQu").transform; |
|
//伏牛溪 |
|
GrandParent = GameObject.Find("GongDingGuan_GuanQu").transform; |
|
} |
|
else if (oilTankName.Contains("QiuGuan")) |
|
{ |
|
GrandParent = GameObject.Find("5/QiuXingGuan_GuanQu").transform; |
|
} |
|
foreach(Transform child in GrandParent) |
|
{ |
|
if(child.GetChild(0).name== oilTankName) |
|
{ |
|
oilTankObj = child.GetChild(0).gameObject; |
|
break; |
|
} |
|
} |
|
Obj.GetComponent<ExplodeFire>().youGuan = oilTankObj; |
|
} |
|
Obj.GetComponent<CengID>().cengID = objAttri.CengID; |
|
Obj.GetComponent<CengID>().CengIDBuildType = objAttri.buildTpye; |
|
Obj.GetComponent<CengID>().hitTag = objAttri.PictureFile; |
|
TrackRecordHelpClass.Set_Pos_Rot_Sca_Load(Obj.transform, objAttri.trans); |
|
Obj.name = objAttri.ObjName; |
|
//加载地下建筑场景时,获取每层火身上的ID数据,显示有火源层烟雾 |
|
//if (MySceneManager.GetActiveScene().name.Equals("2") && Obj.name.Contains("fire")) |
|
//{ |
|
// GameObject smokeParent = GameObject.Find("TianJinZhan").transform.FindChild("Smoke").gameObject; |
|
// smokeParent.transform.FindChild("nei" + Obj.GetComponent<CengID>().cengID + "_smoke").gameObject.SetActive(true); |
|
//} |
|
//处理寻路模式下的实例化消防员:先赋值位置等,再添加寻路等控制脚本,否则报错 |
|
if (objAttri.ObjName.Contains("xfy_path") && !objAttri.ObjName.Contains("Zhaomingxian")) |
|
{ |
|
Obj.transform.localPosition = new Vector3(Obj.transform.localPosition.x, |
|
Obj.transform.localPosition.y + 0.05f, Obj.transform.localPosition.z); |
|
TrackRecordHelpClass.AddNavAgentScripts(Obj); |
|
InputManager.Instance_.characters.Add(Obj); |
|
|
|
} |
|
|
|
if (Obj.GetComponent<BaseGCS_SSRYCtrl>() ) |
|
{ |
|
BaseGCS_SSRYCtrl ctrl = null; |
|
if (Obj.GetComponent<GuanChaShaoCtrl>()) |
|
{ |
|
ctrl = Obj.GetComponent<GuanChaShaoCtrl>(); |
|
} |
|
else if (Obj.GetComponent<ShuSanRYCtrl>()) |
|
{ |
|
ctrl = Obj.GetComponent<ShuSanRYCtrl>(); |
|
} |
|
//赋值速度和位置数组 |
|
if (ctrl != null) |
|
{ |
|
ctrl.value = objAttri.AreaMask; |
|
ctrl.PosList.Clear(); |
|
objAttri.AllPath.ForEach(p => ctrl.PosList.Add(p)); |
|
ctrl.flag = true; |
|
} |
|
|
|
|
|
} |
|
|
|
if (objAttri.Lati_List.Count > 0) |
|
{ |
|
Transform t_lati_parent = Obj.transform; |
|
Transform t_lati_part1 = Obj.transform.Find("LadderDown"); |
|
Transform t_lati_part2 = t_lati_part1.Find("LadderUp"); |
|
TrackRecordHelpClass.Set_Pos_Rot_Sca_Load(t_lati_part1, objAttri.Lati_List[0]); |
|
LaTi_Rise_Attribute CarAttribute = objAttri.LaTi_Rise_Attribute[0]; |
|
Obj.GetComponent<BaseLadder>().CarAttribute = CarAttribute; |
|
TrackRecordHelpClass.Set_Pos_Rot_Sca_Load(t_lati_part2, objAttri.Lati_List[1]); |
|
if (Obj.name.Contains("15m")) |
|
{ |
|
Transform t_lati_part3 = t_lati_part2.Find("LadderUp2"); |
|
TrackRecordHelpClass.Set_Pos_Rot_Sca_Load(t_lati_part3, objAttri.Lati_List[2]); |
|
} |
|
} |
|
if (objAttri.ObjName.Contains("xiaofangche")) |
|
{ |
|
if (Obj.tag != "Carother") |
|
{ |
|
Obj.GetComponent<CarMessage>().CarAttri = objAttri.carAttriList[0]; |
|
} |
|
|
|
if (ExamInfoHelpClass.applicationMode == ExamInfoHelpClass.ApplicationMode.PATHFINDING) |
|
{ |
|
TrackRecordHelpClass.AddNavAgentScripts(Obj); |
|
} |
|
} |
|
if (hasTopInfo) |
|
{ |
|
Obj.transform.Find("info").Find("Name").GetComponent<TextMesh>().text = objAttri.TopName; |
|
if(Obj.transform.Find("info").Find("Function")) |
|
Obj.transform.Find("info").Find("Function").GetComponent<TextMesh>().text = objAttri.TaskName; |
|
} |
|
if (multi) |
|
{ |
|
foreach (ChildItem_Attribute child in objAttri.ChildList) |
|
{ |
|
GameObject childobj = Instantiate(prefab, Vector3.zero, Quaternion.identity) as GameObject; |
|
childobj.name = child.ObjName; |
|
childobj.GetComponent<CengID>().cengID = child.CengID; |
|
childobj.GetComponent<CengID>().CengIDBuildType = child.buildType; |
|
childobj.transform.parent = Obj.transform; |
|
if (childobj.GetComponent<LineMessage>()) |
|
{ |
|
childobj.GetComponent<LineMessage>().SetPos(child.beginP, child.endP); |
|
childobj.transform.parent.GetComponent<lineParentMessage>().lineLength+= Vector3.Distance(child.beginP, child.endP);//计算两点 |
|
} |
|
TrackRecordHelpClass.Set_Pos_Rot_Sca_Load(childobj.transform, child.trans); |
|
} |
|
|
|
} |
|
|
|
} |
|
public BaseClass(GameObject obj, GameObject parentObj, GameObject TheUI, int id, RaycastHit hit_, float delta_y) |
|
{ |
|
prefab = obj; |
|
parent = parentObj; |
|
TheUIFather = TheUI; |
|
index = id; |
|
hit = hit_; |
|
placementPos = new Vector3(hit.point.x, hit.point.y + delta_y, hit.point.z); |
|
|
|
} |
|
|
|
/// <summary> |
|
/// 移动指挥终端模块需要 |
|
/// </summary> |
|
/// <param name="obj"></param> |
|
/// <param name="parentObj"></param> |
|
/// <param name="TheUI"></param> |
|
/// <param name="id"></param> |
|
/// <param name="pos"></param> |
|
/// <param name="origin"></param> |
|
/// <param name="delta_y"></param> |
|
public BaseClass(GameObject obj, GameObject parentObj, GameObject TheUI, int id, MobileCFFSInfo.Vector2 pos, MobileCFFSInfo.Vector2 origin, float delta_y) |
|
{ |
|
prefab = obj; |
|
parent = parentObj; |
|
TheUIFather = TheUI; |
|
index = id; |
|
|
|
Vector3 positionX_Z = Vector3.zero; |
|
|
|
if (TO_3D_PLAN_SYNC.BuildingId == 2) |
|
{//天津站场景 |
|
positionX_Z = PositionConversion.PosConvertOfScene2(pos, origin); |
|
} |
|
if (TO_3D_PLAN_SYNC.BuildingId == 1) |
|
{//恒隆广场场景 |
|
positionX_Z = PositionConversion.PosConvertOfScene9(pos, origin); |
|
} |
|
if (TO_3D_PLAN_SYNC.BuildingId == 0) |
|
{//津塔场景 |
|
positionX_Z = PositionConversion.PosConvertOfScene11(pos, origin); |
|
} |
|
|
|
|
|
placementPos = positionX_Z; |
|
} |
|
|
|
public BaseClass(GameObject obj, GameObject parentObj, GameObject TheUI, int id, RaycastHit hit_, Vector3 pos1_, Vector3 pos2_) |
|
{ |
|
prefab = obj; |
|
parent = parentObj; |
|
TheUIFather = TheUI; |
|
index = id; |
|
hit = hit_; |
|
pos1 = pos1_; |
|
pos2 = pos2_; |
|
placementPos = (pos1_ + pos2_) / 2; |
|
} |
|
public BaseClass(GameObject nullObj, GameObject parentObj, GameObject JG_CT_Prefab, string ObjName, GameObject TheUI, int id, RaycastHit hit_, float delta_y) |
|
{ |
|
prefab = nullObj; |
|
parent = parentObj; |
|
TheUIFather = TheUI; |
|
index = id; |
|
hit = hit_; |
|
placementPos = new Vector3(hit.point.x, hit.point.y + delta_y, hit.point.z); |
|
ChildObj(ObjName);//Obj是生成的空物体 |
|
prefab = JG_CT_Prefab; |
|
parent = Obj; |
|
ChildObj(ObjName);//Obj是生成的第一个箭头物体 |
|
|
|
} |
|
public BaseClass(GameObject nullObj, GameObject parentObj, GameObject JG_CT_Prefab, string ObjName, GameObject TheUI, int id, RaycastHit hit_, Vector3 pos1_, Vector3 pos2_) |
|
{ |
|
prefab = nullObj; |
|
parent = parentObj; |
|
TheUIFather = TheUI; |
|
index = id; |
|
hit = hit_; |
|
placementPos = new Vector3(hit.point.x, hit.point.y , hit.point.z); |
|
|
|
ChildObj(ObjName);//Obj是生成的空物体 |
|
prefab = JG_CT_Prefab; |
|
parent = Obj; |
|
ChildObj(ObjName);//Obj是生成的第一个箭头物体 |
|
pos1 = pos1_; |
|
pos2 = pos2_; |
|
placementPos = (pos1_ + pos2_) / 2; |
|
} |
|
public void ChildObj(string objName) |
|
{ |
|
Obj = Instantiate(prefab, placementPos, Quaternion.identity) as GameObject; |
|
|
|
|
|
Obj.transform.parent = parent.transform; |
|
if (Obj.transform.parent.name.Contains("fengexian")&& !Obj.transform.parent.name.Contains("pfengexian")) |
|
{ |
|
Obj.transform.localScale = new Vector3(15, 15, 15); |
|
} |
|
//if (Obj.transform.parent.name.Contains("dujiexian") && !Obj.transform.parent.name.Contains("pdujiexian")) |
|
//{ |
|
// Obj.transform.localEulerAngles = new Vector3(90, Obj.transform.localEulerAngles.y, Obj.transform.localEulerAngles.z); |
|
//} |
|
|
|
SetCengID(Obj); |
|
Obj.name = objName + index; |
|
} |
|
public void InstObj(string objName) |
|
{ |
|
Obj = Instantiate(prefab, placementPos, Quaternion.identity) as GameObject; |
|
Obj.transform.parent = parent.transform; |
|
SetCengID(Obj); |
|
Obj.name = objName + index; |
|
if (objName.Contains("fire")) |
|
{ |
|
Obj.GetComponent<CengID>().hitTag = hit.transform.tag; |
|
} |
|
//RecordManager.Instance.objCount++; |
|
if (Obj.GetComponent<SetFireDire>()) |
|
{ |
|
// Debug.Log(Obj.name+" "+ hit.normal); |
|
Obj.GetComponent<SetFireDire>().SetDirec(hit); |
|
// Debug.DrawLine(hit.collider.transform.position, hit.normal * 1000, Color.blue); |
|
} |
|
if (Obj.GetComponent<LoadJijie>()) |
|
{ |
|
JiJieQu ji = new JiJieQu(); |
|
Obj.GetComponent<LoadJijie>().Jijie = ji; |
|
} |
|
|
|
if (RecordManager.Instance.IsRecording) |
|
{ |
|
MessageDispatcher.SendMessage("RecordInstantiateEvent", (object)Obj.name); |
|
} |
|
|
|
|
|
|
|
} |
|
public void InstObj(string objName,float i)//油罐 |
|
{ |
|
Obj = Instantiate(prefab, placementPos, Quaternion.identity) as GameObject; |
|
Obj.transform.parent = parent.transform; |
|
SetCengID(Obj); |
|
Obj.name = objName + index; |
|
//RecordManager.Instance.objCount++; |
|
if (RecordManager.Instance.IsRecording) |
|
{ |
|
MessageDispatcher.SendMessage("RecordInstantiateEvent", (object)Obj.name); |
|
} |
|
} |
|
public void InstObj(string objName, string topName) |
|
{ |
|
int XFYcout = 0; |
|
string TeamName = ""; |
|
if (objName.Contains("xiaofangche") && ExamInfoHelpClass.applicationMode == ExamInfoHelpClass.ApplicationMode.PATHFINDING && |
|
ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.ExamineMode) |
|
{ |
|
for (int i = 0; i < SetPowerScript.Instance.TeamList.Count; i++) |
|
{ |
|
TeamAttri team = SetPowerScript.Instance.TeamList[i] as TeamAttri; |
|
if (team.TeamName.Equals(InstantiationCar.Instance.dropDown.captionText.text)) |
|
{ |
|
for (int j = 0; j < team.PowerAttriList.Count; j++) |
|
{ |
|
if (topName.Contains(team.PowerAttriList[j].CarName)) |
|
{ |
|
GameObject Game = InstantiationCar.Instance.GetSelectGame(); |
|
if (int.Parse(Game.transform.Find("Text").GetComponent<Text>().text) == 0) |
|
{ |
|
Game.GetComponent<Button>().enabled = false; |
|
MessageDispatcher.SendMessage("ResettingButton"); |
|
return; |
|
} |
|
XFYcout = team.PowerAttriList[j].XFYCount; |
|
TeamName = team.TeamName; |
|
int Num = int.Parse(Game.transform.Find("Text").GetComponent<Text>().text); |
|
Num--; |
|
team.PowerAttriList[j].CarCount = Num; |
|
Game.transform.Find("Text").GetComponent<Text>().text = Num.ToString(); |
|
} |
|
} |
|
} |
|
} |
|
|
|
} |
|
Obj = Instantiate(prefab, placementPos, Quaternion.identity) as GameObject; |
|
Obj.transform.parent = parent.transform; |
|
SetCengID(Obj); |
|
Obj.name = objName + index; |
|
//消防员能框选,消防车不能框选 |
|
if (/*objName.Contains("xiaofangche") || */objName.Contains("xiaofangyuan")) |
|
{ |
|
InputManager.Instance_.characters.Add(Obj); |
|
} |
|
|
|
if (Obj.name.Contains("mb"))//针对移动水泡,设置下角度 |
|
{ |
|
Obj.transform.localEulerAngles = new Vector3(0, 0, 0); |
|
} |
|
if (Obj.GetComponent<Enemy>()) |
|
{ |
|
Enemy enemy = Obj.GetComponent<Enemy>(); |
|
enemy.InitName(topName); |
|
} |
|
Obj.GetComponent<LineamentEvent>().TeamName = topName; |
|
string strname; |
|
int count = objName.Length - 4; |
|
strname = objName.Substring(count, 4); |
|
string theSubName = strname.Substring(0, 3); |
|
if (objName.Contains("xiaofangche") && Obj.tag!="Carother") |
|
{ |
|
Obj.GetComponent<CarMessage>().CarAttri = CarAttributeControl.Instance.GetCarAttriFromCarName(theSubName); |
|
} |
|
if (objName.Contains("xiaofangche") && ExamInfoHelpClass.applicationMode == ExamInfoHelpClass.ApplicationMode.PATHFINDING && |
|
ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.ExamineMode && SetPowerScript.Instance.TeamList.Count>0) |
|
{ |
|
Obj.GetComponent<CarMessage>().TeamName = TeamName; |
|
Obj.GetComponent<CarMessage>().TheCarHavePeople = XFYcout; |
|
} |
|
if (ExamInfoHelpClass.applicationMode == ExamInfoHelpClass.ApplicationMode.PATHFINDING && objName.Contains("xiaofangche")) |
|
{ |
|
TrackRecordHelpClass.AddNavAgentScripts(Obj); |
|
} |
|
if (UIController.instance.NameControl) |
|
{ |
|
if(Obj.transform.Find("info")) |
|
Obj.transform.Find("info").gameObject.SetActive(true); |
|
} |
|
else |
|
{ |
|
if (Obj.transform.Find("info")) |
|
{ |
|
Obj.transform.Find("info").gameObject.SetActive(false); |
|
} |
|
} |
|
if (Obj.name.Contains("nametext")) |
|
{ |
|
Obj.transform.localEulerAngles = new Vector3(90, 90, 90); |
|
} |
|
if (RecordManager.Instance.IsRecording) |
|
{ |
|
MessageDispatcher.SendMessage("RecordInstantiateEvent", (object)Obj.name); |
|
} |
|
if (objName.Contains("xiaofangche") && ExamInfoHelpClass.applicationMode == ExamInfoHelpClass.ApplicationMode.PATHFINDING && |
|
ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.ExamineMode) |
|
{ |
|
|
|
} |
|
|
|
|
|
} |
|
|
|
/// <summary> |
|
/// 移动指挥终端实例化车辆 |
|
/// </summary> |
|
/// <param name="objName">对象名</param> |
|
/// <param name="topName">头顶名</param> |
|
private void InstTruckObj(string objName, string topName, string type) |
|
{ |
|
Transform pxiaofangche = GameObject.Find("AllParent").transform.Find("pxiaofangche").transform; |
|
bool cloned = false; |
|
foreach (Transform child in pxiaofangche) |
|
{ |
|
if (objName == child.name) |
|
{//已有该车辆,只更新位置 |
|
child.GetComponent<NavMeshAgent>().enabled = false; |
|
child.localPosition = placementPos; |
|
cloned = true; |
|
} |
|
} |
|
|
|
if (cloned) |
|
{//如果已有该名字(车牌号)的车辆,则return,不执行以下克隆逻辑 |
|
return; |
|
} |
|
|
|
int XFYcout = 10; |
|
string TeamName = topName.Split('-')[0]; |
|
|
|
Obj = Instantiate(prefab, placementPos, Quaternion.identity) as GameObject; |
|
|
|
Obj.GetComponent<YinCangMingCheng>().enabled = false; |
|
Obj.AddComponent<GetCarInfos>(); |
|
Obj.GetComponent<CarMessage>().Type = type; |
|
|
|
Obj.transform.parent = parent.transform; |
|
Obj.GetComponent<CengID>().cengID = 0; |
|
Obj.GetComponent<CengID>().CengIDBuildType = BuildType.TypeA; |
|
Obj.name = objName; |
|
|
|
if (Obj.GetComponent<Enemy>()) |
|
{ |
|
Enemy enemy = Obj.GetComponent<Enemy>(); |
|
enemy.InitName(topName); |
|
} |
|
|
|
Obj.GetComponent<LineamentEvent>().TeamName = topName; |
|
|
|
string theSubName = objName.Split('-')[2]; |
|
if (objName.Contains("xiaofangche") && Obj.tag != "Carother") |
|
{ |
|
Obj.GetComponent<CarMessage>().CarAttri = CarAttributeControl.Instance.GetCarAttriFromCarName(theSubName); |
|
} |
|
|
|
if (objName.Contains("xiaofangche") && ExamInfoHelpClass.applicationMode == ExamInfoHelpClass.ApplicationMode.PATHFINDING && |
|
ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.ExamineMode && SetPowerScript.Instance.TeamList.Count > 0) |
|
{ |
|
Obj.GetComponent<CarMessage>().TeamName = TeamName; |
|
Obj.GetComponent<CarMessage>().TheCarHavePeople = XFYcout; |
|
} |
|
if (ExamInfoHelpClass.applicationMode == ExamInfoHelpClass.ApplicationMode.PATHFINDING && objName.Contains("xiaofangche")) |
|
{ |
|
TrackRecordHelpClass.AddNavAgentScripts(Obj); |
|
} |
|
|
|
if (UIController.instance.NameControl) |
|
{ |
|
if (Obj.transform.Find("info")) |
|
Obj.transform.Find("info").gameObject.SetActive(true); |
|
} |
|
else |
|
{ |
|
if (Obj.transform.Find("info")) |
|
{ |
|
Obj.transform.Find("info").gameObject.SetActive(false); |
|
} |
|
} |
|
|
|
} |
|
|
|
public void InstObj(string objName, int flag) |
|
{ |
|
Obj = Instantiate(prefab, placementPos, Quaternion.identity) as GameObject; |
|
Obj.transform.parent = parent.transform; |
|
SetCengID(Obj); |
|
if (flag == 3)//flag==3,多点画管线使用,不加index序号了就 |
|
{ |
|
Obj.name = objName; |
|
} |
|
else |
|
{ |
|
Obj.name = objName + index; |
|
} |
|
|
|
} |
|
public virtual void InstatiateItem(Vector3 placementPos2, RaycastHit hit_)//多点管线 |
|
{ |
|
placementPos = placementPos2; |
|
} |
|
public void AdjustPipeLine(GameObject Obj) |
|
{ |
|
Obj.GetComponent<BoxCollider>().isTrigger = true; |
|
Obj.transform.up = (Obj.transform.position - pos1).normalized;//改变线条的朝向 |
|
float distance = Vector3.Distance(pos1, pos2);//计算两点的距离 |
|
Obj.transform.localScale = new Vector3(5f, distance * 18, 5f);//延长线条,连接两点。 |
|
if (RecordManager.Instance.IsRecording) |
|
{ |
|
MessageDispatcher.SendMessage("RecordInstantiateEvent", (object)Obj.name); |
|
} |
|
} |
|
public virtual void InstatiateItem(string objName, int flag)//管线 |
|
{ |
|
InstObj(objName, flag); |
|
AdjustPipeLine(Obj); |
|
|
|
} |
|
|
|
public virtual void InstatiateItem(string objName) |
|
{ |
|
InstObj(objName); |
|
} |
|
public virtual void InstatiateItem(string objName, float i)//油罐 |
|
{ |
|
InstObj(objName,i); |
|
} |
|
public void AdjustPoliceLine(GameObject Obj) |
|
{ |
|
float distance = Vector3.Distance(pos1, pos2); |
|
var y = Obj.GetComponent<BoxCollider>().size.y / 2; |
|
|
|
Obj.transform.Translate(0, y, 0); |
|
Obj.transform.forward = (pos2 - pos1).normalized; |
|
Obj.transform.localScale = new Vector3(20*5.0f,10*5.0f, distance * 80); |
|
|
|
if (RecordManager.Instance.IsRecording) |
|
{ |
|
MessageDispatcher.SendMessage("RecordInstantiateEvent", (object)Obj.name); |
|
} |
|
} |
|
public virtual void InstatiateItem(string objName, bool flag)//警戒线 |
|
{ |
|
ChildObj(objName); |
|
AdjustPoliceLine(Obj); |
|
//Reset(); |
|
|
|
} |
|
public virtual void InstatiateItem(string objName, string topname) |
|
{ |
|
InstObj(objName, topname); |
|
|
|
//Reset(); |
|
//头顶用户名处理 |
|
|
|
|
|
|
|
} |
|
|
|
/// <summary> |
|
/// 移动指挥终端通信的实例化车辆方法 |
|
/// </summary> |
|
/// <param name="objName">对象名</param> |
|
/// <param name="topname">头顶名</param> |
|
/// /// <param name="type">移动终端车辆名</param> |
|
public virtual void InstatiateTruck(string objName, string topname, string type) |
|
{ |
|
InstTruckObj(objName, topname, type); |
|
} |
|
|
|
public virtual void InstatiateItem(Vector3 placementPos2, bool kongzhi, bool lol, RaycastHit hit_) |
|
{ |
|
hit = hit_; |
|
Vector3 vertPos; |
|
var ABdistance = Vector3.Distance(placementPos, placementPos2); |
|
if (!kongzhi) |
|
{ |
|
Obj.transform.forward = (-(placementPos2 - placementPos)).normalized; |
|
} |
|
float pos = Mathf.CeilToInt(ABdistance); |
|
float count = Mathf.CeilToInt(pos / 3); |
|
int dex=1; |
|
if (count <1) |
|
{ |
|
count = 1; |
|
dex = 0; |
|
} |
|
|
|
for (int i = 0; i < count + dex; i++) |
|
{ |
|
if (count > 1) |
|
{ |
|
if (i != 0) |
|
{ |
|
vertPos = new Vector3(placementPos.x + (i / (float)count) * (placementPos2.x - placementPos.x), placementPos.y + (i / (float)count) * (placementPos2.y - placementPos.y), placementPos.z + (i / (float)count) * (placementPos2.z - placementPos.z)); |
|
GameObject cloneObj = Instantiate(prefab, vertPos, Quaternion.identity) as GameObject; |
|
cloneObj.transform.forward = (-(placementPos2 - placementPos)).normalized; |
|
cloneObj.transform.parent = parent.transform; |
|
cloneObj.name = parent.name; |
|
SetCengID(cloneObj); |
|
} |
|
} |
|
else |
|
{ |
|
GameObject cloneObj = Instantiate(prefab, placementPos2, Quaternion.identity) as GameObject; |
|
cloneObj.transform.forward = (-(placementPos2 - placementPos)).normalized; |
|
cloneObj.transform.parent = parent.transform; |
|
cloneObj.name = parent.name; |
|
SetCengID(cloneObj); |
|
|
|
} |
|
|
|
} |
|
lol = true; |
|
kongzhi = true; |
|
placementPos = placementPos2; |
|
} |
|
public virtual void InstatiateItem_Fege(Vector3 placementPos2, bool kongzhi, bool lol, RaycastHit hit_) |
|
{ |
|
hit = hit_; |
|
Vector3 vertPos; |
|
var ABdistance = Vector3.Distance(placementPos, placementPos2); |
|
if (!kongzhi) |
|
{ |
|
Obj.transform.forward = (-(placementPos2 - placementPos)).normalized; |
|
Obj.transform.localEulerAngles = new Vector3(90, Obj.transform.localEulerAngles.y, Obj.transform.localEulerAngles.z); |
|
} |
|
float pos = Mathf.CeilToInt(ABdistance); |
|
float count = Mathf.CeilToInt(pos / 3); |
|
int dex = 1; |
|
if (count < 1) |
|
{ |
|
count = 1; |
|
dex = 0; |
|
} |
|
|
|
for (int i = 0; i < count + dex; i++) |
|
{ |
|
if (count > 1) |
|
{ |
|
if (i != 0) |
|
{ |
|
vertPos = new Vector3(placementPos.x + (i / (float)count) * (placementPos2.x - placementPos.x), placementPos.y + (i / (float)count) * (placementPos2.y - placementPos.y), placementPos.z + (i / (float)count) * (placementPos2.z - placementPos.z)); |
|
GameObject cloneObj = Instantiate(prefab, vertPos, Quaternion.identity) as GameObject; |
|
cloneObj.transform.parent = parent.transform; |
|
cloneObj.transform.forward = (-(placementPos2 - placementPos)).normalized; |
|
cloneObj.transform.localScale = new Vector3(15, 15, 15); |
|
cloneObj.transform.localEulerAngles = new Vector3(90, cloneObj.transform.localEulerAngles.y, cloneObj.transform.localEulerAngles.z); |
|
cloneObj.name = parent.name; |
|
SetCengID(cloneObj); |
|
} |
|
} |
|
else |
|
{ |
|
GameObject cloneObj = Instantiate(prefab, placementPos2, Quaternion.identity) as GameObject; |
|
cloneObj.transform.parent = parent.transform; |
|
cloneObj.transform.forward = (-(placementPos2 - placementPos)).normalized; |
|
cloneObj.transform.localScale = new Vector3(15, 15, 15); |
|
cloneObj.transform.localEulerAngles = new Vector3(90, cloneObj.transform.localEulerAngles.y, cloneObj.transform.localEulerAngles.z); |
|
cloneObj.name = parent.name; |
|
SetCengID(cloneObj); |
|
|
|
} |
|
|
|
} |
|
lol = true; |
|
kongzhi = true; |
|
placementPos = placementPos2; |
|
} |
|
public virtual void InstatiateItem_DuJie(Vector3 placementPos2, bool kongzhi, bool lol, RaycastHit hit_) |
|
{ |
|
hit = hit_; |
|
Vector3 vertPos; |
|
var ABdistance = Vector3.Distance(placementPos, placementPos2); |
|
if (!kongzhi) |
|
{ |
|
Obj.transform.forward = ((placementPos2 - placementPos)).normalized; |
|
//Obj.transform.localEulerAngles = new Vector3(90, Obj.transform.localEulerAngles.y, Obj.transform.localEulerAngles.z); |
|
} |
|
float pos = Mathf.CeilToInt(ABdistance); |
|
float count = Mathf.CeilToInt(pos/1.5f); |
|
int dex = 1; |
|
if (count < 1) |
|
{ |
|
count = 1; |
|
dex = 0; |
|
} |
|
|
|
for (int i = 0; i < count + dex; i++) |
|
{ |
|
if (count > 1) |
|
{ |
|
if (i != 0) |
|
{ |
|
vertPos = new Vector3(placementPos.x + (i / (float)count) * (placementPos2.x - placementPos.x), placementPos.y + (i / (float)count) * (placementPos2.y - placementPos.y), placementPos.z + (i / (float)count) * (placementPos2.z - placementPos.z)); |
|
GameObject cloneObj = Instantiate(prefab, vertPos, Quaternion.identity) as GameObject; |
|
cloneObj.transform.parent = parent.transform; |
|
cloneObj.transform.forward = ((placementPos2 - placementPos)).normalized; |
|
cloneObj.transform.localScale = new Vector3(1, 1, 1); |
|
//cloneObj.transform.localEulerAngles = new Vector3(90, cloneObj.transform.localEulerAngles.y, cloneObj.transform.localEulerAngles.z); |
|
cloneObj.name = parent.name; |
|
SetCengID(cloneObj); |
|
} |
|
} |
|
else |
|
{ |
|
GameObject cloneObj = Instantiate(prefab, placementPos2, Quaternion.identity) as GameObject; |
|
cloneObj.transform.parent = parent.transform; |
|
cloneObj.transform.forward = ((placementPos2 - placementPos)).normalized; |
|
cloneObj.transform.localScale = new Vector3(1, 1, 1); |
|
//cloneObj.transform.localEulerAngles = new Vector3(90, cloneObj.transform.localEulerAngles.y, cloneObj.transform.localEulerAngles.z); |
|
cloneObj.name = parent.name; |
|
SetCengID(cloneObj); |
|
|
|
} |
|
|
|
} |
|
lol = true; |
|
kongzhi = true; |
|
placementPos = placementPos2; |
|
} |
|
public void SetCengID(GameObject obj) |
|
{ |
|
BuildItem build = new BuildItem(); |
|
if (hit.collider.GetComponent<CengID>()) |
|
{ |
|
build.floor = hit.collider.GetComponent<CengID>().cengID; |
|
build.buildType = hit.collider.GetComponent<CengID>().CengIDBuildType; |
|
MessageDispatcher.SendMessage(obj.name, "SetCengID", build); |
|
} |
|
|
|
} |
|
}
|
|
|