Technique.cpp 1.0 KB

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