**IMPORTANT** There will be a blog post to follow about the trello, GDD, and wiki changes that are done or coming to come inline with the new code base.
Well I Adam has been working on a new code base that he hopes will prove very fruitful. The goal when he started was to simplify and reduce points of interaction between systems and components. The result is something that should work well going forward. Now component updates and changes take place in a very well defined manner and at a very specific time allowing very thread-safe operation.
Components are now updated at the beginning of each frame instead of in a haphazard manner like before. Then each system is updated in it’s own thread. Update methods read component data, but can’t write it. Instead they call Entity::Update(new_component); which takes a newly created component and replaces the existing one with it during the next component update phase.
In a way to reduce code the number of interfaces has been reduced to 0. Each component follows it’s own structure and should have very little, if any at all, methods. Components are meant to be light-weight data used to construct internal objects inside systems. An example is the 3 transform components (Position, Orientation, and Scale), they are read in RenderSystem at the start of each update call and are used to construct a ModelMatrix. The ModelMatrix isn’t accessible from anywhere outside of RenderSystem.
The new code can be view and pulled from TEC. The choice of the names comes about from “Trillek Engine 3 (c)” and is also a play on 0x10c. The wiki is a very important source of information on the new code’s layout and usage.
The next step will be implemented OpenAL (audio) and ASIO (networking).