Technique.cpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /**
  2. * Technique.cpp
  3. */
  4. #include "Base.h"
  5. #include "Technique.h"
  6. #include "Material.h"
  7. namespace gameplay
  8. {
  9. Technique::Technique(const char* id, Material* material)
  10. : _id(id ? id : ""), _material(material)
  11. {
  12. assert(material);
  13. RenderState::_parent = material;
  14. }
  15. Technique::Technique(const Technique& m)
  16. {
  17. }
  18. Technique::~Technique()
  19. {
  20. // Destroy all the passes.
  21. for (unsigned int i = 0, count = _passes.size(); i < count; ++i)
  22. {
  23. SAFE_RELEASE(_passes[i]);
  24. }
  25. }
  26. const char* Technique::getId() const
  27. {
  28. return _id.c_str();
  29. }
  30. unsigned int Technique::getPassCount() const
  31. {
  32. return _passes.size();
  33. }
  34. Pass* Technique::getPass(unsigned int index) const
  35. {
  36. assert(index < _passes.size());
  37. return _passes[index];
  38. }
  39. Pass* Technique::getPass(const char* id) const
  40. {
  41. for (unsigned int i = 0, count = _passes.size(); i < count; ++i)
  42. {
  43. Pass* pass = _passes[i];
  44. if (strcmp(pass->getId(), id) == 0)
  45. {
  46. return pass;
  47. }
  48. }
  49. return NULL;
  50. }
  51. }