Actual fix for the breeding simulation softlock issue! It’s very possible there are still bugs here, but I was finally able to reproduce this specific problem and this time the fix isn’t speculative. The issue was broader than just the breeding simulation, but that was the most reliable way for it to manifest. On slower computers dog generation could take a while, and if the game tried to change scenes while a dog was still in the process of being generated, that generation request never got cleared. This meant that until you restarted the game, you could never generate another dog since it always thought there was still one in progress. The game now correctly cancels and cleans up all dog generation requests before changing scenes.
Fixed a bug where certain UI elements on the construction screen were not correctly blocking clicks, meaning sometimes you’d click on a button and end up interacting with something behind it. There may be more issues like this, but they all have to be fixed case-by-case, so please report ’em if you find ’em!
It was extremely slow to move small objects like cheese vertically. My dragging code uses an object’s bounding box size for movement calculations, but this is not necessary for vertical dragging. All objects should now have uniform vertical drag speeds.
Because of how the physics system works, adjusting the shape/size of complex jointed bodies like dog legs requires me to insert frame waits between certain operations so the physics system has a chance to resolve itself appropriately. This means that generating a procedural dog is not possible to do in a single frame. However, since none of their legs are directly attached to each other, I was able to save a lot of generation time by processing all the legs simultaneously instead of one by one. This means that almost every dog will now spawn in more quickly, and all dogs with at least one leg will now take the same amount of time to generate. This will not affect performance once the dogs have been created.