private void RemoveAllCallBack(int effectID) { EffectFactoryNodeAsyncLoadingObj obj = AllocAsyncLoadingObj(effectID); if (m_AsyncLoadingEffectResHandle.Contains(effectID)) { m_AsyncLoadingEffectResHandle.Remove(effectID); } }
private void UpdateCallBack() { if (m_AsyncLoadingEffectResHandle.Count <= 0) { return; } tempList.Clear(); foreach (int id in m_AsyncLoadingEffectResHandle) { LightingEffectResHandle reslut = AllocResourcesHandle(id); if (reslut.stage == LightingEffectResHandle.loadingStage.Stage_Finish) { tempList.Add(id); continue; } if (reslut.stage == LightingEffectResHandle.loadingStage.Stage_Invalid) { reslut.effectConfig = ASpeedGame.Data.Scheme.SchemeLightingEffect.Instance.GetLightingEffect(reslut.EffectID); if (!reslut.effectConfig) { OnHandleResLoadFinish(null, null, reslut); tempList.Add(id); continue; } reslut.prefabResNode = AssetBundleManager.GetAssetsAsync(AssetType.Asset_Prefab, OnHandleResLoadFinish, reslut.effectConfig.GetAssetGUID(), true, reslut); if (reslut.prefabResNode == null) { OnHandleResLoadFinish(null, null, reslut); tempList.Add(id); continue; } reslut.stage = LightingEffectResHandle.loadingStage.Stage_Res; } } foreach (int id in tempList) { EffectFactoryNodeAsyncLoadingObj obj = AllocAsyncLoadingObj(id); RemoveAllCallBack(id); for (int i = 0; i < obj.CallBackList.Count; i++) { if (obj.CallBackList[i] != null) { obj.CallBackList[i](obj.dataList[i]); } } obj.Clear(); } }
private void PushCallBack(int effectID, LightingEffectResHandleInstance data, System.Action <LightingEffectResHandleInstance> callBack) { EffectFactoryNodeAsyncLoadingObj obj = AllocAsyncLoadingObj(effectID); obj.CallBackList.Add(callBack); obj.dataList.Add(data); if (!m_AsyncLoadingEffectResHandle.Contains(effectID)) { m_AsyncLoadingEffectResHandle.Add(effectID); } }
private EffectFactoryNodeAsyncLoadingObj AllocAsyncLoadingObj(int effectID) { EffectFactoryNodeAsyncLoadingObj reslut = null; if (!m_AllocedAsyncObj.TryGetValue(effectID, out reslut)) { reslut = new EffectFactoryNodeAsyncLoadingObj(); reslut.Clear(); reslut.effectID = effectID; m_AllocedAsyncObj.Add(effectID, reslut); } return(reslut); }
private void RemoveCallBack(int effectID, System.Action <LightingEffectResHandleInstance> callBack) { if (!m_AllocedAsyncObj.ContainsKey(effectID)) { return; } EffectFactoryNodeAsyncLoadingObj obj = AllocAsyncLoadingObj(effectID); for (int i = 0; i < obj.CallBackList.Count; i++) { if (obj.CallBackList[i] == callBack) { obj.CallBackList.RemoveAt(i); obj.dataList.RemoveAt(i); break; } } }