BsScriptSpriteTexture.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include "BsScriptSpriteTexture.h"
  2. #include "BsScriptResourceManager.h"
  3. #include "BsScriptMeta.h"
  4. #include "BsMonoField.h"
  5. #include "BsMonoClass.h"
  6. #include "BsMonoManager.h"
  7. #include "BsSpriteTexture.h"
  8. #include "BsScriptTexture2D.h"
  9. namespace BansheeEngine
  10. {
  11. ScriptSpriteTexture::ScriptSpriteTexture(MonoObject* instance,const HSpriteTexture& texture)
  12. :ScriptObject(instance), mTexture(texture)
  13. {
  14. }
  15. void ScriptSpriteTexture::initRuntimeData()
  16. {
  17. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptSpriteTexture::internal_createInstance);
  18. }
  19. void ScriptSpriteTexture::internal_createInstance(MonoObject* instance, MonoObject* texture, Vector2 offset, Vector2 scale)
  20. {
  21. ScriptTexture2D* scriptTexture = ScriptTexture2D::toNative(texture);
  22. ScriptSpriteTexture* scriptInstance;
  23. if (scriptTexture == nullptr)
  24. {
  25. ScriptResourceManager::instance().createScriptResource(instance, SpriteTexture::dummy(), &scriptInstance);
  26. }
  27. else
  28. {
  29. HSpriteTexture spriteTexture = SpriteTexture::create(offset, scale, static_resource_cast<Texture>(scriptTexture->getNativeHandle()));
  30. ScriptResourceManager::instance().createScriptResource(instance, spriteTexture, &scriptInstance);
  31. }
  32. }
  33. void ScriptSpriteTexture::_onManagedInstanceDeleted()
  34. {
  35. mManagedInstance = nullptr;
  36. if (!mRefreshInProgress)
  37. ScriptResourceManager::instance().destroyScriptResource(this);
  38. }
  39. void ScriptSpriteTexture::setNativeHandle(const HResource& resource)
  40. {
  41. mTexture = static_resource_cast<SpriteTexture>(resource);
  42. }
  43. MonoObject* ScriptSpriteTexture::toManaged(const HSpriteTexture& texture)
  44. {
  45. if (texture == nullptr)
  46. return nullptr;
  47. ScriptSpriteTexture* scriptSpriteTex;
  48. ScriptResourceManager::instance().getScriptResource(texture, &scriptSpriteTex, true);
  49. return scriptSpriteTex->getManagedInstance();
  50. }
  51. }