예제 #1
0
//sets the new positon to the given values, informs all other objects about the collision if needed, updates the grid
void Field::updatePosition(const float &xNew, const float &yNew)
{
	if (x != xNew || y != yNew) {
		updateMetrics(metrics, affectedGrids, (int32_t)xNew, (int32_t)yNew);

		applyCollision();

		int32_t newGridX = (int32_t)floor(xNew / GRID_SIZE);
		int32_t newGridY = (int32_t)floor(yNew / GRID_SIZE);

		if (xGridded != newGridX || yGridded != newGridY)
		{
			removeFromMap();

			x = xNew;
			y = yNew;
	
			xGridded = newGridX;
			yGridded = newGridY;

			insertIntoMap();
		}
		else
		{
			x = xNew;
			y = yNew;
	
			xGridded = newGridX;
			yGridded = newGridY;
		}
	}
}
예제 #2
0
void ContinuousAnim::abort()
{
    if (isRunning()) {
        AnimPtr tempThis = shared_from_this();
        removeFromMap();
        setStopped();
    }
}
예제 #3
0
void OS2LPlugin::closeInput(quint32 input, quint32 universe)
{
    enableTCPServer(false);

    removeFromMap(input, universe, Input);

    m_inputUniverse = UINT_MAX;
}
예제 #4
0
void DMXUSB::closeOutput(quint32 output, quint32 universe)
{
    if (output < quint32(m_outputs.size()))
    {
        removeFromMap(output, universe, Output);
        m_outputs.at(output)->close(output, false);
    }
}
예제 #5
0
void GPIOPlugin::closeOutput(quint32 output, quint32 universe)
{
    if (output != 0)
        return;

    m_outputUniverse = UINT_MAX;

    removeFromMap(output, universe, Output);
}
예제 #6
0
void CompPinStruct::setRefDes(const CString& refDes)
{
   if (m_refDes != refDes)
   {
      removeFromMap();

      m_refDes = refDes;

      addToMap();
   }
}
예제 #7
0
void* UA_memoryManager_realloc(void *ptr, size_t new_size) {
    removeFromMap(ptr);
    if (totalMemorySize + new_size > memoryLimit)
        return NULL;
    void *addr = realloc(ptr, new_size);
    if (!addr)
        return NULL;
    addToMap(new_size, addr);
    return addr;

}
예제 #8
0
void HIDPlugin::closeOutput(quint32 output, quint32 universe)
{
    HIDDevice* dev = deviceOutput(output);
    if (dev != NULL)
    {
        removeFromMap(output, universe, Output);
        dev->closeOutput();
    }
    else
        qDebug() << name() << "has no output number:" << output;
}
예제 #9
0
/**
* @brief 
*/
void FeedProvider::cleanup()
{
    setEnded();
    removeFromMap();
    mConsumerMutex.lock();
    for ( ConsumerMap::iterator iter = mConsumers.begin(); iter != mConsumers.end(); iter++ )
        if ( iter->first->hasProvider( *this ) )
            iter->first->deregisterProvider( *this, false );
    mConsumers.clear();
    mConsumerMutex.unlock();
}
예제 #10
0
void CompPinStruct::setPinName(const CString& pinName)
{
   if (m_pinName != pinName)
   {
      removeFromMap();

      m_pinName = pinName;

      addToMap();
   }
}
예제 #11
0
Animate3D::~Animate3D()
{
    removeFromMap();
    
    for (auto& it : _keyFrameEvent) {
        delete it.second;
    }
    _keyFrameEvent.clear();
    
    CC_SAFE_RELEASE(_animation);
}
예제 #12
0
Definition::~Definition()
{
  if (m_isSymbol) 
  {
    removeFromMap(this);
  }
  if (m_impl)
  {
    delete m_impl;
    m_impl=0;
  }
}
예제 #13
0
void HIDPlugin::closeInput(quint32 input, quint32 universe)
{
    HIDDevice* dev = device(input);
    if (dev != NULL)
    {
        removeFromMap(input, universe, Input);
        dev->closeInput();
        disconnect(dev, SIGNAL(valueChanged(quint32,quint32,quint32,uchar)),
                   this, SIGNAL(valueChanged(quint32,quint32,quint32,uchar)));
    }
    else
        qDebug() << name() << "has no input number:" << input;
}
bool FileFormatManager::removeFormat(const std::string &identifier)
{
  FormatIdVector ids = m_identifiers[identifier];
  m_identifiers.erase(identifier);

  if (ids.empty())
    return false;

  for (FormatIdVector::const_iterator it = ids.begin(), itEnd = ids.end();
       it != itEnd; ++it) {
    FileFormat *fmt = m_formats[*it];

    if (fmt == NULL)
      continue;

    removeFromMap(m_mimeTypes, fmt->mimeTypes(), *it);
    removeFromMap(m_fileExtensions, fmt->fileExtensions(), *it);

    m_formats[*it] = NULL;
    delete fmt;
  }

  return true;
}
예제 #15
0
void SPIPlugin::closeOutput(quint32 output, quint32 universe)
{
    if (output != 0)
        return;

    removeFromMap(output, universe, Output);

    m_referenceCount--;

    if (m_referenceCount == 0)
    {
        if (m_spifd != -1)
            close(m_spifd);
        m_spifd = -1;
    }
}
예제 #16
0
void DMXUSB::closeInput(quint32 input, quint32 universe)
{
    if (input < quint32(m_inputs.size()))
    {
        DMXUSBWidget *widget = m_inputs.at(input);
        removeFromMap(input, universe, Input);
        widget->close(input, true);
        if (widget->type() == DMXUSBWidget::ProRXTX ||
            widget->type() == DMXUSBWidget::ProMk2 ||
            widget->type() == DMXUSBWidget::UltraPro)
        {
            EnttecDMXUSBPro* pro = (EnttecDMXUSBPro*) widget;
            disconnect(pro, SIGNAL(valueChanged(quint32,quint32,quint32,uchar)),
                       this, SIGNAL(valueChanged(quint32,quint32,quint32,uchar)));
        }
    }
}
void LLViewerObjectList::cleanupReferences(LLViewerObject *objectp)
{
	LLMemType mt(LLMemType::MTYPE_OBJECT);
	if (mDeadObjects.find(objectp->mID) != mDeadObjects.end())
	{
		llinfos << "Object " << objectp->mID << " already on dead list!" << llendl;	
	}
	else
	{
		mDeadObjects.insert(objectp->mID);
	}

	// Cleanup any references we have to this object
	// Remove from object map so noone can look it up.

	mUUIDObjectMap.erase(objectp->mID);
	mUUIDAvatarMap.erase(objectp->mID);//No need to be careful here.
	
	//if (objectp->getRegion())
	//{
	//	llinfos << "cleanupReferences removing object from table, local ID " << objectp->mLocalID << ", ip " 
	//				<< objectp->getRegion()->getHost().getAddress() << ":" 
	//				<< objectp->getRegion()->getHost().getPort() << llendl;
	//}	
	
	removeFromLocalIDTable(*objectp);

	if (objectp->onActiveList())
	{
		//llinfos << "Removing " << objectp->mID << " " << objectp->getPCodeString() << " from active list in cleanupReferences." << llendl;
		objectp->setOnActiveList(FALSE);
		mActiveObjects.erase(objectp);
	}

	if (objectp->isOnMap())
	{
		removeFromMap(objectp);
	}

	// Don't clean up mObject references, these will be cleaned up more efficiently later!
	// Also, not cleaned up
	removeDrawable(objectp->mDrawable);

	mNumDeadObjects++;
}
예제 #18
0
void Field::onUsed(const ToolTypes &toolType, const int32_t &toolLevel)
{
	if (toolType == appropriateTool)
	{
		health -= 2*toolLevel*deltaTime;
	}
	else
	{
		health -= toolLevel*deltaTime;
	}

	if (health <= 0)
	{
		removeFromMap();

		delete this;
		return;
	}
}
예제 #19
0
void FieldBackSilver::onUsed(const ToolTypes &toolType, const int32_t &toolLevel)
{
	if (toolType == appropriateTool)
	{
		health -= 2*toolLevel*deltaTime;
	}
	else
	{
		health -= toolLevel*deltaTime;
	}

	if (health <= 0)
	{
		InventoryObject* inventoryObject = new InventorySilver(1);
		world.player.inventory.add(inventoryObject);

		removeFromMap();

		delete this;
		return;
	}
}
예제 #20
0
Animate3D::~Animate3D()
{
    removeFromMap();
    
    CC_SAFE_RELEASE(_animation);
}
예제 #21
0
void Animate3D::stop()
{
    removeFromMap();
    
    ActionInterval::stop();
}
예제 #22
0
void UA_memoryManager_free(void* ptr) {
    removeFromMap(ptr);
    free(ptr);
}
예제 #23
0
void SimpleAnim::remove() 
{
    AnimPtr tempThis = shared_from_this();
    removeFromMap();
    setStopped();
}
예제 #24
0
void cGameServer::doDeath(int id)
{
    //printf("%d(%s) type %d died to %d(%s) type %d\n",id,player[id].name,player[id].type,player[id].target,player[player[id].target].name,player[player[id].target].type);
    //run death script

    mlscript.run(1005,id);

    if(player[id].hp > 0)//script revived player
        return;

    //announce death and assign experience
    if(player[id].type==PLAYER)
    {
        //exp loss

        player[id].exp = (unsigned long) ( float(player[id].exp) * 0.666f);

        sendEXPMsg(id);
    }
    if(player[id].type==NPC && player[player[id].target].type==PLAYER && player[player[id].target].lvl<255)
    {

        player[player[id].target].exp+=player[id].worth;//+expBonus(player[player[id].target].wis,player[player[id].target].lvl);

        sendEXPMsg(player[id].target);
    }
    //set this spot to vacant

    world[player[id].map].map[player[id].y][player[id].x].space=VACANT;

    //do loot drop
    if(player[id].type==NPC && player[id].state != MERCHANT)
    {
        for(int c=0; c<MAX_INV; c++)
            if( player[id].inventory[c]>-1)
            {
                int invitem=player[id].inventory[c];
                //switch from player to ground

                ml_items.item[invitem].owner=-1;
                ml_items.item[invitem].map=player[id].map;
                ml_items.item[invitem].x=player[id].x;
                ml_items.item[invitem].y=player[id].y;
                player[id].inventory[c]=-1;


                //send add map item
                sendAddMapItem(ml_items.item[invitem].graphic,player[id].map,player[id].x,player[id].y);

                //insert into db now that item is no longer on npc
                mydb.insertItem(&ml_items.item[invitem]);
            }
        //refill npcs inventory
        doNpcFill(id);
    }
    else if(player[id].type==PLAYER)
    {
        //unequip all

        player[id].eLeft=-1;
        player[id].eRight=-1;
        player[id].eBody=-1;
        player[id].eHead=-1;
        player[id].eSpecial=-1;


        sendEquipMsg(id);

        //death drop
        for(int c=0; c<MAX_INV; c++)
            if( player[id].inventory[c]>-1 &&
                    rand()%3==0 &&
                    player[id].lvl>=newbieLevel &&
                    ml_items.item[player[id].inventory[c]].stack!=PERMANENT)
            {
                //send inventory removal
                sendInventoryRemove(itod(id),ml_items.item[player[id].inventory[c]].slot,ml_items.item[player[id].inventory[c]].qty);

                //send add map item
                sendAddMapItem(ml_items.item[player[id].inventory[c]].graphic,player[id].map,player[id].x,player[id].y);

                //switch from player to ground

                ml_items.item[player[id].inventory[c]].owner=-1;
                ml_items.item[player[id].inventory[c]].map=player[id].map;
                ml_items.item[player[id].inventory[c]].x=player[id].x;
                ml_items.item[player[id].inventory[c]].y=player[id].y;
                updateItem(player[id].inventory[c]);
                player[id].inventory[c]=-1;
                //save item


            }

        player[id].x = player[id].origin_x;
        player[id].y = player[id].origin_y;
        player[id].map = player[id].origin_map;

    }
    //reset hp

    player[id].hp=player[id].mhp;
    player[id].mp=player[id].mmp;
    if(player[id].origin_map!=-1)
    {
        player[id].x = player[id].origin_x;
        player[id].y = player[id].origin_y;
        player[id].map = player[id].origin_map;
    }

    if(player[id].type==PLAYER)
    {
        //send to origin
        sendMycrMsg(itod(id),id);
    }
    //Sleep(1000); //Death bug emulation
    //send back to origin for NPC
    if(player[id].type==NPC)
    {
        if(player[id].origin_map==-1)
        {
            removeFromMap(id,player[id].map);
            player[id].current_map=-1;
            player[id].access=-1;
        }

        player[id].randomize();

        //respawn time
        if(!player[id].total_time)
        {
            if(player[id].state==MERCHANT)
                player[id].total_time = 70;
            else
                player[id].total_time = 675;
        }

        int x=0;
        while(world[player[id].map].map[player[id].y][player[id].x].type!=OPEN || world[player[id].map].map[player[id].y][player[id].x].space!=VACANT)
        {

            player[id].randomize();

            x++;
            if(x>600)
            {
                newLine("map %d too crowded!\n",player[id].map);
                break;
            }
        }
    }
    //send hp if player
    if(player[id].type==PLAYER)
    {
        //save player
        mydb.updatePlayer(&player[id]);
        //send hp here
        sendHPMsg(id);
        sendMPMsg(id);
    }
    else
        player[id].target=-1;
}