IEnumerator PickUpEffect(string key, MineDropComponent mineDropComponent)
    {
        mineDropComponent.AddEffect();

        MineDropItemInfo gatherDropItemInfo = m_GatherDropItemInfos[key];

        if (gatherDropItemInfo.obj != null)
        {
            gatherDropItemInfo.obj.SetActive(false);
        }

        yield return(new WaitForSeconds(3.0f));

        DestoryDropInfo(key);
    }
 public void NotifyDropResult(string key)
 {
     if (m_GatherDropItemInfos.ContainsKey(key))
     {
         GameObject obj = m_GatherDropItemInfos[key].obj;
         if (obj)
         {
             MineDropComponent mineDropComponent = obj.GetComponent <MineDropComponent>();
             if (mineDropComponent)
             {
                 UIManager.Instance.StartCoroutine(PickUpEffect(key, mineDropComponent));
             }
         }
         else
         {
             DestoryDropInfo(key);
         }
     }
 }
    private void CreateDropItem(string key, MineDropItemInfo mineDropItemInfo, bool needFly = false)
    {
        NpcCombat?nc = m_CfgEternityProxy.GetNpcCombatByKey(mineDropItemInfo.tid);

        if (!nc.HasValue)
        {
            return;
        }

        PackageBoxAttr?pb = m_CfgEternityProxy.GetPackageBoxAttrByModelIdAndGrade((uint)nc.Value.BoxModel, mineDropItemInfo.ship_tlv);

        if (!pb.HasValue)
        {
            return;
        }

        int   modelid = pb.Value.BoxModel;
        Model?mdata   = m_CfgEternityProxy.GetModel(modelid);

        if (mdata.Value.AssetName.Equals(string.Empty))
        {
            return;
        }

        Vector3          curPos = Vector3.zero;
        SpacecraftEntity spe    = m_GameplayProxy.GetEntityById <SpacecraftEntity>((uint)mineDropItemInfo.parentid) as SpacecraftEntity;

        if (spe)
        {
            curPos = spe.GetRootTransform().position;
        }

        AssetUtil.InstanceAssetAsync(mdata.Value.AssetName, (address, uObj, userData) =>
        {
            mineDropItemInfo.obj = uObj as GameObject;
            MineDropComponent mineDropComponent = mineDropItemInfo.obj.GetComponent <MineDropComponent>();
            if (!mineDropComponent)
            {
                mineDropComponent = mineDropItemInfo.obj.AddComponent <MineDropComponent>();
            }

            SpacecraftEntity mainPlayer = m_GameplayProxy.GetMainPlayer();
            mineDropComponent.Initialize(mainPlayer, mineDropItemInfo.uid, mineDropItemInfo.tid, mineDropItemInfo.item_tid, pb);
            if (needFly)
            {
                mineDropItemInfo.obj.transform.position = curPos;
                mineDropComponent.AddFlyEffect(mineDropItemInfo.positon_x, mineDropItemInfo.positon_y, mineDropItemInfo.positon_z);
            }
            else
            {
                Vector3 endPos         = new Vector3(mineDropItemInfo.positon_x, mineDropItemInfo.positon_y, mineDropItemInfo.positon_z);
                Vector3 clientPosition = m_GameplayProxy.ServerAreaOffsetToClientPosition(endPos);
                mineDropItemInfo.obj.transform.position = clientPosition;
                mineDropComponent.SetDropItemState(DropItemState.Stay);
                mineDropComponent.AddEffect(true);
            }

            /// 跃迁客户端不清数据
            if (m_GatherDropItemInfos.ContainsKey(key))
            {
                m_GatherDropItemInfos.Remove(key);
            }
            m_GatherDropItemInfos.Add(key, mineDropItemInfo);
        });
    }