void EntityEditor::getGoalInfo(const std::string& id) { Eris::Account* account = EmberServices::getSingleton().getServerService().getAccount(); Atlas::Objects::Operation::Generic get; std::list<std::string> parents; parents.emplace_back("commune"); get->setParents(parents); get->setTo(mEntity.getId()); //By setting it TO an entity and FROM our avatar we'll make the server deliver it as //if it came from the entity itself (the server rewrites the FROM to be of the entity). get->setFrom(mWorld.getAvatar()->getEmberEntity().getId()); //By setting a serial number we tell the server to "relay" the operation. This means that any //response operation from the target entity will be sent back to us. get->setSerialno(Eris::getNewSerialno()); Atlas::Message::MapType goalMap; goalMap["id"] = id; Atlas::Objects::Entity::Anonymous getArg; getArg->setAttr("goal_info", goalMap); get->setArgs1(getArg); Eris::Connection* connection = account->getConnection(); connection->getResponder()->await(get->getSerialno(), this, &EntityEditor::operationGetGoalInfoResult); connection->send(get); }
void EntityEditor::removeGoal(const std::string& id) { Eris::Account* account = EmberServices::getSingleton().getServerService().getAccount(); Atlas::Message::MapType goalElement; goalElement["id"] = id; //By not defining anything else than the id we're telling the server to remove it. Atlas::Objects::Entity::Anonymous thought; thought->setAttr("goal", goalElement); Atlas::Objects::Operation::RootOperation thinkOp; thinkOp->setArgs1(thought); std::list<std::string> parents; parents.emplace_back("think"); thinkOp->setParents(parents); thinkOp->setTo(mEntity.getId()); //By setting it TO an entity and FROM our avatar we'll make the server deliver it as //if it came from the entity itself (the server rewrites the FROM to be of the entity). thinkOp->setFrom(mWorld.getAvatar()->getEmberEntity().getId()); Eris::Connection* connection = account->getConnection(); connection->send(thinkOp); }
void EntityEditor::addKnowledge(const std::string& predicate, const std::string& subject, const std::string& knowledge) { Eris::Account* account = EmberServices::getSingleton().getServerService().getAccount(); Atlas::Objects::Entity::Anonymous thought; thought->setAttr("predicate", predicate); thought->setAttr("subject", subject); thought->setAttr("object", knowledge); Atlas::Objects::Operation::RootOperation thinkOp; thinkOp->setArgs1(thought); std::list<std::string> parents; parents.emplace_back("think"); thinkOp->setParents(parents); thinkOp->setTo(mEntity.getId()); //By setting it TO an entity and FROM our avatar we'll make the server deliver it as //if it came from the entity itself (the server rewrites the FROM to be of the entity). thinkOp->setFrom(mWorld.getAvatar()->getEmberEntity().getId()); Eris::Connection* connection = account->getConnection(); connection->send(thinkOp); }