5#include <Infinity/Types/Containers/Array.hpp>
6#include <Infinity/Types/Math/Vector2.hpp>
7#include <Infinity/Types/Math/Vector3.hpp>
8#include <Infinity/Types/Math/Vector4.hpp>
17 class Array2DSerializer;
100 Array2D(
size_t width,
size_t height) :
Array<T>(width * height), _width(width), _height(height) { }
124 Array2D(
size_t width,
size_t height, T* data) :
Array<T>(data, width * height), _width(width), _height(height) { }
137 Array2D(
size_t colStride,
const std::vector<T>& data) :
Array<T>(data), _width(data.size() / colStride), _height(colStride) { }
146 std::unique_ptr<Core::Base>
clone()
const override
148 return std::make_unique<Array2D<T>>(*this);
163 inline size_t width() const noexcept
192 T&
at(
size_t x,
size_t y)
194 return at(y * _width + x);
209 const T&
at(
size_t x,
size_t y)
const
211 return at(y * _width + x);
239 size_t newSize = width * height;
255 using Array<T>::resize;
261 friend class Infinity::IO::Data::Array2DSerializer<T>;
421INFINITY_TYPE(
Infinity::Types::Containers::Array<
Infinity::Types::Containers::Array2D<int8_t>>)
422INFINITY_TYPE(
Infinity::Types::Containers::Array<
Infinity::Types::Containers::Array2D<
float>>)
423INFINITY_TYPE(
Infinity::Types::Containers::Array<
Infinity::Types::Containers::Array2D<
Infinity::Types::Math::Vector4ub>>)
Two-dimensional array container for grid-based data in procedural generation.
Definition Array2D.hpp:82
Array2D()
Default constructor.
Definition Array2D.hpp:89
size_t width() const noexcept
Gets the width (number of columns) of the 2D array.
Definition Array2D.hpp:163
virtual size_t dimensions() const noexcept override
Gets the number of dimensions in this container.
Definition Array2D.hpp:219
std::unique_ptr< Core::Base > clone() const override
Definition Array2D.hpp:146
Array2D(size_t width, size_t height)
Constructs a 2D array with specified dimensions.
Definition Array2D.hpp:100
virtual ~Array2D()
Destructor.
Definition Array2D.hpp:144
size_t height() const noexcept
Gets the height (number of rows) of the 2D array.
Definition Array2D.hpp:173
const Infinity::Types::TypeID & typeId() const override
Gets the TypeID for this Array2D type.
Definition Array2D.hpp:156
Array2D(size_t width, size_t height, T *data)
Constructs a 2D array by copying from a raw data pointer.
Definition Array2D.hpp:124
T & at(size_t x, size_t y)
Accesses element at 2D coordinates.
Definition Array2D.hpp:192
void resize(size_t width, size_t height)
Resizes the 2D array to new dimensions.
Definition Array2D.hpp:237
const T & at(size_t x, size_t y) const
Accesses element at 2D coordinates (const).
Definition Array2D.hpp:209
Array2D(size_t colStride, const std::vector< T > &data)
Constructs a 2D array from a 1D vector with column stride.
Definition Array2D.hpp:137
Array2D(size_t width, size_t height, Array< T > data)
Constructs a 2D array from existing Array data with specified dimensions.
Definition Array2D.hpp:113
Dynamic contiguous container for homogeneous elements in the Infinity type system.
Definition Array.hpp:77
Runtime type identifier for the Infinity type system.
Definition TypeID.hpp:71