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);
     }
 }
Beispiel #2
0
		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);
        }
    }
Beispiel #4
0
		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));
    }
Beispiel #7
0
int32_t ABLFile::read(puint8_t buffer, int32_t length)
{
	if (file)
		return (readCB(file, buffer, length));
	return (0);
}
Beispiel #8
0
		void readLoop() {
			readLoopRunning=true;
			shouldContinueReading=true;
			while(shouldContinueReading && req.readRequest({&handler::readCB, this})) readCB(true);
			readLoopRunning=false;
		}
Beispiel #9
0
long ABLFile::read (unsigned char* buffer, long length) {

	if (file)
		return(readCB(file, buffer, length));
	return(0);
}