BsScriptHandleDrawing.cpp 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #include "BsScriptHandleDrawing.h"
  2. #include "BsScriptMeta.h"
  3. #include "BsMonoClass.h"
  4. #include "BsHandleManager.h"
  5. #include "BsHandleDrawManager.h"
  6. #include "BsScriptFont.h"
  7. #include "BsMonoUtil.h"
  8. namespace BansheeEngine
  9. {
  10. void ScriptHandleDrawing::initRuntimeData()
  11. {
  12. metaData.scriptClass->addInternalCall("Internal_SetColor", &ScriptHandleDrawing::internal_SetColor);
  13. metaData.scriptClass->addInternalCall("Internal_SetTransform", &ScriptHandleDrawing::internal_SetTransform);
  14. metaData.scriptClass->addInternalCall("Internal_SetLayer", &ScriptHandleDrawing::internal_SetLayer);
  15. metaData.scriptClass->addInternalCall("Internal_DrawCube", &ScriptHandleDrawing::internal_DrawCube);
  16. metaData.scriptClass->addInternalCall("Internal_DrawSphere", &ScriptHandleDrawing::internal_DrawSphere);
  17. metaData.scriptClass->addInternalCall("Internal_DrawWireCube", &ScriptHandleDrawing::internal_DrawWireCube);
  18. metaData.scriptClass->addInternalCall("Internal_DrawWireSphere", &ScriptHandleDrawing::internal_DrawWireSphere);
  19. metaData.scriptClass->addInternalCall("Internal_DrawLine", &ScriptHandleDrawing::internal_DrawLine);
  20. metaData.scriptClass->addInternalCall("Internal_DrawCone", &ScriptHandleDrawing::internal_DrawCone);
  21. metaData.scriptClass->addInternalCall("Internal_DrawDisc", &ScriptHandleDrawing::internal_DrawDisc);
  22. metaData.scriptClass->addInternalCall("Internal_DrawWireDisc", &ScriptHandleDrawing::internal_DrawWireDisc);
  23. metaData.scriptClass->addInternalCall("Internal_DrawArc", &ScriptHandleDrawing::internal_DrawArc);
  24. metaData.scriptClass->addInternalCall("Internal_DrawWireArc", &ScriptHandleDrawing::internal_DrawWireArc);
  25. metaData.scriptClass->addInternalCall("Internal_DrawRect", &ScriptHandleDrawing::internal_DrawRect);
  26. metaData.scriptClass->addInternalCall("Internal_DrawText", &ScriptHandleDrawing::internal_DrawText);
  27. }
  28. void ScriptHandleDrawing::internal_SetColor(Color* color)
  29. {
  30. HandleManager::instance().getDrawManager().setColor(*color);
  31. }
  32. void ScriptHandleDrawing::internal_SetTransform(Matrix4* transform)
  33. {
  34. HandleManager::instance().getDrawManager().setTransform(*transform);
  35. }
  36. void ScriptHandleDrawing::internal_SetLayer(UINT64 layer)
  37. {
  38. HandleManager::instance().getDrawManager().setLayer(layer);
  39. }
  40. void ScriptHandleDrawing::internal_DrawCube(Vector3* position, Vector3* extents, float size)
  41. {
  42. HandleManager::instance().getDrawManager().drawCube(*position, *extents, size);
  43. }
  44. void ScriptHandleDrawing::internal_DrawSphere(Vector3* position, float radius, float size)
  45. {
  46. HandleManager::instance().getDrawManager().drawSphere(*position, radius, size);
  47. }
  48. void ScriptHandleDrawing::internal_DrawWireCube(Vector3* position, Vector3* extents, float size)
  49. {
  50. HandleManager::instance().getDrawManager().drawWireCube(*position, *extents, size);
  51. }
  52. void ScriptHandleDrawing::internal_DrawWireSphere(Vector3* position, float radius, float size)
  53. {
  54. HandleManager::instance().getDrawManager().drawWireSphere(*position, radius, size);
  55. }
  56. void ScriptHandleDrawing::internal_DrawLine(Vector3* start, Vector3* end, float size)
  57. {
  58. HandleManager::instance().getDrawManager().drawLine(*start, *end, size);
  59. }
  60. void ScriptHandleDrawing::internal_DrawCone(Vector3* coneBase, Vector3* normal, float height, float radius, float size)
  61. {
  62. HandleManager::instance().getDrawManager().drawCone(*coneBase, *normal, height, radius, size);
  63. }
  64. void ScriptHandleDrawing::internal_DrawDisc(Vector3* position, Vector3* normal, float radius, float size)
  65. {
  66. HandleManager::instance().getDrawManager().drawDisc(*position, *normal, radius, size);
  67. }
  68. void ScriptHandleDrawing::internal_DrawWireDisc(Vector3* position, Vector3* normal, float radius, float size)
  69. {
  70. HandleManager::instance().getDrawManager().drawWireDisc(*position, *normal, radius, size);
  71. }
  72. void ScriptHandleDrawing::internal_DrawArc(Vector3* position, Vector3* normal, float radius, Degree* startAngle, Degree* amountAngle, float size)
  73. {
  74. HandleManager::instance().getDrawManager().drawArc(*position, *normal, radius, *startAngle, *amountAngle, size);
  75. }
  76. void ScriptHandleDrawing::internal_DrawWireArc(Vector3* position, Vector3* normal, float radius, Degree* startAngle, Degree* amountAngle, float size)
  77. {
  78. HandleManager::instance().getDrawManager().drawWireArc(*position, *normal, radius, *startAngle, *amountAngle, size);
  79. }
  80. void ScriptHandleDrawing::internal_DrawRect(Vector3* center, Vector3* horzAxis, Vector3* vertAxis, float extentH, float extentV, float size)
  81. {
  82. std::array<Vector3, 2> axes = { *horzAxis, *vertAxis };
  83. std::array<float, 2> extents = { extentH, extentV };
  84. Rect3 area(*center, axes, extents);
  85. HandleManager::instance().getDrawManager().drawRect(area, size);
  86. }
  87. void ScriptHandleDrawing::internal_DrawText(Vector3* position, MonoString* text, ScriptFont* font, int fontSize, float size)
  88. {
  89. WString nativeText = MonoUtil::monoToWString(text);
  90. HFont fontHandle;
  91. if (font != nullptr)
  92. fontHandle = font->getHandle();
  93. HandleManager::instance().getDrawManager().drawText(*position, nativeText, fontHandle, fontSize, size);
  94. }
  95. }