//********************************** 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);
}
}
/** @} */
}