void
UDPKinectSkeleton::_transmitCurrentPose()
{
if (_udp.valid() && _skeleton.valid())
  {
  ArRef<MemoryBlock> memory = MemoryBlock::NEW();
  ArRef<MemoryOStream> stream = MemoryOStream::NEW(memory,0);
  unsigned int nb = _skeleton->getNbJoints();
  stream->writeUInt(nb);
  SerializationDependencies dependencies;
  for (unsigned int i(0);i<nb;++i)
    {
    ArConstRef<Joint> joint = _skeleton->getJoint(i);
    joint->serialize(dependencies,stream); 
    }
  stream->writeInt(_confidences.size());
  StlMap<StlString,double>::iterator it(_confidences.begin());
  while (it != _confidences.end())
    {
    stream->writeString(it->first);
    stream->writeDouble(it->second);
    ++it;
    }

  for (unsigned int i(0);i<_addresses.size();++i)
    {
    if (!_addresses[i].OSC)
      {
      _udp->sendBytes(memory,0,memory->getSize(),
                                 _addresses[i].ip,_addresses[i].port);
      }
    }
  }
}