Ok, here's what you need to do: Add a new input called "Modify" to your timer Add a new Attribute (number attribute) called "Add/Sub Value" Now the coding part: Add a variable at the top of your code just before init() method called addSubValue Code: let addSubValue = 0; Initialize the value in init method Code: addSubValue = this.attribute('Add/Sub Value'); On your signal function add a else if after "Pause" condition Code: else if (name == 'Modify' && value){ error(totalTime + addSubValue); if((totalTime + addSubValue) < 0){ totalTime = 0; }else{ totalTime += addSubValue; } } Well done now you can change the timer value using this new logic
@Vlad-NY Hi! I don't know where to insert this code. else if (name == 'Modify' && value){ error(totalTime + addSubValue); if((totalTime + addSubValue) < 0){ totalTime = 0; }else{ totalTime += addSubValue; } } What line of code?
@Vlad-NY Sorry. I don't understand English very well. It's hard to understand. Insert this code into the node timer? Can you show me an example? Please(
in the timer code, I added this: let addSubValue = 0; addSubValue = this.attribute('Add/Sub Value'); Code: // let enabled = false; let time = 0; let numOfEvents; //null is repeat forever let totalTime = 0; let eventCount = 0; let reversed = false; let timeFormat = 'Number'; let paused = false; let addSubValue = 0; function init() { time = Math.max(0, this.attribute('Time')); numOfEvents = this.attribute('Number of events'); reversed = this.attribute('Reversed'); timeFormat = this.attribute('Time Value Format'); addSubValue = this.attribute('Add/Sub Value'); if (numOfEvents != null) { numOfEvents = Math.abs(Math.floor(numOfEvents)); } this.entity().modifyTimer = modifyTimer; this.entity().pauseTimer = pauseTimer; component.modifyTimer = modifyTimer; component.pauseTimer = pauseTimer; } function update(dt) { if (!enabled) return; if (paused) { this.emitSignal('Time Value', getTimeOutput()); return; } totalTime += dt; this.emitSignal('Time Value', getTimeOutput()); if (totalTime > time) { totalTime = 0; eventCount += 1; this.emitSignal('Timeout', true); if (numOfEvents != null && eventCount >= numOfEvents) { enabled = false; } } } function signal(name, value) { /****/ if (name == 'Enabled') { enabled = value; } else if (name == 'Reset' && value) { totalTime = 0; eventCount = 0; time = Math.max(0, this.attribute('Time')); } else if (name == 'Pause') { paused = value; } } function getTimeOutput() { let timeOutput = 0; if (reversed) { timeOutput = time - totalTime; } else { timeOutput = totalTime; } if (timeFormat == 'MM:SS') { let seconds = Math.floor(timeOutput % 60); let minutes = Math.floor((timeOutput - seconds) / 60); if (seconds < 10) { seconds = '0' + seconds; } if (minutes < 1) { minutes = '00'; } else if (minutes < 10) { minutes = '0' + minutes; } timeOutput = minutes + ':' + seconds; } else if (timeFormat == 'Seconds') { timeOutput = timeOutput.toFixed(0); } return timeOutput; } function modifyTimer(value, type) { if (reversed) { value *= -1; } totalTime += value; if (totalTime < 0) { totalTime = 0; } } function pauseTimer(value) { paused = value; } Code: // else if (name == 'Modify' && value){ error(totalTime + addSubValue); if((totalTime + addSubValue) < 0){ totalTime = 0; }else{ totalTime += addSubValue; } } @Vlad-NY Add this here as well?