Example #1
0
void Ascenseur::run()
{
    if (in_asserv)
    {
        if (target == HAUT)
        {
            if (bumper_asc_haut.is_on())
            {
                in_asserv = false;
                send_zeros();
            }
            //else if (tic_odo < TIC_HAUT)
            //{
           //     send_monte();
            //}
           else
            {
                send_monte();
            }
                
        }
        else if (target == BAS)
        {
          /*if (tic_odo > TIC_BAS)
            {
                send_desc();
            }*/
          if (bumper_asc_bas.is_on())
            {
                Serial.println("ASS FINI");
                send_zeros();
                in_asserv = false;
            }
          else
            {
                send_desc();
            }
        }
        else 
        {
            if (tic_odo > target + 10)
            {
                send_monte(); 
            }
            else if (tic_odo < target - 10 )
            {
                send_desc();
            }
            else if (tic_odo < target)
            {
                send_maintien_p();
            }
            else if (tic_odo >= target)
            {
                send_zeros();
            }
        }
    }
}
Example #2
0
void LLXmlImport::onUpdatePrim(LLViewerObject* object)
{
	if(object != NULL)
		if( !(LLXmlImport::sImportInProgress
			&& LLXmlImport::sExpectedUpdate == object->getID()))
				return;

	LLImportObject* from = sPrims[sPrimIndex];

	// Volume params
	LLVolumeParams params = from->getVolume()->getParams();
	object->setVolume(params, 0, false);
	object->sendShapeUpdate();

	// Extra params
	if(from->isFlexible())
	{
		LLFlexibleObjectData flex = *((LLFlexibleObjectData*)from->getParameterEntry(LLNetworkData::PARAMS_FLEXIBLE));
		object->setParameterEntry(LLNetworkData::PARAMS_FLEXIBLE, flex, true);
		object->setParameterEntryInUse(LLNetworkData::PARAMS_FLEXIBLE, TRUE, true);
		object->parameterChanged(LLNetworkData::PARAMS_FLEXIBLE, true);
	}
	else
	{
		// send param not in use in case the supply prim has it
		object->setParameterEntryInUse(LLNetworkData::PARAMS_FLEXIBLE, FALSE, true);
		object->parameterChanged(LLNetworkData::PARAMS_FLEXIBLE, true);
	}
	if (from->getParameterEntryInUse(LLNetworkData::PARAMS_LIGHT))
	{
		LLLightParams light = *((LLLightParams*)from->getParameterEntry(LLNetworkData::PARAMS_LIGHT));
		object->setParameterEntry(LLNetworkData::PARAMS_LIGHT, light, true);
		object->setParameterEntryInUse(LLNetworkData::PARAMS_LIGHT, TRUE, true);
		object->parameterChanged(LLNetworkData::PARAMS_LIGHT, true);
	}
	else
	{
		// send param not in use in case the supply prim has it
		object->setParameterEntryInUse(LLNetworkData::PARAMS_LIGHT, FALSE, true);
		object->parameterChanged(LLNetworkData::PARAMS_LIGHT, true);
	}
	if (from->getParameterEntryInUse(LLNetworkData::PARAMS_SCULPT))
	{
		LLSculptParams sculpt = *((LLSculptParams*)from->getParameterEntry(LLNetworkData::PARAMS_SCULPT));
		if(sXmlImportOptions->mReplaceTexture && sTextureReplace.find(sculpt.getSculptTexture()) != sTextureReplace.end())
			sculpt.setSculptTexture(sTextureReplace[sculpt.getSculptTexture()]);
		object->setParameterEntry(LLNetworkData::PARAMS_SCULPT, sculpt, true);
		object->setParameterEntryInUse(LLNetworkData::PARAMS_SCULPT, TRUE, true);
		object->parameterChanged(LLNetworkData::PARAMS_SCULPT, true);
	}
	else
	{
		// send param not in use in case the supply prim has it
		object->setParameterEntryInUse(LLNetworkData::PARAMS_SCULPT, FALSE, true);
		object->parameterChanged(LLNetworkData::PARAMS_SCULPT, true);
	}

	// Textures
	U8 te_count = from->getNumTEs();
	for (U8 i = 0; i < te_count; i++)
	{
		const LLTextureEntry* wat = from->getTE(i);
		LLTextureEntry te = *wat;
		if(sXmlImportOptions->mReplaceTexture && sTextureReplace.find(te.getID()) != sTextureReplace.end())
			te.setID(sTextureReplace[te.getID()]);
		object->setTE(i, te);
	}
	object->sendTEUpdate();	

	// Name
	std::string name = from->mPrimName;
	if(name.empty())
		name = "Object"; //set to Object just incase the import prim isnt Object.
	
	gMessageSystem->newMessageFast(_PREHASH_ObjectName);
	gMessageSystem->nextBlockFast(_PREHASH_AgentData);
	gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
	gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
	gMessageSystem->nextBlockFast(_PREHASH_ObjectData);
	gMessageSystem->addU32Fast(_PREHASH_LocalID, object->getLocalID());
	gMessageSystem->addStringFast(_PREHASH_Name, name);
	gAgent.sendReliableMessage();
			
	//Description
	std::string desc = from->mPrimDescription;
	if(from->importIsAttachment) //special description tracker
	{
		desc = from->mId;
	}
	else
	{
		if(desc.empty())
			desc = "(No Description)";
	}
	send_desc(object->getLocalID(), desc);

	sExpectedUpdate = LLUUID::null;
	sPrimIndex++;
	/////// finished block /////////
	if(sPrimIndex >= (int)sPrims.size())
	{
		// TODO: Remove LLSelectMgr dependencies 
		// Link time
		for(std::map<U32, std::vector<LLViewerObject*> >::iterator itr = sLinkSets.begin();itr != sLinkSets.end();++itr)
		{
			std::vector<LLViewerObject*> linkset = (*itr).second;
			LLSelectMgr::getInstance()->deselectAll();
			LLSelectMgr::getInstance()->selectObjectAndFamily(linkset, true);
//			LLSelectMgr::getInstance()->sendLink(); 
		}

		if(sId2attachpt.size() == 0)
		{
			sImportInProgress = false;
			std::string msg = "Imported " + sXmlImportOptions->mName;
			LLChat chat(msg);
			LLFloaterChat::addChat(chat);
			LLFloaterImportProgress::update();
		}
		else
		{
			// Take attachables into inventory
			sAttachmentsDone = 0;
			if(sLinkSets.size() > 0)
			{
				U32 ip = gAgent.getRegionHost().getAddress();
				U32 port = gAgent.getRegionHost().getPort();
				std::vector<LLUUID> roots;
				roots.resize(sLinkSets.size());
				for(std::map<U32, std::vector<LLViewerObject*> >::iterator itr = sLinkSets.begin();itr != sLinkSets.end();++itr)
				{
					LLUUID id = LLUUID::null;
					LLViewerObjectList::getUUIDFromLocal(id,itr->first,ip,port);
					if(id.notNull())
					{
						roots.push_back(id);
					}
				}
			}
			finish_link();
		}
	}
	else
	{
		LLFloaterImportProgress::update();
		rez_supply();
	}
}