SkelNode.cpp 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include "SkelNode.h"
  2. #include "SkelAnim.h"
  3. #include "Skeleton.h"
  4. #include "SkelAnimCtrl.h"
  5. #include "App.h"
  6. #include "MainRenderer.h"
  7. //======================================================================================================================
  8. // SkelNode =
  9. //======================================================================================================================
  10. SkelNode::SkelNode():
  11. SceneNode(NT_SKELETON),
  12. skelAnimCtrl(NULL)
  13. {
  14. }
  15. //======================================================================================================================
  16. // init =
  17. //======================================================================================================================
  18. void SkelNode::init(const char* filename)
  19. {
  20. skeleton = Rsrc::skeletons.load(filename);
  21. skelAnimCtrl = new SkelAnimCtrl(this);
  22. }
  23. //======================================================================================================================
  24. // deinit =
  25. //======================================================================================================================
  26. void SkelNode::deinit()
  27. {
  28. Rsrc::skeletons.unload(skeleton);
  29. }
  30. //======================================================================================================================
  31. // render =
  32. //======================================================================================================================
  33. void SkelNode::render()
  34. {
  35. Renderer::Dbg::setModelMat(Mat4(getWorldTransform()));
  36. Renderer::Dbg::setColor(Vec4(1.0, 0.0, 0.0, 1.0));
  37. Vec<Vec3> positions;
  38. for(uint i=0; i<skeleton->bones.size(); i++)
  39. {
  40. positions.push_back(skelAnimCtrl->heads[i]);
  41. positions.push_back(skelAnimCtrl->tails[i]);
  42. }
  43. glEnableVertexAttribArray(0);
  44. glVertexAttribPointer(0, 3, GL_FLOAT, false, 0, &(positions[0][0]));
  45. glDrawArrays(GL_TRIANGLES, 0, positions.size());
  46. glDisableVertexAttribArray(0);
  47. }