BsScriptSceneViewHandler.cpp 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #include "BsScriptSceneViewHandler.h"
  2. #include "BsScriptMeta.h"
  3. #include "BsMonoClass.h"
  4. #include "BsMonoUtil.h"
  5. #include "BsSceneViewHandler.h"
  6. #include "BsScriptCamera.h"
  7. #include "BsScriptEditorWindow.h"
  8. #include "BsEditorWidgetContainer.h"
  9. #include "BsEditorWindowBase.h"
  10. namespace BansheeEngine
  11. {
  12. ScriptSceneViewHandler::ScriptSceneViewHandler(MonoObject* object, EditorWidgetBase* parentWidget, const SPtr<Camera>& camera)
  13. :ScriptObject(object), mHandler(nullptr)
  14. {
  15. mHandler = bs_new<SceneViewHandler>(parentWidget, camera);
  16. }
  17. ScriptSceneViewHandler::~ScriptSceneViewHandler()
  18. {
  19. bs_delete(mHandler);
  20. }
  21. void ScriptSceneViewHandler::initRuntimeData()
  22. {
  23. metaData.scriptClass->addInternalCall("Internal_Create", &ScriptSceneViewHandler::internal_Create);
  24. metaData.scriptClass->addInternalCall("Internal_Update", &ScriptSceneViewHandler::internal_Update);
  25. metaData.scriptClass->addInternalCall("Internal_UpdateHandle", &ScriptSceneViewHandler::internal_UpdateHandle);
  26. metaData.scriptClass->addInternalCall("Internal_UpdateSelection", &ScriptSceneViewHandler::internal_UpdateSelection);
  27. metaData.scriptClass->addInternalCall("Internal_TrySelectHandle", &ScriptSceneViewHandler::internal_TrySelectHandle);
  28. metaData.scriptClass->addInternalCall("Internal_IsHandleActive", &ScriptSceneViewHandler::internal_IsHandleActive);
  29. metaData.scriptClass->addInternalCall("Internal_ClearHandleSelection", &ScriptSceneViewHandler::internal_ClearHandleSelection);
  30. metaData.scriptClass->addInternalCall("Internal_PickObject", &ScriptSceneViewHandler::internal_PickObject);
  31. }
  32. void ScriptSceneViewHandler::internal_Create(MonoObject* managedInstance, ScriptEditorWindow* parentWindow, ScriptCamera* camera)
  33. {
  34. EditorWidgetBase* widget = nullptr;
  35. if (parentWindow != nullptr && !parentWindow->isDestroyed())
  36. widget = parentWindow->getEditorWidget();
  37. new (bs_alloc<ScriptSceneViewHandler>()) ScriptSceneViewHandler(managedInstance, widget, camera->getInternal());
  38. }
  39. void ScriptSceneViewHandler::internal_Update(ScriptSceneViewHandler* thisPtr)
  40. {
  41. thisPtr->mHandler->update();
  42. }
  43. void ScriptSceneViewHandler::internal_UpdateHandle(ScriptSceneViewHandler* thisPtr, Vector2I inputPos, Vector2I inputDelta)
  44. {
  45. thisPtr->mHandler->updateHandle(inputPos, inputDelta);
  46. }
  47. void ScriptSceneViewHandler::internal_UpdateSelection(ScriptSceneViewHandler* thisPtr)
  48. {
  49. thisPtr->mHandler->updateSelection();
  50. }
  51. void ScriptSceneViewHandler::internal_TrySelectHandle(ScriptSceneViewHandler* thisPtr, Vector2I inputPos)
  52. {
  53. thisPtr->mHandler->trySelectHandle(inputPos);
  54. }
  55. bool ScriptSceneViewHandler::internal_IsHandleActive(ScriptSceneViewHandler* thisPtr, Vector2I inputPos)
  56. {
  57. return thisPtr->mHandler->isHandleActive();
  58. }
  59. void ScriptSceneViewHandler::internal_ClearHandleSelection(ScriptSceneViewHandler* thisPtr, Vector2I inputPos)
  60. {
  61. thisPtr->mHandler->clearHandleSelection();
  62. }
  63. void ScriptSceneViewHandler::internal_PickObject(ScriptSceneViewHandler* thisPtr, Vector2I inputPos, bool additive)
  64. {
  65. thisPtr->mHandler->pickObject(inputPos, additive);
  66. }
  67. }