Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
    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);
                    }
                }
            }
        }
    }
Ejemplo n.º 3
0
 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);
 }
Ejemplo n.º 4
0
 public static void DestroyAirborne(MonsterAirborne mab, bool bImm = false)
 {
     mab.ReqFadeOut(bImm);
 }