载入中...
搜索中...
未找到
Grid2D.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
5#include <cstdint>
6#include <string>
7#include <unordered_map>
8#include <vector>
9
10namespace eve::procgen {
11
19struct GridObject {
20 std::string name;
21 std::string type;
22 float x = 0.f;
23 float y = 0.f;
24 float width = 0.f;
25 float height = 0.f;
26 uint32_t gid = 0;
27 std::string asset;
28 float rotationDegrees = 0.f;
29 uint32_t placementFlags = 0;
30};
31
37public:
39 void resize(int width, int height);
41 int getWidth() const;
43 int getHeight() const;
44
46 void setCell(int x, int y, int semantic);
48 int getCell(int x, int y) const;
50 void fill(int semantic);
51
58 void setDetail(int x, int y, int value);
60 int getDetail(int x, int y) const;
61
63 void setMeta(const std::string &key, const std::string &value);
65 std::string getMeta(const std::string &key, const std::string &defaultValue) const;
67 const std::unordered_map<std::string, std::string> &metadata() const { return meta_; }
68
70 void clearObjects();
72 void addObjectAt(const std::string &name, const std::string &type, float x, float y);
74 void addObject(const std::string &name, const std::string &type, float x, float y, float width,
75 float height, int gid);
77 void addAssetObject(const std::string &name, const std::string &role,
78 const std::string &asset, float x, float y, float width, float height,
79 float rotationDegrees, int flags);
81 int getObjectCount() const;
83 std::string getObjectName(int i) const;
85 std::string getObjectType(int i) const;
87 float getObjectX(int i) const;
89 float getObjectY(int i) const;
91 float getObjectWidth(int i) const;
93 float getObjectHeight(int i) const;
95 int getObjectGid(int i) const;
97 std::string getObjectAsset(int i) const;
99 float getObjectRotation(int i) const;
101 int getObjectFlags(int i) const;
102
104 const std::vector<uint32_t> &cells() const { return cells_; }
106 std::vector<uint32_t> &cells() { return cells_; }
108 const std::vector<uint8_t> &detail() const { return detail_; }
110 std::vector<uint8_t> &detail() { return detail_; }
112 const std::vector<GridObject> &objects() const { return objects_; }
113
114private:
115 bool inBounds(int x, int y) const;
116
117 int width_ = 0;
118 int height_ = 0;
119 std::vector<uint32_t> cells_;
120 std::vector<uint8_t> detail_;
121 std::unordered_map<std::string, std::string> meta_;
122 std::vector<GridObject> objects_;
123};
124
125} // namespace eve::procgen
double value
float y
Definition AnimClip.cpp:738
float x
Definition AnimClip.cpp:738
float rotationDegrees
#define EVENGINE_API_DOMAINS
Definition Export.h:110
std::uint32_t key
std::uint32_t height
std::uint32_t width
std::string name
uint32_t semantic
Definition WfcSimple.cpp:15
Intermediate 2D generation result. cells store semantic ids (see Semantic.h), not tile GIDs — convert...
Definition Grid2D.h:36
std::vector< uint32_t > & cells()
Cells.
Definition Grid2D.h:106
const std::vector< GridObject > & objects() const
Objects.
Definition Grid2D.h:112
std::vector< uint8_t > & detail()
Detail.
Definition Grid2D.h:110
const std::vector< uint8_t > & detail() const
Detail.
Definition Grid2D.h:108
const std::unordered_map< std::string, std::string > & metadata() const
Return all metadata key/value pairs in deterministic map order.
Definition Grid2D.h:67
const std::vector< uint32_t > & cells() const
Cells.
Definition Grid2D.h:104
const char * defaultValue
Named rectangle or asset placement emitted by a procedural generator.
Definition Grid2D.h:19
uint32_t placementFlags
Definition Grid2D.h:29
std::string asset
Definition Grid2D.h:27