using System;
using System.Runtime.CompilerServices;
using BansheeEngine;
namespace BansheeEditor
{
///
/// Base class for all import options. Allows control over how is a specific resource type imported.
///
public class ImportOptions : ScriptObject
{
}
///
/// Provides options for controlling how is a texture resource imported.
///
public class TextureImportOptions : ImportOptions
{
///
/// Creates new texture import options with default values.
///
public TextureImportOptions()
{
Internal_CreateInstance(this);
}
///
/// Pixel format to import as.
///
public PixelFormat Format
{
get { return Internal_GetPixelFormat(mCachedPtr); }
set { Internal_SetPixelFormat(mCachedPtr, value); }
}
///
/// Determines whether the imported texture will have mipmaps generated.
///
public bool GenerateMipmaps
{
get { return Internal_GetGenerateMipmaps(mCachedPtr); }
set { Internal_SetGenerateMipmaps(mCachedPtr, value); }
}
///
/// Maximum mipmap level to generate, if mipmap generation is enabled.
///
public int MaxMipmapLevel
{
get { return Internal_GetMaxMipmapLevel(mCachedPtr); }
set { Internal_SetMaxMipmapLevel(mCachedPtr, value); }
}
///
/// Determines whether the texture data is also stored in main memory, available for fast CPU access.
///
public bool CPUReadable
{
get { return Internal_GetCPUReadable(mCachedPtr); }
set { Internal_SetCPUReadable(mCachedPtr, value); }
}
///
/// Determines should the texture data be treated as if its in sRGB (gamma) space. Such texture will be converted by
/// hardware to linear space before use on the GPU.
///
public bool IsSRGB
{
get { return Internal_GetIsSRGB(mCachedPtr); }
set { Internal_SetIsSRGB(mCachedPtr, value); }
}
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_CreateInstance(TextureImportOptions instance);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern PixelFormat Internal_GetPixelFormat(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetPixelFormat(IntPtr thisPtr, PixelFormat value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool Internal_GetGenerateMipmaps(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetGenerateMipmaps(IntPtr thisPtr, bool value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern int Internal_GetMaxMipmapLevel(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetMaxMipmapLevel(IntPtr thisPtr, int value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool Internal_GetCPUReadable(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetCPUReadable(IntPtr thisPtr, bool value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool Internal_GetIsSRGB(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetIsSRGB(IntPtr thisPtr, bool value);
}
///
/// Provides options for controlling how is a mesh resource imported.
///
public class MeshImportOptions : ImportOptions
{
///
/// Creates new mesh import options with default values.
///
public MeshImportOptions()
{
Internal_CreateInstance(this);
}
///
/// Determines whether the mesh data is also stored in main memory, available for fast CPU access.
///
public bool CPUReadable
{
get { return Internal_GetCPUReadable(mCachedPtr); }
set { Internal_SetCPUReadable(mCachedPtr, value); }
}
///
/// Controls should mesh normals be imported if available.
///
public bool ImportNormals
{
get { return Internal_GetImportNormals(mCachedPtr); }
set { Internal_SetImportNormals(mCachedPtr, value); }
}
///
/// Controls should mesh tangents/bitangents be imported if available.
///
public bool ImportTangents
{
get { return Internal_GetImportTangents(mCachedPtr); }
set { Internal_SetImportTangents(mCachedPtr, value); }
}
///
/// Controls should mesh skin data like bone weights, indices and bind poses be imported if available.
///
public bool ImportSkin
{
get { return Internal_GetImportSkin(mCachedPtr); }
set { Internal_SetImportSkin(mCachedPtr, value); }
}
///
/// Controls should animation clips be imported if available.
///
public bool ImportAnimation
{
get { return Internal_GetImportAnimation(mCachedPtr); }
set { Internal_SetImportAnimation(mCachedPtr, value); }
}
///
/// Controls should mesh blend shapes be imported if available.
///
public bool ImportBlendShapes
{
get { return Internal_GetImportBlendShapes(mCachedPtr); }
set { Internal_SetImportBlendShapes(mCachedPtr, value); }
}
///
/// Uniformly scales the imported mesh by the specified value.
///
public float Scale
{
get { return Internal_GetScale(mCachedPtr); }
set { Internal_SetScale(mCachedPtr, value); }
}
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_CreateInstance(MeshImportOptions instance);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool Internal_GetCPUReadable(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetCPUReadable(IntPtr thisPtr, bool value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool Internal_GetImportNormals(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetImportNormals(IntPtr thisPtr, bool value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool Internal_GetImportTangents(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetImportTangents(IntPtr thisPtr, bool value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool Internal_GetImportSkin(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetImportSkin(IntPtr thisPtr, bool value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool Internal_GetImportAnimation(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetImportAnimation(IntPtr thisPtr, bool value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool Internal_GetImportBlendShapes(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetImportBlendShapes(IntPtr thisPtr, bool value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern float Internal_GetScale(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetScale(IntPtr thisPtr, float value);
}
///
/// Import options that provide various options for controlling how is a font resource imported.
///
public class FontImportOptions : ImportOptions
{
///
/// Creates new font import options with default values.
///
public FontImportOptions()
{
Internal_CreateInstance(this);
}
///
/// Font sizes in points that are to be imported.
///
public int[] FontSizes
{
get { return Internal_GetFontSizes(mCachedPtr); }
set { Internal_SetFontSizes(mCachedPtr, value); }
}
///
/// Dots per inch resolution to use when rendering the characters into the texture.
///
public int DPI
{
get { return Internal_GetDPI(mCachedPtr); }
set { Internal_SetDPI(mCachedPtr, value); }
}
///
/// Determines rendering mode used when rendering the characters into the bitmap.
///
public FontRenderMode RenderMode
{
get { return Internal_GetRenderMode(mCachedPtr); }
set { Internal_SetRenderMode(mCachedPtr, value); }
}
///
/// Determines should the characters be rendered in bold style.
///
public bool Bold
{
get { return Internal_GetBold(mCachedPtr); }
set { Internal_SetBold(mCachedPtr, value); }
}
///
/// Determines should the characters be rendered in italic style.
///
public bool Italic
{
get { return Internal_GetItalic(mCachedPtr); }
set { Internal_SetItalic(mCachedPtr, value); }
}
///
/// Determines character ranges to import from the font. Ranges are defined as unicode numbers.
///
public CharRange[] CharRanges
{
get { return Internal_GetCharRanges(mCachedPtr); }
set { Internal_SetCharRanges(mCachedPtr, value); }
}
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_CreateInstance(FontImportOptions instance);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern int[] Internal_GetFontSizes(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetFontSizes(IntPtr thisPtr, int[] value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern int Internal_GetDPI(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetDPI(IntPtr thisPtr, int value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern FontRenderMode Internal_GetRenderMode(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetRenderMode(IntPtr thisPtr, FontRenderMode value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool Internal_GetBold(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetBold(IntPtr thisPtr, bool value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool Internal_GetItalic(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetItalic(IntPtr thisPtr, bool value);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern CharRange[] Internal_GetCharRanges(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetCharRanges(IntPtr thisPtr, CharRange[] value);
}
///
/// Provides various options for controlling how is a script file imported.
///
public class ScriptCodeImportOptions : ImportOptions
{
///
/// Creates new script import options with default values.
///
public ScriptCodeImportOptions()
{
Internal_CreateInstance(this);
}
///
/// Determines whether the script is editor-only or a normal game script. Editor scripts are compiled in a separate
/// assembly and may reference editor specific functionality, but are not available in the final game code.
///
public bool EditorScript
{
get { return Internal_IsEditorScript(mCachedPtr); }
set { Internal_SetEditorScript(mCachedPtr, value); }
}
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_CreateInstance(ScriptCodeImportOptions instance);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool Internal_IsEditorScript(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetEditorScript(IntPtr thisPtr, bool value);
}
///
/// Determines how is a font rendered into the bitmap texture.
///
public enum FontRenderMode // Note: Must match C++ enum FontRenderMode
{
/// Render antialiased fonts without hinting (slightly more blurry).
Smooth,
/// Render non-antialiased fonts without hinting (slightly more blurry).
Raster,
/// Render antialiased fonts with hinting.
HintedSmooth,
/// Render non-antialiased fonts with hinting.
HintedRaster
};
}