Пример #1
0
// 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;
}