void PropertyGridBTModelAdapter::buildProperties() { // model debug flag { PropertyGridProperty *prop = new PropertyGridProperty("Debug"); PropertyGridProperty::BoolReadCallback readCB([this]()->bool { BTModel *const btModel = mLevel->BTModelMan()->at(mMid); return btModel->debug(); }); PropertyGridProperty::BoolWriteCallback writeCB([this](bool flag) { BTModel *const btModel = mLevel->BTModelMan()->at(mMid); return btModel->setDebug(flag); }); prop->setCallbacks(readCB, writeCB); PropertyGridAdapter::mProperties.push_back(prop); } // stateStream name { PropertyGridProperty *prop = new PropertyGridProperty("StateStream"); PropertyGridProperty::StringReadCallback readCB([this]()->Ogre::String { BTModel *const btModel = mLevel->BTModelMan()->at(mMid); return btModel->stateStream().debugName(); }); prop->setCallbacks(readCB, nullptr); PropertyGridAdapter::mProperties.push_back(prop); } }
handler(Server& thr,CP::Poll& poll,Socket& s):thr(thr), p(poll),s(s),sp(2048),req(this->s,&sp) { //printf("handler()\n"); req._handler=this; poll.add(this->s); s.retain(); if(req.readRequest({&handler::readCB, this})) readCB(true); }
void PropertyGridAgentAdapter::buildProperties() { Agent *agent = mAgentMan->getAgent(mAid); if(nullptr == agent) { PropertyGridProperty *prop_id = new PropertyGridProperty("AgentId " + Ogre::StringConverter::toString(mAid) + " (invalid)"); mProperties.push_back(prop_id); Debug::error(STEEL_METH_INTRO, "could not find agent ", mAid).endl(); return; } /// gaent name { PropertyGridProperty *prop = new PropertyGridProperty("Name"); PropertyGridProperty::StringReadCallback readCB([this]()->Ogre::String { Agent *agent = mAgentMan->getAgent(mAid); return agent->name(); }); PropertyGridProperty::StringWriteCallback writeCB([this](Ogre::String const& name) { Agent *agent = mAgentMan->getAgent(mAid); agent->setName(name); }); prop->setCallbacks(readCB, writeCB); mProperties.push_back(prop); } /// persistence toggle { PropertyGridProperty *prop = new PropertyGridProperty("Persistent"); PropertyGridProperty::BoolReadCallback readCB([this]()->bool { Agent *agent = mAgentMan->getAgent(mAid); return agent->isPersistent(); }); PropertyGridProperty::BoolWriteCallback writeCB([this](bool flag) { Agent *agent = mAgentMan->getAgent(mAid); agent->setPersistent(flag); }); prop->setCallbacks(readCB, writeCB); mProperties.push_back(prop); } }
void finalize() { thr.performanceCounters.totalRequestsFinished++; if(resp->closed) { destruct(); return; } req.reset(); resp->reset(); thr._responsePool.put(resp); resp=nullptr; sp.clear(); if(keepAlive) { req.init(s,&sp); if(req.readRequest({&handler::readCB,this})) readCB(true); } else { s.shutdown(SHUT_WR); buf=(uint8_t*)malloc(4096); s.repeatRead(buf,4096,{&handler::sockReadCB,this}); } }
void PropertyGridBlackboardModelAdapter::buildProperties() { BlackBoardModel *const bbModel = mLevel->blackBoardModelMan()->at(mMid); if(nullptr == bbModel) return; // variables for(auto it : bbModel->variables()) { Ogre::String key = it.first; PropertyGridProperty *prop = new PropertyGridProperty(key); PropertyGridProperty::StringReadCallback readCB([this, key]()->Ogre::String { BlackBoardModel *const bbModel = mLevel->blackBoardModelMan()->at(mMid); return bbModel->getStringVariable(key); }); prop->setCallbacks(readCB, nullptr); PropertyGridAdapter::mProperties.push_back(prop); } registerSignal(bbModel->getSignal(BlackBoardModel::PublicSignal::variableChanged)); }
void PropertyGridPhysicsModelAdapter::buildProperties() { // speed { PropertyGridProperty *prop = new PropertyGridProperty("Velocity"); PropertyGridProperty::StringReadCallback readCB([this]()->Ogre::String { PhysicsModel *const pmodel = mLevel->physicsModelMan()->at(mMid); if(nullptr == pmodel) return StringUtils::BLANK; Ogre::Vector3 const v = pmodel->velocity(); u16 width = 4; Ogre::String const r = "{" + Ogre::StringConverter::toString(v.x, width) + ", " + Ogre::StringConverter::toString(v.y, width) + ", " + Ogre::StringConverter::toString(v.z, width) + "}"; return r; }); prop->setCallbacks(readCB, nullptr); PropertyGridAdapter::mProperties.push_back(prop); } // shape list { PropertyGridProperty *prop = new PropertyGridProperty(PhysicsModel::BBOX_SHAPE_ATTRIBUTE); PropertyGridProperty::StringVectorSelectionReadCallback readCB([this]()->PropertyGridProperty::StringVectorSelection { PropertyGridProperty::StringVectorSelection readItem; PhysicsModel *const pmodel = mLevel->physicsModelMan()->at(mMid); if(nullptr == pmodel) return readItem; readItem.selectableValues = boundingShapeValues(); readItem.selectedIndex = (PropertyGridProperty::StringVectorSelection::selection_type)(std::find(readItem.selectableValues.begin(), readItem.selectableValues.end(), toString(pmodel->shape())) - readItem.selectableValues.begin()); return readItem; }); PropertyGridProperty::StringVectorSelectionWriteCallback writeCB([this](PropertyGridProperty::StringVectorSelection::selection_type index) { Agent *const agent = mLevel->agentMan()->getAgent(mAid); if(nullptr == agent) return; OgreModel *const omodel = agent->ogreModel(); PhysicsModel *const pmodel = mLevel->physicsModelMan()->at(mMid); if(nullptr == omodel || nullptr == pmodel) return; StringVector possibleValues = boundingShapeValues(); BoundingShape shape = BoundingShape::SPHERE; if(index < possibleValues.size()) shape = toBoundingShape(possibleValues[index]); pmodel->setShape(omodel, shape); }); prop->setCallbacks(readCB, writeCB); PropertyGridAdapter::mProperties.push_back(prop); } // mass { PropertyGridProperty *prop = new PropertyGridProperty(PhysicsModel::MASS_ATTRIBUTE); PropertyGridProperty::RangeReadCallback readCB([this]()->PropertyGridProperty::Range { PropertyGridProperty::Range range; PhysicsModel *const pmodel = mLevel->physicsModelMan()->at(mMid); if(nullptr != pmodel) range.value = (PropertyGridProperty::Range::value_type)pmodel->mass(); range.min = 0.; range.max = 100.; Numeric::clamp(range.value, range.min, range.max); return range; }); PropertyGridProperty::RangeWriteCallback writeCB([this](PropertyGridProperty::Range const & range) { PhysicsModel *const pmodel = mLevel->physicsModelMan()->at(mMid); Numeric::clamp(range.value, range.min, range.max); pmodel->setMass((decltype(pmodel->mass()))range.value); }); prop->setCallbacks(readCB, writeCB); PropertyGridAdapter::mProperties.push_back(prop); } // damping { PropertyGridProperty *prop = new PropertyGridProperty(PhysicsModel::DAMPING_ATTRIBUTE); PropertyGridProperty::RangeReadCallback readCB([this]()->PropertyGridProperty::Range { PropertyGridProperty::Range range; PhysicsModel *const pmodel = mLevel->physicsModelMan()->at(mMid); if(nullptr != pmodel) range.value = (PropertyGridProperty::Range::value_type)pmodel->linearDamping(); range.min = 0.; range.max = 1.; Numeric::clamp(range.value, range.min, range.max); return range; }); PropertyGridProperty::RangeWriteCallback writeCB([this](PropertyGridProperty::Range const & range) { PhysicsModel *const pmodel = mLevel->physicsModelMan()->at(mMid); Numeric::clamp(range.value, range.min, range.max); pmodel->setDamping((decltype(pmodel->mass()))range.value); }); prop->setCallbacks(readCB, writeCB); PropertyGridAdapter::mProperties.push_back(prop); } PhysicsModel *const pmodel = mLevel->physicsModelMan()->at(mMid); if(nullptr != pmodel) registerSignal(pmodel->getSignal(PhysicsModel::PublicSignal::transformed)); }
int32_t ABLFile::read(puint8_t buffer, int32_t length) { if (file) return (readCB(file, buffer, length)); return (0); }
void readLoop() { readLoopRunning=true; shouldContinueReading=true; while(shouldContinueReading && req.readRequest({&handler::readCB, this})) readCB(true); readLoopRunning=false; }
long ABLFile::read (unsigned char* buffer, long length) { if (file) return(readCB(file, buffer, length)); return(0); }