// Initialize the NatNet client with client and server IP addresses. bool InitNatNet(LPSTR szIPAddress, LPSTR szServerIPAddress) { unsigned char ver[4]; natnetClient.NatNetVersion(ver); // Set callback handlers // Callback for NatNet messages. natnetClient.SetMessageCallback(MessageHandler); // NatNet verbosity level. We want none. natnetClient.SetVerbosityLevel(Verbosity_None); // this function will receive data from the server natnetClient.SetDataCallback( DataHandler ); int retCode = natnetClient.Initialize(szIPAddress, szServerIPAddress); if (retCode != ErrorCode_OK) { //Unable to connect to server. return false; } else { // Print server info sServerDescription ServerDescription; memset(&ServerDescription, 0, sizeof(ServerDescription)); natnetClient.GetServerDescription(&ServerDescription); if(!ServerDescription.HostPresent) { //Unable to connect to server. Host not present return false; } } // Retrieve RigidBody description from server sDataDescriptions* pDataDefs = NULL; int nBodies = natnetClient.GetDataDescriptions(&pDataDefs); if (ParseRigidBodyDescription(pDataDefs) == false) { //Unable to retrieve RigidBody description //return false; } // example of NatNet general message passing. Set units to millimeters // and get the multiplicative conversion factor in the response. void* response; int nBytes; retCode = natnetClient.SendMessageAndWait("UnitsToMillimeters", &response, &nBytes); if (retCode == ErrorCode_OK) { unitConversion = *(float*)response; } return true; }