public static MonsterAirborne CreateAirborne(Vector3 landPos, Type type) { GameObject go = new GameObject("Airborne_" + type); MonsterAirborne mab = go.AddComponent <MonsterAirborne> (); mab._type = type; mab.transform.position = landPos; return(mab); }
void OnDestroy() { if (_airborne != null) { MonsterAirborne.DestroyAirborne(_airborne, false); } #if DestroyLeftMonster if (!isSweep) { for (int i = 0; i < _agents.Count; i++) { MonEscape(_agents [i] as SceneEntityPosAgent, transform.position); } } #endif SceneMan.RemoveSceneObjs(_agents); _agents.Clear(); if (UITowerInfo.Instance != null && _uiData != null) { UITowerInfo.Instance.Hide(); } s_Beacons.Remove(this); if (!PeGameMgr.IsMulti && null != m_Mark) { PeMap.LabelMgr.Instance.Remove(m_Mark); m_Mark = null; } if (null != CSMain.Instance) { List <CSAssembly> assemblyList = CSMain.Instance.GetAllAssemblies(); if (0 < assemblyList.Count) { for (int i = 0; i < assemblyList.Count; ++i) { CSAssembly assembly = assemblyList[i]; if (null != assembly && assembly.InRange(_position)) { DigTerrainManager.ClearColonyBlockInfo(assembly); } } } } }
public void AddAirborneReq(SceneEntityPosAgent agent) { if (_airborne == null) { RaycastHit hinfo; Vector3 pos = _position; // target pos int layer = 1 << Pathea.Layer.VFVoxelTerrain | 1 << Pathea.Layer.Building | 1 << Pathea.Layer.SceneStatic | 1 << Pathea.Layer.Unwalkable; if (Physics.Raycast(pos + 500.0f * Vector3.up, Vector3.down, out hinfo, 1000.0f, layer)) { pos = hinfo.point; } MonsterAirborne.Type type = ((agent.protoId & Pathea.EntityProto.IdAirbornePujaMask) != 0) ? MonsterAirborne.Type.Puja : MonsterAirborne.Type.Paja; _airborne = MonsterAirborne.CreateAirborne(pos, type); } _airborne.AddAirborneReq(agent); }
public static void DestroyAirborne(MonsterAirborne mab, bool bImm = false) { mab.ReqFadeOut(bImm); }