BsScriptCursor.cpp 3.5 KB

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