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; }
	}
Exemple #4
0
	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; }
	}