MCPcopy Create free account
hub / github.com/InteractiveComputerGraphics/SPlisHSPlasH / writeBGEO

Function writeBGEO

extern/partio/src/lib/io/BGEO.cpp:311–472  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

309}
310
311bool writeBGEO(const char* filename,const ParticlesData& p,const bool compressed,std::ostream* errorStream)
312{
313 unique_ptr<ostream> output(
314 compressed ?
315 Gzip_Out(filename,ios::out|ios::binary)
316 :new ofstream(filename,ios::out|ios::binary));
317
318 if(!*output){
319 if(errorStream) *errorStream <<"Partio Unable to open file "<<filename<<endl;
320 return false;
321 }
322
323 int magic=((((('B'<<8)|'g')<<8)|'e')<<8)|'o';
324 char versionChar='V';
325 int version=5;
326 int nPoints=p.numParticles();
327 int nPrims=0;
328 int nPointGroups=0;
329 int nPrimGroups=0;
330 int nPointAttrib=p.numAttributes()-1;
331 int nVertexAttrib=0;
332 int nPrimAttrib=0;
333 int nAttrib=p.numFixedAttributes();
334
335 write<BIGEND>(*output,magic,versionChar,version,nPoints,nPrims,nPointGroups);
336 write<BIGEND>(*output,nPrimGroups,nPointAttrib,nVertexAttrib,nPrimAttrib,nAttrib);
337
338 vector<ParticleAttribute> handles;
339 vector<ParticleAccessor> accessors;
340 vector<int> attrOffsets;
341 bool foundPosition=false;
342 int particleSize=4;
343 for(int i=0;i<p.numAttributes();i++){
344 ParticleAttribute attr;
345 p.attributeInfo(i,attr);
346 if(attr.name=="position"){
347 attrOffsets.push_back(0);
348 foundPosition=true;
349 }else{
350 writeHoudiniStr(*output,attr.name);
351 if(attr.type==INDEXEDSTR){
352 int houdiniType=4;
353 unsigned short size=attr.count;
354 const std::vector<std::string>& indexTable=p.indexedStrs(attr);
355 int numIndexes=indexTable.size();
356 write<BIGEND>(*output,size,houdiniType,numIndexes);
357 for(int i=0;i<numIndexes;i++)
358 writeHoudiniStr(*output,indexTable[i]);
359 }else{
360 int houdiniType=0;
361 switch(attr.type){
362 case FLOAT: houdiniType=0;break;
363 case INT: houdiniType=1;break;
364 case VECTOR: houdiniType=5;break;
365 case INDEXEDSTR:
366 case NONE: assert(false);houdiniType=0;break;
367 }
368 unsigned short size=attr.count;

Callers

nothing calls this directly

Calls 11

Gzip_OutFunction · 0.85
writeHoudiniStrFunction · 0.85
ParticleAccessorClass · 0.85
numParticlesMethod · 0.80
addAccessorMethod · 0.80
swapFunction · 0.50
push_backMethod · 0.45
sizeMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
writeMethod · 0.45

Tested by

no test coverage detected