void generateSceneElements() { destroyElements(); /* Only generate elements for non-emtpy scanrows */ std::vector<int> scanrowInd; for (size_t i = 0; i < scanrowCount; ++i) if (scanrowVert[i].v[0].size() > 0) scanrowInd.push_back(i); generateElements(scanrowInd); }
Shrinkable<Container> generate(std::size_t count, const Random &random, int size, const Gen<Ts> &... gens) const { const auto strategy = m_strategy; auto shrinkables = strategy.generateElements(random, size, count, gens...); using Elements = decltype(shrinkables); return shrinkable::map( shrinkable::shrinkRecur(std::move(shrinkables), [=](const Elements &elements) { return strategy.shrinkElements(elements); }), &toContainer<Container, typename Elements::value_type::ValueType>); }
/** \brief Generates the vertices and elements necessary to represent the heightmap * */ void Heightmap::create() { heightmap.loadFromFile(imagePath); mapWidth = heightmap.getSize().y; mapDepth = heightmap.getSize().x; vertexSize = mapDepth * mapWidth * 6; elementSize = 3*(vertexSize*3 - mapDepth*3 - (mapWidth-1)*3); vertices = new GLfloat[vertexSize]; elements = new GLuint[elementSize]; generateWorld(heightmap, vertices); generateElements(elements, vertices); }
Shrinkable<Container> generate(const Random &random, int size, const Gen<Ts> &... gens) const { const auto strategy = m_strategy; auto r = random; std::size_t count = r.split().next() % (size + 1); auto shrinkables = strategy.generateElements(r, size, count, gens...); using Elements = decltype(shrinkables); return shrinkable::map( shrinkable::shrinkRecur(std::move(shrinkables), [=](const Elements &elements) { return seq::concat( shrink::removeChunks(elements), strategy.shrinkElements(elements)); }), &toContainer<Container, typename Elements::value_type::ValueType>); }
Shrinkable<Array> generate(const Random &random, int size, const Gen<U> &gen) const { const auto strategy = m_strategy; auto shrinkables = strategy.generateElements(random, size, N, gen); return shrinkable::map( shrinkable::shrinkRecur(std::move(shrinkables), [=](const Shrinkables<U> &elements) { return strategy.shrinkElements(elements); }), [](const Shrinkables<U> &elements) { Array array; for (std::size_t i = 0; i < N; i++) { array[i] = elements[i].value(); } return array; }); }