1#include "NoiseLayers/LayeredNoiseManager.h"
7#define MAKE_IMGUI_ID(x) ("##LayeredNoiseManager" + std::string(x)).c_str()
10LayeredNoiseManager::LayeredNoiseManager()
12 offset[0] = offset[1] = offset[2] = 0;
19void LayeredNoiseManager::Render()
21 ImGui::Text(
"Global Offsets:");
22 ImGui::DragFloat3(MAKE_IMGUI_ID(
"Global Offsets"), offset, 0.1f);
23 ImGui::DragFloat(
"Global Strength##LayeredNoiseManager", &strength, 0.1f);
24 ImGui::Checkbox(
"Absolute Value##LayeredNoiseManager", &absv);
25 ImGui::Checkbox(
"Square Value##LayeredNoiseManager", &sq);
27 ImGui::Text(
"Noise Layers");
28 std::vector<NoiseLayer *> nl = noiseLayers;
30 for (
int i = 0; i < nl.size(); i++)
32 bool state = ImGui::CollapsingHeader((std::string(
"##noiseLayerName") + std::to_string(i)).c_str());
38 if (toAdd.size() == 0)
40 if (ImGui::Button(
"Duplicate"))
44 toAdd.back()->Load(data);
48 if (noiseLayers.size() > 1 && toDelete.size() == 0)
52 if (ImGui::Button(
"Delete"))
54 toDelete.push_back(i);
62 ImGui::Text(nl[i]->name.data());
66 if (toAdd.size() == 0)
68 if (ImGui::Button(
"Add New Layer"))
75void LayeredNoiseManager::UpdateLayers()
77 if (toDelete.size() > 0)
79 noiseLayers.erase(noiseLayers.begin() + toDelete[0]);
85 noiseLayers.push_back(toAdd[0]);
94 offset[0] = data[
"offsetX"];
95 offset[1] = data[
"offsetY"];
96 offset[2] = data[
"offsetZ"];
97 strength = data[
"strength"];
110 noiseLayers.back()->Load(tmp);
121 for (
int i = 0; i < noiseLayers.size(); i++)
123 tmp2 = noiseLayers[i]->Save();
129 data[
"noiseLayers"] = tmp;
132 data[
"offsetX"] = offset[0];
133 data[
"offsetY"] = offset[1];
134 data[
"offsetZ"] = offset[2];
135 data[
"strength"] = strength;
139float LayeredNoiseManager::Evaluate(
float x,
float y,
float z)
141 std::vector<NoiseLayer *> nl = noiseLayers;
145 noise += n->Evaluate({ x + offset[0], y + offset[1], z + offset[2] });
155 noise = noise * noise;
void push_back(basic_json &&val)
add an object to an array
a class to store JSON values