From e6f3bef05f95331dbb5a229b578cf94b28f433e9 Mon Sep 17 00:00:00 2001 From: MitchellHansen Date: Tue, 29 Dec 2015 01:10:58 -0800 Subject: [PATCH] Oh wow, I'm going to save this for posterity. This makes a really cool effect, ghosting the nodes positions --- Conways/main.cpp | 64 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 55 insertions(+), 9 deletions(-) diff --git a/Conways/main.cpp b/Conways/main.cpp index 04bbc23..42386a8 100644 --- a/Conways/main.cpp +++ b/Conways/main.cpp @@ -35,7 +35,7 @@ void updateRange(std::vector *node_vec, int start_range_, int end_range_) int main() { std::mt19937 rng(time(NULL)); - std::uniform_int_distribution rgen(0, 4); + std::uniform_int_distribution rgen(0, 10); std::vector node_vec; @@ -63,6 +63,8 @@ int main() { std::stack thread_stack; + sf::Uint8* pixel_array = new sf::Uint8[WINDOW_X * WINDOW_Y * 4]; + while (window.isOpen()) { sf::Event event; @@ -104,18 +106,62 @@ int main() { node_vec[i].ShiftState(); } + + + sf::VertexArray live_node_vertex_array; + + //for (int i = 0; i < node_vec.size(); i++) { + // if (node_vec.at(i).CurrentState() == true) { + + // // 6 vert square, one line heaven + // sf::Vector2f square_dimensions(WINDOW_X / Node::x_bound, WINDOW_Y / Node::y_bound); + + // //sf::Vertex vert1(sf::Vector2f((i % Node::x_bound) * live_node.getGlobalBounds().width, (i / Node::x_bound) * live_node.getGlobalBounds().height), sf::Color(145, 181, 207)); // Top left + // //sf::Vertex vert2(sf::Vector2f((i % Node::x_bound) * live_node.getGlobalBounds().width + square_dimensions.x, (i / Node::x_bound) * live_node.getGlobalBounds().height), sf::Color(145, 181, 207)); // Top right + // //sf::Vertex vert3(sf::Vector2f((i % Node::x_bound) * live_node.getGlobalBounds().width, (i / Node::x_bound) * live_node.getGlobalBounds().height + square_dimensions.y), sf::Color(145, 181, 207)); // Bottom left + + // //sf::Vertex vert4(sf::Vector2f((i % Node::x_bound) * live_node.getGlobalBounds().width, (i / Node::x_bound) * live_node.getGlobalBounds().height + square_dimensions.y), sf::Color(145, 181, 207)); // Bottom left + // //sf::Vertex vert5(sf::Vector2f((i % Node::x_bound) * live_node.getGlobalBounds().width + square_dimensions.x, (i / Node::x_bound) * live_node.getGlobalBounds().height), sf::Color(145, 181, 207)); // Top right + // sf::Vertex vert6(sf::Vector2f((i % Node::x_bound) * live_node.getGlobalBounds().width + square_dimensions.x, (i / Node::x_bound) * live_node.getGlobalBounds().height + square_dimensions.y), sf::Color(145, 181, 207)); // Bottom right + + + // //live_node_vertex_array.append(vert1); + // //live_node_vertex_array.append(vert2); + // //live_node_vertex_array.append(vert3); + // //live_node_vertex_array.append(vert4); + // //live_node_vertex_array.append(vert5); + // live_node_vertex_array.append(vert6); + + + // //live_node.setPosition((i % Node::x_bound) * live_node.getGlobalBounds().width, (i / Node::x_bound) * live_node.getGlobalBounds().height); + + + // } + //} + + sf::Texture texture; + texture.create(WINDOW_X, WINDOW_Y); + + sf::Sprite sprite(texture); + for (int i = 0; i < node_vec.size(); i++) { if (node_vec.at(i).CurrentState() == true) { - live_node.setPosition((i % Node::x_bound) * live_node.getGlobalBounds().width, (i / Node::x_bound) * live_node.getGlobalBounds().height); - window.draw(live_node); - } - else { - //dead_node.setPosition(i % Node::x_bound * dead_node.getGlobalBounds().width, i / Node::x_bound * dead_node.getGlobalBounds().height); - //window.draw(live_node); + + + + pixel_array[i * 4] = 255; // R? + pixel_array[i * 4 + 1] = 255; // G? + pixel_array[i * 4 + 2] = 255; // B? + pixel_array[i * 4 + 3] = 255; // A? + + + } } - - frame_count++; + + texture.update(pixel_array); + window.draw(sprite); + window.display();