------------------------------------------------- export a single sequence -------------------------------------------------
| 294 | // export a single sequence |
| 295 | //------------------------------------------------- |
| 296 | void TSShape::exportSequence(Stream * s, const TSShape::Sequence& seq, bool saveOldFormat) |
| 297 | { |
| 298 | S32 currentVersion = smVersion; |
| 299 | if ( saveOldFormat ) |
| 300 | smVersion = 24; |
| 301 | |
| 302 | // write version |
| 303 | s->write(smVersion); |
| 304 | |
| 305 | // write node names |
| 306 | s->write( nodes.size() ); |
| 307 | for ( S32 i = 0; i < nodes.size(); i++ ) |
| 308 | writeName( s, nodes[i].nameIndex ); |
| 309 | |
| 310 | // legacy write -- write zero objects, don't pretend to support object export anymore |
| 311 | s->write( (S32)0 ); |
| 312 | |
| 313 | // on import, we will need to adjust keyframe data based on number of |
| 314 | // nodes/objects in this shape...number of nodes can be inferred from |
| 315 | // above, but number of objects cannot be. Write that quantity here: |
| 316 | s->write( objects.size() ); |
| 317 | |
| 318 | // write node states -- skip default node states |
| 319 | S32 count = seq.rotationMatters.count() * seq.numKeyframes; |
| 320 | s->write( count ); |
| 321 | for ( S32 i = seq.baseRotation; i < seq.baseRotation + count; i++ ) |
| 322 | { |
| 323 | s->write( nodeRotations[i].x ); |
| 324 | s->write( nodeRotations[i].y ); |
| 325 | s->write( nodeRotations[i].z ); |
| 326 | s->write( nodeRotations[i].w ); |
| 327 | } |
| 328 | |
| 329 | count = seq.translationMatters.count() * seq.numKeyframes; |
| 330 | s->write( count ); |
| 331 | for ( S32 i = seq.baseTranslation; i < seq.baseTranslation + count; i++ ) |
| 332 | { |
| 333 | s->write( nodeTranslations[i].x ); |
| 334 | s->write( nodeTranslations[i].y ); |
| 335 | s->write( nodeTranslations[i].z ); |
| 336 | } |
| 337 | |
| 338 | count = seq.scaleMatters.count() * seq.numKeyframes; |
| 339 | if ( seq.animatesUniformScale() ) |
| 340 | { |
| 341 | s->write( count ); |
| 342 | for ( S32 i = seq.baseScale; i < seq.baseScale + count; i++ ) |
| 343 | s->write( nodeUniformScales[i] ); |
| 344 | } |
| 345 | else |
| 346 | s->write( (S32)0 ); |
| 347 | |
| 348 | if ( seq.animatesAlignedScale() ) |
| 349 | { |
| 350 | s->write( count ); |
| 351 | for ( S32 i = seq.baseScale; i < seq.baseScale + count; i++ ) |
| 352 | { |
| 353 | s->write( nodeAlignedScales[i].x ); |
no test coverage detected