EditorWindow.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using System;
  2. using System.Runtime.CompilerServices;
  3. using BansheeEngine;
  4. namespace BansheeEditor
  5. {
  6. public class EditorWindow : ScriptObject
  7. {
  8. internal int width { get { return Internal_GetWidth(mCachedPtr); } }
  9. internal int height { get { return Internal_GetHeight(mCachedPtr); } }
  10. protected GUIPanel GUI;
  11. public static EditorWindow OpenWindow<T>() where T : EditorWindow
  12. {
  13. return Internal_CreateOrGetInstance(typeof(T).Namespace, typeof(T).Name);
  14. }
  15. protected EditorWindow()
  16. {
  17. GUI = CreatePanel(0, 0, width, height);
  18. }
  19. protected virtual void WindowResized(int width, int height)
  20. {
  21. GUI.SetArea(0, 0, width, height);
  22. }
  23. internal GUIPanel CreatePanel(int x, int y, int width, int height)
  24. {
  25. GUIPanel newPanel = new GUIPanel();
  26. Internal_InitializeGUIPanel(mCachedPtr, newPanel);
  27. newPanel.Initialize();
  28. newPanel.SetArea(x, y, width, height);
  29. return newPanel;
  30. }
  31. [MethodImpl(MethodImplOptions.InternalCall)]
  32. private static extern EditorWindow Internal_CreateOrGetInstance(string ns, string typeName);
  33. [MethodImpl(MethodImplOptions.InternalCall)]
  34. private static extern void Internal_InitializeGUIPanel(IntPtr nativeInstance, GUIPanel panel);
  35. [MethodImpl(MethodImplOptions.InternalCall)]
  36. private static extern int Internal_GetWidth(IntPtr nativeInstance);
  37. [MethodImpl(MethodImplOptions.InternalCall)]
  38. private static extern int Internal_GetHeight(IntPtr nativeInstance);
  39. }
  40. }