BsScriptSceneGizmos.cpp 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Wrappers/BsScriptSceneGizmos.h"
  4. #include "Scene/BsGizmoManager.h"
  5. #include "BsScriptGizmoManager.h"
  6. #include "Components/BsCCamera.h"
  7. #include "Generated/BsScriptCCamera.generated.h"
  8. namespace bs
  9. {
  10. ScriptSceneGizmos::ScriptSceneGizmos(MonoObject* object, const HCamera& camera, const GizmoDrawSettings& drawSettings)
  11. :ScriptObject(object), mCamera(camera), mDrawSettings(drawSettings)
  12. { }
  13. ScriptSceneGizmos::~ScriptSceneGizmos()
  14. {
  15. if (GizmoManager::isStarted()) // If not active, we don't care
  16. GizmoManager::instance().clearRenderData();
  17. }
  18. void ScriptSceneGizmos::initRuntimeData()
  19. {
  20. metaData.scriptClass->addInternalCall("Internal_Create", (void*)&ScriptSceneGizmos::internal_Create);
  21. metaData.scriptClass->addInternalCall("Internal_Draw", (void*)&ScriptSceneGizmos::internal_Draw);
  22. metaData.scriptClass->addInternalCall("Internal_SetDrawSettings", (void*)&ScriptSceneGizmos::internal_SetDrawSettings);
  23. metaData.scriptClass->addInternalCall("Internal_GetDrawSettings", (void*)&ScriptSceneGizmos::internal_GetDrawSettings);
  24. }
  25. void ScriptSceneGizmos::internal_Create(MonoObject* managedInstance, ScriptCCamera* camera,
  26. GizmoDrawSettings* drawSettings)
  27. {
  28. new (bs_alloc<ScriptSceneGizmos>()) ScriptSceneGizmos(managedInstance, camera->getHandle(), *drawSettings);
  29. }
  30. void ScriptSceneGizmos::internal_Draw(ScriptSceneGizmos* thisPtr)
  31. {
  32. ScriptGizmoManager::instance().update();
  33. // Make sure camera's transform is up-to-date
  34. const SPtr<Camera>& cameraPtr = thisPtr->mCamera->_getCamera();
  35. cameraPtr->_updateState(*thisPtr->mCamera->SO());
  36. GizmoManager::instance().update(cameraPtr, thisPtr->mDrawSettings);
  37. }
  38. void ScriptSceneGizmos::internal_GetDrawSettings(ScriptSceneGizmos* thisPtr, GizmoDrawSettings* settings)
  39. {
  40. *settings = thisPtr->mDrawSettings;
  41. }
  42. void ScriptSceneGizmos::internal_SetDrawSettings(ScriptSceneGizmos* thisPtr, GizmoDrawSettings* settings)
  43. {
  44. thisPtr->mDrawSettings = *settings;;
  45. }
  46. }