Example #1
0
void GLOBALDATA::make_bgupdate (int32_t x, int32_t y, int32_t w, int32_t h)
{
	if (lastUpdatesCount >= env.max_screen_updates) {
		make_fullUpdate();
		return;
	}

	assert( (w > 0) && (h > 0) );

	if ( (w > 0) && (h > 0) )
		addUpdate(x, y, w, h, lastUpdates, lastUpdatesCount);
}
Example #2
0
void GLOBALDATA::make_update (int32_t x, int32_t y, int32_t w, int32_t h)
{
	if (updateCount >= env.max_screen_updates) {
		make_fullUpdate();
		return;
	}

	// These asserts should catch screwed updates that make no sense
	assert( (h <= env.screenHeight) && (w <= env.screenWidth) );
	assert( (w > 0) && (h > 0) );

	if ( (h > 0) && (w > 0) )
		addUpdate(x, y, w, h, updates, updateCount);
}
Example #3
0
    void Panel::addUpdatePixels(Point *point, int pixelWidth,
            int pixelHeight)
    {
        Rectangle rect;
        float sizeX, sizeY;
        sizeX = pixelWidth + 1;
        sizeY = pixelHeight + 1;

        rect.setLeft(point->x() - sizeX/2.0);
        rect.setTop(point->y() - sizeY/2.0);
        rect.setRight(point->x() + sizeX/2.0);
        rect.setBottom(point->y() + sizeY/2.0);

        addUpdate(&rect);
    }
Example #4
0
void Game::sendUpdates()
{

    if(_onHit.size() > 0)
    {
        book::packet::OnHitEntity update;
        for(book::packet::OnHitEntity::Data& data: _onHit)
        {
            update.add(std::move(data));
        }

        sf::Packet packet;
        packet<<update;
        sendToAll(packet);

        _onHit.clear();
    }

    if(_onHitted.size() > 0)
    {
        book::packet::OnHittedEntity update;
        for(book::packet::OnHittedEntity::Data& data : _onHitted)
        {
            update.add(std::move(data));
        }

        sf::Packet packet;
        packet<<update;
        sendToAll(packet);

        _onHitted.clear();
    }

    if(_onSpawn.size() > 0)
    {
        book::packet::OnSpawnEntity update;
        for(std::uint32_t id : _onSpawn)
            update.add(id);

        sf::Packet packet;
        packet<<update;
        sendToAll(packet);

        _onSpawn.clear();
    }

    if(_destroyEntityId.size() > 0)
    {
        book::packet::DestroyEntity update;
        for(std::uint32_t id : _destroyEntityId)
            update.add(id);

        sf::Packet packet;
        packet<<update;
        sendToAll(packet);

        _destroyEntityId.clear();
    }

    if(_createEntities.getCreates().size() >0)
    {
        sf::Packet packet;
        packet<<_createEntities;
        sendToAll(packet);

        _createEntities.clear();
    }

    if(_updateEntitiesId.size() > 0)
    {
        book::packet::UpdateEntity update;

        for(std::uint32_t id : _updateEntitiesId)
            addUpdate(update,id);

        sf::Packet packet;
        packet<<update;
        sendToAll(packet);

        _updateEntitiesId.clear();
    }

    if(_updateTeamId.size() > 0)
    {
        book::packet::UpdateTeam update;
        sf::Lock guard(_teamMutex);
        for(std::uint32_t id : _updateTeamId)
        {
            book::packet::UpdateTeam::Data data;
            data.team = id;
            data.gameOver = _teams[id]->isGameOver();
            data.gold = _teams[id]->getGold();

            update.add(std::move(data));
        }
        sf::Packet packet;
        packet<<update;
        sendToAll(packet);

        _updateTeamId.clear();
    }
}
Example #5
0
 void Panel::addUpdateAll()
 {
     if (m_data->updateAreas.size() > 0)
         freeUpdateAreas();
     addUpdate(m_data->visible);
 }
Example #6
0
int ShmCacheManager::processPurgeCmdEx(
    ShmPrivatePurgeData *pPrivate, const char *pValue, int iValLen,
    time_t curTime, int curTimeMS)
{
    int flag;
    const char *pValueEnd, *pNext;
    const char *pEnd = pValue + iValLen;
    while (pValue < pEnd)
    {
        if (isspace(*pValue))
        {
            ++pValue;
            continue;
        }
        pValueEnd = (const char *)memchr(pValue, ',', pEnd - pValue);
        if (!pValueEnd)
            pValueEnd = pNext = pEnd;
        else
            pNext = pValueEnd + 1;

        while (isspace(pValueEnd[-1]))
            --pValueEnd;

        flag = PDF_PURGE;
        if (strncmp(pValue, "tag=", 4) == 0)
        {
            pValue += 4;
            flag |= PDF_TAG;
        }
        if (*pValue == '*')
        {
            if (pValue == pValueEnd - 1)
            {
                //only a "*".
                if (pPrivate)
                    pPrivate->setLastFlushTime(curTime, curTimeMS);
                else
                {
                    CacheInfo *pInfo = (CacheInfo *)m_pStr2IdHash->
                                       offset2ptr(m_CacheInfoOff);
                    pInfo->setPurgeTime(curTime, curTimeMS);
                }
                pValue = pNext;
                continue;
            }
            else
            {
                //prefix
                flag |= PDF_PREFIX;
            }
        }
        else if (pValueEnd[-1] == '*')
            flag |= PDF_POSTFIX;
        if (pPrivate)
        {
            int idTag = getTagId(pValue, pValueEnd - pValue);
            if (idTag != -1)
            {
                purgeinfo_t purgeinfo = { (int32_t)curTime, (int16_t)curTimeMS,
                                          (uint8_t)flag, (uint8_t)idTag
                                        };
                pPrivate->addUpdate(&purgeinfo);
            }
        }
        else
            addUpdate(pValue, pValueEnd - pValue, flag, curTime, curTimeMS);
        pValue = pNext;
    }
    return 0;
}
Example #7
0
HRESULT KinectManager::update(float timeScale)
{
	//first add time to particles and remove them if they're dead
	try{
		pHandPositions->size();
	}
	catch (exception e)
	{
		cout << e.what() << endl;
		return MAKE_HRESULT(0, 0, -1);
	}
	for (vector<Particle*>::iterator hp = pHandPositions->begin(); hp != pHandPositions->end();)
	{
		(*hp)->timer += 16.f / timeScale;

		if ((*hp)->timer > handParticleTimeout)
			hp = pHandPositions->erase(hp);
		else
			++hp;
	}

	if (kinectFailed)
		return MAKE_HRESULT(0, 0, -1);
	
	HRESULT hr;
	if (!kinectInitialized)
	{
		hr = pKinect->NuiStatus();

		if (hr == S_NUI_INITIALIZING)
		{
			cout << "kinect is still initializing...\n";
			return hr;
		}
		else if (FAILED(hr))
		{
			kinectFailed = true;
			return hr;
		}

		//kinect ready, initialize
		kinectInitialized = true;
		startKinect();
	}
	
	// kinect if okay, do updating //

	//get next frame
	hr = pKinect->NuiSkeletonGetNextFrame(5, pSkeletonFrame);

	if (SUCCEEDED(hr))
	{
		//pHandPos->clear();
		ofVec3f pos;
		for (int i = 0; i < NUI_SKELETON_COUNT; i++)
		{
			//if its a tracked skeleton
			if (pSkeletonFrame->SkeletonData[i].eTrackingState == NUI_SKELETON_TRACKED)
			{
				//left hand
				pos = handPositionToScreenPosition(
					pSkeletonFrame->SkeletonData[i].SkeletonPositions[NUI_SKELETON_POSITION_HAND_LEFT]
					);
				addUpdate(pos, pSkeletonFrame->SkeletonData[i].dwTrackingID, NUI_SKELETON_POSITION_HAND_LEFT);

				pos = handPositionToScreenPosition(
					pSkeletonFrame->SkeletonData[i].SkeletonPositions[NUI_SKELETON_POSITION_HAND_RIGHT]
					);
				addUpdate(pos, pSkeletonFrame->SkeletonData[i].dwTrackingID, NUI_SKELETON_POSITION_HAND_RIGHT);
			}
		}
	}
	else if (hr == E_NUI_FRAME_NO_DATA || hr == S_FALSE)
	{
		//new frame was not yet available
		//if (hr == E_NUI_FRAME_NO_DATA)
			//cout << "no Kinect Data" << ofGetFrameNum() << endl;
		return MAKE_HRESULT(0, 0, 1);
	}

	//NUI_IMAGE_FRAME nextFrame;
	//hr = pKinect->NuiImageStreamGetNextFrame(colorStream, 20, &nextFrame);

	return hr;
}
Example #8
0
void PerformanceDialog::processMessages()
{
    //qWarning() << recv;
    bool messagesAvailable = true;
    int maxMessageCount=0;
    while (messagesAvailable)
    {
        QString recv;
        {
            QMutexLocker lock(&mMessagesMutex);
            int numMessages = mMessages.size();
            if (numMessages > maxMessageCount)
            {
                maxMessageCount = numMessages;
            }
            if (numMessages >0) {
                recv = mMessages.front();
                mMessages.pop_front();
            } else {
                messagesAvailable = false;
            }
        }
        if (messagesAvailable) {
            QStringList args = recv.split(" ");
            if (args.length()>=3) {
                double time = args[0].toDouble();
                if (args[2].compare("V_SYNC")==0) {
                    if (!mFirstVSync) {
                        double vsyncduration = (time - mLastVSync);
                        mLastVSync = time;
                        if (vsyncduration < 0.0333) {
                            addVSync(vsyncduration);
                            mCurrentRow++;
                        } else {
                            mCurrentRow+=5;
                            mUpdateStart = 0;
                            mRenderStart = 0;
                            mSwapStart = 0;
                        }
                    }
                    mFirstVSync = false;
                } else if (!mFirstVSync) {
                    // only process other messages if we have already got a vsync, since the timings are impossible without it
                    if (args[2].compare("UPDATE_START")==0) {
                        mUpdateStart = time;
                        mUpdateVSync = mLastVSync;
                        mUpdateRow = mCurrentRow;
                    } else if (args[2].compare("UPDATE_END")==0) {
                        mUpdateEnd = time;
                        if (mUpdateStart != 0)
                            addUpdate();
                    } else if (args[2].compare("RENDER_START")==0) {
                        mRenderStart = time;
                        mRenderVSync = mLastVSync;
                        mRenderRow = mCurrentRow;
                    } else if (args[2].compare("RENDER_END")==0) {
                        mRenderEnd = time;
                        if (mRenderStart != 0)
                            addRender();
                    } else if (args[2].compare("SWAP_START")==0) {
                        mSwapStart = time;
                        mSwapVSync = mLastVSync;
                        mSwapRow = mCurrentRow;
                    } else if (args[2].compare("SWAP_END")==0) {
                        mSwapEnd = time;
                        if (mSwapStart != 0)
                         addSwapBuffers();
                    }
                }
            }
        }
    }
    double verticalSize = KLineSize * mCurrentRow;
    mScene->setSceneRect(0,0,33.33,verticalSize);
    ui->graphicsView->fitInView(0,verticalSize-ui->graphicsView->height(),33.33,ui->graphicsView->height());

    double update_avg = mUpdateValues->average();
    double render_avg = mRenderValues->average();
    double swap_avg = mSwapValues->average();
    double update_max = mUpdateValues->maxValue();
    double render_max = mRenderValues->maxValue();
    double swap_max = mSwapValues->maxValue();
    ui->tableWidget->setItem(0,1,new QTableWidgetItem(QString::number(update_avg)));
    ui->tableWidget->setItem(1,1,new QTableWidgetItem(QString::number(render_avg)));
    ui->tableWidget->setItem(2,1,new QTableWidgetItem(QString::number(swap_avg)));
    ui->tableWidget->setItem(3,1,new QTableWidgetItem(QString::number(update_avg+render_avg+swap_avg)));

    ui->tableWidget->setItem(0,2,new QTableWidgetItem(QString::number(update_max)));
    ui->tableWidget->setItem(1,2,new QTableWidgetItem(QString::number(render_max)));
    ui->tableWidget->setItem(2,2,new QTableWidgetItem(QString::number(swap_max)));

    if (maxMessageCount>32)
    {
        qDebug() << "message count > 32 " << maxMessageCount;
    }
}