NOTE: The current design is UML documented in the currentDesign.mdl file which is there for your viewing pleasure with Rational Rose. 1. Physics Engine As you can see, the Physics Engine is heavily modified. This was done because PMD is a fickle lover, as such things needed to be moved around and rearranged. rayTracing was moved into separate functions, instead of overloading calculateNextPosition with every possible type of thing, it was decided to better move things into separate functions, hence all the new cnp* functions. These functions handle the specific things needed for given types of objects. For example, Lemmings are treated differently by the Physics Engine than Particles, though gravity and rayTracing are done the same between the two. THe Physics Engine also handles some of the more Physics related Lemming job types, such as Climber and Glider. It was deemed silly to use their given process() functions as this would become overly complicated, though their Job types still contain the process() function as well as having the Job classes with new private members to store various features. For example, the Bridger is treated exactly as a lemming, however his process function is called and a part of the brick is laid until all twelve bricks are laid. In his class he also has a "bricks" member which keeps track of the # of bricks laid. 2. Networking Due to a problem with the network games and one person winning before the other finished, it was necessary to create a LevelFinishMessage. This message informs the other player when they have finished so as to bring the player to the game stats screen. This message is pretty much a placeholder as it merely needs to exist in sending, not actually send any large amount of data.