Example #1
0
void Game::init(Inputs inputs, shared_ptr<GameStateObserver> state_observer) {
    REQUIRE(!initialised);
    REQUIRE(inputs.size() == PLAYER_COUNT);
    this->inputs = inputs;
    this->state_observer = state_observer;
    initialised = true;
}
Example #2
0
void DrawBounds::run(const RenderContextPointer& renderContext,
    const Inputs& items) {
    RenderArgs* args = renderContext->args;

    uint32_t numItems = (uint32_t) items.size();
    if (numItems == 0) {
        return;
    }

    static const uint32_t sizeOfItemBound = sizeof(ItemBound);
    if (!_drawBuffer) {
        _drawBuffer = std::make_shared<gpu::Buffer>(sizeOfItemBound);
    }

    _drawBuffer->setData(numItems * sizeOfItemBound, (const gpu::Byte*) items.data());

    gpu::doInBatch("DrawBounds::run", args->_context, [&](gpu::Batch& batch) {
        args->_batch = &batch;

        // Setup projection
        glm::mat4 projMat;
        Transform viewMat;
        args->getViewFrustum().evalProjectionMatrix(projMat);
        args->getViewFrustum().evalViewTransform(viewMat);
        batch.setProjectionTransform(projMat);
        batch.setViewTransform(viewMat);
        batch.setModelTransform(Transform());

        // Bind program
        batch.setPipeline(getPipeline());

        glm::vec4 color(glm::vec3(0.0f), -(float) numItems);
        batch._glUniform4fv(_colorLocation, 1, (const float*)(&color));
        batch.setResourceBuffer(0, _drawBuffer);

        static const int NUM_VERTICES_PER_CUBE = 24;
        batch.draw(gpu::LINES, NUM_VERTICES_PER_CUBE * numItems, 0);
    });
}
void MyoThread::applay(const Inputs& inputs,const DataFlags& flags,ApplyCallback callback)
{
    //size of row
    size_t count = 0;
    size_t rowSize = flags.lineSize<8>() / flags.mReps;
    //get max time
    double maxTime = inputs[inputs.size()-1].getTime();
    //for all rows
    for(const auto& row : inputs)
    {
        //index
        size_t i = 0;
        size_t irow = rowSize*count;
        //
        if(flags.mTime)
        {
            callback(i + irow, i, flags.toNormalize( row.getTime() , maxTime )); ++i;
        }
        if(flags.mGyroscope)
        {
            auto gyr = flags.apply( row.getGyroscope() );
            callback(i + irow, i, gyr.x()); ++i;
            callback(i + irow, i, gyr.y()); ++i;
            callback(i + irow, i, gyr.z()); ++i;
        }
        if(flags.mAccelerometer)
        {
            auto acc = flags.apply( row.getAccelerometer() );
            callback(i + irow, i, acc.x()); ++i;
            callback(i + irow, i, acc.y()); ++i;
            callback(i + irow, i, acc.z()); ++i;
            
        }
        if(flags.mQuaternion)
        {
            auto quad =  flags.apply( row.getQuaternion() );
            callback(i + irow, i, quad.x()); ++i;
            callback(i + irow, i, quad.y()); ++i;
            callback(i + irow, i, quad.z()); ++i;
            callback(i + irow, i, quad.z()); ++i;
        }
        if(flags.mPitch || flags.mYaw || flags.mRoll)
        {
            auto euler = row.getEulerAngles();
            
            if(flags.mPitch)
            {
                callback(i + irow, i, flags.apply( (double)euler.pitch() , (M_PI*2.0) )); ++i;
            }
            if(flags.mYaw)
            {
                callback(i + irow, i, flags.apply( (double)euler.yaw() , (M_PI*2.0) )); ++i;
            }
            if(flags.mRoll)
            {
                callback(i + irow, i, flags.apply( (double)euler.roll() , (M_PI*2.0) )); ++i;
            }
        }
        if(flags.mEmg)
        {
            for(auto emg:row.getEmg())
            {
                callback(i + irow, i,  flags.apply( ((double)emg) , 128.0 ));  ++i;
            }
        }
        //next
        ++count;
    }
}