Infinity Engine v0.6.20
C++ API Documentation
Loading...
Searching...
No Matches
Noise.hpp
1#pragma once
2
3#include <Infinity/api.h>
4
5#include <Infinity/Types/Core/Data.hpp>
6#include <Infinity/Types/Core/Value.hpp>
7#include <Infinity/Types/Containers/Array.hpp>
8#include <Infinity/Types/Math/Vector3.hpp>
9
10#include <FastNoise/FastNoise.h>
11#include <FastNoise/Metadata.h>
12
13#include <string>
14
16{
96 class INFINITY_API_PUBLIC Noise : public Core::Data
97 {
98 public:
111
128 float frequency = 0.02f;
129
138
153 Noise(const std::string& base64Encoded);
154
163 Noise(const Noise& other);
164
169
170 std::unique_ptr<Core::Base> clone() const override;
171
178 Noise& operator=(const Noise& other);
179
185 const Infinity::Types::TypeID& typeId() const override;
186
207 void generate2D(float* out, int xSize, int ySize, int seed) const;
208
230 void generate3D(float* out, int xSize, int ySize, int zSize, int seed) const;
231
254 FastNoise::SmartNode<>& generator();
255
261 const FastNoise::SmartNode<>& generator() const;
262
278 void setFromBase64Encoded(const std::string& encoded);
279
295 std::string base64Encoded() const;
296
297 private:
298 FastNoise::SmartNode<> _gen;
299 FastNoise::NodeData* _data;
300 std::vector<std::unique_ptr<FastNoise::NodeData>> _nodeData;
301 };
302}
303
Dynamic contiguous container for homogeneous elements in the Infinity type system.
Definition Array.hpp:77
Base class for complex data types with memory wrapping and property support.
Definition Data.hpp:49
Configurable procedural noise generator powered by FastNoise2.
Definition Noise.hpp:97
std::unique_ptr< Core::Base > clone() const override
void generate2D(float *out, int xSize, int ySize, int seed) const
Generates 2D noise into a pre-allocated float array.
void generate3D(float *out, int xSize, int ySize, int zSize, int seed) const
Generates 3D noise into a pre-allocated float array.
Noise(const std::string &base64Encoded)
Constructs a noise generator from a base64-encoded node graph.
Noise & operator=(const Noise &other)
Copy assignment operator.
Math::Vector3 position
Offset position for noise sampling.
Definition Noise.hpp:110
const Infinity::Types::TypeID & typeId() const override
Gets the TypeID for Noise.
void setFromBase64Encoded(const std::string &encoded)
Loads a noise configuration from base64-encoded string.
const FastNoise::SmartNode & generator() const
Gets a const reference to the underlying FastNoise2 generator.
FastNoise::SmartNode & generator()
Gets a reference to the underlying FastNoise2 generator.
Noise(const Noise &other)
Copy constructor.
std::string base64Encoded() const
Serializes the noise configuration to base64-encoded string.
Definition Chunk.hpp:11
Template structure representing a 3-component vector.
Definition Vector3.hpp:82
Runtime type identifier for the Infinity type system.
Definition TypeID.hpp:71