The bolded part is the conclusion.
When adding something to the ship on its edges the length, width and height increase as they should, but when removing something from it I have been noticing since I started playing that it was sometimes screwing up. Today I figured out exactly what was happening.
This part appears to be intended: When you remove the last tile from the left, top, bottom, or front of the ship's current bounds (e.g. so it would decrease length, width or height by one), it recalculates the length, width, and height all at once. However, if you remove the last tile from the right or back of the ship, no recalculation is done.
Further, if you remove a tile from a position in which it is the last on the right as well as front and top, no recalculation is done. Same for back, left, and top (I have a 16x16x16 ship, used multiple tiles to bring it out to 17x17x17, leaving one tile there holding it at 17x17x17, and then removed it, and it remained 17x17x17. I did the same on the front-right-top corner). So, the entire back face and entire right face are being missed by the recalculation.
For more investigation, after extending the bounds to 17x17x17 and removing the tile holding it there, and the bounds failing to recalculate, I placed two tiles in a row in the center of the right side, causing it to state the bounds as 17x17x19. I then removed not the block on the very right, but the one which was one row further in. The bounds were recalculated and came out as 16x16x18.
One might assume that this meant that you were checking the wrong coordinates, but I re-did the test with three blocks in a row and removed the third instead of the second (the first being the one on outer bounds), and it recalculated it then too. Also, neither time did it decide that there were no blocks on the outside, it merely recalculated the width downward when it realized there wasn't a block on the left and it wasn't quite as wide as it thought (as when it adds it doesn't recalculate).
So clearly it is recalculating whenever an entire slice is emptied, and it isn't a matter of looking at only six particular slices, but it COULD be a matter of looking for removals in the area of, say, < maxX instead of
When adding something to the ship on its edges the length, width and height increase as they should, but when removing something from it I have been noticing since I started playing that it was sometimes screwing up. Today I figured out exactly what was happening.
This part appears to be intended: When you remove the last tile from the left, top, bottom, or front of the ship's current bounds (e.g. so it would decrease length, width or height by one), it recalculates the length, width, and height all at once. However, if you remove the last tile from the right or back of the ship, no recalculation is done.
Further, if you remove a tile from a position in which it is the last on the right as well as front and top, no recalculation is done. Same for back, left, and top (I have a 16x16x16 ship, used multiple tiles to bring it out to 17x17x17, leaving one tile there holding it at 17x17x17, and then removed it, and it remained 17x17x17. I did the same on the front-right-top corner). So, the entire back face and entire right face are being missed by the recalculation.
For more investigation, after extending the bounds to 17x17x17 and removing the tile holding it there, and the bounds failing to recalculate, I placed two tiles in a row in the center of the right side, causing it to state the bounds as 17x17x19. I then removed not the block on the very right, but the one which was one row further in. The bounds were recalculated and came out as 16x16x18.
One might assume that this meant that you were checking the wrong coordinates, but I re-did the test with three blocks in a row and removed the third instead of the second (the first being the one on outer bounds), and it recalculated it then too. Also, neither time did it decide that there were no blocks on the outside, it merely recalculated the width downward when it realized there wasn't a block on the left and it wasn't quite as wide as it thought (as when it adds it doesn't recalculate).
So clearly it is recalculating whenever an entire slice is emptied, and it isn't a matter of looking at only six particular slices, but it COULD be a matter of looking for removals in the area of, say, < maxX instead of