BsScriptSpriteTexture.cpp 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Wrappers/BsScriptSpriteTexture.h"
  4. #include "BsScriptResourceManager.h"
  5. #include "BsScriptMeta.h"
  6. #include "BsMonoField.h"
  7. #include "BsMonoClass.h"
  8. #include "BsMonoManager.h"
  9. #include "2D/BsSpriteTexture.h"
  10. #include "BsScriptTexture.generated.h"
  11. namespace bs
  12. {
  13. ScriptSpriteTexture::ScriptSpriteTexture(MonoObject* instance,const HSpriteTexture& texture)
  14. :TScriptResource(instance, texture)
  15. {
  16. }
  17. void ScriptSpriteTexture::initRuntimeData()
  18. {
  19. metaData.scriptClass->addInternalCall("Internal_CreateInstance", (void*)&ScriptSpriteTexture::internal_createInstance);
  20. metaData.scriptClass->addInternalCall("Internal_GetTexture", (void*)&ScriptSpriteTexture::internal_GetTexture);
  21. metaData.scriptClass->addInternalCall("Internal_SetTexture", (void*)&ScriptSpriteTexture::internal_SetTexture);
  22. metaData.scriptClass->addInternalCall("Internal_GetOffset", (void*)&ScriptSpriteTexture::internal_GetOffset);
  23. metaData.scriptClass->addInternalCall("Internal_SetOffset", (void*)&ScriptSpriteTexture::internal_SetOffset);
  24. metaData.scriptClass->addInternalCall("Internal_GetScale", (void*)&ScriptSpriteTexture::internal_GetScale);
  25. metaData.scriptClass->addInternalCall("Internal_SetScale", (void*)&ScriptSpriteTexture::internal_SetScale);
  26. metaData.scriptClass->addInternalCall("Internal_GetWidth", (void*)&ScriptSpriteTexture::internal_GetWidth);
  27. metaData.scriptClass->addInternalCall("Internal_GetHeight", (void*)&ScriptSpriteTexture::internal_GetHeight);
  28. }
  29. MonoObject* ScriptSpriteTexture::toManaged(const HSpriteTexture& texture)
  30. {
  31. if (texture == nullptr)
  32. return nullptr;
  33. ScriptResourceBase* scriptSpriteTex = ScriptResourceManager::instance().getScriptResource(texture, true);
  34. return scriptSpriteTex->getManagedInstance();
  35. }
  36. void ScriptSpriteTexture::internal_createInstance(MonoObject* instance, MonoObject* texture, Vector2* offset, Vector2* scale)
  37. {
  38. ScriptTexture* scriptTexture = ScriptTexture::toNative(texture);
  39. if (scriptTexture == nullptr)
  40. ScriptResourceManager::instance().createBuiltinScriptResource(SpriteTexture::dummy(), instance);
  41. else
  42. {
  43. HSpriteTexture spriteTexture = SpriteTexture::create(*offset, *scale, scriptTexture->getHandle());
  44. ScriptResourceManager::instance().createBuiltinScriptResource(spriteTexture, instance);
  45. }
  46. }
  47. MonoObject* ScriptSpriteTexture::internal_GetTexture(ScriptSpriteTexture* thisPtr)
  48. {
  49. HSpriteTexture spriteTexture = thisPtr->getHandle();
  50. if (!spriteTexture.isLoaded())
  51. return nullptr;
  52. HTexture texture = spriteTexture->getTexture();
  53. if (!texture.isLoaded())
  54. return nullptr;
  55. ScriptResourceBase* scriptTexture = ScriptResourceManager::instance().getScriptResource(texture, true);
  56. return scriptTexture->getManagedInstance();
  57. }
  58. void ScriptSpriteTexture::internal_SetTexture(ScriptSpriteTexture* thisPtr, ScriptTexture* value)
  59. {
  60. HSpriteTexture spriteTexture = thisPtr->getHandle();
  61. if (!spriteTexture.isLoaded())
  62. return;
  63. HTexture texture;
  64. if (value != nullptr)
  65. texture = value->getHandle();
  66. spriteTexture->setTexture(texture);
  67. }
  68. void ScriptSpriteTexture::internal_GetOffset(ScriptSpriteTexture* thisPtr, Vector2* value)
  69. {
  70. HSpriteTexture spriteTexture = thisPtr->getHandle();
  71. if (!spriteTexture.isLoaded())
  72. {
  73. *value = Vector2::ZERO;
  74. return;
  75. }
  76. *value = spriteTexture->getOffset();
  77. }
  78. void ScriptSpriteTexture::internal_SetOffset(ScriptSpriteTexture* thisPtr, Vector2* value)
  79. {
  80. HSpriteTexture spriteTexture = thisPtr->getHandle();
  81. if (!spriteTexture.isLoaded())
  82. return;
  83. spriteTexture->setOffset(*value);
  84. }
  85. void ScriptSpriteTexture::internal_GetScale(ScriptSpriteTexture* thisPtr, Vector2* value)
  86. {
  87. HSpriteTexture spriteTexture = thisPtr->getHandle();
  88. if (!spriteTexture.isLoaded())
  89. {
  90. *value = Vector2::ZERO;
  91. return;
  92. }
  93. *value = spriteTexture->getScale();
  94. }
  95. void ScriptSpriteTexture::internal_SetScale(ScriptSpriteTexture* thisPtr, Vector2* value)
  96. {
  97. HSpriteTexture spriteTexture = thisPtr->getHandle();
  98. if (!spriteTexture.isLoaded())
  99. return;
  100. spriteTexture->setScale(*value);
  101. }
  102. UINT32 ScriptSpriteTexture::internal_GetWidth(ScriptSpriteTexture* thisPtr)
  103. {
  104. HSpriteTexture spriteTexture = thisPtr->getHandle();
  105. if (!spriteTexture.isLoaded())
  106. return 0;
  107. return spriteTexture->getWidth();
  108. }
  109. UINT32 ScriptSpriteTexture::internal_GetHeight(ScriptSpriteTexture* thisPtr)
  110. {
  111. HSpriteTexture spriteTexture = thisPtr->getHandle();
  112. if (!spriteTexture.isLoaded())
  113. return 0;
  114. return spriteTexture->getHeight();
  115. }
  116. MonoObject* ScriptSpriteTexture::createInstance()
  117. {
  118. return metaData.scriptClass->createInstance();
  119. }
  120. }