//---------------------------------------------------------------------------------- // //---------------------------------------------------------------------------------- void EffectImplemented::UnloadResources() { Setting* loader = GetSetting(); TextureLoader* textureLoader = loader->GetTextureLoader(); if( textureLoader != NULL ) { for( int32_t ind = 0; ind < m_ImageCount; ind++ ) { textureLoader->Unload( m_pImages[ind] ); m_pImages[ind] = NULL; } for (int32_t ind = 0; ind < m_normalImageCount; ind++) { textureLoader->Unload(m_normalImages[ind]); m_normalImages[ind] = NULL; } for (int32_t ind = 0; ind < m_distortionImageCount; ind++) { textureLoader->Unload(m_distortionImages[ind]); m_distortionImages[ind] = NULL; } } SoundLoader* soundLoader = loader->GetSoundLoader(); if( soundLoader != NULL ) { for( int32_t ind = 0; ind < m_WaveCount; ind++ ) { soundLoader->Unload( m_pWaves[ind] ); m_pWaves[ind] = NULL; } } { ModelLoader* modelLoader = loader->GetModelLoader(); if( modelLoader != NULL ) { for( int32_t ind = 0; ind < m_modelCount; ind++ ) { modelLoader->Unload( m_pModels[ind] ); m_pModels[ind] = NULL; } } } }
//---------------------------------------------------------------------------------- // //---------------------------------------------------------------------------------- void EffectImplemented::ReloadResources( const EFK_CHAR* materialPath ) { UnloadResources(); const EFK_CHAR* matPath = materialPath != NULL ? materialPath : m_materialPath.c_str(); Setting* loader = GetSetting(); { TextureLoader* textureLoader = loader->GetTextureLoader(); if( textureLoader != NULL ) { for( int32_t ind = 0; ind < m_ImageCount; ind++ ) { EFK_CHAR fullPath[512]; PathCombine( fullPath, matPath, m_ImagePaths[ ind ] ); m_pImages[ind] = textureLoader->Load( fullPath, TextureType::Color ); } } } { TextureLoader* textureLoader = loader->GetTextureLoader(); if (textureLoader != NULL) { for (int32_t ind = 0; ind < m_normalImageCount; ind++) { EFK_CHAR fullPath[512]; PathCombine(fullPath, matPath, m_normalImagePaths[ind]); m_normalImages[ind] = textureLoader->Load(fullPath, TextureType::Normal); } } } { TextureLoader* textureLoader = loader->GetTextureLoader(); if (textureLoader != NULL) { for (int32_t ind = 0; ind < m_distortionImageCount; ind++) { EFK_CHAR fullPath[512]; PathCombine(fullPath, matPath, m_distortionImagePaths[ind]); m_distortionImages[ind] = textureLoader->Load(fullPath, TextureType::Distortion); } } } { SoundLoader* soundLoader = loader->GetSoundLoader(); if( soundLoader != NULL ) { for( int32_t ind = 0; ind < m_WaveCount; ind++ ) { EFK_CHAR fullPath[512]; PathCombine( fullPath, matPath, m_WavePaths[ ind ] ); m_pWaves[ind] = soundLoader->Load( fullPath ); } } } { ModelLoader* modelLoader = loader->GetModelLoader(); if( modelLoader != NULL ) { for( int32_t ind = 0; ind < m_modelCount; ind++ ) { EFK_CHAR fullPath[512]; PathCombine( fullPath, matPath, m_modelPaths[ ind ] ); m_pModels[ind] = modelLoader->Load( fullPath ); } } } }
//---------------------------------------------------------------------------------- // //---------------------------------------------------------------------------------- void EffectImplemented::Reset() { UnloadResources(); Setting* loader = GetSetting(); TextureLoader* textureLoader = loader->GetTextureLoader(); for( int i = 0; i < m_ImageCount; i++ ) { if( m_ImagePaths[i] != NULL ) delete [] m_ImagePaths[i]; } m_ImageCount = 0; ES_SAFE_DELETE_ARRAY( m_ImagePaths ); ES_SAFE_DELETE_ARRAY(m_pImages); { for (int i = 0; i < m_normalImageCount; i++) { if (m_normalImagePaths[i] != NULL) delete [] m_normalImagePaths[i]; } m_normalImageCount = 0; ES_SAFE_DELETE_ARRAY(m_normalImagePaths); ES_SAFE_DELETE_ARRAY(m_normalImages); } { for (int i = 0; i < m_distortionImageCount; i++) { if (m_distortionImagePaths[i] != NULL) delete [] m_distortionImagePaths[i]; } m_distortionImageCount = 0; ES_SAFE_DELETE_ARRAY(m_distortionImagePaths); ES_SAFE_DELETE_ARRAY(m_distortionImages); } for( int i = 0; i < m_WaveCount; i++ ) { if( m_WavePaths[i] != NULL ) delete [] m_WavePaths[i]; } m_WaveCount = 0; ES_SAFE_DELETE_ARRAY( m_WavePaths ); ES_SAFE_DELETE_ARRAY( m_pWaves ); for( int i = 0; i < m_modelCount; i++ ) { if( m_modelPaths[i] != NULL ) delete [] m_modelPaths[i]; } m_modelCount = 0; ES_SAFE_DELETE_ARRAY( m_modelPaths ); ES_SAFE_DELETE_ARRAY( m_pModels ); ES_SAFE_DELETE( m_pRoot ); }