using AX.Network.Protocols; using AX.Serialization; using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public class SPRAY_WATER_SYNC : NetworkMessageBehaviour { private SprayParticleType NowType = SprayParticleType.WaterStraight; //public GameObject FrothPrefabs; //public GameObject WaterFlowerPrefabs; //public GameObject WaterFogPrefabs; //public GameObject WaterStraightPrefabs; private GameObject CurrentParticle; private Transform Hose; void Start() { //NowType = SprayParticleType.WaterStraight; //{ // FrothPrefabs = Resources.Load("Particle/Froth"); //} //if (WaterFlowerPrefabs == null) // WaterFlowerPrefabs = Resources.Load("Particle/WaterFlower"); //if (WaterFogPrefabs == null) // WaterFogPrefabs = Resources.Load("Particle/WaterFog"); //if (WaterStraightPrefabs == null) // WaterStraightPrefabs = Resources.Load("Particle/WaterStraight"); } protected override void Execute(BinaryMessage message) { InputHistory.Instance.RegisterInputHistory(message); //var sender = message.ID; var info = message.Body.Deserialize(); if (InputManager.Instance) { if (CurrentUserInfo.mySelf.Id != info.SendUserID) { if (info.gameObjID == GetComponent().gameObjID) { if (info.IsOn) { Spraywater(info); } else { GameObject Sprayobj = EntitiesManager.Instance.GetEntityByID(info.gameObjID); Hose = TransformHelper.FindChild(Sprayobj.transform, "Hose"); //消防员 if (Sprayobj.GetComponent()) { Sprayobj.GetComponent().IsselfCurrent = false; Sprayobj.GetComponent().EndLay(); Sprayobj.GetComponent().SetBool("isInSitu", false); Hose.parent.gameObject.SetActive(false); } //消防车 if (Sprayobj.GetComponent()) { Hose.gameObject.SetActive(false); } //移动水泡 if(Sprayobj.GetComponent()) { for (int i = 0; i < Hose.childCount; i++) { Hose.GetChild(i).gameObject.SetActive(false); } } //暴风雪炮 if (Sprayobj.GetComponent()) { for (int i = 0; i < Hose.childCount; i++) { Hose.GetChild(i).gameObject.SetActive(false); } } if (Sprayobj.GetComponent()) {//机器人 GetComponent().pathFindEnable = false; for (int i = 0; i < Hose.childCount; i++) { Hose.GetChild(i).gameObject.SetActive(false); } GetComponent().JugeLenght(); } } } } } //else //{ // NetworkSyncHelper.AddSyncData(info); //} } private void Spraywater(SpraySyncData data) { GameObject sprayObj = EntitiesManager.Instance.GetEntityByID(data.gameObjID); Hose = TransformHelper.FindChild(sprayObj.transform, "Hose"); if (sprayObj.GetComponent()) { sprayObj.GetComponent().IsselfCurrent = false; sprayObj.GetComponent().StartSprayingLay(); sprayObj.GetComponent().SetBool("isInSitu", true); Hose.parent.gameObject.SetActive(true); } if (sprayObj.GetComponent()) { Hose.gameObject.SetActive(true); } if (sprayObj.GetComponent()) { sprayObj.GetComponent().StartSprayingLay(); sprayObj.GetComponent().IsselfCurrent = false; } SprayParticleType type = data.spraytype; switch (type) { case SprayParticleType.Froth: setShowParticle(type, data.size); NowType = SprayParticleType.Froth; break; case SprayParticleType.WaterFlower: setShowParticle(type, data.size); NowType = SprayParticleType.WaterFlower; break; case SprayParticleType.WaterFog: setShowParticle(type, data.size); NowType = SprayParticleType.WaterFog; break; case SprayParticleType.WaterStraight: setShowParticle(type, data.size); NowType = SprayParticleType.WaterStraight; break; } } private void setShowParticle(SprayParticleType type, float size) { for (int i = 0; i < Hose.childCount; i++) { // Destroy(Hose.GetChild(i).gameObject); if (Hose.GetChild(i).name == type.ToString()) { Hose.GetChild(i).gameObject.SetActive(true); //CurrentParticle = Hose.GetChild(i).gameObject; } else { Hose.GetChild(i).gameObject.SetActive(false); } } //Instantiate(prefabs, Hose); if (size != 0) { Hose.GetComponentInChildren().SetScaleValue(size); } } }