Example #1
0
	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);
	}
Example #2
0
  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>);
  }
Example #3
0
/** \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);
}
Example #4
0
  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>);
  }
Example #5
0
  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;
        });
  }