1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-05 12:10:55 +00:00

Create AudioStreamPlayer when dropping AudioStream

- Create AudioStreamPlayer if dropped in between nodes in the Scene dock
- Create AudioStreamPlayer2D if dropped into 2D editor
- Create AudioStreamPlayer3D if dropped into 3D editor
This commit is contained in:
Haoyu Qiu
2024-05-16 10:13:46 +08:00
parent daa81bbb7d
commit e5c321448e
7 changed files with 472 additions and 223 deletions

View File

@@ -1368,23 +1368,36 @@ bool SceneTreeEditor::can_drop_data_fw(const Point2 &p_point, const Variant &p_d
}
bool scene_drop = true;
bool audio_drop = true;
for (int i = 0; i < files.size(); i++) {
String ftype = EditorFileSystem::get_singleton()->get_file_type(files[i]);
if (ftype != "PackedScene") {
scene_drop = false;
break;
}
if (audio_drop && !ClassDB::is_parent_class(ftype, "AudioStream")) {
audio_drop = false;
}
}
if (scene_drop) {
tree->set_drop_mode_flags(Tree::DROP_MODE_INBETWEEN | Tree::DROP_MODE_ON_ITEM);
} else {
if (files.size() > 1) {
return false;
}
tree->set_drop_mode_flags(Tree::DROP_MODE_ON_ITEM);
return true;
}
if (audio_drop) {
if (files.size() > 1) {
tree->set_drop_mode_flags(Tree::DROP_MODE_INBETWEEN);
} else {
tree->set_drop_mode_flags(Tree::DROP_MODE_INBETWEEN | Tree::DROP_MODE_ON_ITEM);
}
return true;
}
if (files.size() > 1) {
return false;
}
tree->set_drop_mode_flags(Tree::DROP_MODE_ON_ITEM);
return true;
}