Havent had much time to play around with Smoke, but I had a quick question... Anytime you want to share data between systems, you have to register a subject/observer, AND copy the data itself once per frame (possibly MORE than once if you have multiple systems that care about the data).
My question is, why couldnt you just double buffer ALL your 'shared' data? You would still enforce the single writer/multiple reader rules, but you would eliminate the overhead of the Change Control Manager. What am I missing here?