MaterialRuntime.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include <boost/foreach.hpp>
  2. #include "MaterialRuntime.h"
  3. #include "Material.h"
  4. #include "Exception.h"
  5. //======================================================================================================================
  6. // Constructor =
  7. //======================================================================================================================
  8. MaterialRuntime::MaterialRuntime(const Material& mtl_):
  9. mtl(mtl_)
  10. {
  11. MaterialProps& me = *this;
  12. const MaterialProps& he = mtl.accessMaterialPropsBaseClass();
  13. me = he;
  14. BOOST_FOREACH(const MtlUserDefinedVar& udv, mtl.getUserDefinedVars())
  15. {
  16. MaterialRuntimeUserDefinedVar* udvr = new MaterialRuntimeUserDefinedVar(udv);
  17. userDefVars.push_back(udvr);
  18. userDefVarsHashMap[udvr->getName().c_str()] = udvr;
  19. }
  20. }
  21. //======================================================================================================================
  22. // getUserDefinedVarByName =
  23. //======================================================================================================================
  24. MaterialRuntimeUserDefinedVar& MaterialRuntime::getUserDefinedVarByName(const char* name)
  25. {
  26. CharPtrHashMap<MaterialRuntimeUserDefinedVar*>::iterator it = userDefVarsHashMap.find(name);
  27. if(it == userDefVarsHashMap.end())
  28. {
  29. throw EXCEPTION("Cannot get user defined variable with name \"" + name + '\"');
  30. }
  31. return *(it->second);
  32. }
  33. //======================================================================================================================
  34. // getUserDefinedVarByName =
  35. //======================================================================================================================
  36. const MaterialRuntimeUserDefinedVar& MaterialRuntime::getUserDefinedVarByName(const char* name) const
  37. {
  38. CharPtrHashMap<MaterialRuntimeUserDefinedVar*>::const_iterator it = userDefVarsHashMap.find(name);
  39. if(it == userDefVarsHashMap.end())
  40. {
  41. throw EXCEPTION("Cannot get user defined variable with name \"" + name + '\"');
  42. }
  43. return *(it->second);
  44. }