Minor cosmetic change - Squishy now frowns slightly and the direction of the angle of the blink is reversed. It is a minor detail but it gives him a lot more character in my view. My avatar is updated too. [smile]
I've more been working on ways to prevent Squishy getting stuck in deformed states. The way I've approached it is to check every frame to see if the dot product of the vectors formed between each set of three outer circles is above a certain threshold.
Initially it seemed that simple, and Squishy was bursting under these circumstances but I then found he could get destroyed by crashing into sharp corners as well, so I've built in a timing system. If Squishy fails the above dot product test for more than a quarter of a second, he bursts, meaning very brief deforms caused by bouncing off sharp corners are okay.
This means I don't have to decrease his maximum speed, which was the other, less favourable solution.
I've also updated things so that sensor areas now send a 0 signal to their client when you leave them, as well as a 1 when you enter them. This proved a bit tricky as Box2D reports constant streams of multiple creation and destruction points when two shapes actually overlap rather than touch, so Squishy has to keep track of the number of contacts with a given shape, incrementing and decrementing as the create and destroy signals come in and triggering the 0 only when the contact count drops below 1.
Got there in the end though. This is more useful than it probably sounds but I'm too tired to talk about it at the moment.