Hi, i'm Sindney

A software & game developer.

Signal机制在C++11中的简单实现

C++11开始支持lambda函数后,我们可以使用它来对某个类的实例的函数进行包装调用,从而实现简单的事件调度机制。 首先,我们的目标是设计一个Signal类,需要监听事件的实例,可以调用Signal.Connect(objectPtr, &Object::Callback)进行注册,调用Signal.Disconnect(objectPtr)进行注销,当Signal广播事件时,objectPtr的CallBack函数就会被调用。 一个可以发放Signal信号的类,应该拥有一个列表来管理不同的Signal,比如,鼠标单击Signal/鼠标移动Signal等。可以使用unsorted_map进行存储,将“接收者名字 + Signal名字”作为键值用来在Signal监听列表里索引(用来注销侦听)。

Unity 聊天室

一个简单的使用unity4.6.1开发的聊天室软件。 使用Dictionary在服务器端存储玩家姓名,可以自动重命名相同名字的玩家,例如:Player -> Player(1) 使用Unity的新UI系统,可自适应不同的分辨率,拥有简单的过度动画效果

CEAG

如果您遇到了这种情况,连接CMCC-EDU之后,登陆界面无法跳出,或者有登陆界面,但是一直无法登陆。 可能是您的登录地址有误,正确的登录地址应是,举例: 211.137.133.5/?wlanuserip=你的链接CMCC的接收器IPv4地址&wlanacname=0027.0029.290.00&ssid=CMCC-EDU 您可以直接使用ipconfig命令查看正确的ip地址,并填入。

OSX程序中相对路径的设置

我们在应用程序初始化时,有时需要加载一些文件,或者向外输出信息,而那些目标文件的路径在windows里一般都是相对路径来存取的。而在osx中,默认路径时系统根目录,所以没有设置的话,读取文件一般都需要绝对路径。为了同一套c++代码的跨平台特性,有两种方法来实现我们的需求。 首先,一般情况我们的应用程序都是Demo.app/Contents/Resources里存放一些资源文件,所以我们就将搜索目录改为Resources文件夹即可。 感谢stack overflow的朋友提供这些方法。

视锥剔除

参考:http://stackoverflow.com/questions/12538361/frustum-culling-implementation 首先我们的大方向是将模型的顶点从 本地坐标 转换到 世界坐标 再转换到 视角坐标,最后进行剔除测试。 对包围盒进行坐标系转换: