2
0

BsScriptModalWindow.cpp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #include "BsScriptModalWindow.h"
  2. #include "BsScriptMeta.h"
  3. #include "BsScriptField.h"
  4. #include "BsScriptClass.h"
  5. #include "BsScriptManager.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. mGUI = mSceneObject->addComponent<GUIWidget>(mCamera->getViewport().get());
  34. mGUI->setDepth(128);
  35. }
  36. void ScriptModalWindow::initMetaData()
  37. {
  38. metaData = ScriptMeta("MBansheeEditor", "BansheeEditor", "ModalWindow", &ScriptModalWindow::initRuntimeData);
  39. ScriptManager::registerScriptType(&metaData);
  40. }
  41. void ScriptModalWindow::initRuntimeData()
  42. {
  43. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptModalWindow::internal_createInstance);
  44. metaData.scriptClass->addInternalCall("Internal_DestroyInstance", &ScriptModalWindow::internal_destroyInstance);
  45. }
  46. void ScriptModalWindow::internal_createInstance(MonoObject* instance, INT32 left, INT32 top, UINT32 width, UINT32 height)
  47. {
  48. ScriptModalWindow* nativeInstance = new (cm_alloc<ScriptModalWindow>()) ScriptModalWindow(left, top, width, height);
  49. nativeInstance->createInstance();
  50. metaData.thisPtrField->setValue(instance, nativeInstance);
  51. }
  52. void ScriptModalWindow::internal_destroyInstance(ScriptModalWindow* nativeInstance)
  53. {
  54. nativeInstance->destroyInstance();
  55. cm_delete(nativeInstance);
  56. }
  57. }