| 163 | } |
| 164 | |
| 165 | void |
| 166 | print(const ParticlesData* particles) |
| 167 | { |
| 168 | std::cout<<"Particle count "<<particles->numParticles()<<std::endl; |
| 169 | std::cout<<"Attribute count "<<particles->numAttributes()<<std::endl; |
| 170 | |
| 171 | std::vector<ParticleAttribute> attrs; |
| 172 | for(int i=0;i<particles->numAttributes();i++){ |
| 173 | ParticleAttribute attr; |
| 174 | particles->attributeInfo(i,attr); |
| 175 | attrs.push_back(attr); |
| 176 | std::cout<<"attribute "<<attr.name<<" "<<int(attr.type)<<" "<<attr.count<<std::endl; |
| 177 | } |
| 178 | |
| 179 | int numToPrint=std::min(10,particles->numParticles()); |
| 180 | std::cout<<"num to print "<<numToPrint<<std::endl; |
| 181 | |
| 182 | ParticlesData::const_iterator it=particles->begin(),end=particles->end(); |
| 183 | std::vector<ParticleAccessor> accessors; |
| 184 | for(size_t k=0;k<attrs.size();k++) accessors.push_back(ParticleAccessor(attrs[k])); |
| 185 | for(size_t k=0;k<attrs.size();k++) it.addAccessor(accessors[k]); |
| 186 | |
| 187 | for(int i=0;i<numToPrint && it != end;i++){ |
| 188 | std::cout<<i<<": "; |
| 189 | for(unsigned int k=0;k<attrs.size();k++){ |
| 190 | switch(attrs[k].type){ |
| 191 | case NONE:break; |
| 192 | case FLOAT: |
| 193 | case VECTOR: |
| 194 | for(int c=0;c<attrs[k].count;c++) std::cout<<accessors[k].raw<float>(it)[c]; |
| 195 | break; |
| 196 | case INT: |
| 197 | for(int c=0;c<attrs[k].count;c++) std::cout<<accessors[k].raw<int>(it)[c]; |
| 198 | break; |
| 199 | case INDEXEDSTR: |
| 200 | for(int c=0;c<attrs[k].count;c++) std::cout<<accessors[k].raw<int>(it)[c]; |
| 201 | break; |
| 202 | } |
| 203 | } |
| 204 | std::cout<<std::endl; |
| 205 | } |
| 206 | } |
| 207 | |
| 208 | double hash(int n, double* args) |
| 209 | { |