This past week I have been working on updating the way every building in the game is placed in the world from your inventory.
Previously every building in the game used the same object for placement in the world, so they all had to obey the same rules. This included not overlapping with other objects and being on the ground. As I have gotten further and further into the games development I decided this generalist approach was not going to work, as I wanted building to each have their own build rules and restrictions. Now each building has its own rules and restrictions that can be changed for that building specifically.
Previously if a building had an even number of tiles in its X or Y dimension the game would find the center of it (which would not be in the center of a tile) and make that it's center location. This was the most annoying bit of code ever and I am so glad that it is gone. Now each building has its own predefined center point that it rotates around that is at the center of a block. This came about as I was placing down splitters/mergers which are 2x3 and as I would rotate them they would move around on me and I would not be sure quite where it would be upon rotation. While even sized buildings do get screwed over with this change, especially the small ones, I am very with how it is working out so far.
This was also an important change for things like train tracks that you likely will not want to place from their center.
With new placement objects for everything brings the opportunity for better placement visuals such as conveyors now showing when they will curve before they are placed.

Additionally conveyor ramps previously had this weird annoying thing where you had to choose if they were going to go up or down with shift and scroll. This was me being a bad developer and pushing my problems onto the player. So now ramps will automatically adjust themselves to connect with nearby conveyors. And of course this is also shown on placement.

