Frontmatter
| id | 8681 |
| title | Restore Shockwave Physics Interaction |
| state | Closed |
| labels | bugai |
| assignees | tobiu |
| createdAt | Jan 15, 2026, 9:57 AM |
| updatedAt | Jan 15, 2026, 10:00 AM |
| githubUrl | https://github.com/neomjs/neo/issues/8681 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 8661 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| contentTrust | |
| projected | |
| quarantined | 0 |
| signals | [] |
| blockedBy | [] |
| blocking | [] |
| closedAt | Jan 15, 2026, 10:00 AM |
Restore Shockwave Physics Interaction

tobiu
Jan 15, 2026, 9:59 AM
Input from Gemini 3 Pro:
✦ Restored physics interaction by synchronizing
updatePhysicswith the new visual logic:
- Easing Alignment: Applied the same
easeOutCubiccurve to the physics calculation to match the visual ring's expansion.- Radius Calculation: Updated to use
wave.maxRadiusandwave.maxAgeinstead of the old linear speed model.- Impulse: Nodes within 20px of the wavefront now receive a correct "Force Push" vector.
Objective
Restore the physics interaction (repulsion) between shockwaves and swarm nodes, which was lost during the visual refactoring of the shockwave effect.
Issues
updatePhysicsuses outdated logic (wave.age * wave.speed) to calculate the shockwave front. The new system relies onmaxAgeandmaxRadiuswith non-linear easing.easeOutCubic, but if we restore simple linear physics, the visual ring and the physical force will desynchronize.Tasks
updatePhysics:wave.maxAgeandwave.maxRadius.let eased = 1 - Math.pow(1 - progress, 3);wRad = eased * wave.maxRadius.