BsScriptSpriteTexture.cpp 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  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. :TScriptResource(instance, texture)
  13. {
  14. }
  15. void ScriptSpriteTexture::initRuntimeData()
  16. {
  17. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptSpriteTexture::internal_createInstance);
  18. metaData.scriptClass->addInternalCall("Internal_GetTexture", &ScriptSpriteTexture::internal_GetTexture);
  19. metaData.scriptClass->addInternalCall("Internal_SetTexture", &ScriptSpriteTexture::internal_SetTexture);
  20. metaData.scriptClass->addInternalCall("Internal_GetOffset", &ScriptSpriteTexture::internal_GetOffset);
  21. metaData.scriptClass->addInternalCall("Internal_SetOffset", &ScriptSpriteTexture::internal_SetOffset);
  22. metaData.scriptClass->addInternalCall("Internal_GetScale", &ScriptSpriteTexture::internal_GetScale);
  23. metaData.scriptClass->addInternalCall("Internal_SetScale", &ScriptSpriteTexture::internal_SetScale);
  24. metaData.scriptClass->addInternalCall("Internal_GetWidth", &ScriptSpriteTexture::internal_GetWidth);
  25. metaData.scriptClass->addInternalCall("Internal_GetHeight", &ScriptSpriteTexture::internal_GetHeight);
  26. }
  27. MonoObject* ScriptSpriteTexture::toManaged(const HSpriteTexture& texture)
  28. {
  29. if (texture == nullptr)
  30. return nullptr;
  31. ScriptSpriteTexture* scriptSpriteTex;
  32. ScriptResourceManager::instance().getScriptResource(texture, &scriptSpriteTex, true);
  33. return scriptSpriteTex->getManagedInstance();
  34. }
  35. void ScriptSpriteTexture::internal_createInstance(MonoObject* instance, MonoObject* texture, Vector2 offset, Vector2 scale)
  36. {
  37. ScriptTexture2D* scriptTexture = ScriptTexture2D::toNative(texture);
  38. ScriptSpriteTexture* scriptInstance;
  39. if (scriptTexture == nullptr)
  40. {
  41. ScriptResourceManager::instance().createScriptResource(instance, SpriteTexture::dummy(), &scriptInstance);
  42. }
  43. else
  44. {
  45. HSpriteTexture spriteTexture = SpriteTexture::create(offset, scale, scriptTexture->getHandle());
  46. ScriptResourceManager::instance().createScriptResource(instance, spriteTexture, &scriptInstance);
  47. }
  48. }
  49. MonoObject* ScriptSpriteTexture::internal_GetTexture(ScriptSpriteTexture* thisPtr)
  50. {
  51. HSpriteTexture spriteTexture = thisPtr->getHandle();
  52. if (!spriteTexture.isLoaded())
  53. return nullptr;
  54. HTexture texture = spriteTexture->getTexture();
  55. if (!texture.isLoaded())
  56. return nullptr;
  57. ScriptTexture2D* scriptTexture = nullptr;
  58. ScriptResourceManager::instance().getScriptResource(texture, &scriptTexture, true);
  59. return scriptTexture->getManagedInstance();
  60. }
  61. void ScriptSpriteTexture::internal_SetTexture(ScriptSpriteTexture* thisPtr, ScriptTexture2D* value)
  62. {
  63. HSpriteTexture spriteTexture = thisPtr->getHandle();
  64. if (!spriteTexture.isLoaded())
  65. return;
  66. HTexture texture;
  67. if (value != nullptr)
  68. texture = value->getHandle();
  69. spriteTexture->setTexture(texture);
  70. }
  71. void ScriptSpriteTexture::internal_GetOffset(ScriptSpriteTexture* thisPtr, Vector2* value)
  72. {
  73. HSpriteTexture spriteTexture = thisPtr->getHandle();
  74. if (!spriteTexture.isLoaded())
  75. {
  76. *value = Vector2::ZERO;
  77. return;
  78. }
  79. *value = spriteTexture->getOffset();
  80. }
  81. void ScriptSpriteTexture::internal_SetOffset(ScriptSpriteTexture* thisPtr, Vector2 value)
  82. {
  83. HSpriteTexture spriteTexture = thisPtr->getHandle();
  84. if (!spriteTexture.isLoaded())
  85. return;
  86. spriteTexture->setOffset(value);
  87. }
  88. void ScriptSpriteTexture::internal_GetScale(ScriptSpriteTexture* thisPtr, Vector2* value)
  89. {
  90. HSpriteTexture spriteTexture = thisPtr->getHandle();
  91. if (!spriteTexture.isLoaded())
  92. {
  93. *value = Vector2::ZERO;
  94. return;
  95. }
  96. *value = spriteTexture->getScale();
  97. }
  98. void ScriptSpriteTexture::internal_SetScale(ScriptSpriteTexture* thisPtr, Vector2 value)
  99. {
  100. HSpriteTexture spriteTexture = thisPtr->getHandle();
  101. if (!spriteTexture.isLoaded())
  102. return;
  103. spriteTexture->setScale(value);
  104. }
  105. UINT32 ScriptSpriteTexture::internal_GetWidth(ScriptSpriteTexture* thisPtr)
  106. {
  107. HSpriteTexture spriteTexture = thisPtr->getHandle();
  108. if (!spriteTexture.isLoaded())
  109. return 0;
  110. return spriteTexture->getWidth();
  111. }
  112. UINT32 ScriptSpriteTexture::internal_GetHeight(ScriptSpriteTexture* thisPtr)
  113. {
  114. HSpriteTexture spriteTexture = thisPtr->getHandle();
  115. if (!spriteTexture.isLoaded())
  116. return 0;
  117. return spriteTexture->getHeight();
  118. }
  119. }