void UDPKinectSkeleton::_onPollingUDP(const Scheduler::PollingEvent & event) { StlString str; unsigned int ipAddr; int port; ArRef<MemoryBlock> memory = MemoryBlock::NEW(); while(_udp->receiveBytes(memory,ipAddr,port)) { if (_skeleton.valid()) { ArRef<MemoryIStream> stream = MemoryIStream::NEW(memory,0); unsigned int nbJoints; stream->readUInt(nbJoints); if (nbJoints != _skeleton->getNbJoints()) { cerr<<"Reads "<<nbJoints<<" joints but skeleton has " <<_skeleton->getNbJoints()<<"joints !!! using the min"<<endl; } SerializationDependencies dependencies; for (unsigned int i(0); i<std::min(nbJoints,_skeleton->getNbJoints()) ;++i) { ArRef<Joint> joint = _skeleton->accessJoint(i); joint->unserialize(dependencies,stream); } int confidencesSize; stream->readInt(confidencesSize); for (unsigned int i(0); i<confidencesSize; ++i) { StlString name; stream->readString(name); double value; stream->readDouble(value); _confidences[name] = value; } } } }