BsScriptSpriteTexture.cpp 4.8 KB

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