Infinity Engine v0.6.20
C++ API Documentation
Loading...
Searching...
No Matches
Asset.hpp
1#pragma once
2
3#include <Infinity/api.h>
4
5#include <Infinity/Types/All.hpp>
6
7#include <string>
8#include <memory>
9
11{
40 class INFINITY_API_PUBLIC Asset {
41 public:
46
47 // ===== Text Assets =====
48
53 Asset(const std::string& text);
54
55 // ===== 2D Array Assets =====
56
62
68
74
80
86
92
93 // ===== 3D Array Assets =====
94
100
106
112
118
124
130
131 // ===== Rendering Assets =====
132
138
144
150
151 // ===== Special Constructors =====
152
157 Asset(Asset&& other);
158
164 Asset(std::unique_ptr<Infinity::Types::Core::Base>&& data);
165
170
177
198 template<typename T>
199 inline const T& get()
200 {
201 if constexpr (std::is_base_of_v<Infinity::Types::Core::Data, T>) {
202 return *dynamic_cast<T*>(_data.get());
203 } else {
204 return dynamic_cast<Infinity::Types::Core::Value<T>*>(_data.get())->get();
205 }
206 }
207
221
234 inline operator bool() { return (bool)_data; }
235
236 protected:
237 private:
242 std::unique_ptr<Infinity::Types::Core::Base> _data;
243 };
244}
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
Definition Asset.hpp:11