- virtual void pre_tick() { }
- virtual void tick(Time::TimeDelta) { }
- virtual void post_tick() { }
+ BufferedComponent(Handle<Entity> e): Component(e) { }
+
+ const T &read() const { return data[read_index]; }
+ T &write();
+
+public:
+ virtual void prepare_tick() { write_index = 1-read_index; written = false; }
+ virtual void commit_tick() { if(written) read_index = write_index; }