Spaces:
Runtime error
Runtime error
da03
commited on
Commit
·
aa4dda5
1
Parent(s):
7bbe40c
- static/index.html +74 -7
static/index.html
CHANGED
|
@@ -112,7 +112,7 @@
|
|
| 112 |
|
| 113 |
<div class="form-check form-switch">
|
| 114 |
<input class="form-check-input" type="checkbox" role="switch" id="autoInputToggle" checked>
|
| 115 |
-
<label class="form-check-label" for="autoInputToggle">Auto Input</label>
|
| 116 |
</div>
|
| 117 |
</div>
|
| 118 |
</div>
|
|
@@ -129,7 +129,7 @@
|
|
| 129 |
<li>Use your keyboard to type within the simulated environment</li>
|
| 130 |
<li>Adjust sampling steps to control quality/speed tradeoff</li>
|
| 131 |
<li>Toggle "Use RNN" to switch between RNN and diffusion mode</li>
|
| 132 |
-
<li>Toggle "Auto Input" to enable
|
| 133 |
</ul>
|
| 134 |
</div>
|
| 135 |
</div>
|
|
@@ -257,8 +257,11 @@
|
|
| 257 |
|
| 258 |
// Auto-input mechanism
|
| 259 |
let lastUserInputTime = 0;
|
|
|
|
| 260 |
let autoInputInterval = null;
|
| 261 |
-
|
|
|
|
|
|
|
| 262 |
let autoInputEnabled = true; // Default to enabled
|
| 263 |
|
| 264 |
// Track currently pressed keys
|
|
@@ -271,8 +274,31 @@
|
|
| 271 |
|
| 272 |
autoInputInterval = setInterval(() => {
|
| 273 |
const currentTime = Date.now();
|
| 274 |
-
|
| 275 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 276 |
try {
|
| 277 |
socket.send(JSON.stringify({
|
| 278 |
"x": lastSentPosition.x,
|
|
@@ -283,7 +309,7 @@
|
|
| 283 |
"keys_up": [],
|
| 284 |
"is_auto_input": true // Flag to identify auto-generated inputs
|
| 285 |
}));
|
| 286 |
-
|
| 287 |
} catch (error) {
|
| 288 |
console.error("Error sending auto-input:", error);
|
| 289 |
}
|
|
@@ -296,10 +322,26 @@
|
|
| 296 |
clearInterval(autoInputInterval);
|
| 297 |
autoInputInterval = null;
|
| 298 |
}
|
|
|
|
| 299 |
}
|
| 300 |
|
| 301 |
function updateLastUserInputTime() {
|
| 302 |
lastUserInputTime = Date.now();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 303 |
}
|
| 304 |
|
| 305 |
function sendInputState(x, y, isLeftClick = false, isRightClick = false) {
|
|
@@ -477,8 +519,33 @@
|
|
| 477 |
console.log(`Auto-input ${autoInputEnabled ? 'enabled' : 'disabled'}`);
|
| 478 |
|
| 479 |
if (autoInputEnabled) {
|
| 480 |
-
// Reset the
|
| 481 |
updateLastUserInputTime();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 482 |
}
|
| 483 |
});
|
| 484 |
</script>
|
|
|
|
| 112 |
|
| 113 |
<div class="form-check form-switch">
|
| 114 |
<input class="form-check-input" type="checkbox" role="switch" id="autoInputToggle" checked>
|
| 115 |
+
<label class="form-check-label" for="autoInputToggle" id="autoInputLabel">Auto Input</label>
|
| 116 |
</div>
|
| 117 |
</div>
|
| 118 |
</div>
|
|
|
|
| 129 |
<li>Use your keyboard to type within the simulated environment</li>
|
| 130 |
<li>Adjust sampling steps to control quality/speed tradeoff</li>
|
| 131 |
<li>Toggle "Use RNN" to switch between RNN and diffusion mode</li>
|
| 132 |
+
<li>Toggle "Auto Input" to enable automatic frame generation (starts after 5s idle, then runs every 1s)</li>
|
| 133 |
</ul>
|
| 134 |
</div>
|
| 135 |
</div>
|
|
|
|
| 257 |
|
| 258 |
// Auto-input mechanism
|
| 259 |
let lastUserInputTime = 0;
|
| 260 |
+
let lastAutoInputTime = 0;
|
| 261 |
let autoInputInterval = null;
|
| 262 |
+
let autoInputActive = false; // Track if auto-input mode is active
|
| 263 |
+
const INITIAL_AUTO_INPUT_DELAY = 5000; // Start auto-input after 5 seconds of no user input
|
| 264 |
+
const AUTO_INPUT_INTERVAL = 1000; // Send auto-input every 1 second once active
|
| 265 |
let autoInputEnabled = true; // Default to enabled
|
| 266 |
|
| 267 |
// Track currently pressed keys
|
|
|
|
| 274 |
|
| 275 |
autoInputInterval = setInterval(() => {
|
| 276 |
const currentTime = Date.now();
|
| 277 |
+
|
| 278 |
+
if (!autoInputEnabled || !lastSentPosition || !isConnected) {
|
| 279 |
+
return;
|
| 280 |
+
}
|
| 281 |
+
|
| 282 |
+
// Check if we should start auto-input mode
|
| 283 |
+
if (!autoInputActive && currentTime - lastUserInputTime >= INITIAL_AUTO_INPUT_DELAY) {
|
| 284 |
+
console.log("Starting auto-input mode (no user activity for 5 seconds)");
|
| 285 |
+
autoInputActive = true;
|
| 286 |
+
lastAutoInputTime = currentTime;
|
| 287 |
+
// Update UI to show auto-input is active
|
| 288 |
+
try {
|
| 289 |
+
const label = document.getElementById('autoInputLabel');
|
| 290 |
+
if (label) {
|
| 291 |
+
label.textContent = "Auto Input (Active)";
|
| 292 |
+
label.style.color = "#28a745";
|
| 293 |
+
}
|
| 294 |
+
} catch (error) {
|
| 295 |
+
console.error("Error updating auto-input UI:", error);
|
| 296 |
+
}
|
| 297 |
+
}
|
| 298 |
+
|
| 299 |
+
// Send auto-input if mode is active and enough time has passed
|
| 300 |
+
if (autoInputActive && currentTime - lastAutoInputTime >= AUTO_INPUT_INTERVAL) {
|
| 301 |
+
console.log("Sending auto-input (auto-input mode active)");
|
| 302 |
try {
|
| 303 |
socket.send(JSON.stringify({
|
| 304 |
"x": lastSentPosition.x,
|
|
|
|
| 309 |
"keys_up": [],
|
| 310 |
"is_auto_input": true // Flag to identify auto-generated inputs
|
| 311 |
}));
|
| 312 |
+
lastAutoInputTime = currentTime;
|
| 313 |
} catch (error) {
|
| 314 |
console.error("Error sending auto-input:", error);
|
| 315 |
}
|
|
|
|
| 322 |
clearInterval(autoInputInterval);
|
| 323 |
autoInputInterval = null;
|
| 324 |
}
|
| 325 |
+
autoInputActive = false; // Reset auto-input mode
|
| 326 |
}
|
| 327 |
|
| 328 |
function updateLastUserInputTime() {
|
| 329 |
lastUserInputTime = Date.now();
|
| 330 |
+
// Reset auto-input mode when user provides input
|
| 331 |
+
if (autoInputActive) {
|
| 332 |
+
console.log("User activity detected, stopping auto-input mode");
|
| 333 |
+
autoInputActive = false;
|
| 334 |
+
// Reset UI indicator
|
| 335 |
+
try {
|
| 336 |
+
const label = document.getElementById('autoInputLabel');
|
| 337 |
+
if (label) {
|
| 338 |
+
label.textContent = "Auto Input";
|
| 339 |
+
label.style.color = "";
|
| 340 |
+
}
|
| 341 |
+
} catch (error) {
|
| 342 |
+
console.error("Error updating auto-input UI:", error);
|
| 343 |
+
}
|
| 344 |
+
}
|
| 345 |
}
|
| 346 |
|
| 347 |
function sendInputState(x, y, isLeftClick = false, isRightClick = false) {
|
|
|
|
| 519 |
console.log(`Auto-input ${autoInputEnabled ? 'enabled' : 'disabled'}`);
|
| 520 |
|
| 521 |
if (autoInputEnabled) {
|
| 522 |
+
// Reset the timers when enabling to start fresh
|
| 523 |
updateLastUserInputTime();
|
| 524 |
+
lastAutoInputTime = 0;
|
| 525 |
+
autoInputActive = false;
|
| 526 |
+
// Reset UI indicator
|
| 527 |
+
try {
|
| 528 |
+
const label = document.getElementById('autoInputLabel');
|
| 529 |
+
if (label) {
|
| 530 |
+
label.textContent = "Auto Input";
|
| 531 |
+
label.style.color = "";
|
| 532 |
+
}
|
| 533 |
+
} catch (error) {
|
| 534 |
+
console.error("Error updating auto-input UI:", error);
|
| 535 |
+
}
|
| 536 |
+
} else {
|
| 537 |
+
// Stop auto-input mode when disabling
|
| 538 |
+
autoInputActive = false;
|
| 539 |
+
// Reset UI indicator
|
| 540 |
+
try {
|
| 541 |
+
const label = document.getElementById('autoInputLabel');
|
| 542 |
+
if (label) {
|
| 543 |
+
label.textContent = "Auto Input";
|
| 544 |
+
label.style.color = "";
|
| 545 |
+
}
|
| 546 |
+
} catch (error) {
|
| 547 |
+
console.error("Error updating auto-input UI:", error);
|
| 548 |
+
}
|
| 549 |
}
|
| 550 |
});
|
| 551 |
</script>
|