sigonasr2 adc9296171 Magnarune wanted circles
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
2022-10-14 23:25:41 -05:00

71 lines
1.5 KiB
C++

#define OLC_PGE_APPLICATION
#include "pixelGameEngine.h"
using namespace olc;
class Circles : public olc::PixelGameEngine
{
public:
Circles()
{
sAppName = "Circles";
}
public:
int CIRCLE_PRECISION=32;
void DrawCircleDecal(vf2d pos,float radius,Pixel col=WHITE) {
std::vector<vf2d> poly;
std::vector<vf2d> uvs;
for (int i=0;i<CIRCLE_PRECISION;i++) {
poly.push_back({pos.x+sinf(2*M_PI/CIRCLE_PRECISION*i)*radius,pos.y+cosf(2*M_PI/CIRCLE_PRECISION*i)*radius});
uvs.push_back({0,0});
}
poly.push_back(poly[0]);
uvs.push_back({0,0});
SetDecalStructure(DecalStructure::LINE);
SetDecalMode(DecalMode::WIREFRAME);
DrawPolygonDecal(nullptr,poly,uvs,col);
SetDecalMode(DecalMode::NORMAL);
SetDecalStructure(DecalStructure::FAN);
}
void FillCircleDecal(vf2d pos,float radius,Pixel col=WHITE) {
std::vector<vf2d> poly;
std::vector<vf2d> uvs;
poly.push_back(pos);
uvs.push_back({0,0});
for (int i=0;i<CIRCLE_PRECISION;i++) {
poly.push_back({pos.x+sinf(2*M_PI/CIRCLE_PRECISION*i)*radius,pos.y+cosf(2*M_PI/CIRCLE_PRECISION*i)*radius});
uvs.push_back({0,0});
}
poly.push_back(poly[1]);
uvs.push_back({0,0});
DrawPolygonDecal(nullptr,poly,uvs,col);
}
bool OnUserCreate() override
{
// Called once at the start, so create things here
return true;
}
bool OnUserUpdate(float fElapsedTime) override
{
// called once per frame
DrawCircleDecal({50,50},10,BLUE);
FillCircleDecal({100,100},20,GREEN);
return true;
}
};
int main()
{
Circles demo;
if (demo.Construct(256, 240, 4, 4))
demo.Start();
return 0;
}