BsScriptModalWindow.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #include "BsScriptModalWindow.h"
  2. #include "BsScriptMeta.h"
  3. #include "BsMonoField.h"
  4. #include "BsMonoClass.h"
  5. #include "BsMonoManager.h"
  6. #include "CmSceneObject.h"
  7. #include "CmRenderWindow.h"
  8. #include "CmApplication.h"
  9. #include "BsCamera.h"
  10. #include "BsGUIWidget.h"
  11. using namespace CamelotFramework;
  12. using namespace BansheeEngine;
  13. namespace BansheeEditor
  14. {
  15. ScriptModalWindow::ScriptModalWindow(INT32 left, INT32 top, UINT32 width, UINT32 height)
  16. {
  17. RENDER_WINDOW_DESC renderWindowDesc;
  18. renderWindowDesc.width = width;
  19. renderWindowDesc.height = height;
  20. renderWindowDesc.left = left;
  21. renderWindowDesc.top = top;
  22. renderWindowDesc.title = "ModalWindow";
  23. renderWindowDesc.fullscreen = false;
  24. renderWindowDesc.border = WindowBorder::None;
  25. renderWindowDesc.toolWindow = true;
  26. mRenderWindow = RenderWindow::create(renderWindowDesc, gApplication().getPrimaryWindow());
  27. mSceneObject = SceneObject::create("ModalWindow");
  28. mCamera = mSceneObject->addComponent<Camera>();
  29. mCamera->initialize(mRenderWindow, 0.0f, 0.0f, 1.0f, 1.0f);
  30. mCamera->setNearClipDistance(5);
  31. mCamera->setAspectRatio(1.0f);
  32. mCamera->setIgnoreSceneRenderables(true);
  33. }
  34. void ScriptModalWindow::initMetaData()
  35. {
  36. metaData = ScriptMeta("MBansheeEditor", "BansheeEditor", "ModalWindow", &ScriptModalWindow::initRuntimeData);
  37. MonoManager::registerScriptType(&metaData);
  38. }
  39. void ScriptModalWindow::initRuntimeData()
  40. {
  41. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptModalWindow::internal_createInstance);
  42. metaData.scriptClass->addInternalCall("Internal_DestroyInstance", &ScriptModalWindow::internal_destroyInstance);
  43. }
  44. void ScriptModalWindow::internal_createInstance(MonoObject* instance, INT32 left, INT32 top, UINT32 width, UINT32 height)
  45. {
  46. ScriptModalWindow* nativeInstance = new (cm_alloc<ScriptModalWindow>()) ScriptModalWindow(left, top, width, height);
  47. nativeInstance->createInstance(instance);
  48. metaData.thisPtrField->setValue(instance, nativeInstance);
  49. }
  50. void ScriptModalWindow::internal_destroyInstance(ScriptModalWindow* nativeInstance)
  51. {
  52. nativeInstance->destroyInstance();
  53. cm_delete(nativeInstance);
  54. }
  55. }