using System;
using System.Runtime.CompilerServices;
namespace BansheeEngine
{
///
/// Wrapper around the native GUIWidget class.
///
///
internal class NativeGUIWidget : ScriptObject
{
///
/// Skin used for rendering all the GUI elements belonging to this widget.
///
internal GUISkin Skin
{
get { return Internal_GetSkin(mCachedPtr); }
set
{
IntPtr skinPtr = IntPtr.Zero;
if (value != null)
skinPtr = value.GetCachedPtr();
Internal_SetSkin(mCachedPtr, skinPtr);
}
}
///
/// Determines to which camera are the GUI elements belonong to this widget rendered. If null then they will be
/// rendered on the main camera.
///
internal Camera Camera
{
get { return Internal_GetCamera(mCachedPtr); }
set
{
IntPtr cameraPtr = IntPtr.Zero;
if (value != null)
cameraPtr = value.GetCachedPtr();
Internal_SetCamera(mCachedPtr, cameraPtr);
}
}
///
/// Container into which all GUI elements belonging to this widget should be placed.
///
internal GUIPanel Panel
{
get { return Internal_GetPanel(mCachedPtr); }
}
///
/// Deletes the GUI widget and all child GUI elements.
///
internal void Destroy()
{
Internal_Destroy(mCachedPtr);
}
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern GUISkin Internal_GetSkin(IntPtr instance);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetSkin(IntPtr instance, IntPtr skin);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern Camera Internal_GetCamera(IntPtr instance);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetCamera(IntPtr instance, IntPtr camera);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern GUIPanel Internal_GetPanel(IntPtr instance);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_Destroy(IntPtr instance);
}
}