载入中...
搜索中...
未找到
ParamSchema.h
浏览该文件的文档.
1#pragma once
2
3#include "procgen/Params.h"
4
5#include <string>
6#include <vector>
7
8namespace eve::procgen {
9
12
15 std::string key;
16 std::string displayName;
17 std::string description;
18 std::string category = "General";
19 ParamKind kind = ParamKind::String;
20 std::string defaultValue;
21 bool hasMinimum = false;
22 bool hasMaximum = false;
23 double minimum = 0.0;
24 double maximum = 0.0;
25 double step = 0.0;
26 std::vector<std::string> choices;
27 bool advanced = false;
28
32 static ParamDescriptor integer(std::string key, std::string label, int defaultValue, int minimum, int maximum,
33 int step = 1);
37 static ParamDescriptor floating(std::string key, std::string label, float defaultValue, float minimum,
38 float maximum, float step);
41 static ParamDescriptor boolean(std::string key, std::string label, bool defaultValue);
44 static ParamDescriptor text(std::string key, std::string label, std::string defaultValue);
47 static ParamDescriptor choice(std::string key, std::string label, std::string defaultValue,
48 std::vector<std::string> choices);
49};
50
53 std::string id;
54 std::string displayName;
55 std::string category;
56 std::vector<ParamDescriptor> params;
57
62 static RecipeDescriptor grid(std::string id, std::string displayName, std::string category, int minimumWidth,
63 int minimumHeight, int maximumWidth = 4096, int maximumHeight = 4096);
66 const ParamDescriptor* find(const std::string& key) const;
68 void applyDefaults(Params& params) const;
69
71 int getParamCount() const { return int(params.size()); }
73 std::string getId() const { return id; }
75 std::string getDisplayName() const { return displayName; }
77 std::string getCategory() const { return category; }
79 std::string getParamKey(int index) const;
81 std::string getParamLabel(int index) const;
83 std::string getParamDescription(int index) const;
85 std::string getParamCategory(int index) const;
88 std::string getParamKind(int index) const;
91 std::string getParamDefault(int index) const;
93 bool paramHasMinimum(int index) const;
95 bool paramHasMaximum(int index) const;
97 float getParamMinimum(int index) const;
99 float getParamMaximum(int index) const;
101 float getParamStep(int index) const;
104 bool isParamAdvanced(int index) const;
106 int getParamChoiceCount(int index) const;
109 std::string getParamChoice(int paramIndex, int choiceIndex) const;
110
111private:
112 const ParamDescriptor* at(int index) const;
113};
114
115} // namespace eve::procgen
std::string label
#define EVENGINE_API_DOMAINS
Definition Export.h:110
float maximum[3]
float minimum[3]
std::uint32_t key
std::string text
TokenKind kind
std::set< std::string > choices
std::string id
Definition PlayHost.cpp:108
bool boolean
float step
Definition TreeMesh.cpp:314
const char * category
uint32_t index
std::size_t at
Owning, typed generation parameters.
Definition Params.h:27
const char * defaultValue
std::vector< ParamSpec > params
ParamKind
Semantic type used by schema-driven recipe parameter editors.
Definition ParamSchema.h:11
UI-independent metadata for one procedural recipe parameter.
Definition ParamSchema.h:14
std::vector< std::string > choices
Definition ParamSchema.h:26
Complete metadata and parameter schema shared by every procgen recipe family.
Definition ParamSchema.h:52
int getParamCount() const
Return the number of reflected parameters.
Definition ParamSchema.h:71
std::string getDisplayName() const
Return the human-readable recipe name.
Definition ParamSchema.h:75
std::vector< ParamDescriptor > params
Definition ParamSchema.h:56
std::string getId() const
Return the stable recipe id.
Definition ParamSchema.h:73
std::string getCategory() const
Return the recipe browser category.
Definition ParamSchema.h:77