76 lines
1.5 KiB
GDScript
76 lines
1.5 KiB
GDScript
tool
|
|
extends EditorImportPlugin
|
|
|
|
const SFXRConfig = preload("SFXRConfig.gd")
|
|
const SFXRGenerator = preload("SFXRGenerator.gd")
|
|
|
|
|
|
func get_importer_name():
|
|
return "com.timothyqiu.gdfxr.importer"
|
|
|
|
|
|
func get_visible_name():
|
|
return "SFXR Audio"
|
|
|
|
|
|
func get_recognized_extensions():
|
|
return ["sfxr"]
|
|
|
|
|
|
func get_save_extension():
|
|
return "sample"
|
|
|
|
|
|
func get_resource_type():
|
|
return "AudioStreamSample"
|
|
|
|
|
|
func get_preset_count():
|
|
return 1
|
|
|
|
|
|
func get_preset_name(preset):
|
|
return "Default"
|
|
|
|
|
|
func get_import_options(preset):
|
|
return [
|
|
{
|
|
name="loop",
|
|
default_value=false,
|
|
},
|
|
{
|
|
name="bit_depth",
|
|
property_hint=PROPERTY_HINT_ENUM,
|
|
hint_string="8 Bits,16 Bits",
|
|
default_value=SFXRGenerator.WavBits.WAV_BITS_8,
|
|
},
|
|
{
|
|
name="sample_rate",
|
|
property_hint=PROPERTY_HINT_ENUM,
|
|
hint_string="44100 Hz,22050 Hz",
|
|
default_value=SFXRGenerator.WavFreq.WAV_FREQ_44100,
|
|
},
|
|
]
|
|
|
|
|
|
func get_option_visibility(option, options):
|
|
return true
|
|
|
|
|
|
func import(source_file, save_path, options, platform_variants, gen_files):
|
|
var config := SFXRConfig.new()
|
|
var err := config.load(source_file)
|
|
if err != OK:
|
|
printerr("Failed to open %s: %d" % [source_file, err])
|
|
return err
|
|
|
|
var stream := SFXRGenerator.new().generate_audio_stream(
|
|
config, options.bit_depth, options.sample_rate
|
|
)
|
|
if options.loop:
|
|
stream.loop_mode = AudioStreamSample.LOOP_FORWARD
|
|
stream.loop_end = stream.data.size()
|
|
|
|
var filename = save_path + "." + get_save_extension()
|
|
return ResourceSaver.save(filename, stream)
|