using System.IO; using Godot; namespace AudioEditor; [GlobalClass] public partial class ProjectController : Node { [Signal] public delegate void AudioClipDroppedEventHandler(Vector2 atPosition, string path, string clipName, double startTime, double endTime); public override void _Ready() { GetWindow().FilesDropped += FilesDropped; } public void CreateAudioClipPreview(Control audioClip) { // GD.Print(audioClip.Clas()); var path = audioClip.Get("clip_path").AsString(); if (string.IsNullOrEmpty(path)) { return; } if (!AudioFileAnalyzer.Instance.TryGetFromCache(path, out WaveformInfo waveformInfo)) { return; } if (audioClip.HasNode("%Waveform")) { var waveform = audioClip.GetNode("%Waveform"); waveform.SetWaveformInfo(waveformInfo); } } private void FilesDropped(string[] files) { var mousePosition = GetViewport().GetMousePosition(); var path = files[0]; var fileName = Path.GetFileName(path); AudioFileAnalyzer.Instance.AnalyzeFile(path, out WaveformInfo waveformInfo); GD.Print(path); EmitSignal(SignalName.AudioClipDropped, mousePosition, path, fileName, 0, waveformInfo.Length.TotalMilliseconds); } }