ModalWindow.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Runtime.CompilerServices;
  4. using BansheeEngine;
  5. namespace BansheeEditor
  6. {
  7. public class ModalWindow : ScriptObject
  8. {
  9. public int Width { get { return Internal_GetWidth(mCachedPtr); } }
  10. public int Height { get { return Internal_GetHeight(mCachedPtr); } }
  11. protected GUIPanel GUI;
  12. public static T Open<T>() where T : ModalWindow
  13. {
  14. return (T)Internal_CreateInstance(typeof(T).Namespace, typeof(T).Name);
  15. }
  16. private void OnInitializeInternal()
  17. {
  18. GUI = new GUIPanel();
  19. Internal_InitializeGUIPanel(mCachedPtr, GUI);
  20. GUI.Initialize();
  21. GUI.SetArea(0, 0, Width, Height);
  22. }
  23. private void OnDestroyInternal()
  24. {
  25. GUI.Destroy();
  26. Internal_DestroyGUIPanel(mCachedPtr, GUI);
  27. }
  28. protected virtual void OnWindowResized(int width, int height)
  29. {
  30. GUI.SetArea(0, 0, width, height);
  31. }
  32. protected void Close()
  33. {
  34. Internal_Close(mCachedPtr);
  35. }
  36. [MethodImpl(MethodImplOptions.InternalCall)]
  37. private static extern ModalWindow Internal_CreateInstance(string ns, string typeName);
  38. [MethodImpl(MethodImplOptions.InternalCall)]
  39. private static extern void Internal_Close(IntPtr nativeInstance);
  40. [MethodImpl(MethodImplOptions.InternalCall)]
  41. private static extern void Internal_InitializeGUIPanel(IntPtr nativeInstance, GUIPanel panel);
  42. [MethodImpl(MethodImplOptions.InternalCall)]
  43. private static extern void Internal_DestroyGUIPanel(IntPtr nativeInstance, GUIPanel panel);
  44. [MethodImpl(MethodImplOptions.InternalCall)]
  45. private static extern int Internal_GetWidth(IntPtr nativeInstance);
  46. [MethodImpl(MethodImplOptions.InternalCall)]
  47. private static extern int Internal_GetHeight(IntPtr nativeInstance);
  48. }
  49. }