bool SimInterior::processQuery(SimQuery* query) { switch (query->type){ onQuery(SimRenderQueryImage); onQuery(SimCollisionImageQuery); onQuery(SimObjectTransformQuery); default: return Parent::processQuery(query); } }
bool Player::processQuery(SimQuery* query) { switch (query->type) { onQuery (SimRenderQueryImage); onQuery (SimLightQuery); onQuery (SimCollisionImageQuery); default: return Parent::processQuery (query); } }
bool FlyingCamera::processQuery(SimQuery *query) { switch (query->type) { onQuery(SimCameraQuery); onQuery(SimImageTransformQuery); onQuery(SimCollisionImageQuery); onQuery(SimObjectTransformQuery); default : return (false); } }
/* * @brief Do the protocal level command handler * Note: this function does hiden process in embeded target, mobile phone can * get those information via commands to identify it. * * @param[i] cmdType command type * @param[i] cmd command id * @param[i] pData data to be handled * @param[i] len length of pData context * * @return * 0 : continue process * 1 : this is an internal command, no needer further process */ int32_t bicProcessCmd(uint8_t cmdType, uint8_t cmd, uint8_t *pData, uint8_t len) { uint32_t ret = 0; Trace("type:%d, cmd:%d, len:%d", cmdType, cmd, len); switch(cmdType) { case CMD_TYPE_ACK: break; case CMD_TYPE_QUERY: ret = onQuery(cmd, pData, len); break; case CMD_TYPE_SET: ret = onSet(cmd, pData, len); break; default: break; } return ret; }
bool SimExplosionCloud::processQuery(SimQuery * query) { switch (query->type) { onQuery(SimRenderQueryImage); } return false; }
bool DropPointGroup::processQuery(SimQuery* query) { switch (query->type){ onQuery (DropPointQuery); default: return Parent::processQuery(query); } }
bool Turret::processQuery(SimQuery* query) { switch (query->type) { onQuery(SimRenderQueryImage); default: return Parent::processQuery (query); } }
void CDatagrams::onPacket(CEndPoint addr, G2Packet* pPacket) { try { if(pPacket->isType("PI")) { onPing(addr, pPacket); } else if(pPacket->isType("PO")) { onPong(addr, pPacket); } else if(pPacket->isType("CRAWLR")) { onCRAWLR(addr, pPacket); } else if(pPacket->isType("QKR")) { onQKR(addr, pPacket); } else if(pPacket->isType("QKA")) { onQKA(addr, pPacket); } else if(pPacket->isType("QA")) { onQA(addr, pPacket); } else if(pPacket->isType("QH2")) { onQH2(addr, pPacket); } else if(pPacket->isType("Q2")) { onQuery(addr, pPacket); } else { //systemLog.postLog(LogSeverity::Debug, QString("G2 UDP recieved unknown packet %1").arg(pPacket->GetType())); //qDebug() << "UDP RECEIVED unknown packet " << pPacket->GetType(); } } catch(...) { systemLog.postLog(LogSeverity::Debug, QString("malformed packet")); //qDebug() << "malformed packet"; } }
/** * Returns true if a physics body was selected at the given position. * * This method contructs and AABB the size of the mouse pointer, centered at the * given position. If any part of the AABB overlaps a fixture, it is selected. * * @param pos the position (in physics space) to select * * @return true if a physics body was selected at the given position. */ bool ObstacleSelector::select(const Vec2& pos) { std::function<bool(b2Fixture* fixture)> callback = [this](b2Fixture* fixture) { return onQuery(fixture); }; _pointer.origin.set(pos.x-_pointer.size.width/2.0f, pos.y-_pointer.size.height/2.0f); _controller->queryAABB(callback,_pointer); if (_selection != nullptr) { b2Body* body = _selection->GetBody(); _jointDef.bodyA = _ground; _jointDef.bodyB = body; _jointDef.maxForce = _force * body->GetMass(); _jointDef.target.Set(pos.x,pos.y); _mouseJoint = (b2MouseJoint*)_controller->getWorld()->CreateJoint(&_jointDef); body->SetAwake(true); } return _selection != nullptr; }
unicorn::Bus::Bus( QObject* parent ) :PlayBus( "unicorn", parent ) { connect( this, SIGNAL( message(QByteArray)), SLOT( onMessage(QByteArray))); connect( this, SIGNAL( queryRequest( QString, QByteArray )), SLOT( onQuery( QString, QByteArray ))); }
//--------------------------------------------------------------------------- bool SimFire::processQuery(SimQuery *query) { switch (query->type) { onQuery(SimLightQuery); case SimRenderQueryImageType: { if ((float)manager->getCurrentTime() > fireOut) return false; if (shapeTag==-1 && translucentShapeTag==-1) return false; SimRenderQueryImage *qp = static_cast<SimRenderQueryImage *>(query); TSRenderContext & rc = *qp->renderContext; GFXSurface *srf = rc.getSurface(); // shall we draw translucent? bool inHardware = srf->getCaps()&GFX_DEVCAP_SUPPORTS_CONST_ALPHA; bool translucent = (inHardware || SimExplosion::SoftwareTranslucency || shapeTag==-1) && translucentShapeTag!=-1; if (!renderedYet || translucent!=image.drawTranslucent) { // need to switch modes if (translucent && !image.translucentShape) // need to load translucent shape getShape(translucentShapeTag, &image.translucentShape, &image.translucentThread); else if (!translucent && !image.nonTranslucentShape) // need to load non-translucent shape getShape(shapeTag, &image.nonTranslucentShape, &image.nonTranslucentThread); image.setTranslucent(translucent); if (!renderedYet) // got right radius (above) // update bounding box in container db next timer update updateBox = true; } // face camera if ( (!renderedYet && faceCam) || followCam) image.faceCamera(rc); // advance the animation float now = manager->getCurrentTime(); image.thread->AdvanceTime(now-prevAnimTime); prevAnimTime = now; // get haze value from container SimContainer * cnt = getContainer(); if (cnt) image.hazeValue = cnt->getHazeValue(rc, image.transform.p); image.setSortValue(rc.getCamera()); qp->count = 1; qp->image[0] = ℑ renderedYet = true; return true; } } return false; }