Cześć. Kiedy używam tej funkcji:
unsigned int Chunk::randomBiome(unsigned int &nextTo) { srand(time(nullptr)); int isSameBiome = rand()%4; if (isSameBiome < 3) { return nextTo; } else { return rand() % 2; } }
To wywala mi program. Dziwniejsze jest to że dopiero jak odpalam program po raz 2 to wywala. Używam tej funkcji tak:
Chunk::Chunk(Vertices &vertices, unsigned int &nextTo) { biomeType = randomBiome(nextTo); for (short unsigned int i = 0; i < 10; i++) { for (short unsigned int j = 0; j < 10; j++) { figure[i][j] = Figures(vertices.vertices, Logining::gameFiles + "Game/Objects/floor/floorTexture.txt"); figure[i][j].setTransform(glm::vec3(i, 0.0f, j), 0.0f, glm::vec3(1.0f, 1.0f, 1.0f)); } } }
Konstruktor chunka jest używany w pętli głównej w ten sposób:
if (Auxiliary::noOne<glm::vec3, std::vector<glm::vec3> >(activatedChunks, glm::vec3(activatedChunks[checkChunk(window)].x + 10, 0.0f, activatedChunks[checkChunk(window)].z))) { activatedChunks.push_back(glm::vec3(activatedChunks[checkChunk(window)].x + 10, 0.0f, activatedChunks[checkChunk(window)].z)); chunks.push_back(Chunk(chunkFloor, chunks[checkChunk(window)].biomeType)); chunks[chunks.size() - 1].setPositions(activatedChunks[activatedChunks.size() - 1]); }
Jak zwracam coś innego np. losową liczbę, to wszystko jest ok.