Update sidechain references after topology change.
This commit is contained in:
@@ -394,6 +394,7 @@ export class Pedalboard implements Deserializable<Pedalboard> {
|
||||
pathProperties: {[Name: string]: string} = {};
|
||||
selectedPlugin: number = -1;
|
||||
|
||||
// yields all items in the pedalboard, including split items. Splits are yielded before their children.
|
||||
*itemsGenerator(): Generator<PedalboardItem, void, undefined> {
|
||||
let it = itemGenerator_(this.items);
|
||||
while (true)
|
||||
@@ -403,6 +404,16 @@ export class Pedalboard implements Deserializable<Pedalboard> {
|
||||
yield v.value;
|
||||
}
|
||||
}
|
||||
// same as itemsGenerator, but yields split items after their chains.
|
||||
*itemsGeneratorSplitAfter(): Generator<PedalboardItem, void, undefined> {
|
||||
let it = itemGeneratorSplitAfter_(this.items);
|
||||
while (true)
|
||||
{
|
||||
let v = it.next();
|
||||
if (v.done) break;
|
||||
yield v.value;
|
||||
}
|
||||
}
|
||||
|
||||
makeSnapshot(): Snapshot {
|
||||
let result = new Snapshot();
|
||||
@@ -793,4 +804,28 @@ function* itemGenerator_(items: PedalboardItem[]): Generator<PedalboardItem, voi
|
||||
}
|
||||
}
|
||||
|
||||
function* itemGeneratorSplitAfter_(items: PedalboardItem[]): Generator<PedalboardItem, void, undefined> {
|
||||
for (let i = 0; i < items.length; ++i) {
|
||||
let item = items[i];
|
||||
if (item.uri === SPLIT_PEDALBOARD_ITEM_URI) {
|
||||
|
||||
let splitItem = item as PedalboardSplitItem;
|
||||
|
||||
let it = itemGenerator_(splitItem.topChain);
|
||||
while (true) {
|
||||
let v = it.next();
|
||||
if (v.done) break;
|
||||
yield v.value;
|
||||
}
|
||||
it = itemGenerator_(splitItem.bottomChain);
|
||||
while (true) {
|
||||
let v = it.next();
|
||||
if (v.done) break;
|
||||
yield v.value;
|
||||
}
|
||||
}
|
||||
yield item;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user