0.2.12: Fixed ghost active link, and fixed delay element

This commit is contained in:
MatCat 2021-02-23 20:21:22 -08:00
parent 6067c9f22a
commit 86fb2873fb
3 changed files with 38 additions and 8 deletions

View File

@ -12,6 +12,10 @@ To be decided, but at this moment this code is open source and free to use for n
## Changelog
### 0.2.12
* Fixed floating active link when deleting an element while linking
* Fixed the delay element so that it properly buffers all input pulses
### 0.2.11
* Added Delay element

View File

@ -302,6 +302,8 @@ class Element extends CanvasTools {
}
Delete() {
// if we are active linking stop doing so
if (this.LogicEngine.ActiveLink == this) this.LogicEngine.ActiveLink = false;
// Just to clean up connections
for (let a = 0; a < this.OutputConnections.length;a++) {
this.LogicEngine.RecursionCount = 0;
@ -649,15 +651,25 @@ class DelayElement extends Element {
this.Task.Enabled = false;
this.Task.LastCall = Date.now();
this.Task.Time = this.Period;
if (this.InputPulses.length > 0) {
this.Task.Enabled = true;
}
} else {
this.Output = true;
this.Task.Enabled = false;
if (this.InputEnd > 0) {
this.Task.Time = this.InputEnd - this.InputStart;
if (this.InputPulses.length > 0) {
this.Task.Time = this.InputPulses[0];
this.Task.Enabled = true;
this.InputPulses.splice(0,1);
} else {
if (this.InputEnd > 0) {
this.Task.Time = this.InputEnd - this.InputStart;
this.Task.Enabled = true;
}
}
this.Task.LastCall = Date.now();
}
for (let a = 0; a < this.OutputConnections.length; a++) {
this.LogicEngine.RecursionCount = 0;
this.OutputConnections[a].Element.setInput(this.OutputConnections[a].Input, this.getOutput());
@ -689,11 +701,24 @@ class DelayElement extends Element {
this.Task.LastCall = Date.now();
this.Task.Enabled = true;
} else {
this.InputEnd = Date.now();
if (!this.Task.Enabled) {
this.Task.LastCall = Date.now();
this.Task.Time = (this.InputEnd - this.InputStart) - (Date.now() - this.InputEnd);
this.Task.Enabled = true;
if (!this.Inputs[Input]) {
this.InputEnd = Date.now();
if (this.InputPulses.length > 0) {
this.InputPulses.push(this.InputEnd - this.InputStart);
this.InputStart = 0;
this.InputEnd = 0;
} else {
if (!this.Task.Enabled) {
this.Task.LastCall = Date.now();
this.Task.Time = (this.InputEnd - this.InputStart) - (Date.now() - this.InputEnd);
this.Task.Enabled = true;
} else {
this.InputPulses.push(this.InputEnd - this.InputStart);
}
}
} else {
// We are in a condition where input went true, but the task is already enabled
this.InputStart = Date.now();
}
}
}
@ -712,6 +737,7 @@ class DelayElement extends Element {
this.Properties.push(periodProperty);
this.InputStart = 0;
this.InputEnd = 0;
this.InputPulses = new Array();
this.Inputs[0] = false;
}

View File

@ -2,7 +2,7 @@
MatCat BrowserLogic Simulator
*/
let Version = "0.2.11";
let Version = "0.2.12";
let spanVersion = document.getElementById("version");
spanVersion.innerText = Version;
// get the canvas and get the engine object going