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; }
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; } }