Main.cpp
# include <Siv3D.hpp>
void DrawLoading(
const Vec2& pos,
double radius,
int num,
double speed,
std::function<void(const Vec2& pos, double radius, double radian)> func)
{
const double dNum = static_cast<double>(num);
const double dif = TwoPi / dNum;
for (int i = 0; i < num; ++i)
{
const double radian = i * dif;
const Vec2 tPos = pos + Circular(radius, radian);
const double phase = System::FrameCount() * (-speed) + radian / 2.0;
const double tRadius = atan(Tan(phase)) / Pi + 1.0 / 2.0;
func(tPos, tRadius, radian);
}
}
void Main()
{
const Font font(30);
std::array<std::function<void(const Vec2& pos, double radius, double radian)>, 3> funcs = {
[](const Vec2& pos, double radius, double radian)
{
Circle(pos, radius * 10.0).draw();
},
[](const Vec2& pos, double radius, double radian)
{
RectF(radius*10.0, radius*10.0).setCenter(pos).rotate(radian).draw();
},
[](const Vec2& pos, double radius, double radian)
{
RectF(10.0, 20.0).setCenter(pos).rotate(radian).draw(ColorF(1.0, radius));
}
};
int i = 0;
while (System::Update())
{
font.draw(L"画面クリックで種類を変える");
if (Mouse::LeftClicked())
{
if (!(++i < funcs.size()))
{
i = 0;
}
}
DrawLoading(Mouse::Pos(), 50.0, 10, 0.05, funcs.at(i));
}
}