TerraForge3D  2.3.1
3D Terrain And Landscape Generator
GeneratorMask.h
1#pragma once
2
3#include <string>
4#include <vector>
5
6#include "json/json.hpp"
7
8#include "Base/OpenCL/ComputeKernel.h"
9
10#define MAX_GENERATOR_MASKS 128
11
12#pragma pack(push, 1)
14{
15 float type;
16
17 float pos[3];
18
19 float d1[4];
20 float d2[4];
21 float d3[4];
22 float d4[4];
23};
24#pragma pack(pop)
25
26enum GeneratorMaskType
27{
28 GeneratorMask_Additive = 0,
29 GeneratorMask_AverageAdditive,
30 GeneratorMask_Multiplicative,
31 GeneratorMask_AverageMultiplicative,
32 GeneratorMask_Count
33};
34
35static const char *generator_mask_type_names[] = {"Additive", "Average Additive", "Multiplicative", "Average Multiplicative"};
36
37#define MASK_LAYER_HILL 0.0f
38#define MASK_LAYER_CRATOR 1.0f
39#define MASK_LAYER_CLIFF 2.0f
40
41struct ApplicationState;
42
44{
45public:
46 GeneratorMaskManager(ComputeKernel *kernel, std::string uid, ApplicationState *appState);
48
49 nlohmann::json SaveGeneratorMask(GeneratorMask mask);
50 GeneratorMask LoadGeneratorMask(nlohmann::json data);
51
52 nlohmann::json Save();
53 void Load(nlohmann::json data);
54
55 float EvaluateAt(float x, float y, float z, float value);
56
57 void ShowSettings();
58
59// void SetupForOpenCLEvaluation(ComputeKernel* kernel);
60
61
62 bool enabled = false;
63 std::vector<GeneratorMask> masks;
64 std::string uid;
65 int gmcount = 0;
66 GeneratorMaskType type = GeneratorMaskType::GeneratorMask_Additive;
67 ApplicationState *appState;
68};
a class to store JSON values
Definition: json.hpp:17860