ImportOptions.cs 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. using System;
  4. using System.Runtime.CompilerServices;
  5. using BansheeEngine;
  6. namespace BansheeEditor
  7. {
  8. /** @addtogroup Library
  9. * @{
  10. */
  11. /// <summary>
  12. /// Base class for all import options. Allows control over how is a specific resource type imported.
  13. /// </summary>
  14. public class ImportOptions : ScriptObject
  15. {
  16. }
  17. /// <summary>
  18. /// Provides options for controlling how is a texture resource imported.
  19. /// </summary>
  20. public class TextureImportOptions : ImportOptions
  21. {
  22. /// <summary>
  23. /// Creates new texture import options with default values.
  24. /// </summary>
  25. public TextureImportOptions()
  26. {
  27. Internal_CreateInstance(this);
  28. }
  29. /// <summary>
  30. /// Pixel format to import as.
  31. /// </summary>
  32. public PixelFormat Format
  33. {
  34. get { return Internal_GetPixelFormat(mCachedPtr); }
  35. set { Internal_SetPixelFormat(mCachedPtr, value); }
  36. }
  37. /// <summary>
  38. /// Determines whether the imported texture will have mipmaps generated.
  39. /// </summary>
  40. public bool GenerateMipmaps
  41. {
  42. get { return Internal_GetGenerateMipmaps(mCachedPtr); }
  43. set { Internal_SetGenerateMipmaps(mCachedPtr, value); }
  44. }
  45. /// <summary>
  46. /// Maximum mipmap level to generate, if mipmap generation is enabled.
  47. /// </summary>
  48. public int MaxMipmapLevel
  49. {
  50. get { return Internal_GetMaxMipmapLevel(mCachedPtr); }
  51. set { Internal_SetMaxMipmapLevel(mCachedPtr, value); }
  52. }
  53. /// <summary>
  54. /// Determines whether the texture data is also stored in main memory, available for fast CPU access.
  55. /// </summary>
  56. public bool CPUCached
  57. {
  58. get { return Internal_GetCPUCached(mCachedPtr); }
  59. set { Internal_SetCPUCached(mCachedPtr, value); }
  60. }
  61. /// <summary>
  62. /// Determines whether the texture data can be read directly from the GPU.
  63. /// </summary>
  64. public bool CPUReadable
  65. {
  66. get { return Internal_GetCPUReadable(mCachedPtr); }
  67. set { Internal_SetCPUReadable(mCachedPtr, value); }
  68. }
  69. /// <summary>
  70. /// Determines should the texture data be treated as if its in sRGB (gamma) space. Such texture will be converted by
  71. /// hardware to linear space before use on the GPU.
  72. /// </summary>
  73. public bool IsSRGB
  74. {
  75. get { return Internal_GetIsSRGB(mCachedPtr); }
  76. set { Internal_SetIsSRGB(mCachedPtr, value); }
  77. }
  78. [MethodImpl(MethodImplOptions.InternalCall)]
  79. private static extern void Internal_CreateInstance(TextureImportOptions instance);
  80. [MethodImpl(MethodImplOptions.InternalCall)]
  81. private static extern PixelFormat Internal_GetPixelFormat(IntPtr thisPtr);
  82. [MethodImpl(MethodImplOptions.InternalCall)]
  83. private static extern void Internal_SetPixelFormat(IntPtr thisPtr, PixelFormat value);
  84. [MethodImpl(MethodImplOptions.InternalCall)]
  85. private static extern bool Internal_GetGenerateMipmaps(IntPtr thisPtr);
  86. [MethodImpl(MethodImplOptions.InternalCall)]
  87. private static extern void Internal_SetGenerateMipmaps(IntPtr thisPtr, bool value);
  88. [MethodImpl(MethodImplOptions.InternalCall)]
  89. private static extern int Internal_GetMaxMipmapLevel(IntPtr thisPtr);
  90. [MethodImpl(MethodImplOptions.InternalCall)]
  91. private static extern void Internal_SetMaxMipmapLevel(IntPtr thisPtr, int value);
  92. [MethodImpl(MethodImplOptions.InternalCall)]
  93. private static extern bool Internal_GetCPUCached(IntPtr thisPtr);
  94. [MethodImpl(MethodImplOptions.InternalCall)]
  95. private static extern void Internal_SetCPUCached(IntPtr thisPtr, bool value);
  96. [MethodImpl(MethodImplOptions.InternalCall)]
  97. private static extern bool Internal_GetCPUReadable(IntPtr thisPtr);
  98. [MethodImpl(MethodImplOptions.InternalCall)]
  99. private static extern void Internal_SetCPUReadable(IntPtr thisPtr, bool value);
  100. [MethodImpl(MethodImplOptions.InternalCall)]
  101. private static extern bool Internal_GetIsSRGB(IntPtr thisPtr);
  102. [MethodImpl(MethodImplOptions.InternalCall)]
  103. private static extern void Internal_SetIsSRGB(IntPtr thisPtr, bool value);
  104. }
  105. /// <summary>
  106. /// Information about how to split an AnimationClip into multiple separate clips.
  107. /// </summary>
  108. public class AnimationSplitInfo
  109. {
  110. public AnimationSplitInfo() { }
  111. public AnimationSplitInfo(string name, int startFrame, int endFrame, bool isAdditive)
  112. {
  113. this.name = name;
  114. this.startFrame = startFrame;
  115. this.endFrame = endFrame;
  116. this.isAdditive = isAdditive;
  117. }
  118. public string name;
  119. public int startFrame = 0;
  120. public int endFrame = 0;
  121. public bool isAdditive = false;
  122. }
  123. /// <summary>
  124. /// A set of animation events that will be added to an animation clip during animation import.
  125. /// </summary>
  126. public class ImportedAnimationEvents
  127. {
  128. public string name;
  129. public AnimationEvent[] events;
  130. }
  131. /// <summary>
  132. /// Provides options for controlling how is a mesh resource imported.
  133. /// </summary>
  134. public class MeshImportOptions : ImportOptions
  135. {
  136. /// <summary>
  137. /// Creates new mesh import options with default values.
  138. /// </summary>
  139. public MeshImportOptions()
  140. {
  141. Internal_CreateInstance(this);
  142. }
  143. /// <summary>
  144. /// Determines whether the mesh data is also stored in main memory, available for fast CPU access.
  145. /// </summary>
  146. public bool CPUCached
  147. {
  148. get { return Internal_GetCPUCached(mCachedPtr); }
  149. set { Internal_SetCPUCached(mCachedPtr, value); }
  150. }
  151. /// <summary>
  152. /// Determines whether the mesh data can be read directly from the GPU.
  153. /// </summary>
  154. public bool CPUReadable
  155. {
  156. get { return Internal_GetCPUReadable(mCachedPtr); }
  157. set { Internal_SetCPUReadable(mCachedPtr, value); }
  158. }
  159. /// <summary>
  160. /// Controls should mesh normals be imported if available.
  161. /// </summary>
  162. public bool ImportNormals
  163. {
  164. get { return Internal_GetImportNormals(mCachedPtr); }
  165. set { Internal_SetImportNormals(mCachedPtr, value); }
  166. }
  167. /// <summary>
  168. /// Controls should mesh tangents/bitangents be imported if available.
  169. /// </summary>
  170. public bool ImportTangents
  171. {
  172. get { return Internal_GetImportTangents(mCachedPtr); }
  173. set { Internal_SetImportTangents(mCachedPtr, value); }
  174. }
  175. /// <summary>
  176. /// Controls should mesh skin data like bone weights, indices and bind poses be imported if available.
  177. /// </summary>
  178. public bool ImportSkin
  179. {
  180. get { return Internal_GetImportSkin(mCachedPtr); }
  181. set { Internal_SetImportSkin(mCachedPtr, value); }
  182. }
  183. /// <summary>
  184. /// Controls should animation clips be imported if available.
  185. /// </summary>
  186. public bool ImportAnimation
  187. {
  188. get { return Internal_GetImportAnimation(mCachedPtr); }
  189. set { Internal_SetImportAnimation(mCachedPtr, value); }
  190. }
  191. /// <summary>
  192. /// Controls should mesh blend shapes be imported if available.
  193. /// </summary>
  194. public bool ImportBlendShapes
  195. {
  196. get { return Internal_GetImportBlendShapes(mCachedPtr); }
  197. set { Internal_SetImportBlendShapes(mCachedPtr, value); }
  198. }
  199. /// <summary>
  200. /// Uniformly scales the imported mesh by the specified value.
  201. /// </summary>
  202. public float Scale
  203. {
  204. get { return Internal_GetScale(mCachedPtr); }
  205. set { Internal_SetScale(mCachedPtr, value); }
  206. }
  207. /// <summary>
  208. /// Determines if keyframe reduction is enabled. Keyframe reduction will reduce the number of key-frames in an
  209. /// animation clip by removing identical keyframes, and therefore reducing the size of the clip.
  210. /// </summary>
  211. public bool KeyframeReduction
  212. {
  213. get { return Internal_GetKeyFrameReduction(mCachedPtr); }
  214. set { Internal_SetKeyFrameReduction(mCachedPtr, value); }
  215. }
  216. /// <summary>
  217. /// Determines if import of root motion curves is enabled. When enabled, any animation curves in imported animations
  218. /// affecting the root bone will be available through a set of separate curves in AnimationClip, and they won't be
  219. /// evaluated through normal animation process. Instead it is expected that the user evaluates the curves manually
  220. /// and applies them as required.
  221. /// </summary>
  222. public bool ImportRootMotion
  223. {
  224. get { return Internal_GetRootMotion(mCachedPtr); }
  225. set { Internal_SetRootMotion(mCachedPtr, value); }
  226. }
  227. /// <summary>
  228. /// Controls what type (if any) of collision mesh should be imported.
  229. /// </summary>
  230. public CollisionMeshType CollisionMeshType
  231. {
  232. get { return (CollisionMeshType)Internal_GetCollisionMeshType(mCachedPtr); }
  233. set { Internal_SetCollisionMeshType(mCachedPtr, (int)value); }
  234. }
  235. /// <summary>
  236. /// Split information that allows you to split the animation clip contained in the mesh file into multiple separate
  237. /// clips. The split always applies to the first clip in the file (if the file contains multiple), other clips are
  238. /// imported as is.
  239. /// </summary>
  240. public AnimationSplitInfo[] AnimationClipSplits
  241. {
  242. get { return Internal_GetAnimationClipSplits(mCachedPtr); }
  243. set { Internal_SetAnimationClipSplits(mCachedPtr, value); }
  244. }
  245. /// <summary>
  246. /// A set of events that will be added to the animation clip, if animation import is enabled.
  247. /// </summary>
  248. public ImportedAnimationEvents[] AnimationEvents
  249. {
  250. get { return Internal_GetAnimationEvents(mCachedPtr); }
  251. set { Internal_SetAnimationEvents(mCachedPtr, value); }
  252. }
  253. [MethodImpl(MethodImplOptions.InternalCall)]
  254. private static extern void Internal_CreateInstance(MeshImportOptions instance);
  255. [MethodImpl(MethodImplOptions.InternalCall)]
  256. private static extern bool Internal_GetCPUCached(IntPtr thisPtr);
  257. [MethodImpl(MethodImplOptions.InternalCall)]
  258. private static extern void Internal_SetCPUCached(IntPtr thisPtr, bool value);
  259. [MethodImpl(MethodImplOptions.InternalCall)]
  260. private static extern bool Internal_GetCPUReadable(IntPtr thisPtr);
  261. [MethodImpl(MethodImplOptions.InternalCall)]
  262. private static extern void Internal_SetCPUReadable(IntPtr thisPtr, bool value);
  263. [MethodImpl(MethodImplOptions.InternalCall)]
  264. private static extern bool Internal_GetImportNormals(IntPtr thisPtr);
  265. [MethodImpl(MethodImplOptions.InternalCall)]
  266. private static extern void Internal_SetImportNormals(IntPtr thisPtr, bool value);
  267. [MethodImpl(MethodImplOptions.InternalCall)]
  268. private static extern bool Internal_GetImportTangents(IntPtr thisPtr);
  269. [MethodImpl(MethodImplOptions.InternalCall)]
  270. private static extern void Internal_SetImportTangents(IntPtr thisPtr, bool value);
  271. [MethodImpl(MethodImplOptions.InternalCall)]
  272. private static extern bool Internal_GetImportSkin(IntPtr thisPtr);
  273. [MethodImpl(MethodImplOptions.InternalCall)]
  274. private static extern void Internal_SetImportSkin(IntPtr thisPtr, bool value);
  275. [MethodImpl(MethodImplOptions.InternalCall)]
  276. private static extern bool Internal_GetImportAnimation(IntPtr thisPtr);
  277. [MethodImpl(MethodImplOptions.InternalCall)]
  278. private static extern void Internal_SetImportAnimation(IntPtr thisPtr, bool value);
  279. [MethodImpl(MethodImplOptions.InternalCall)]
  280. private static extern bool Internal_GetImportBlendShapes(IntPtr thisPtr);
  281. [MethodImpl(MethodImplOptions.InternalCall)]
  282. private static extern void Internal_SetImportBlendShapes(IntPtr thisPtr, bool value);
  283. [MethodImpl(MethodImplOptions.InternalCall)]
  284. private static extern bool Internal_GetKeyFrameReduction(IntPtr thisPtr);
  285. [MethodImpl(MethodImplOptions.InternalCall)]
  286. private static extern void Internal_SetKeyFrameReduction(IntPtr thisPtr, bool value);
  287. [MethodImpl(MethodImplOptions.InternalCall)]
  288. private static extern bool Internal_GetRootMotion(IntPtr thisPtr);
  289. [MethodImpl(MethodImplOptions.InternalCall)]
  290. private static extern void Internal_SetRootMotion(IntPtr thisPtr, bool value);
  291. [MethodImpl(MethodImplOptions.InternalCall)]
  292. private static extern AnimationSplitInfo[] Internal_GetAnimationClipSplits(IntPtr thisPtr);
  293. [MethodImpl(MethodImplOptions.InternalCall)]
  294. private static extern void Internal_SetAnimationClipSplits(IntPtr thisPtr, AnimationSplitInfo[] value);
  295. [MethodImpl(MethodImplOptions.InternalCall)]
  296. private static extern ImportedAnimationEvents[] Internal_GetAnimationEvents(IntPtr thisPtr);
  297. [MethodImpl(MethodImplOptions.InternalCall)]
  298. private static extern void Internal_SetAnimationEvents(IntPtr thisPtr, ImportedAnimationEvents[] value);
  299. [MethodImpl(MethodImplOptions.InternalCall)]
  300. private static extern float Internal_GetScale(IntPtr thisPtr);
  301. [MethodImpl(MethodImplOptions.InternalCall)]
  302. private static extern void Internal_SetScale(IntPtr thisPtr, float value);
  303. [MethodImpl(MethodImplOptions.InternalCall)]
  304. private static extern int Internal_GetCollisionMeshType(IntPtr thisPtr);
  305. [MethodImpl(MethodImplOptions.InternalCall)]
  306. private static extern void Internal_SetCollisionMeshType(IntPtr thisPtr, int value);
  307. }
  308. /// <summary>
  309. /// Controls what type of collision mesh should be imported during mesh import.
  310. /// </summary>
  311. public enum CollisionMeshType // Note: Must match C++ enum CollisionMeshImport
  312. {
  313. /// <summary>
  314. /// No collision mesh will be imported.
  315. /// </summary>
  316. None,
  317. /// <summary>
  318. /// Normal triangle mesh will be imported.
  319. /// </summary>
  320. Normal,
  321. /// <summary>
  322. /// A convex hull will be generated from the source mesh.
  323. /// </summary>
  324. Convex
  325. }
  326. /// <summary>
  327. /// Import options that provide various options for controlling how is a font resource imported.
  328. /// </summary>
  329. public class FontImportOptions : ImportOptions
  330. {
  331. /// <summary>
  332. /// Creates new font import options with default values.
  333. /// </summary>
  334. public FontImportOptions()
  335. {
  336. Internal_CreateInstance(this);
  337. }
  338. /// <summary>
  339. /// Font sizes in points that are to be imported.
  340. /// </summary>
  341. public int[] FontSizes
  342. {
  343. get { return Internal_GetFontSizes(mCachedPtr); }
  344. set { Internal_SetFontSizes(mCachedPtr, value); }
  345. }
  346. /// <summary>
  347. /// Dots per inch resolution to use when rendering the characters into the texture.
  348. /// </summary>
  349. public int DPI
  350. {
  351. get { return Internal_GetDPI(mCachedPtr); }
  352. set { Internal_SetDPI(mCachedPtr, value); }
  353. }
  354. /// <summary>
  355. /// Determines rendering mode used when rendering the characters into the bitmap.
  356. /// </summary>
  357. public FontRenderMode RenderMode
  358. {
  359. get { return Internal_GetRenderMode(mCachedPtr); }
  360. set { Internal_SetRenderMode(mCachedPtr, value); }
  361. }
  362. /// <summary>
  363. /// Determines should the characters be rendered in bold style.
  364. /// </summary>
  365. public bool Bold
  366. {
  367. get { return Internal_GetBold(mCachedPtr); }
  368. set { Internal_SetBold(mCachedPtr, value); }
  369. }
  370. /// <summary>
  371. /// Determines should the characters be rendered in italic style.
  372. /// </summary>
  373. public bool Italic
  374. {
  375. get { return Internal_GetItalic(mCachedPtr); }
  376. set { Internal_SetItalic(mCachedPtr, value); }
  377. }
  378. /// <summary>
  379. /// Determines character ranges to import from the font. Ranges are defined as unicode numbers.
  380. /// </summary>
  381. public CharRange[] CharRanges
  382. {
  383. get { return Internal_GetCharRanges(mCachedPtr); }
  384. set { Internal_SetCharRanges(mCachedPtr, value); }
  385. }
  386. [MethodImpl(MethodImplOptions.InternalCall)]
  387. private static extern void Internal_CreateInstance(FontImportOptions instance);
  388. [MethodImpl(MethodImplOptions.InternalCall)]
  389. private static extern int[] Internal_GetFontSizes(IntPtr thisPtr);
  390. [MethodImpl(MethodImplOptions.InternalCall)]
  391. private static extern void Internal_SetFontSizes(IntPtr thisPtr, int[] value);
  392. [MethodImpl(MethodImplOptions.InternalCall)]
  393. private static extern int Internal_GetDPI(IntPtr thisPtr);
  394. [MethodImpl(MethodImplOptions.InternalCall)]
  395. private static extern void Internal_SetDPI(IntPtr thisPtr, int value);
  396. [MethodImpl(MethodImplOptions.InternalCall)]
  397. private static extern FontRenderMode Internal_GetRenderMode(IntPtr thisPtr);
  398. [MethodImpl(MethodImplOptions.InternalCall)]
  399. private static extern void Internal_SetRenderMode(IntPtr thisPtr, FontRenderMode value);
  400. [MethodImpl(MethodImplOptions.InternalCall)]
  401. private static extern bool Internal_GetBold(IntPtr thisPtr);
  402. [MethodImpl(MethodImplOptions.InternalCall)]
  403. private static extern void Internal_SetBold(IntPtr thisPtr, bool value);
  404. [MethodImpl(MethodImplOptions.InternalCall)]
  405. private static extern bool Internal_GetItalic(IntPtr thisPtr);
  406. [MethodImpl(MethodImplOptions.InternalCall)]
  407. private static extern void Internal_SetItalic(IntPtr thisPtr, bool value);
  408. [MethodImpl(MethodImplOptions.InternalCall)]
  409. private static extern CharRange[] Internal_GetCharRanges(IntPtr thisPtr);
  410. [MethodImpl(MethodImplOptions.InternalCall)]
  411. private static extern void Internal_SetCharRanges(IntPtr thisPtr, CharRange[] value);
  412. }
  413. /// <summary>
  414. /// Provides various options for controlling how is a script file imported.
  415. /// </summary>
  416. public class ScriptCodeImportOptions : ImportOptions
  417. {
  418. /// <summary>
  419. /// Creates new script import options with default values.
  420. /// </summary>
  421. public ScriptCodeImportOptions()
  422. {
  423. Internal_CreateInstance(this);
  424. }
  425. /// <summary>
  426. /// Determines whether the script is editor-only or a normal game script. Editor scripts are compiled in a separate
  427. /// assembly and may reference editor specific functionality, but are not available in the final game code.
  428. /// </summary>
  429. public bool EditorScript
  430. {
  431. get { return Internal_IsEditorScript(mCachedPtr); }
  432. set { Internal_SetEditorScript(mCachedPtr, value); }
  433. }
  434. [MethodImpl(MethodImplOptions.InternalCall)]
  435. private static extern void Internal_CreateInstance(ScriptCodeImportOptions instance);
  436. [MethodImpl(MethodImplOptions.InternalCall)]
  437. private static extern bool Internal_IsEditorScript(IntPtr thisPtr);
  438. [MethodImpl(MethodImplOptions.InternalCall)]
  439. private static extern void Internal_SetEditorScript(IntPtr thisPtr, bool value);
  440. }
  441. /// <summary>
  442. /// Determines how is a font rendered into the bitmap texture.
  443. /// </summary>
  444. public enum FontRenderMode // Note: Must match C++ enum FontRenderMode
  445. {
  446. /// <summary>Render antialiased fonts without hinting (slightly more blurry).</summary>
  447. Smooth,
  448. /// <summary>Render non-antialiased fonts without hinting (slightly more blurry).</summary>
  449. Raster,
  450. /// <summary>Render antialiased fonts with hinting.</summary>
  451. HintedSmooth,
  452. /// <summary>Render non-antialiased fonts with hinting.</summary>
  453. HintedRaster
  454. }
  455. /// <summary>
  456. /// Provides various options for controlling how is an audio clip file imported.
  457. /// </summary>
  458. public class AudioClipImportOptions : ImportOptions
  459. {
  460. /// <summary>
  461. /// Creates new audio clip import options with default values.
  462. /// </summary>
  463. public AudioClipImportOptions()
  464. {
  465. Internal_CreateInstance(this);
  466. }
  467. /// <summary>
  468. /// Format to import the audio clip as.
  469. /// </summary>
  470. public AudioFormat Format
  471. {
  472. get { return Internal_GetFormat(mCachedPtr); }
  473. set { Internal_SetFormat(mCachedPtr, value); }
  474. }
  475. /// <summary>
  476. /// Determines how is audio data loaded into memory.
  477. /// </summary>
  478. public AudioReadMode ReadMode
  479. {
  480. get { return Internal_GetReadMode(mCachedPtr); }
  481. set { Internal_SetReadMode(mCachedPtr, value); }
  482. }
  483. /// <summary>
  484. /// Determines will the clip be played as spatial (3D) audio or as normal audio.
  485. /// </summary>
  486. public bool Is3D
  487. {
  488. get { return Internal_GetIs3D(mCachedPtr); }
  489. set { Internal_SetIs3D(mCachedPtr, value); }
  490. }
  491. /// <summary>
  492. /// Size of a single sample in bits.
  493. /// </summary>
  494. public AudioBitDepth BitDepth
  495. {
  496. get
  497. {
  498. int bits = Internal_GetBitDepth(mCachedPtr);
  499. switch (bits)
  500. {
  501. case 8:
  502. return AudioBitDepth.Bits8;
  503. case 16:
  504. return AudioBitDepth.Bits16;
  505. case 24:
  506. return AudioBitDepth.Bits24;
  507. case 32:
  508. return AudioBitDepth.Bits32;
  509. }
  510. return AudioBitDepth.Bits16;
  511. }
  512. set { Internal_SetBitDepth(mCachedPtr, (int)value); }
  513. }
  514. [MethodImpl(MethodImplOptions.InternalCall)]
  515. private static extern void Internal_CreateInstance(AudioClipImportOptions instance);
  516. [MethodImpl(MethodImplOptions.InternalCall)]
  517. private static extern AudioFormat Internal_GetFormat(IntPtr thisPtr);
  518. [MethodImpl(MethodImplOptions.InternalCall)]
  519. private static extern void Internal_SetFormat(IntPtr thisPtr, AudioFormat format);
  520. [MethodImpl(MethodImplOptions.InternalCall)]
  521. private static extern AudioReadMode Internal_GetReadMode(IntPtr thisPtr);
  522. [MethodImpl(MethodImplOptions.InternalCall)]
  523. private static extern void Internal_SetReadMode(IntPtr thisPtr, AudioReadMode readMode);
  524. [MethodImpl(MethodImplOptions.InternalCall)]
  525. private static extern bool Internal_GetIs3D(IntPtr thisPtr);
  526. [MethodImpl(MethodImplOptions.InternalCall)]
  527. private static extern void Internal_SetIs3D(IntPtr thisPtr, bool is3d);
  528. [MethodImpl(MethodImplOptions.InternalCall)]
  529. private static extern int Internal_GetBitDepth(IntPtr thisPtr);
  530. [MethodImpl(MethodImplOptions.InternalCall)]
  531. private static extern void Internal_SetBitDepth(IntPtr thisPtr, int bitDepth);
  532. }
  533. /** @} */
  534. }