//---------------------------------------------------------------------------------- // //---------------------------------------------------------------------------------- Effect* Effect::Create(Manager* manager, const EFK_CHAR* path, float magnification, const EFK_CHAR* materialPath) { Setting* setting = manager->GetSetting(); EffectLoader* eLoader = setting->GetEffectLoader(); if (setting == NULL) return NULL; void* data = NULL; int32_t size = 0; if (!eLoader->Load(path, data, size)) return NULL; EFK_CHAR parentDir[512]; if (materialPath == NULL) { GetParentDir(parentDir, path); materialPath = parentDir; } Effect* effect = EffectImplemented::Create(manager, data, size, magnification, materialPath); eLoader->Unload(data, size); return effect; }
//---------------------------------------------------------------------------------- // //---------------------------------------------------------------------------------- bool EffectImplemented::Reload( Manager* managers, int32_t managersCount, const EFK_CHAR* path, const EFK_CHAR* materialPath ) { if(m_pManager == NULL ) return false; Setting* loader = GetSetting(); EffectLoader* eLoader = loader->GetEffectLoader(); if( loader == NULL ) return false; void* data = NULL; int32_t size = 0; if( !eLoader->Load( path, data, size ) ) return false; EFK_CHAR parentDir[512]; if( materialPath == NULL ) { GetParentDir(parentDir, path); materialPath = parentDir; } for( int32_t i = 0; i < managersCount; i++) { ((ManagerImplemented*)&(managers[i]))->BeginReloadEffect( this ); } Reset(); Load( data, size, m_maginificationExternal, materialPath ); m_pManager->EndReloadEffect( this ); for( int32_t i = 0; i < managersCount; i++) { ((ManagerImplemented*)&(managers[i]))->EndReloadEffect( this ); } return false; }