GSoC 2021: Knife Tool Improvements: Feedback

the short answer is because modal operators don’t have any concept of snapping, it has to be done on a per-operator basis. why? because an operator can be anything, it doesn’t necessarily have anything to do with transformations at all. hell, even the transformations themselves are handled on a per-operator basis because it’s just a framework for executing some kind of functionality. The snapping functionality you are familiar with is pretty much exclusive to the built-in transform operators: the bpy.ops.transform family. Pretty much every other operator is the wild west and does whatever it wants. Would it be nice if every operator that could utilize snapping actually used it? absolutely, but that’s not how it works right now, and probably won’t anytime in the near future considering the snapping functionality itself isn’t even feature complete yet.

1 Like