3#include <Infinity/api.h>
5#include <Infinity/Types/All.hpp>
40 class INFINITY_API_PUBLIC
Asset {
164 Asset(std::unique_ptr<Infinity::Types::Core::Base>&& data);
201 if constexpr (std::is_base_of_v<Infinity::Types::Core::Data, T>) {
202 return *
dynamic_cast<T*
>(_data.get());
234 inline operator bool() {
return (
bool)_data; }
242 std::unique_ptr<Infinity::Types::Core::Base> _data;
Type-erased container for loaded asset data.
Definition Asset.hpp:40
Asset(const Infinity::Types::Containers::Array3D< uint8_t > &tex)
Constructs an asset from a 3D array of unsigned bytes.
Asset(const Infinity::Types::Containers::Array2D< Infinity::Types::Math::Vector3ub > &tex)
Constructs an asset from a 2D array of unsigned byte RGB vectors.
Asset(const Infinity::Types::Containers::Array2D< Infinity::Types::Math::Vector3 > &tex)
Constructs an asset from a 2D array of float RGB vectors.
Asset()
Default constructor - creates an empty/invalid asset.
Asset(const Infinity::Types::Containers::GrayscaleTexture &tex)
Constructs an asset from a grayscale texture.
Asset(const Infinity::Types::Containers::Texture &tex)
Constructs an asset from a standard texture.
Asset(std::unique_ptr< Infinity::Types::Core::Base > &&data)
Constructs an asset from a polymorphic base pointer.
Asset(const Infinity::Types::Containers::Array3D< Infinity::Types::Math::Vector4 > &tex)
Constructs an asset from a 3D array of RGBA vectors.
Asset(const Infinity::Types::Rendering::RenderObject &ro)
Constructs an asset from a render object.
Asset & operator=(Asset &&other)
Move assignment operator - transfers ownership of asset data.
Asset(const Infinity::Types::Rendering::Material &mat)
Constructs an asset from material data.
Asset(const Infinity::Types::Containers::Array2D< float > &tex)
Constructs an asset from a 2D array of floats.
Asset(const Infinity::Types::Containers::Texture3D &tex)
Constructs an asset from a 3D texture.
Asset(const Infinity::Types::Containers::Array3D< Infinity::Types::Math::Vector3ub > &tex)
Constructs an asset from a 3D array of unsigned byte RGB vectors.
Asset(const Infinity::Types::Containers::Array3D< float > &tex)
Constructs an asset from a 3D array of floats.
Asset(const Infinity::Types::Containers::Array3D< Infinity::Types::Math::Vector3 > &tex)
Constructs an asset from a 3D array of float RGB vectors.
Asset(const Infinity::Types::Containers::Array2D< Infinity::Types::Math::Vector4 > &tex)
Constructs an asset from a 2D array of RGBA vectors.
~Asset()
Destructor - releases owned asset data.
Infinity::Types::Core::Base * release()
Releases ownership of the underlying asset data.
Asset(Asset &&other)
Move constructor - transfers ownership of asset data.
Asset(const Infinity::Types::Rendering::Mesh &mesh)
Constructs an asset from mesh data.
const T & get()
Retrieves the stored asset data as the specified type.
Definition Asset.hpp:199
Asset(const std::string &text)
Constructs an asset containing text data.
Two-dimensional array container for grid-based data in procedural generation.
Definition Array2D.hpp:82
Three-dimensional array container for volumetric data in procedural generation.
Definition Array3D.hpp:91
Abstract base class for all Infinity Engine data types.
Definition Base.hpp:43
Template wrapper for primitive types to integrate with the Infinity type system.
Definition Value.hpp:89
Shader configuration with parameters and textures for surface appearance.
Definition Material.hpp:96
Complete 3D geometry definition with vertices, indices, and material partitioning.
Definition Mesh.hpp:135
Top-level scene object combining a world transform with renderable content.
Definition RenderObject.hpp:114