moraepado/Global.gd
2023-10-07 18:29:52 +09:00

60 lines
1.3 KiB
GDScript

extends Node
#scene changing
var _scenelist = ["res://mainScene/Main.tscn", "res://oscScene/oscScene.tscn"]
var _sceneidx = 0
func nextScene():
_sceneidx = (_sceneidx + 1) % _scenelist.size()
get_tree().change_scene(_scenelist[_sceneidx])
#gdpd (pd interface with godot)
var _gdpd
var _patches = []
func _ready():
_gdpd = load("res://addons/gdpd/bin/gdpd.gdns").new()
var inps = _gdpd.get_available_input_devices()
var outs = _gdpd.get_available_output_devices()
_gdpd.init_devices(inps[0], outs[0])
_gdpd.subscribe("toGodot")
func _exit_tree():
if _patches.size() != 0:
print()
print("! ======== * purging leftover opened patches ... * ======== !")
print()
for id in _patches:
_gdpd.closePatch(id)
_patches.clear()
_gdpd.stop()
func load_patch(pd_patch) -> int:
#the patch path should be the absolute one
#separate file name from directory
var patch_name = pd_patch.split("/")[-1]
var patch_dir = pd_patch.trim_suffix(patch_name)
#load patch
var id = _gdpd.openPatch(patch_name, patch_dir)
_patches.append(id)
return id
func close_patch(id):
if id in _patches:
_gdpd.closePatch(id)
_patches.erase(id)
func _process(_delta) :
while _gdpd.has_message():
var msg = _gdpd.get_next()
print(msg)
# if msg[0] == "random":
# print("r")