BsScriptResources.cpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include "BsScriptResources.h"
  2. #include "BsMonoManager.h"
  3. #include "BsMonoClass.h"
  4. #include "BsMonoMethod.h"
  5. #include "BsMonoUtil.h"
  6. #include "BsResources.h"
  7. #include "BsGameResourceManager.h"
  8. #include "BsScriptResourceManager.h"
  9. #include "BsScriptResource.h"
  10. namespace BansheeEngine
  11. {
  12. ScriptResources::ScriptResources(MonoObject* instance)
  13. :ScriptObject(instance)
  14. { }
  15. void ScriptResources::initRuntimeData()
  16. {
  17. metaData.scriptClass->addInternalCall("Internal_Load", &ScriptResources::internal_Load);
  18. metaData.scriptClass->addInternalCall("Internal_UnloadUnused", &ScriptResources::internal_UnloadUnused);
  19. }
  20. MonoObject* ScriptResources::internal_Load(MonoString* path)
  21. {
  22. Path nativePath = MonoUtil::monoToWString(path);
  23. HResource resource = GameResourceManager::instance().load(nativePath);
  24. if (resource == nullptr)
  25. return nullptr;
  26. ScriptResourceBase* scriptResource;
  27. ScriptResourceManager::instance().getScriptResource(resource, &scriptResource, true);
  28. return scriptResource->getManagedInstance();
  29. }
  30. void ScriptResources::internal_UnloadUnused()
  31. {
  32. gResources().unloadAllUnused();
  33. }
  34. }