2
0

BsScriptGizmos.cpp 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Wrappers/BsScriptGizmos.h"
  4. #include "BsScriptMeta.h"
  5. #include "BsMonoClass.h"
  6. #include "Scene/BsGizmoManager.h"
  7. #include "BsMonoUtil.h"
  8. #include "Generated/BsScriptRendererMeshData.generated.h"
  9. #include "Generated/BsScriptSpriteTexture.generated.h"
  10. #include "Generated/BsScriptFont.generated.h"
  11. namespace bs
  12. {
  13. ScriptGizmos::ScriptGizmos(MonoObject* instance)
  14. :ScriptObject(instance)
  15. { }
  16. void ScriptGizmos::initRuntimeData()
  17. {
  18. metaData.scriptClass->addInternalCall("Internal_SetColor", (void*)&ScriptGizmos::internal_SetColor);
  19. metaData.scriptClass->addInternalCall("Internal_GetColor", (void*)&ScriptGizmos::internal_GetColor);
  20. metaData.scriptClass->addInternalCall("Internal_SetTransform", (void*)&ScriptGizmos::internal_SetTransform);
  21. metaData.scriptClass->addInternalCall("Internal_GetTransform", (void*)&ScriptGizmos::internal_GetTransform);
  22. metaData.scriptClass->addInternalCall("Internal_DrawCube", (void*)&ScriptGizmos::internal_DrawCube);
  23. metaData.scriptClass->addInternalCall("Internal_DrawSphere", (void*)&ScriptGizmos::internal_DrawSphere);
  24. metaData.scriptClass->addInternalCall("Internal_DrawCone", (void*)&ScriptGizmos::internal_DrawCone);
  25. metaData.scriptClass->addInternalCall("Internal_DrawDisc", (void*)&ScriptGizmos::internal_DrawDisc);
  26. metaData.scriptClass->addInternalCall("Internal_DrawWireCube", (void*)&ScriptGizmos::internal_DrawWireCube);
  27. metaData.scriptClass->addInternalCall("Internal_DrawWireSphere", (void*)&ScriptGizmos::internal_DrawWireSphere);
  28. metaData.scriptClass->addInternalCall("Internal_DrawWireHemisphere", (void*)&ScriptGizmos::internal_DrawWireHemisphere);
  29. metaData.scriptClass->addInternalCall("Internal_DrawWireCapsule", (void*)&ScriptGizmos::internal_DrawWireCapsule);
  30. metaData.scriptClass->addInternalCall("Internal_DrawWireCone", (void*)&ScriptGizmos::internal_DrawWireCone);
  31. metaData.scriptClass->addInternalCall("Internal_DrawWireDisc", (void*)&ScriptGizmos::internal_DrawWireDisc);
  32. metaData.scriptClass->addInternalCall("Internal_DrawWireArc", (void*)&ScriptGizmos::internal_DrawWireArc);
  33. metaData.scriptClass->addInternalCall("Internal_DrawWireMesh", (void*)&ScriptGizmos::internal_DrawWireMesh);
  34. metaData.scriptClass->addInternalCall("Internal_DrawLine", (void*)&ScriptGizmos::internal_DrawLine);
  35. metaData.scriptClass->addInternalCall("Internal_DrawLineList", (void*)&ScriptGizmos::internal_DrawLineList);
  36. metaData.scriptClass->addInternalCall("Internal_DrawFrustum", (void*)&ScriptGizmos::internal_DrawFrustum);
  37. metaData.scriptClass->addInternalCall("Internal_DrawIcon", (void*)&ScriptGizmos::internal_DrawIcon);
  38. metaData.scriptClass->addInternalCall("Internal_DrawText", (void*)&ScriptGizmos::internal_DrawText);
  39. }
  40. void ScriptGizmos::internal_SetColor(Color* color)
  41. {
  42. GizmoManager::instance().setColor(*color);
  43. }
  44. void ScriptGizmos::internal_GetColor(Color* color)
  45. {
  46. *color = GizmoManager::instance().getColor();
  47. }
  48. void ScriptGizmos::internal_SetTransform(Matrix4* transform)
  49. {
  50. GizmoManager::instance().setTransform(*transform);
  51. }
  52. void ScriptGizmos::internal_GetTransform(Matrix4* transform)
  53. {
  54. *transform = GizmoManager::instance().getTransform();
  55. }
  56. void ScriptGizmos::internal_DrawCube(Vector3* position, Vector3* extents)
  57. {
  58. GizmoManager::instance().drawCube(*position, *extents);
  59. }
  60. void ScriptGizmos::internal_DrawSphere(Vector3* position, float radius)
  61. {
  62. GizmoManager::instance().drawSphere(*position, radius);
  63. }
  64. void ScriptGizmos::internal_DrawCone(Vector3* base, Vector3* normal, float height, float radius, Vector2* scale)
  65. {
  66. GizmoManager::instance().drawCone(*base, *normal, height, radius, *scale);
  67. }
  68. void ScriptGizmos::internal_DrawDisc(Vector3* position, Vector3* normal, float radius)
  69. {
  70. GizmoManager::instance().drawDisc(*position, *normal, radius);
  71. }
  72. void ScriptGizmos::internal_DrawWireCube(Vector3* position, Vector3* extents)
  73. {
  74. GizmoManager::instance().drawWireCube(*position, *extents);
  75. }
  76. void ScriptGizmos::internal_DrawWireSphere(Vector3* position, float radius)
  77. {
  78. GizmoManager::instance().drawWireSphere(*position, radius);
  79. }
  80. void ScriptGizmos::internal_DrawWireHemisphere(Vector3* position, float radius)
  81. {
  82. GizmoManager::instance().drawWireHemisphere(*position, radius);
  83. }
  84. void ScriptGizmos::internal_DrawWireCapsule(Vector3* position, float height, float radius)
  85. {
  86. GizmoManager::instance().drawWireCapsule(*position, height, radius);
  87. }
  88. void ScriptGizmos::internal_DrawWireCone(Vector3* base, Vector3* normal, float height, float radius, Vector2* scale)
  89. {
  90. GizmoManager::instance().drawWireCone(*base, *normal, height, radius, *scale);
  91. }
  92. void ScriptGizmos::internal_DrawLine(Vector3* start, Vector3* end)
  93. {
  94. GizmoManager::instance().drawLine(*start, *end);
  95. }
  96. void ScriptGizmos::internal_DrawLineList(MonoArray* linePoints)
  97. {
  98. ScriptArray lineArray(linePoints);
  99. UINT32 numElements = lineArray.size();
  100. Vector<Vector3> points(numElements);
  101. for (UINT32 i = 0; i < numElements; i++)
  102. points[i] = lineArray.get<Vector3>(i);
  103. GizmoManager::instance().drawLineList(points);
  104. }
  105. void ScriptGizmos::internal_DrawWireDisc(Vector3* position, Vector3* normal, float radius)
  106. {
  107. GizmoManager::instance().drawWireDisc(*position, *normal, radius);
  108. }
  109. void ScriptGizmos::internal_DrawWireArc(Vector3* position, Vector3* normal, float radius, float startAngle,
  110. float amountAngle)
  111. {
  112. GizmoManager::instance().drawWireArc(*position, *normal, radius, Degree(startAngle), Degree(amountAngle));
  113. }
  114. void ScriptGizmos::internal_DrawWireMesh(ScriptRendererMeshData* meshData)
  115. {
  116. if (meshData != nullptr)
  117. {
  118. SPtr<MeshData> nativeMeshData = meshData->getInternal()->getData();
  119. GizmoManager::instance().drawWireMesh(nativeMeshData);
  120. }
  121. }
  122. void ScriptGizmos::internal_DrawFrustum(Vector3* position, float aspect, Degree* FOV, float near, float far)
  123. {
  124. GizmoManager::instance().drawFrustum(*position, aspect, *FOV, near, far);
  125. }
  126. void ScriptGizmos::internal_DrawIcon(Vector3* position, MonoObject* image, bool fixedScale)
  127. {
  128. HSpriteTexture nativeTexture;
  129. if (image != nullptr)
  130. nativeTexture = ScriptSpriteTexture::toNative(image)->getHandle();
  131. GizmoManager::instance().drawIcon(*position, nativeTexture, fixedScale);
  132. }
  133. void ScriptGizmos::internal_DrawText(Vector3* position, MonoString* text, ScriptFont* font, int size)
  134. {
  135. String nativeText = MonoUtil::monoToString(text);
  136. HFont fontHandle;
  137. if (font != nullptr)
  138. fontHandle = font->getHandle();
  139. GizmoManager::instance().drawText(*position, nativeText, fontHandle, size);
  140. }
  141. }