diff --git a/Source/Utility/RadialGrid.cpp b/Source/Utility/RadialGrid.cpp new file mode 100644 index 000000000..be9fcc3b7 --- /dev/null +++ b/Source/Utility/RadialGrid.cpp @@ -0,0 +1,18 @@ +#include "Utility/RadialGrid.h" + +#include + +// FUNCTION: fn_18251 +std::vector GenerateRadialGrid(const RadialGridPoint& center, int radius) { + std::vector points; + const std::uint32_t diameter = static_cast(radius) * 2u + 1u; + points.reserve(diameter * diameter); + + for (int x = -radius; x <= radius; ++x) { + for (int y = -radius; y <= radius; ++y) { + points.push_back({static_cast(x) + center.x, static_cast(y) + center.y}); + } + } + + return points; +} diff --git a/Source/Utility/RadialGrid.h b/Source/Utility/RadialGrid.h new file mode 100644 index 000000000..da24116d3 --- /dev/null +++ b/Source/Utility/RadialGrid.h @@ -0,0 +1,13 @@ +#ifndef RAGNAROK_SOURCE_UTILITY_RADIALGRID_H +#define RAGNAROK_SOURCE_UTILITY_RADIALGRID_H + +#include + +struct RadialGridPoint { + /* 0000 */ float x; + /* 0004 */ float y; +}; + +std::vector GenerateRadialGrid(const RadialGridPoint& center, int radius); + +#endif diff --git a/compile.json b/compile.json index ac5d365ed..6a4298174 100644 --- a/compile.json +++ b/compile.json @@ -587,6 +587,7 @@ "Source/Utility/Math/AffineMatrix.cpp": 0, "Source/Utility/Math/ClientAngles.cpp": 0, "Source/Utility/Math/RayTriangle.cpp": 0, + "Source/Utility/RadialGrid.cpp": 0, "Source/Utility/Rijndael.cpp": 0, "Source/Utility/Text/FormatString.cpp": 0, "Source/Utility/Text/GroupedInteger.cpp": 0,