Exemple #1
0
    void LoadAssetBundleCallBack(AssetBundle bundle, ParamData data)
    {
        if (bundle.mainAsset == null)
        {
            ClientLog.Instance.LogError("Effect bundle is broken.   ID : " + data.lrRequest.id_);
            return;
        }
        EffectInst ei = null;

        if (data.lrRequest.meta_data_ != null)
        {
            GameObject effObj = null;
            try
            {
                effObj = (GameObject)GameObject.Instantiate(bundle.mainAsset) as GameObject;
            }
            catch (System.InvalidCastException e)
            {
                effObj = new GameObject();
                ClientLog.Instance.Log("InvalidCastException    " + e.ToString());
            }
            ei    = effObj.AddComponent <EffectInst> ();
            ei.ID = (EFFECT_ID)data.lrRequest.id_;
        }

        EffectStruct es = new EffectStruct();

        es.id_        = (EFFECT_ID)data.lrRequest.id_;
        es.bundle_    = bundle;
        es.refCount_ += 1;
        effectLst_.Add(es);

        data.lrRequest.callback_(ei, data.lrRequest.meta_data_);
        loading = false;
    }
Exemple #2
0
    static void EffectInstCallBack(EffectInst inst, MetaData metadata)
    {
        //
        if (null == inst)
        {
            return;
        }

//		int SoundId = EffectAssetsData.GetData( (int)inst.ID ).SoundID;
//
//		SoundTools.PlaySound((SOUND_ID)SoundId);

        if (metadata.parents_ != null && metadata.parents_.Length > 0)
        {
            inst.transform.parent = metadata.parents_[metadata.index_];
        }
        inst.transform.localScale    = Vector3.one;
        inst.transform.localPosition = Vector3.zero;
        inst.transform.localRotation = Quaternion.identity;
        inst.reach_call_back_1_      = metadata.hcb_1_;
        inst.reach_call_back_2_      = metadata.hcb_2_;
        inst.reach_call_back_eff_    = metadata.hcb_eff_;
        inst.reach_call_back_pop_    = metadata.hcb_pop_;
        inst.finish_call_back_       = metadata.fcb_;
        inst.Go(metadata.caster_, metadata.aims_, metadata.index_);
        if (metadata.eicb_ != null)
        {
            metadata.eicb_(inst, metadata.data_);
        }
    }
Exemple #3
0
 public void DestroyEffectAssets()
 {
     if (null == m_StarEffect)
     {
         return;
     }
     m_StarEffect.DestorySelf();
     m_StarEffect = null;
 }
Exemple #4
0
 static void EffectInstSyncLoadCallBack(EffectInst inst, MetaData metadata)
 {
     SyncLoadCounter++;
     if (SyncLoadCounter >= SyncLoadMax && SyncLoadCallBack != null)
     {
         SyncLoadCallBack();
         SyncLoadMax      = 0;
         SyncLoadCounter  = 0;
         SyncLoadCallBack = null;
     }
 }
Exemple #5
0
 public void StarEffectInstCallBack(EffectInst starInst, ParamData data)
 {
     // 之前是如果有新的死亡星星加载 则销毁当前的再赋值。现在改为直接抛弃新的 就用之前的。
     DestroyEffectAssets();
     if (GamePlayer.Instance.isInBattle == false)
     {
         GameObject.Destroy(starInst.gameObject);
         ClientLog.Instance.LogError("********############&@@@@@&&&&&&&&&&&&&&&&&&&");
     }
     StartEffect = starInst;
     StartEffect.transform.parent = ActorObj.transform;
 }
Exemple #6
0
    public void Instantiate(int id, Vector3 position, Quaternion rotation, Transform parent = null, EffectInstantiateCompleted OnInstantiated = null)
    {
        EffCastData data = EffCastData.GetEffCastData(id);

        if (data == null)
        {
            return;
        }

        EffectInst inst = new EffectInst();

        inst.coroutine = new CoroutineEffect(this, this.InstantiateEffect(inst, Resources.Load(data.m_path), position, rotation, data, parent, OnInstantiated));
    }
Exemple #7
0
    public void Instantiate(int id, Transform tr, Transform parent = null, Transform target = null, EffectInstantiateCompleted OnInstantiated = null)
    {
        EffCastData data = EffCastData.GetEffCastData(id);

        if (data == null)
        {
            return;
        }

        EffectInst inst = new EffectInst();

        inst.coroutine = new CoroutineEffect(this, this.InstantiateEffect(inst, Resources.Load(data.m_path), tr, data, parent, target, OnInstantiated));
    }
Exemple #8
0
    public void LoadEffect(EFFECT_ID effID, InstanceCallBack callback, EffectAPI.MetaData metadata)
    {
        if (EffectAssetsData.GetData((int)effID) == null)
        {
            return;
        }
        GameObject eff = GetEffect(effID);

        if (eff != null)
        {
            EffectInst ei = eff.AddComponent <EffectInst> ();
            ei.ID = effID;
            callback(ei, metadata);
            return;
        }

        requestQue_.Enqueue(new LoadRequest(effID, callback, metadata));
    }
Exemple #9
0
    void SaveEffectInst(EffectInst inst, ParamData data)
    {
        if (data == null)
        {
            return;
        }

        if (effectInsts_.ContainsKey(data.iParam))
        {
            effectInsts_[data.iParam].DestorySelf();
            effectInsts_[data.iParam] = inst;
        }
        else
        {
            effectInsts_.Add(data.iParam, inst);
        }

        //if (inst.needRotate())
        //    inst.transform.Rotate(Vector3.up, 180f);
    }
Exemple #10
0
    private IEnumerator InstantiateEffect(EffectInst inst, Object obj, Vector3 position, Quaternion rotation,
                                          EffCastData data, Transform parent = null, EffectInstantiateCompleted OnInstantiated = null)
    {
        effectInstList.Add(inst);

        if (data.m_delaytime > PETools.PEMath.Epsilon)
        {
            yield return(new WaitForSeconds(data.m_delaytime));
        }

        GameObject effect = MonoBehaviour.Instantiate(obj, position + rotation * data.mOffsetPos, rotation) as GameObject;

        if (effect != null && OnInstantiated != null)
        {
            OnInstantiated(data, effect);
        }

        if (effect != null)
        {
            if (parent != null)
            {
                effect.transform.parent = parent;
            }
            else
            {
                effect.transform.parent = transform;
            }
        }

        if (effect != null && data.m_liveTime > PETools.PEMath.Epsilon)
        {
            yield return(new WaitForSeconds(data.m_liveTime));

            Destroy(effect);
        }

        effectInstList.Remove(inst);
        yield break;
    }
Exemple #11
0
    private IEnumerator InstantiateEffect(EffectInst inst, Object obj, Transform tr, EffCastData data,
                                          Transform parent = null, Transform target = null, EffectInstantiateCompleted OnInstantiated = null)
    {
        effectInstList.Add(inst);

        if (data.m_delaytime > PETools.PEMath.Epsilon)
        {
            yield return(new WaitForSeconds(data.m_delaytime));
        }

        if (tr == null)
        {
            yield break;
        }

        Quaternion rot;

        if (data.m_direction == 0)
        {
            rot = Quaternion.identity;
        }
        else if (data.m_direction == 1)
        {
            rot = tr.rotation;
        }
        else
        {
            if (target != null)
            {
                rot = Quaternion.LookRotation(target.position - tr.position);
            }
            else
            {
                rot = tr.rotation;
            }
        }

        GameObject effect = MonoBehaviour.Instantiate(obj, tr.position + tr.rotation * data.mOffsetPos, rot) as GameObject;

        if (effect != null && OnInstantiated != null)
        {
            OnInstantiated(data, effect);
        }

        if (effect != null)
        {
            if (parent != null)
            {
                effect.transform.parent = parent;
            }
            else
            {
                effect.transform.parent = transform;
            }
        }

        if (effect != null && data.m_liveTime > PETools.PEMath.Epsilon)
        {
            yield return(new WaitForSeconds(data.m_liveTime));

            Destroy(effect);
        }

        effectInstList.Remove(inst);
        yield break;
    }