void HexagonGame::drawBackground() { float div{360.f / getSides() * 1.0001f}; float distance{1500}; VertexArray vertices{PrimitiveType::Triangles, 3}; for(int i{0}; i < getSides(); i++) { float angle { div * i }; Color currentColor { styleData.getCurrentA() }; if (i % 2 == 0) { currentColor = styleData.getCurrentB(); if (i == getSides() - 1) currentColor = getColorDarkened(currentColor, 1.4f); } Vector2f p1 = getOrbit(centerPos, angle + div * 0.5f, distance); Vector2f p2 = getOrbit(centerPos, angle - div * 0.5f, distance); vertices.append(Vertex{centerPos, currentColor}); vertices.append(Vertex{p1, currentColor}); vertices.append(Vertex{p2, currentColor}); } gameTexture.draw(vertices); }
string phdWarper::getAsString() { double x, y; string _str; _str = "W;"; _str += ofToString(getSides()) + ";"; getSource(0, x, y); _str += ofToString(x) + ";" + ofToString(y) + ";"; getSource(1, x, y); _str += ofToString(x) + ";" + ofToString(y) + ";"; getSource(2, x, y); _str += ofToString(x) + ";" + ofToString(y) + ";"; getSource(3, x, y); _str += ofToString(x) + ";" + ofToString(y) + ";"; getTarget(0, x, y); _str += ofToString(x) + ";" + ofToString(y) + ";"; getTarget(1, x, y); _str += ofToString(x) + ";" + ofToString(y) + ";"; getTarget(2, x, y); _str += ofToString(x) + ";" + ofToString(y) + ";"; getTarget(3, x, y); _str += ofToString(x) + ";" + ofToString(y) + ";"; _str += "\n"; return _str; }
void HexagonGame::draw() { wallQuads.clear(); styleData.computeColors(); window.clear(Color::Black); if(!Config::getNoBackground()) { backgroundCamera.apply(); styleData.drawBackground(window, ssvs::zeroVec2f, getSides()); } if(Config::get3D()) { status.drawing3D = true; float effect{styleData._3dSkew * Config::get3DMultiplier() * status.pulse3D}; Vec2f skew{1.f, 1.f + effect}; backgroundCamera.setSkew(skew); for(auto i(0u); i < depthCameras.size(); ++i) { Camera& depthCamera(depthCameras[i]); depthCamera.setView(backgroundCamera.getView()); depthCamera.setSkew(skew); depthCamera.setOffset({0, styleData._3dSpacing * (i * styleData._3dPerspectiveMult) * (effect * 3.6f)}); } for(auto i(0u); i < depthCameras.size(); ++i) { status.overrideColor = getColorDarkened(styleData.get3DOverrideColor(), styleData._3dDarkenMult); status.overrideColor.a /= styleData._3dAlphaMult; status.overrideColor.a -= i * styleData._3dAlphaFalloff; depthCameras[i].apply(); manager.draw(); render(wallQuads); } status.drawing3D = false; } backgroundCamera.apply(); manager.draw(); render(wallQuads); overlayCamera.apply(); drawText(); if(Config::getFlash()) render(flashPolygon); if(mustTakeScreenshot) { window.saveScreenshot("screenshot.png"); mustTakeScreenshot = false; } }
void HexagonGame::draw() { styleData.computeColors(); window.clear(Color::Black); if(!getNoBackground()) { backgroundCamera.apply(); styleData.drawBackground(window.getRenderWindow(), {0, 0}, getSides()); } if(get3D()) { status.drawing3D = true; float effect{styleData.get3DSkew() * get3DMultiplier() * status.pulse3D}; Vector2f skew{1.f, 1.f + effect}; backgroundCamera.setSkew(skew); for(unsigned int i{0}; i < depthCameras.size(); ++i) { Camera& depthCamera(depthCameras[i]); depthCamera.setView(backgroundCamera.getView()); depthCamera.setSkew(skew); depthCamera.setOffset({0, styleData.get3DSpacing() * (i * styleData.get3DPerspectiveMultiplier()) * (effect * 3.6f)}); } for(unsigned int i{0}; i < depthCameras.size(); ++i) { status.overrideColor = getColorDarkened(styleData.get3DOverrideColor(), styleData.get3DDarkenMultiplier()); status.overrideColor.a /= styleData.get3DAlphaMultiplier(); status.overrideColor.a -= i * styleData.get3DAlphaFalloff(); depthCameras[i].apply(); manager.draw(); } status.drawing3D = false; } backgroundCamera.apply(); manager.draw(); overlayCamera.apply(); drawText(); if(getFlash()) render(flashPolygon); if(mustTakeScreenshot) { window.getRenderWindow().capture().saveToFile("screenshot.png"); mustTakeScreenshot = false; } }