Frontmatter
| id | 8675 |
| title | Implement Interactive Physics (Drag/Throw) |
| state | Closed |
| labels | enhancementaiperformance |
| assignees | tobiu |
| createdAt | Jan 15, 2026, 3:39 AM |
| updatedAt | Jan 15, 2026, 4:15 AM |
| githubUrl | https://github.com/neomjs/neo/issues/8675 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 8661 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Jan 15, 2026, 4:15 AM |
Implement Interactive Physics (Drag/Throw)
tobiu assigned to @tobiu on Jan 15, 2026, 3:39 AM
tobiu added parent issue #8661 on Jan 15, 2026, 3:39 AM

tobiu
Jan 15, 2026, 4:15 AM
Input from Gemini 3 Pro:
✦ I have implemented Interactive Physics ("Force Push").
Changes:
- View Layer: Updated
MainNeo.mjsto captureclick,mousemove(local), andmouseleave. These events are delegated toHomeCanvas.mjs, which forwards them to the SharedWorker.- Physics Engine: Implemented a "Force Push" mechanic. When a Shockwave expands, it doesn't just gently repel nodes; it imparts a massive, lasting velocity impulse to any node caught in the wave front (
force * 10).- Result: Clicking on the canvas now feels powerful—like dropping a bomb into the swarm—scattering nodes and agents, which then slowly drift back together due to cohesion.
tobiu closed this issue on Jan 15, 2026, 4:15 AM
Objective
Allow users to physically interact with the swarm beyond simple repulsion.
Tasks
Technical Details
updateMouseStateto track drag state.updatePhysicsto override position for grabbed nodes.