107 const int indexCount,
const ParticleIndex* particleIndices,
const bool sorted,T* values)
109 assert(typeCheck<T>(attribute.
type));
117 return static_cast<T*
>(
dataInternal(attribute,particleIndex));
131 const ParticleIndex* particleIndices,
const bool sorted,
float* values)
const=0;
136 virtual void findPoints(
const float bboxMin[3],
const float bboxMax[3],
137 std::vector<ParticleIndex>& points)
const=0;
144 virtual float findNPoints(
const float center[3],
int nPoints,
const float maxRadius,
145 std::vector<ParticleIndex>& points,std::vector<float>& pointDistancesSquared)
const=0;
150 virtual int findNPoints(
const float center[3],
int nPoints,
const float maxRadius,
151 ParticleIndex *points,
float *pointDistancesSquared,
float *finalRadius2)
const=0;
167 const ParticleIndex* particleIndices,
const bool sorted,
char* values)
const=0;
191 return static_cast<T*
>(
dataInternal(attribute,particleIndex));
199 virtual void sort()=0;
228 ParticlesDataMutable*
create();
234 ParticlesDataMutable*
read(
const char* filename);
242 void write(
const char* filename,
const ParticlesData&,
const bool forceCompressed=
false);
252 ParticlesData*
readCached(
const char* filename,
const bool sort);
272 void print(
const ParticlesData* particles);
virtual int numAttributes() const =0
Number of particles in the structure.
virtual const_iterator setupConstIterator() const =0
Produce a const iterator.
ParticleIterator< true > const_iterator
Definition: Partio.h:101
virtual int registerIndexedStr(const ParticleAttribute &attribute, const char *str)=0
Returns a token for the given string. This allows efficient storage of string data.
iterator begin()
Produce a beginning iterator for the particles.
Definition: Partio.h:213
ParticlesDataMutable * create()
Provides an empty particle instance, freed with p->release()
virtual void dataInternalMultiple(const ParticleAttribute &attribute, const int indexCount, const ParticleIndex *particleIndices, const bool sorted, char *values) const =0
Particle Collection Interface.
Definition: Partio.h:64
ParticleIterator< false > iterator
Definition: Partio.h:183
void data(const ParticleAttribute &attribute, const int indexCount, const ParticleIndex *particleIndices, const bool sorted, T *values)
Definition: Partio.h:106
virtual iterator addParticles(const int count)=0
virtual void dataAsFloat(const ParticleAttribute &attribute, const int indexCount, const ParticleIndex *particleIndices, const bool sorted, float *values) const =0
void write(const char *filename, const ParticlesData &, const bool forceCompressed=false)
Particle Data Interface.
Definition: Partio.h:95
iterator end()
Produce a ending iterator for the particles.
Definition: Partio.h:217
virtual void release() const =0
virtual bool attributeInfo(const char *attributeName, ParticleAttribute &attribute) const =0
Lookup an attribute by name and store a handle to the attribute.
Definition: PartioIterator.h:66
uint64_t ParticleIndex
Opaque random access method to a single particle. No number is implied or guaranteed.
Definition: Partio.h:54
const T * data(const ParticleAttribute &attribute, const ParticleIndex particleIndex) const
Definition: Partio.h:113
virtual void * dataInternal(const ParticleAttribute &attribute, const ParticleIndex particleIndex) const =0
virtual int lookupIndexedStr(const ParticleAttribute &attribute, const char *str) const =0
Looks up the index for a given string for a given attribute, returns -1 if not found.
void endCachedAccess(ParticlesData *particles)
End accessing data in a cached file.
const_iterator end() const
Produce a ending iterator for the particles.
Definition: Partio.h:161
virtual ~ParticlesDataMutable()
Definition: Partio.h:179
friend void freeCached(ParticlesData *particles)
Particle Mutable Data Interface.
Definition: Partio.h:176
ParticlesDataMutable * read(const char *filename)
ParticlesDataMutable * createInterleave()
void beginCachedAccess(ParticlesData *particles)
Begin accessing data in a cached file.
virtual ~ParticlesData()
Definition: Partio.h:98
ParticlesData * readCached(const char *filename, const bool sort)
Cached (only one copy) read only way to read a particle file.
virtual iterator setupIterator()=0
Produce a const iterator.
const_iterator begin() const
Produce a beginning iterator for the particles.
Definition: Partio.h:157
Particle Collection Interface.
Definition: PartioAttribute.h:96
virtual ParticleIndex addParticle()=0
Add a particle to the particle set. Returns the offset to the particle.
virtual int numParticles() const =0
Number of per-particle attributes.
virtual ~ParticlesInfo()
Definition: Partio.h:67
T * dataWrite(const ParticleAttribute &attribute, const ParticleIndex particleIndex) const
Definition: Partio.h:187
virtual void * dataInternal(const ParticleAttribute &attribute, const ParticleIndex particleIndex) const =0
virtual const std::vector< std::string > & indexedStrs(const ParticleAttribute &attr) const =0
All indexed strings for an attribute.
ParticleAttributeType
Definition: PartioAttribute.h:47
virtual float findNPoints(const float center[3], int nPoints, const float maxRadius, std::vector< ParticleIndex > &points, std::vector< float > &pointDistancesSquared) const =0
ParticlesInfo * readHeaders(const char *filename)
void print(const ParticlesData *particles)
Prints a subset of particle data in a textual form.
virtual void findPoints(const float bboxMin[3], const float bboxMax[3], std::vector< ParticleIndex > &points) const =0
virtual ParticleAttribute addAttribute(const char *attribute, ParticleAttributeType type, const int count)=0
Adds an attribute to the particle with the provided name, type and count.
ParticleAttributeType type
Type of attribute.
Definition: PartioAttribute.h:100