bool PUParticleSystem3D::initWithFilePathAndMaterialPath( const std::string &filePath, const std::string &materialPath ) { std::string matfullPath = FileUtils::getInstance()->fullPathForFilename(materialPath); convertToUnixStylePath(matfullPath); PUMaterialCache::Instance()->loadMaterials(matfullPath); std::string fullPath = FileUtils::getInstance()->fullPathForFilename(filePath); convertToUnixStylePath(fullPath); if (!initSystem(fullPath)){ return false; } return true; }
PUParticleSystem3D* PUParticleSystem3D::create( const std::string &filePath, const std::string &materialPath ) { std::string matfullPath = FileUtils::getInstance()->fullPathForFilename(materialPath); convertToUnixStylePath(matfullPath); PUMaterialCache::Instance()->loadMaterials(matfullPath); PUParticleSystem3D* ps = PUParticleSystem3D::create(); std::string fullPath = FileUtils::getInstance()->fullPathForFilename(filePath); convertToUnixStylePath(fullPath); if (!ps->initSystem(fullPath)){ CC_SAFE_DELETE(ps); } return ps; }
PUParticleSystem3D* PUParticleSystem3D::create( const std::string &filePath ) { std::string fullPath = FileUtils::getInstance()->fullPathForFilename(filePath); convertToUnixStylePath(fullPath); std::string::size_type pos = fullPath.find_last_of("/"); std::string materialFolder = "materials"; if (pos != std::string::npos){ std::string temp = fullPath.substr(0, pos); pos = temp.find_last_of("/"); if (pos != std::string::npos){ materialFolder = temp.substr(0, pos + 1) + materialFolder; } } static std::vector<std::string> loadedFolder; if (std::find(loadedFolder.begin(), loadedFolder.end(), materialFolder) == loadedFolder.end()) { PUMaterialCache::Instance()->loadMaterialsFromSearchPaths(materialFolder); loadedFolder.push_back(materialFolder); } PUParticleSystem3D* ps = PUParticleSystem3D::create(); if (!ps->initSystem(fullPath)){ CC_SAFE_DELETE(ps); } return ps; }