| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
- //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
- #include "Wrappers/BsScriptGizmos.h"
- #include "BsScriptMeta.h"
- #include "BsMonoClass.h"
- #include "Scene/BsGizmoManager.h"
- #include "BsMonoUtil.h"
- #include "Generated/BsScriptRendererMeshData.generated.h"
- #include "Generated/BsScriptSpriteTexture.generated.h"
- #include "Generated/BsScriptFont.generated.h"
- namespace bs
- {
- ScriptGizmos::ScriptGizmos(MonoObject* instance)
- :ScriptObject(instance)
- { }
- void ScriptGizmos::initRuntimeData()
- {
- metaData.scriptClass->addInternalCall("Internal_SetColor", (void*)&ScriptGizmos::internal_SetColor);
- metaData.scriptClass->addInternalCall("Internal_GetColor", (void*)&ScriptGizmos::internal_GetColor);
- metaData.scriptClass->addInternalCall("Internal_SetTransform", (void*)&ScriptGizmos::internal_SetTransform);
- metaData.scriptClass->addInternalCall("Internal_GetTransform", (void*)&ScriptGizmos::internal_GetTransform);
- metaData.scriptClass->addInternalCall("Internal_DrawCube", (void*)&ScriptGizmos::internal_DrawCube);
- metaData.scriptClass->addInternalCall("Internal_DrawSphere", (void*)&ScriptGizmos::internal_DrawSphere);
- metaData.scriptClass->addInternalCall("Internal_DrawCone", (void*)&ScriptGizmos::internal_DrawCone);
- metaData.scriptClass->addInternalCall("Internal_DrawDisc", (void*)&ScriptGizmos::internal_DrawDisc);
- metaData.scriptClass->addInternalCall("Internal_DrawWireCube", (void*)&ScriptGizmos::internal_DrawWireCube);
- metaData.scriptClass->addInternalCall("Internal_DrawWireSphere", (void*)&ScriptGizmos::internal_DrawWireSphere);
- metaData.scriptClass->addInternalCall("Internal_DrawWireHemisphere", (void*)&ScriptGizmos::internal_DrawWireHemisphere);
- metaData.scriptClass->addInternalCall("Internal_DrawWireCapsule", (void*)&ScriptGizmos::internal_DrawWireCapsule);
- metaData.scriptClass->addInternalCall("Internal_DrawWireCone", (void*)&ScriptGizmos::internal_DrawWireCone);
- metaData.scriptClass->addInternalCall("Internal_DrawWireDisc", (void*)&ScriptGizmos::internal_DrawWireDisc);
- metaData.scriptClass->addInternalCall("Internal_DrawWireArc", (void*)&ScriptGizmos::internal_DrawWireArc);
- metaData.scriptClass->addInternalCall("Internal_DrawWireMesh", (void*)&ScriptGizmos::internal_DrawWireMesh);
- metaData.scriptClass->addInternalCall("Internal_DrawLine", (void*)&ScriptGizmos::internal_DrawLine);
- metaData.scriptClass->addInternalCall("Internal_DrawLineList", (void*)&ScriptGizmos::internal_DrawLineList);
- metaData.scriptClass->addInternalCall("Internal_DrawFrustum", (void*)&ScriptGizmos::internal_DrawFrustum);
- metaData.scriptClass->addInternalCall("Internal_DrawIcon", (void*)&ScriptGizmos::internal_DrawIcon);
- metaData.scriptClass->addInternalCall("Internal_DrawText", (void*)&ScriptGizmos::internal_DrawText);
- }
- void ScriptGizmos::internal_SetColor(Color* color)
- {
- GizmoManager::instance().setColor(*color);
- }
- void ScriptGizmos::internal_GetColor(Color* color)
- {
- *color = GizmoManager::instance().getColor();
- }
- void ScriptGizmos::internal_SetTransform(Matrix4* transform)
- {
- GizmoManager::instance().setTransform(*transform);
- }
- void ScriptGizmos::internal_GetTransform(Matrix4* transform)
- {
- *transform = GizmoManager::instance().getTransform();
- }
- void ScriptGizmos::internal_DrawCube(Vector3* position, Vector3* extents)
- {
- GizmoManager::instance().drawCube(*position, *extents);
- }
- void ScriptGizmos::internal_DrawSphere(Vector3* position, float radius)
- {
- GizmoManager::instance().drawSphere(*position, radius);
- }
- void ScriptGizmos::internal_DrawCone(Vector3* base, Vector3* normal, float height, float radius, Vector2* scale)
- {
- GizmoManager::instance().drawCone(*base, *normal, height, radius, *scale);
- }
- void ScriptGizmos::internal_DrawDisc(Vector3* position, Vector3* normal, float radius)
- {
- GizmoManager::instance().drawDisc(*position, *normal, radius);
- }
- void ScriptGizmos::internal_DrawWireCube(Vector3* position, Vector3* extents)
- {
- GizmoManager::instance().drawWireCube(*position, *extents);
- }
- void ScriptGizmos::internal_DrawWireSphere(Vector3* position, float radius)
- {
- GizmoManager::instance().drawWireSphere(*position, radius);
- }
- void ScriptGizmos::internal_DrawWireHemisphere(Vector3* position, float radius)
- {
- GizmoManager::instance().drawWireHemisphere(*position, radius);
- }
- void ScriptGizmos::internal_DrawWireCapsule(Vector3* position, float height, float radius)
- {
- GizmoManager::instance().drawWireCapsule(*position, height, radius);
- }
- void ScriptGizmos::internal_DrawWireCone(Vector3* base, Vector3* normal, float height, float radius, Vector2* scale)
- {
- GizmoManager::instance().drawWireCone(*base, *normal, height, radius, *scale);
- }
- void ScriptGizmos::internal_DrawLine(Vector3* start, Vector3* end)
- {
- GizmoManager::instance().drawLine(*start, *end);
- }
- void ScriptGizmos::internal_DrawLineList(MonoArray* linePoints)
- {
- ScriptArray lineArray(linePoints);
- UINT32 numElements = lineArray.size();
- Vector<Vector3> points(numElements);
- for (UINT32 i = 0; i < numElements; i++)
- points[i] = lineArray.get<Vector3>(i);
- GizmoManager::instance().drawLineList(points);
- }
- void ScriptGizmos::internal_DrawWireDisc(Vector3* position, Vector3* normal, float radius)
- {
- GizmoManager::instance().drawWireDisc(*position, *normal, radius);
- }
- void ScriptGizmos::internal_DrawWireArc(Vector3* position, Vector3* normal, float radius, float startAngle,
- float amountAngle)
- {
- GizmoManager::instance().drawWireArc(*position, *normal, radius, Degree(startAngle), Degree(amountAngle));
- }
- void ScriptGizmos::internal_DrawWireMesh(ScriptRendererMeshData* meshData)
- {
- if (meshData != nullptr)
- {
- SPtr<MeshData> nativeMeshData = meshData->getInternal()->getData();
- GizmoManager::instance().drawWireMesh(nativeMeshData);
- }
- }
- void ScriptGizmos::internal_DrawFrustum(Vector3* position, float aspect, Degree* FOV, float near, float far)
- {
- GizmoManager::instance().drawFrustum(*position, aspect, *FOV, near, far);
- }
- void ScriptGizmos::internal_DrawIcon(Vector3* position, MonoObject* image, bool fixedScale)
- {
- HSpriteTexture nativeTexture;
- if (image != nullptr)
- nativeTexture = ScriptSpriteTexture::toNative(image)->getHandle();
- GizmoManager::instance().drawIcon(*position, nativeTexture, fixedScale);
- }
- void ScriptGizmos::internal_DrawText(Vector3* position, MonoString* text, ScriptFont* font, int size)
- {
- String nativeText = MonoUtil::monoToString(text);
- HFont fontHandle;
- if (font != nullptr)
- fontHandle = font->getHandle();
- GizmoManager::instance().drawText(*position, nativeText, fontHandle, size);
- }
- }
|