One fun aspect of this app was that some of the accessories had dependencies – some couldn’t exist without others and some couldn’t co-exist with others. We had to add to the database schema in order to handle these conficting accessories.
e.g. A roof box cannot exist without roof bars and a black mesh grille cannot be put on a car with a bright mesh grille.
As the car is currently rendered in three layers (wheels,body and derivative features) to limit the amount of loading to the parts of the car that are actually changing, when we added the accessories, we realised a couple of things: The number of combinations of accessories possible was immense, so pre-rendering all the files would have been impractical and server storage on would have been costly. The end solution was to write a .NET compositor in C# that combined the accessories from individual PNGs and served back a flattened, masked SWF.