BsMaterialRTTI.cpp 687 B

123456789101112131415161718192021222324252627
  1. #include "BsMaterialRTTI.h"
  2. #include "BsMaterialManager.h"
  3. #include "BsMaterialParams.h"
  4. namespace BansheeEngine
  5. {
  6. void MaterialRTTI::onDeserializationEnded(IReflectable* obj)
  7. {
  8. Material* material = static_cast<Material*>(obj);
  9. material->initialize();
  10. if(material->mRTTIData.empty())
  11. return;
  12. material->initBestTechnique();
  13. std::shared_ptr<MaterialParams> params = any_cast<std::shared_ptr<MaterialParams>>(material->mRTTIData);
  14. material->setParams(params);
  15. material->mRTTIData = nullptr; // Delete temporary data
  16. }
  17. std::shared_ptr<IReflectable> MaterialRTTI::newRTTIObject()
  18. {
  19. return MaterialManager::instance().createEmpty();
  20. }
  21. }