Added an Attitude class which inherits from Tuple and provides extra functions for Moment and Attitude physics stuff.
Physics engine much much improved with more-realistic physics.
Parser loads cars and tires and has layout done for loading tracks or whatever
Switching around model loaders for 3ds has led to problems. We had a working one but Ryan "fixed" it and now it doesn't work. This has absorbed a lot of my time
Power-ups are not yet implemented
Objects are more or less ready
Ported texture loading to SDL
Week 3
Goals
World Partitioning
User control
Stack based display / input control
A working / playable game (maybe boring though)
Accomplished
Designed a QuadTree class to partition the world (simply) into 2d blocks.
Designed a Track class to store a given track.
Created a Camera class to support each of two basic views (chase and interior)
Was waiting for GameMemento class to actually do something but decided to do it myself, so now it handles timing and passes along updates to its constituents (track, car and camera).
Memento's were returning a pointer the memento after every keyboard call. It would sometimes want to return after an update as well, or possibly a mouse input. Also, all the mementos were exposed as singletons. So, I made a MementoHandler to handle memento operations and avoid exposing implementation details. There is no longer a need to ever return a pointer to a memento.
Improved car physics so that each tire stores a boolean _contact variable. An update is different for each tire if it's in contact with something or not.
Created a Screen class to wrap arround SDL stuff. Ryan's code wasn't working in Linux, and we wanted SDL for its cross platform capabilities. Screen operations are now simplified (like fullscreen toggling, although fullscreen is buggy in Windows). Also, it works perfectly well in both Windows and Linux.
Fixed up the model loader. For example, it now looks for texture files in the same directory as the model. The code we got online did not have a working destructor, so I added one.
Wrote code to convert from a loaded 3ds model (which supports drawing to the screen) to a list of Surfaces which are used for collision, not drawing. This way we can have a uniform model format, even if it's for different purposes.
Week 4
Goals
Redo physics
Beef up the camera
Checkpoints
Powerups
Accomplished
Scratched the old physics model and started fresh.
Achieved a simple working physics model.
Steadily added features to physics
Straight line dynamics
Turning
Sideways roll for sharp turns
Sliding
Ebrake
Added fading in/out for mementos
Made cars in the car selection screen rotate
Blocked user input while fading in certain contexts (fading out on the car selection screen, for example.
Made cars load once the car selection screen was fully visible to prevent the user from noticing any flickering.
Added support for most image types to texture handler
Added transparency support for images to texture handler
Added "reload" feature to the texture handler to reload all textures (this is necessary for screen resizes, since we have to start a new opengl context with SDL. Texture loading is relatively quick on a decent machine, but it does take a moment to fullscreen.
Everything which requests a texture now gets a pointer to a GLuint instead of the actual integer. This allows to texture handler to reload textures and change the handle without any other classes being affected or needing to care.
Changed screen background images to JPG format to take advantage of compression and reduce filesize.
Added option in texture handler to not make mipmaps if they won't be needed for a texture.
Added interior view for Camera class
Made camera pan smoother. It's now a function of the distance to the target view, so it slows down as it reaches the position it wants to be in. This also allows the camera to lag just slightly on turns so the car can be seen to turn to the right or left.
Made the camera always take the shortest path to where it wants to be. This means no more going the long way around the car while changing views.
Changed mouse control according to user feedback from the alpha release. It is no longer "sticky" in the center