// 로드가 성공하든 실패하든 pDone를 반드시 호출해줘야 한다~!! // pDone이 호출되지 않으면 로더가 무한히 기다린다. // 데이터별 로드시간이 천차만별이기에 타임아웃을 넣을 수도 없다. // 어떻게 반드시 호출하게 강제 할수가 없나??... public async virtual void Load ( SHLoadData pInfo, // 로드 할 데이터 정보 Action <string, SHLoadStartInfo> pStart, // 로드 시작시 호출해야 할 콜백 Action <string, SHLoadEndInfo> pDone // 로드 완료시 호출해야 할 콜백 ) { pStart(pInfo.m_strName, new SHLoadStartInfo()); pDone(pInfo.m_strName, new SHLoadEndInfo(eErrorCode.Data_NotImplementation)); await Task.Run(() => { }); }
public void SetLoadData(SHLoadData pData) { if (null == pData) { return; } pData.m_bIsDone = false; m_qLoadQueue.Enqueue(pData); if (false == m_dicTotalLoadData.ContainsKey(pData.m_eDataType)) { m_dicTotalLoadData.Add(pData.m_eDataType, new Dictionary <string, SHLoadData>()); } m_dicTotalLoadData[pData.m_eDataType][pData.m_strName.ToLower()] = pData; }
private void AddLoadData(SHLoadData pData) { if (null == pData) { return; } if (false == m_dicAllLoadData.ContainsKey(pData.m_eDataType)) { m_dicAllLoadData.Add(pData.m_eDataType, new Dictionary <string, SHLoadDataStateInfo>()); } var pDataStateInfo = new SHLoadDataStateInfo(pData); m_qLoadDataWaitQueue.Enqueue(pDataStateInfo); m_dicAllLoadData[pData.m_eDataType][pData.m_strName.ToLower()] = pDataStateInfo; }
void CallEventToPrograss(SHLoadData pData) { if (null == pData) { return; } var pEvent = new SHLoadEvent(); pEvent.m_eType = pData.m_eDataType; pEvent.m_strFileName = pData.m_strName; pEvent.m_pCount = m_pPrograss.GetCountInfo(); pEvent.m_pTime = m_pPrograss.GetLoadTime(pData.m_strName); pEvent.m_bIsSuccess = pData.m_bIsSuccess; pEvent.m_bIsFail = m_pPrograss.m_bIsFail; pEvent.m_fPercent = GetLoadPrograss(); pEvent.m_bIsAsyncPrograss = false; EventToProgress.Callback <SHLoadEvent>(this, pEvent); }
public async override void Load ( SHLoadData pInfo, Action <string, SHLoadStartInfo> pStart, Action <string, SHLoadEndInfo> pDone ) { pStart(pInfo.m_strName, new SHLoadStartInfo()); if (true == m_dicResources.ContainsKey(pInfo.m_strName.ToLower())) { pDone(pInfo.m_strName, new SHLoadEndInfo(eErrorCode.Succeed)); return; } var pTable = await Single.Table.GetTable <SHTableClientResources>(); var pResourceInfo = pTable.GetResouceInfo(pInfo.m_strName); if (null == pResourceInfo) { Debug.LogFormat("[LSH] 리소스 테이블에 {0}가 없습니다.(파일이 없거나 리소스 리스팅이 안되었음)", pInfo.m_strName); pDone(pInfo.m_strName, new SHLoadEndInfo(eErrorCode.Resources_NotExsitInTable)); return; } LoadAsync <UObject>(pResourceInfo, (pObject) => { if (null == pObject) { pDone(pInfo.m_strName, new SHLoadEndInfo(eErrorCode.Resources_LoadFailed)); } else { pDone(pInfo.m_strName, new SHLoadEndInfo(eErrorCode.Succeed)); } }); }
public void AddLoadInfo(Dictionary <string, SHLoadData> dicLoadList) { SHUtils.ForToDic(dicLoadList, (pKey, pValue) => { // 무결성체크 if (null == pValue) { return; } // 중복파일체크 SHLoadData pLoadData = GetLoadDataInfo(pValue.m_strName); if (null != pLoadData) { Debug.LogError(string.Format("중복파일 발견!!!(FileName : {0})", pValue.m_strName)); return; } // 초기화 및 등록 SetLoadData(pValue); m_pLoadCount.Value1++; }); }
// 다양화 : 로더로 부터 호출될 패치함수( 번들패치를 받아야겠네 ) public override void Patch(SHLoadData pInfo, Action <string, SHLoadStartInfo> pStart, Action <string, SHLoadEndInfo> pDone) { }
// 로드가 성공하든 실패하든 pDone를 반드시 호출해줘야 한다~!! // 어떻게 반드시 호출하게 강제 할수가 없네... public abstract void Patch ( SHLoadData pInfo, // 패치할 데이터 정보 Action <string, SHLoadStartInfo> pStart, // 패치 시작시 호출해야 할 콜백 Action <string, SHLoadEndInfo> pDone // 패치 완료시 호출해야 할 콜백 );
// 로드가 성공하든 실패하든 pDone를 반드시 호출해줘야 한다~!! // 어떻게 반드시 호출하게 강제 할수가 없네... public abstract void Load ( SHLoadData pInfo, // 로드할 데이터 정보 Action <string, SHLoadStartInfo> pStart, // 로드 시작시 호출해야 할 콜백 Action <string, SHLoadEndInfo> pDone // 로드 완료시 호출해야 할 콜백 );
public SHLoadDataStateInfo(SHLoadData pData) : this() { m_pLoadDataInfo = pData; }