BsScriptSceneGizmos.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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)
  11. :ScriptObject(object), mCamera(camera)
  12. {
  13. }
  14. ScriptSceneGizmos::~ScriptSceneGizmos()
  15. {
  16. if (GizmoManager::isStarted()) // If not active, we don't care
  17. GizmoManager::instance().clearRenderData();
  18. }
  19. void ScriptSceneGizmos::initRuntimeData()
  20. {
  21. metaData.scriptClass->addInternalCall("Internal_Create", (void*)&ScriptSceneGizmos::internal_Create);
  22. metaData.scriptClass->addInternalCall("Internal_Draw", (void*)&ScriptSceneGizmos::internal_Draw);
  23. }
  24. void ScriptSceneGizmos::internal_Create(MonoObject* managedInstance, ScriptCCamera* camera)
  25. {
  26. new (bs_alloc<ScriptSceneGizmos>()) ScriptSceneGizmos(managedInstance, camera->getHandle());
  27. }
  28. void ScriptSceneGizmos::internal_Draw(ScriptSceneGizmos* thisPtr)
  29. {
  30. ScriptGizmoManager::instance().update();
  31. // Make sure camera's transform is up-to-date
  32. const SPtr<Camera>& cameraPtr = thisPtr->mCamera->_getCamera();
  33. cameraPtr->_updateState(*thisPtr->mCamera->SO());
  34. GizmoManager::instance().update(cameraPtr);
  35. }
  36. }