NativeGUIWidget.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System;
  2. using System.Runtime.CompilerServices;
  3. namespace BansheeEngine
  4. {
  5. /// <summary>
  6. /// Wrapper around the native GUIWidget class.
  7. /// <see cref="GUIWidget"/>
  8. /// </summary>
  9. internal class NativeGUIWidget : ScriptObject
  10. {
  11. /// <summary>
  12. /// Skin used for rendering all the GUI elements belonging to this widget.
  13. /// </summary>
  14. internal GUISkin Skin
  15. {
  16. get { return Internal_GetSkin(mCachedPtr); }
  17. set
  18. {
  19. IntPtr skinPtr = IntPtr.Zero;
  20. if (value != null)
  21. skinPtr = value.GetCachedPtr();
  22. Internal_SetSkin(mCachedPtr, skinPtr);
  23. }
  24. }
  25. /// <summary>
  26. /// Determines to which camera are the GUI elements belonong to this widget rendered. If null then they will be
  27. /// rendered on the main camera.
  28. /// </summary>
  29. internal Camera Camera
  30. {
  31. get { return Internal_GetCamera(mCachedPtr); }
  32. set
  33. {
  34. IntPtr cameraPtr = IntPtr.Zero;
  35. if (value != null)
  36. cameraPtr = value.GetCachedPtr();
  37. Internal_SetCamera(mCachedPtr, cameraPtr);
  38. }
  39. }
  40. /// <summary>
  41. /// Container into which all GUI elements belonging to this widget should be placed.
  42. /// </summary>
  43. internal GUIPanel Panel
  44. {
  45. get { return Internal_GetPanel(mCachedPtr); }
  46. }
  47. /// <summary>
  48. /// Deletes the GUI widget and all child GUI elements.
  49. /// </summary>
  50. internal void Destroy()
  51. {
  52. Internal_Destroy(mCachedPtr);
  53. }
  54. [MethodImpl(MethodImplOptions.InternalCall)]
  55. private static extern GUISkin Internal_GetSkin(IntPtr instance);
  56. [MethodImpl(MethodImplOptions.InternalCall)]
  57. private static extern void Internal_SetSkin(IntPtr instance, IntPtr skin);
  58. [MethodImpl(MethodImplOptions.InternalCall)]
  59. private static extern Camera Internal_GetCamera(IntPtr instance);
  60. [MethodImpl(MethodImplOptions.InternalCall)]
  61. private static extern void Internal_SetCamera(IntPtr instance, IntPtr camera);
  62. [MethodImpl(MethodImplOptions.InternalCall)]
  63. private static extern GUIPanel Internal_GetPanel(IntPtr instance);
  64. [MethodImpl(MethodImplOptions.InternalCall)]
  65. private static extern void Internal_Destroy(IntPtr instance);
  66. }
  67. }