diff options
Diffstat (limited to 'extern/mantaflow/preprocessed/particle.cpp')
-rw-r--r-- | extern/mantaflow/preprocessed/particle.cpp | 50 |
1 files changed, 37 insertions, 13 deletions
diff --git a/extern/mantaflow/preprocessed/particle.cpp b/extern/mantaflow/preprocessed/particle.cpp index 41af5d3ba81..c719fc8f27d 100644 --- a/extern/mantaflow/preprocessed/particle.cpp +++ b/extern/mantaflow/preprocessed/particle.cpp @@ -214,20 +214,26 @@ void BasicParticleSystem::writeParticlesRawVelocityGz(const string name) const #endif } -void BasicParticleSystem::load(const string name) +int BasicParticleSystem::load(const string name) { if (name.find_last_of('.') == string::npos) errMsg("file '" + name + "' does not have an extension"); string ext = name.substr(name.find_last_of('.')); if (ext == ".uni") - readParticlesUni(name, this); + return readParticlesUni(name, this); + else if (ext == ".vdb") { + std::vector<PbClass *> parts; + parts.push_back(this); + return readObjectsVDB(name, &parts); + } else if (ext == ".raw") // raw = uni for now - readParticlesUni(name, this); + return readParticlesUni(name, this); else errMsg("particle '" + name + "' filetype not supported for loading"); + return 0; } -void BasicParticleSystem::save(const string name) const +int BasicParticleSystem::save(const string name) { if (name.find_last_of('.') == string::npos) errMsg("file '" + name + "' does not have an extension"); @@ -235,16 +241,22 @@ void BasicParticleSystem::save(const string name) const if (ext == ".txt") this->writeParticlesText(name); else if (ext == ".uni") - writeParticlesUni(name, this); + return writeParticlesUni(name, this); else if (ext == ".raw") // raw = uni for now - writeParticlesUni(name, this); - // raw data formats, very basic for simple data transfer to other programs + return writeParticlesUni(name, this); + else if (ext == ".vdb") { + std::vector<PbClass *> parts; + parts.push_back(this); + return writeObjectsVDB(name, &parts); + // raw data formats, very basic for simple data transfer to other programs + } else if (ext == ".posgz") this->writeParticlesRawPositionsGz(name); else if (ext == ".velgz") this->writeParticlesRawVelocityGz(name); else errMsg("particle '" + name + "' filetype not supported for saving"); + return 0; } void BasicParticleSystem::printParts(IndexInt start, IndexInt stop, bool printIndex) @@ -372,30 +384,42 @@ template<> void ParticleDataImpl<Vec3>::initNewValue(IndexInt idx, Vec3 pos) } } -template<typename T> void ParticleDataImpl<T>::load(string name) +template<typename T> int ParticleDataImpl<T>::load(string name) { if (name.find_last_of('.') == string::npos) errMsg("file '" + name + "' does not have an extension"); string ext = name.substr(name.find_last_of('.')); if (ext == ".uni") - readPdataUni<T>(name, this); + return readPdataUni<T>(name, this); + else if (ext == ".vdb") { + std::vector<PbClass *> parts; + parts.push_back(this); + return readObjectsVDB(name, &parts); + } else if (ext == ".raw") // raw = uni for now - readPdataUni<T>(name, this); + return readPdataUni<T>(name, this); else errMsg("particle data '" + name + "' filetype not supported for loading"); + return 0; } -template<typename T> void ParticleDataImpl<T>::save(string name) +template<typename T> int ParticleDataImpl<T>::save(string name) { if (name.find_last_of('.') == string::npos) errMsg("file '" + name + "' does not have an extension"); string ext = name.substr(name.find_last_of('.')); if (ext == ".uni") - writePdataUni<T>(name, this); + return writePdataUni<T>(name, this); + else if (ext == ".vdb") { + std::vector<PbClass *> parts; + parts.push_back(this); + return writeObjectsVDB(name, &parts); + } else if (ext == ".raw") // raw = uni for now - writePdataUni<T>(name, this); + return writePdataUni<T>(name, this); else errMsg("particle data '" + name + "' filetype not supported for saving"); + return 0; } // specializations |