Call this method to load an XspFile.
- Parameters
-
filename | the name of the file in the RessourceRepository to read data from. |
data | pass a object of this type (or inherit one) to load the file in caller's data structures |
- Returns
- wheter the loading succeded.
class MyXspLoader : public XspLoaderDataHook { std::vector<double> mx; public: void addMass(SReal px, SReal py, SReal pz, SReal, SReal, SReal, SReal, SReal, bool, bool) override { mx.push_back(px); } void finalizeLoading(bool isOk) override { if(!isOk) mx.clear(); } };
MyXspLoader loadedData; XspLoader::Load("myfile.xs3", loadedData);
#ifndef SOFA_HELPER_IO_XSPLOADER_H
#define SOFA_HELPER_IO_XSPLOADER_H
#include <cstddef>
#include <string>
#include <sofa/helper/config.h>
{
namespace helper
{
namespace io
{
class SOFA_HELPER_API XspLoaderDataHook
{
public:
virtual ~XspLoaderDataHook();
virtual void finalizeLoading(bool isOk) { SOFA_UNUSED(isOk); }
virtual void setNumMasses(size_t ) {}
virtual void setNumSprings(size_t ) {}
virtual void setViscosity(
SReal ) {}
virtual void addVectorSpring(
size_t m1,
size_t m2,
SReal ks,
SReal kd,
SReal initpos,
SReal ,
SReal ,
SReal ) { addSpring(m1, m2, ks, kd, initpos); }
};
class SOFA_HELPER_API XspLoader
{
public:
static bool Load(const std::string& filename,
XspLoaderDataHook&
data);
private:
static bool ReadXspContent(std::ifstream &file,
bool hasVectorSpring,
XspLoaderDataHook&
data);
};
}
}
}
#endif