Advertisement
Guest User

Untitled

a guest
Sep 19th, 2015
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.56 KB | None | 0 0
  1. #pragma once
  2.  
  3. #include "ShaderProgram.h"
  4. #include "AnimationData.h"
  5. #include "SceneNode.h"
  6. #include "Timer.h"
  7.  
  8. #include <unordered_map>
  9. #include <cstdint> //for intptr_t
  10.  
  11. struct AnimationSet {
  12. const AnimationData *animationData;
  13. SceneNode *sceneNode;
  14.  
  15. bool operator==(const AnimationSet &other) const {
  16. return ( this->animationData == other.animationData &&
  17. this->sceneNode == other.sceneNode );
  18. }
  19. };
  20.  
  21. //hash for AnimationSet
  22. namespace std {
  23. template<>
  24. struct hash<AnimationSet> {
  25. size_t operator()(const AnimationSet &set) const {
  26. hash<intptr_t> h;
  27.  
  28. return h((intptr_t)set.animationData) ^ h((intptr_t)set.sceneNode);
  29. }
  30. };
  31. }
  32.  
  33. class AnimationController
  34. {
  35. public:
  36. AnimationController() : _shaderProgram(nullptr) {}
  37.  
  38. void playAnimation (const AnimationData *animationData, SceneNode *sceneNode);
  39. void pauseAnimation (const AnimationData *animationData, SceneNode *sceneNode);
  40. void resumeAnimation (const AnimationData *animationData, SceneNode *sceneNode);
  41. void stopAnimation (const AnimationData *animationData, SceneNode *sceneNode);
  42.  
  43. void updateAnimation (const AnimationData *animationData, SceneNode *sceneNode);
  44.  
  45. void setShaderProgram(ShaderProgram *shaderProgram) { _shaderProgram = shaderProgram; }
  46.  
  47. private:
  48. std::unordered_map<AnimationSet, Timer> _animations;
  49. ShaderProgram *_shaderProgram;
  50.  
  51. Timer* _getTimer(const AnimationData *animationData, SceneNode *sceneNode);
  52. void _updateSceneNode(SceneNode *sceneNode, double time, std::unordered_map<std::string, NodeAnimationData*> *nodeAnimations);
  53. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement