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 }; }