31 #include "Utilities/Array/ArrayView.h" 32 #include "Core/Resources/AssetManager.h" 33 #include "Utilities/Array/Array2D.h" 44 static MeshHandle CreatePlane(
size_t UVrepeats = 1);
45 static MeshHandle CreateSphere(
size_t polygons = 30);
47 static TextureHandle CreateGridTexture(
size_t textureSize = 512,
float borderScale = 0.01f);
49 template<
typename Func>
50 static MeshHandle CreateSurface(Func&& f,
float xsize,
float ysize,
float step)
52 static_assert(std::is_same<
float, decltype(f(0.0f, 0.0f))>::value,
"Func must accept two floats and output one float");
53 MX_ASSERT(step > 0.0f);
54 MX_ASSERT(xsize > 0.0f);
55 MX_ASSERT(ysize > 0.0f);
57 size_t intxsize =
static_cast<size_t>(xsize / step);
58 size_t intysize =
static_cast<size_t>(ysize / step);
60 heights.
resize(intxsize, intysize);
62 for (
size_t x = 0; x < intxsize; x++)
64 for (
size_t y = 0; y < intysize; y++)
68 heights[x][y] = f(fx, fy);
71 return Primitives::CreateSurface(heights);
Definition: AbstractFactory.h:61
Definition: MeshData.h:48
Definition: Primitives.h:37
void resize(size_t width, size_t height, T value=T())
Definition: Array2D.h:166
Definition: Application.cpp:49