#ifndef GUIUPDATER_H #define GUIUPDATER_H #include "BulletDynamics/Dynamics/btDynamicsWorld.h" #include "BulletCollision/CollisionShapes/btCollisionShape.h" #include #include #include #include #include #include #include #include #include using namespace std; typedef struct { int id; btScalar m[16]; btMatrix3x3 rot; btVector3 aabbMin, aabbMax; } guiUpdateData; typedef struct { int id; int numVertices; int numIndices; btVector3 *vertexPointer; int *indexPointer; } guiAddData; typedef struct { guiUpdateData *ud; guiAddData *ad; } guiObject; class GuiUpdater { private: int sockfd, portno; struct sockaddr_in serv_addr; struct hostent *server; void receiveData(int sock, void* buffer, size_t size); // unpacking data void* unpackInt(void *buffer, int &a); void* unpackScalar(void *buffer, btScalar &a); void* unpackVector3(void *buffer, btVector3 &v); void* unpackMatrix3x3(void *buffer, btMatrix3x3 &m); void unpackAddData(void *buffer, int n, map &addObjects); void unpackUpdateData(void *buffer, int n, map &updateObjects); void applyChanges(map addObjects, map updateObjects, int *removeObjects, int remObjNum); public: map m_cache; GuiUpdater(int port, hostent *serv); ~GuiUpdater(); void init(); int update(); }; #endif