2
0

AudioClipInspector.cs 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. using bs;
  4. namespace bs.Editor
  5. {
  6. /** @addtogroup Inspectors
  7. * @{
  8. */
  9. /// <summary>
  10. /// Renders an inspector for the <see cref="AudioClip"/> resource.
  11. /// </summary>
  12. [CustomInspector(typeof(AudioClip))]
  13. internal class AudioClipInspector : Inspector
  14. {
  15. private GUIEnumField formatField = new GUIEnumField(typeof(AudioFormat), new LocEdString("Format"));
  16. private GUIEnumField readModeField = new GUIEnumField(typeof(AudioReadMode), new LocEdString("Read mode"));
  17. private GUIEnumField bitDepthField = new GUIEnumField(typeof(AudioBitDepth), new LocEdString("Bit depth"));
  18. private GUIToggleField is3DField = new GUIToggleField(new LocEdString("3D"));
  19. private GUIReimportButton reimportButton;
  20. private AudioClipImportOptions importOptions;
  21. /// <inheritdoc/>
  22. protected internal override void Initialize()
  23. {
  24. importOptions = GetImportOptions();
  25. formatField.OnSelectionChanged += x => importOptions.Format = (AudioFormat)x;
  26. readModeField.OnSelectionChanged += x => importOptions.ReadMode = (AudioReadMode)x;
  27. bitDepthField.OnSelectionChanged += x => importOptions.BitDepth = (int)x;
  28. is3DField.OnChanged += x => importOptions.Is3D = x;
  29. Layout.AddElement(formatField);
  30. Layout.AddElement(readModeField);
  31. Layout.AddElement(bitDepthField);
  32. Layout.AddElement(is3DField);
  33. Layout.AddSpace(10);
  34. reimportButton = new GUIReimportButton(InspectedResourcePath, Layout, () =>
  35. {
  36. ProjectLibrary.Reimport(InspectedResourcePath, importOptions, true);
  37. });
  38. UpdateGUIValues();
  39. }
  40. /// <inheritdoc/>
  41. protected internal override InspectableState Refresh(bool force = false)
  42. {
  43. reimportButton.Update();
  44. return InspectableState.NotModified;
  45. }
  46. /// <summary>
  47. /// Updates the GUI element values from the current import options object.
  48. /// </summary>
  49. private void UpdateGUIValues()
  50. {
  51. formatField.Value = (ulong)importOptions.Format;
  52. readModeField.Value = (ulong)importOptions.ReadMode;
  53. bitDepthField.Value = (ulong)importOptions.BitDepth;
  54. is3DField.Value = importOptions.Is3D; ;
  55. }
  56. /// <summary>
  57. /// Retrieves import options for the audio clip we're currently inspecting.
  58. /// </summary>
  59. /// <returns>Audio clip import options object.</returns>
  60. private AudioClipImportOptions GetImportOptions()
  61. {
  62. AudioClipImportOptions output = null;
  63. LibraryEntry meshEntry = ProjectLibrary.GetEntry(InspectedResourcePath);
  64. if (meshEntry != null && meshEntry.Type == LibraryEntryType.File)
  65. {
  66. FileEntry meshFileEntry = (FileEntry)meshEntry;
  67. output = meshFileEntry.Options as AudioClipImportOptions;
  68. }
  69. if (output == null)
  70. {
  71. if (importOptions == null)
  72. output = new AudioClipImportOptions();
  73. else
  74. output = importOptions;
  75. }
  76. return output;
  77. }
  78. }
  79. /** @} */
  80. }