本文整理汇总了C++中TuioObject::update方法的典型用法代码示例。如果您正苦于以下问题:C++ TuioObject::update方法的具体用法?C++ TuioObject::update怎么用?C++ TuioObject::update使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TuioObject
的用法示例。
在下文中一共展示了TuioObject::update方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ProcessMessage
void TuioClient::ProcessMessage(const ReceivedMessage &msg, const IpEndpointName &remoteEndpoint)
{
try
{
ReceivedMessageArgumentStream args = msg.ArgumentStream();
if (strcmp(msg.AddressPattern(), "/tuio/2Dobj") == 0)
{
const char *cmd;
args >> cmd;
if (strcmp(cmd, "set") == 0)
{
int32 s_id, c_id;
float xpos, ypos, angle, xspeed, yspeed, rspeed, maccel, raccel;
args >> s_id >> c_id >> xpos >> ypos >> angle >> xspeed >> yspeed >> rspeed >> maccel >> raccel;
lockObjectList();
std::list<TuioObject *>::iterator tobj;
for (tobj = objectList.begin(); tobj != objectList.end(); tobj++)
if ((*tobj)->getSessionID() == (long)s_id)
break;
if (tobj == objectList.end())
{
TuioObject *addObject = new TuioObject((long)s_id, (int)c_id, xpos, ypos, angle);
frameObjects.push_back(addObject);
}
else if (((*tobj)->getX() != xpos) || ((*tobj)->getY() != ypos) || ((*tobj)->getAngle() != angle) || ((*tobj)->getXSpeed() != xspeed) || ((*tobj)->getYSpeed() != yspeed) || ((*tobj)->getRotationSpeed() != rspeed) || ((*tobj)->getMotionAccel() != maccel) || ((*tobj)->getRotationAccel() != raccel))
{
TuioObject *updateObject = new TuioObject((long)s_id, (*tobj)->getSymbolID(), xpos, ypos, angle);
updateObject->update(xpos, ypos, angle, xspeed, yspeed, rspeed, maccel, raccel);
frameObjects.push_back(updateObject);
}
unlockObjectList();
}
else if (strcmp(cmd, "alive") == 0)
{
int32 s_id;
aliveObjectList.clear();
while (!args.Eos())
{
args >> s_id;
aliveObjectList.push_back((long)s_id);
}
}
示例2: ProcessMessage
void TuioClient::ProcessMessage( const ReceivedMessage& msg, const IpEndpointName& remoteEndpoint) {
try {
ReceivedMessageArgumentStream args = msg.ArgumentStream();
ReceivedMessage::const_iterator arg = msg.ArgumentsBegin();
if( strcmp( msg.AddressPattern(), "/tuio/2Dobj" ) == 0 ){
const char* cmd;
args >> cmd;
if (strcmp(cmd,"set")==0) {
if (currentTime.getTotalMilliseconds()==0)
currentTime = TuioTime::getSessionTime();
int32 s_id, c_id;
float xpos, ypos, angle, xspeed, yspeed, rspeed, maccel, raccel;
args >> s_id >> c_id >> xpos >> ypos >> angle >> xspeed >> yspeed >> rspeed >> maccel >> raccel;
lockObjectList();
std::list<TuioObject*>::iterator tobj;
for (tobj=objectList.begin(); tobj!= objectList.end(); tobj++)
if((*tobj)->getSessionID()==(long)s_id) break;
if (tobj == objectList.end()) {
TuioObject *addObject = new TuioObject(currentTime,(long)s_id,(int)c_id,xpos,ypos,angle);
objectList.push_back(addObject);
for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener != listenerList.end(); listener++)
(*listener)->addTuioObject(addObject);
} else if ( ((*tobj)->getX()!=xpos) || ((*tobj)->getY()!=ypos) || ((*tobj)->getAngle()!=angle) || ((*tobj)->getXSpeed()!=xspeed) || ((*tobj)->getYSpeed()!=yspeed) || ((*tobj)->getRotationSpeed()!=rspeed) || ((*tobj)->getMotionAccel()!=maccel) || ((*tobj)->getRotationAccel()!=raccel) ) {
TuioObject *updateObject = new TuioObject(currentTime,(long)s_id,(*tobj)->getSymbolID(),xpos,ypos,angle);
updateObject->update(currentTime,xpos,ypos,angle,xspeed,yspeed,rspeed,maccel,raccel);
frameObjects.push_back(updateObject);
/*(*tobj)->update(currentTime,xpos,ypos,angle,xspeed,yspeed,rspeed,maccel,raccel);
for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener != listenerList.end(); listener++)
(*listener)->updateTuioObject((*tobj));*/
}
unlockObjectList();
} else if (strcmp(cmd,"alive")==0) {
int32 s_id;
while(!args.Eos()) {
args >> s_id;
objectBuffer.push_back((long)s_id);
std::list<long>::iterator iter;
iter = find(aliveObjectList.begin(), aliveObjectList.end(), (long)s_id);
if (iter != aliveObjectList.end()) aliveObjectList.erase(iter);
}
std::list<long>::iterator alive_iter;
for (alive_iter=aliveObjectList.begin(); alive_iter != aliveObjectList.end(); alive_iter++) {
lockObjectList();
std::list<TuioObject*>::iterator tobj;
for (tobj=objectList.begin(); tobj!=objectList.end(); tobj++) {
TuioObject *deleteObject = (*tobj);
if(deleteObject->getSessionID()==*alive_iter) {
objectList.erase(tobj);
deleteObject->remove(currentTime);
for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener != listenerList.end(); listener++)
(*listener)->removeTuioObject(deleteObject);
delete deleteObject;
break;
}
}
unlockObjectList();
}
aliveObjectList = objectBuffer;
objectBuffer.clear();
} else if (strcmp(cmd,"fseq")==0) {
int32 fseq;
args >> fseq;
bool lateFrame = false;
if (fseq>0) {
if ((fseq>=currentFrame) || ((currentFrame-fseq)>100)) currentFrame = fseq;
else lateFrame = true;
}
if (!lateFrame) {
for (std::list<TuioObject*>::iterator iter=frameObjects.begin(); iter != frameObjects.end(); iter++) {
TuioObject *tobj = (*iter);
TuioObject *updateObject = getTuioObject(tobj->getSessionID());
updateObject->update(currentTime,tobj->getX(),tobj->getY(),tobj->getAngle(),tobj->getXSpeed(),tobj->getYSpeed(),tobj->getRotationSpeed(),tobj->getMotionAccel(),tobj->getRotationAccel());
for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener != listenerList.end(); listener++)
(*listener)->updateTuioObject(updateObject);
delete tobj;
}
for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener != listenerList.end(); listener++)
(*listener)->refresh(currentTime);
if (fseq>0) currentTime.reset();
//.........这里部分代码省略.........