I created a demo of this new "waypoint mode". All the info can be found there: https://t3st3ro.github.io/stuff/factorio-waypoints.html
Quick controls descriptions for the demo: use CTRL+LMB first time to enter "waypoint placing mode", next use LMB to place a single strip of belts (yellow squares) between last checkpoint. Press R to rotate the "guide" i.e change the direction of the strip. Usual factorio shortcuts apply like RMB, LMB, Q, R, CTRL+Z (I also added redo with CTRL+SHIFT+Z). Remember to release the CTRL if you want to built the belts, otherwise only new waypoint will be added without belts being placed.TL;DR
Current fast belt bending gets frustrating when drawing long lines with bends. Here is a proposition to add "waypoints" snapped to X or Y of the previous waypoint to help in creating long lines and bends of belts.Current problems
There are 2:- fast belt bending is subject to mistakes when doing turns (overshooting, undershooting before turn)
- each operation is a separate undo entry making it harder to fix mistakes
Suggestion
Instead of the current dragging and immediate placing of belts in the "fast belt drawing mode" I propose to add waypoints for belt: [CTRL]+[LMB] to place a waypoint. Adding first waypoint starts a "waypoint mode". Each consecutive waypoint would be snapped to a guide centered at the previous point (to draw straight segment from previous waypoint). When a waypoint is placed using [LMB], draw belts from the last waypoint in one action (undo would revert a whole segment). When it's added with [CTRL]+[LBM], place only a waypoint instead.- [Ctrl]+[LMB] to add first waypoint. No belt is drawn. Add first waypoint and enter waypoint mode. Now there is a snap guide that aligns cursor with the waypoint. The waypoint is added to undo stack
- Place [Ctrl]+[LMB] to add another waypoint or [LMB] to add another waypoint and placing belts. The waypoint position is snapped to the guide. This action is added to undo stack as well
- Repeat above step or exit with [Q]. Exiting is also an undo action, so when you press [CTRL]+[Z] the last waypoint path is stored and you enter waypoint mode again.
- Detect a "snap guide"* with initial mouse movement from waypoint, for example when I place a waypoint and move mouse up, the belts are placed facing up. I added it in the demo as a "smart" mode. Bringing mouse close to the waypoint again lets you change the detected guide. The detected guide can be also changed using [R].
- Place ghosts with [Shift].
- [CTRL]+[ALT]+[LMB] would place/ghost all unbuilt belts on the waypoint path.
*Guides (snap axis) can be determined in several ways. I've playtested them, and found the "smart" mode to be the most robust:
- VANILLA: by using belts initial direction as primary axis and using [F]/flip/[R] to swap axes
- CLOSEST: by snapping to closest axis (by min. distance to projection onto axis)
- SMART (IMHOthe best one): by initial movement (like in SketchUp), so for example initial upward mouse movement would select the vertical axis. Bring mouse to waypoint and move mouse again the the desired direction to change the guide. This pairs well with swapping axes with [R]..
First, I show how current fast belt bending works. Next I demonstrate the waypoint system. Finally I show how "smart" belt direction works.
Below is an original concept before playtesting:
https://i.imgur.com/PXv49jL.png