Print at Jan 21, 2026, 12:44:37 AM

Posted by nathanjshaffer at Aug 4, 2022, 5:32:23 PM
Re: Patch submission
I get that, but my thought is to actually make an underlying change to the 2d system. Basically to make the program behave more like a modern CAD system with a fully constraint based design. This is a step in that direction. It's not just changing float[] to vector2D for convenience, it is changing how walls are stored and joined. in the old system, each wall kept a reference to the wall connected to it. With the new system, each wall is connected to a point. Moving the point, moves the walls connected. This will open up a lot of possibilites, such as having multiple walls joined together, (already implemented) having walls join to a wall midpoint, or to a coincident, locking angles and wall lengths, keeping walls parallel or perpendicular, locking furniture and window spacing, etc. Adding a constraint solver as a plugin doesn't make much sense to me as that functionality, if included should really be a part of the base programming. Converting everything back and forth and constraint solving every time a wall is drawn or dragged would be computationally expensive. Further, as I mentioned, now that I am aware of the potential conflicts with plugin developers, I think it is perfectly possible to provide reverse compatibility with most of the functions through deprecated methods to ease the transition. Also Vector based classes will make plugin developers jobs much easier. As long as they have the choice and nothing is forced on them, it shouldn't be too burdensome.

The codebase is 15 years old, and while I am not advocating change for the sake of change, it might be naive to think a growing project won't have to rethink some major changes in the architecture over that time. My suggestion is to create a branch to develop a constraint based system and try to get it working to see if there is interest from the plugin developers. If there is then, we can work on a migration solution so their plugin's don't break. I have zero interest on shitting on plugin developers, so I am completely open to helping work out a solution that makes everyone happy