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; }
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_); } }
public void DestroyEffectAssets() { if (null == m_StarEffect) { return; } m_StarEffect.DestorySelf(); m_StarEffect = null; }
static void EffectInstSyncLoadCallBack(EffectInst inst, MetaData metadata) { SyncLoadCounter++; if (SyncLoadCounter >= SyncLoadMax && SyncLoadCallBack != null) { SyncLoadCallBack(); SyncLoadMax = 0; SyncLoadCounter = 0; SyncLoadCallBack = null; } }
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; }
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)); }
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)); }
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)); }
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); }
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; }
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; }