BsScriptBuiltin.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include "BsScriptBuiltin.h"
  2. #include "BsMonoManager.h"
  3. #include "BsMonoClass.h"
  4. #include "BsMonoMethod.h"
  5. #include "BsMonoUtil.h"
  6. #include "BsBuiltinResources.h"
  7. #include "BsScriptSpriteTexture.h"
  8. #include "BsScriptShader.h"
  9. #include "BsScriptResourceManager.h"
  10. namespace BansheeEngine
  11. {
  12. ScriptBuiltin::ScriptBuiltin(MonoObject* instance)
  13. :ScriptObject(instance)
  14. { }
  15. void ScriptBuiltin::initRuntimeData()
  16. {
  17. metaData.scriptClass->addInternalCall("Internal_GetWhiteTexture", &ScriptBuiltin::internal_getWhiteTexture);
  18. metaData.scriptClass->addInternalCall("Internal_GetDiffuseShader", &ScriptBuiltin::internal_getDiffuseShader);
  19. }
  20. MonoObject* ScriptBuiltin::internal_getWhiteTexture()
  21. {
  22. HSpriteTexture whiteTexture = BuiltinResources::instance().getWhiteSpriteTexture();
  23. ScriptSpriteTexture* scriptSpriteTex = ScriptResourceManager::instance().getScriptSpriteTexture(whiteTexture);
  24. if (scriptSpriteTex == nullptr)
  25. scriptSpriteTex = ScriptResourceManager::instance().createScriptSpriteTexture(whiteTexture);
  26. return scriptSpriteTex->getManagedInstance();
  27. }
  28. MonoObject* ScriptBuiltin::internal_getDiffuseShader()
  29. {
  30. HShader diffuseShader = BuiltinResources::instance().getDiffuseShader();
  31. ScriptShader* scriptShader = ScriptResourceManager::instance().getScriptShader(diffuseShader);
  32. if (scriptShader == nullptr)
  33. scriptShader = ScriptResourceManager::instance().createScriptShader(diffuseShader);
  34. return scriptShader->getManagedInstance();
  35. }
  36. }