Animation.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #include "Base.h"
  2. #include "Animation.h"
  3. namespace gameplay
  4. {
  5. Animation::Animation(void)
  6. {
  7. }
  8. Animation::~Animation(void)
  9. {
  10. }
  11. unsigned int Animation::getTypeId(void) const
  12. {
  13. return ANIMATION_ID;
  14. }
  15. const char* Animation::getElementName(void) const
  16. {
  17. return "Animation";
  18. }
  19. void Animation::writeBinary(FILE* file)
  20. {
  21. Object::writeBinary(file);
  22. // Animation writes its ID because it is not listed in the ref table.
  23. write(getId(), file);
  24. write((unsigned int)_channels.size(), file);
  25. for (std::vector<AnimationChannel*>::iterator i = _channels.begin(); i != _channels.end(); ++i)
  26. {
  27. (*i)->writeBinary(file);
  28. }
  29. }
  30. void Animation::writeText(FILE* file)
  31. {
  32. fprintElementStart(file);
  33. if (_channels.size() > 0 )
  34. {
  35. for (std::vector<AnimationChannel*>::iterator i = _channels.begin(); i != _channels.end(); ++i)
  36. {
  37. (*i)->writeText(file);
  38. }
  39. }
  40. fprintElementEnd(file);
  41. }
  42. void Animation::add(AnimationChannel* animationChannel)
  43. {
  44. _channels.push_back(animationChannel);
  45. }
  46. void Animation::remove(AnimationChannel* animationChannel)
  47. {
  48. std::vector<AnimationChannel*>::iterator it = std::find(_channels.begin(), _channels.end(), animationChannel);
  49. if (it != _channels.end())
  50. {
  51. _channels.erase(it);
  52. }
  53. }
  54. unsigned int Animation::getAnimationChannelCount() const
  55. {
  56. return _channels.size();
  57. }
  58. AnimationChannel* Animation::getAnimationChannel(unsigned int index) const
  59. {
  60. assert(index < _channels.size());
  61. return _channels[index];
  62. }
  63. }