//********************************** Banshee Engine (www.banshee3d.com) **************************************************// //**************** Copyright (c) 2016 Marko Pintera (marko.pintera@gmail.com). All rights reserved. **********************// using BansheeEngine; namespace BansheeEditor { /** @addtogroup Inspectors * @{ */ /// /// Renders an inspector for the resource. /// [CustomInspector(typeof(AudioClip))] internal class AudioClipInspector : Inspector { private GUIEnumField formatField = new GUIEnumField(typeof(AudioFormat), new LocEdString("Format")); private GUIEnumField readModeField = new GUIEnumField(typeof(AudioReadMode), new LocEdString("Read mode")); private GUIEnumField bitDepthField = new GUIEnumField(typeof(AudioBitDepth), new LocEdString("Bit depth")); private GUIToggleField is3DField = new GUIToggleField(new LocEdString("3D")); private GUIButton reimportButton = new GUIButton(new LocEdString("Reimport")); private AudioClipImportOptions importOptions; /// protected internal override void Initialize() { importOptions = GetImportOptions(); formatField.OnSelectionChanged += x => importOptions.Format = (AudioFormat)x; readModeField.OnSelectionChanged += x => importOptions.ReadMode = (AudioReadMode)x; bitDepthField.OnSelectionChanged += x => importOptions.BitDepth = (AudioBitDepth)x; is3DField.OnChanged += x => importOptions.Is3D = x; reimportButton.OnClick += TriggerReimport; Layout.AddElement(formatField); Layout.AddElement(readModeField); Layout.AddElement(bitDepthField); Layout.AddElement(is3DField); Layout.AddSpace(10); GUILayout reimportButtonLayout = Layout.AddLayoutX(); reimportButtonLayout.AddFlexibleSpace(); reimportButtonLayout.AddElement(reimportButton); } /// protected internal override InspectableState Refresh() { AudioClipImportOptions newImportOptions = GetImportOptions(); formatField.Value = (ulong)newImportOptions.Format; readModeField.Value = (ulong)newImportOptions.ReadMode; bitDepthField.Value = (ulong)newImportOptions.BitDepth; is3DField.Value = newImportOptions.Is3D; importOptions = newImportOptions; return InspectableState.NotModified; } /// /// Retrieves import options for the audio clip we're currently inspecting. /// /// Audio clip import options object. private AudioClipImportOptions GetImportOptions() { AudioClipImportOptions output = null; LibraryEntry meshEntry = ProjectLibrary.GetEntry(InspectedResourcePath); if (meshEntry != null && meshEntry.Type == LibraryEntryType.File) { FileEntry meshFileEntry = (FileEntry)meshEntry; output = meshFileEntry.Options as AudioClipImportOptions; } if (output == null) { if (importOptions == null) output = new AudioClipImportOptions(); else output = importOptions; } return output; } /// /// Reimports the resource according to the currently set import options. /// private void TriggerReimport() { ProjectLibrary.Reimport(InspectedResourcePath, importOptions, true); } } /** @} */ }