c++数据管理和驱动
来源:互联网 发布:复杂网络建模的研究生 编辑:程序博客网 时间:2024/05/20 01:12
copyright longer 2013
请不要转载。
(一)
我个人认为,好的程序结构不要用单例。
所以虽然有从loki里拿出来的SingletonHolder,但最后还是去掉不用了。
在初始化第一个对象时将全局的对象初始化,然后将其作为其他对象初始化条件传进对象,是不错的选择。
见附件Manager模块
(二)实体组件体系。
EntityX是个快速易于使用的Entity-component系统。
EntityX https://github.com/alecthomas/entityx
但是它只支持c++11标准。msvc2012都不能通过编译。原因是改库使用了c++11标准的可变模板参数新机制。
但这完全不是我们使用它的障碍。通过使用boost::mpl替换,还是十分简单的。
见附件的:
Entity Event System Manager模块。
(三)数据驱动
有了实体组件系统,数据驱动就水到渠成了,首先是提取组件的方式。
可做如下定义:
entitieManager是实体组件的实体池。
struct Position : public Component<Position>{...}
struct Orientation : public Component<Orientation>{...}
typedef boost::mpl::vector<Orientation,Position> TypeList;
typedef boost::shared_ptr<Position> EPositionPtr;
typedef boost::shared_ptr<Orientation> EOrientationPtr;
const View& v=entitieManager->entities_with_components<TypeList>();
for (View::Iterator it=v.begin();it!=v.end();++it)
{
o=(*it).component<Orientation>();
p=(*it).component<Position>();
...
}
然后分离系统。
一般较常分离的是逻辑和显示,甚或将之分为双线程。以此为例。
组件所含数据可以不必锁定。因为这并不影响,也不会运行时出错。
线程附件里用的是std::thread当然boost也是可以的。
数据驱动有一种需要update。就是action的update(Real dt)。
这需要另开线程(或者也可以不用)跑update。
std::thread t(&Manager::run,this);
configure();
mSystemManager->configure();
initialize();
t.join();
在run()里进行action系统的更新就可以。
其他数据驱动就是状态机机制。根据时间及io做出变换即可。
用boost::boost::signals2.或者Event。
signals需要写一些包装便于与现有实体组件联合使用。
主窗口的渲染不能是分线程,所以需要手动将渲染循环放在主线程。
详情见附件。
http://download.csdn.net/detail/undercallfile/6481915
- c++数据管理和驱动
- 图标数据管理render。c
- Linux-C编程-数据管理
- 主数据管理和实施
- 数据管理和报表维护
- 主数据管理和实施
- MongoDB数据管理和控制
- 第五篇:事件驱动的数据管理
- 数据管理
- 数据管理
- Excel -- 3. 数据管理和分析
- 驱动汇编和c混用
- ORACLE EBS 系统主数据管理(C)
- 微服务实践:微服务的事件驱动数据管理
- 微服务之事件驱动的数据管理(五)
- J2EE 应用程序中的数据管理和数据持久性
- J2EE 应用程序中的数据管理和数据持久性
- 流数据管理关键技术研究和原型体验
- 聚类(2)——层次聚类 Hierarchical Clustering
- Linux输出所在目录
- Hibernate datetime 与 JAVA date 不兼容的解决方法
- ibatis初级应用(一)
- http和https
- c++数据管理和驱动
- s3c6410 中断
- 第一篇文章,不知写什么。就写一些我最近在trswcm里遇到的问题吧。(没大用只是为了写而写)
- java native方法1
- Linux Driver 简单 按键驱动 - 1
- WordPress 设置评论数到达一定时关闭评论
- B-树
- 数据库优化
- Reporting Service 开发中的知识汇总