BsScriptCursor.cpp 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Wrappers/BsScriptCursor.h"
  4. #include "BsMonoManager.h"
  5. #include "BsMonoClass.h"
  6. #include "BsMonoUtil.h"
  7. #include "Platform/BsCursor.h"
  8. #include "BsScriptPixelData.generated.h"
  9. namespace bs
  10. {
  11. ScriptCursor::ScriptCursor(MonoObject* instance)
  12. :ScriptObject(instance)
  13. { }
  14. void ScriptCursor::initRuntimeData()
  15. {
  16. metaData.scriptClass->addInternalCall("Internal_GetScreenPosition", (void*)&ScriptCursor::internal_getScreenPosition);
  17. metaData.scriptClass->addInternalCall("Internal_SetScreenPosition", (void*)&ScriptCursor::internal_setScreenPosition);
  18. metaData.scriptClass->addInternalCall("Internal_Hide", (void*)&ScriptCursor::internal_hide);
  19. metaData.scriptClass->addInternalCall("Internal_Show", (void*)&ScriptCursor::internal_show);
  20. metaData.scriptClass->addInternalCall("Internal_ClipToRect", (void*)&ScriptCursor::internal_clipToRect);
  21. metaData.scriptClass->addInternalCall("Internal_ClipDisable", (void*)&ScriptCursor::internal_clipDisable);
  22. metaData.scriptClass->addInternalCall("Internal_SetCursor", (void*)&ScriptCursor::internal_setCursor);
  23. metaData.scriptClass->addInternalCall("Internal_SetCursorStr", (void*)&ScriptCursor::internal_setCursorStr);
  24. metaData.scriptClass->addInternalCall("Internal_SetCursorIcon", (void*)&ScriptCursor::internal_setCursorIcon);
  25. metaData.scriptClass->addInternalCall("Internal_SetCursorIconStr", (void*)&ScriptCursor::internal_setCursorIconStr);
  26. metaData.scriptClass->addInternalCall("Internal_ClearCursorIcon", (void*)&ScriptCursor::internal_clearCursorIcon);
  27. metaData.scriptClass->addInternalCall("Internal_ClearCursorIconStr", (void*)&ScriptCursor::internal_clearCursorIconStr);
  28. }
  29. void ScriptCursor::internal_getScreenPosition(Vector2I* value)
  30. {
  31. Cursor::instance().getScreenPosition();
  32. }
  33. void ScriptCursor::internal_setScreenPosition(Vector2I* value)
  34. {
  35. Cursor::instance().setScreenPosition(*value);
  36. }
  37. void ScriptCursor::internal_hide()
  38. {
  39. Cursor::instance().hide();
  40. }
  41. void ScriptCursor::internal_show()
  42. {
  43. Cursor::instance().show();
  44. }
  45. void ScriptCursor::internal_clipToRect(Rect2I* value)
  46. {
  47. Cursor::instance().clipToRect(*value);
  48. }
  49. void ScriptCursor::internal_clipDisable()
  50. {
  51. Cursor::instance().clipDisable();
  52. }
  53. void ScriptCursor::internal_setCursorStr(MonoString* name)
  54. {
  55. String nameStr = MonoUtil::monoToString(name);
  56. Cursor::instance().setCursor(nameStr);
  57. }
  58. void ScriptCursor::internal_setCursor(CursorType cursor)
  59. {
  60. Cursor::instance().setCursor(cursor);
  61. }
  62. void ScriptCursor::internal_setCursorIconStr(MonoString* name, MonoObject* iconData, Vector2I* hotspot)
  63. {
  64. String nameStr = MonoUtil::monoToString(name);
  65. ScriptPixelData* scriptPixelData = ScriptPixelData::toNative(iconData);
  66. if (scriptPixelData != nullptr)
  67. {
  68. SPtr<PixelData> pixelData = scriptPixelData->getInternal();
  69. Cursor::instance().setCursorIcon(nameStr, *pixelData, *hotspot);
  70. }
  71. else
  72. Cursor::instance().clearCursorIcon(nameStr);
  73. }
  74. void ScriptCursor::internal_setCursorIcon(CursorType cursor, MonoObject* iconData, Vector2I* hotspot)
  75. {
  76. ScriptPixelData* scriptPixelData = ScriptPixelData::toNative(iconData);
  77. if (scriptPixelData != nullptr)
  78. {
  79. SPtr<PixelData> pixelData = scriptPixelData->getInternal();
  80. Cursor::instance().setCursorIcon(cursor, *pixelData, *hotspot);
  81. }
  82. else
  83. Cursor::instance().clearCursorIcon(cursor);
  84. }
  85. void ScriptCursor::internal_clearCursorIconStr(MonoString* name)
  86. {
  87. String nameStr = MonoUtil::monoToString(name);
  88. Cursor::instance().clearCursorIcon(nameStr);
  89. }
  90. void ScriptCursor::internal_clearCursorIcon(CursorType cursor)
  91. {
  92. Cursor::instance().clearCursorIcon(cursor);
  93. }
  94. }