载入中...
搜索中...
未找到
Fov.h
浏览该文件的文档.
1#pragma once
2
3#include "map/TileLayer.h"
4
5#include <cstdint>
6#include <memory>
7#include <string>
8#include <vector>
9
10namespace eve::graphics {
11class Graphics;
12class Texture;
13} // namespace eve::graphics
14
15namespace eve::map {
16
24class Fov {
25public:
26 Fov();
27 explicit Fov(TileLayer *layer);
28 explicit Fov(int width, int height);
29 Fov(int width, int height, int depth);
31
32 Fov(Fov &&) noexcept;
33 Fov &operator=(Fov &&) noexcept;
34 Fov(const Fov &) = delete;
35 Fov &operator=(const Fov &) = delete;
36
38 void setSize(int width, int height);
39 void setVolumeSize(int width, int height, int depth);
40 int getWidth() const;
41 int getHeight() const;
42 int getDepth() const;
43
45 void setMode(const std::string &name);
46 std::string getMode() const;
47
49 void setAlgorithm(const std::string &name);
50 std::string getAlgorithm() const;
51
53 void setRadiusMetric(const std::string &name);
54 std::string getRadiusMetric() const;
55
57 void setTopology(const std::string &name);
58 std::string getTopology() const;
59
60 void setCornerPeek(bool enable);
61 bool getCornerPeek() const;
62
63 void blockOpaqueGid(int gid);
64 void unblockOpaqueGid(int gid);
65 void clearOpaqueGids();
66 void setBlockEmpty(bool enable);
67 bool getBlockEmpty() const;
68 void setOpaque(int x, int y, bool opaque);
69 bool isOpaque(int x, int y) const;
70 void setOpaque3(int x, int y, int z, bool opaque);
71 bool isOpaque3(int x, int y, int z) const;
72 void syncFromLayer();
73
74 void setElevation(int x, int y, float elev);
75 float getElevation(int x, int y) const;
76 void setCliffBlock(float delta);
77 float getCliffBlock() const;
78 void setEyeOffset(float offset);
79 float getEyeOffset() const;
80
81 void setVerticalRange(int range);
82 int getVerticalRange() const;
83
84 int addRevealer(int x, int y, int radius);
85 int addRevealer3(int x, int y, int z, int radius);
86 void removeRevealer(int id);
87 void clearRevealers();
88 void setRevealerPosition(int id, int x, int y);
89 void setRevealerPosition3(int id, int x, int y, int z);
90 void setRevealerRadius(int id, int radius);
91 void setRevealerFacing(int id, float facingDeg, float halfAngleDeg);
92 void clearRevealerFacing(int id);
93 void setRevealerEnabled(int id, bool enabled);
94 int getRevealerCount() const;
95
101 void setRevealerPerception(int id, float perception);
102 float getRevealerPerception(int id) const;
104 float getPerceptionRadiusScale() const;
105 void setDetectionMargin(float margin);
106 float getDetectionMargin() const;
107 int getEffectiveRadius(int id) const;
108 bool canDetect(int revealerId, int x, int y, float targetStealth) const;
109 bool canDetect3(int revealerId, int x, int y, int z, float targetStealth) const;
110
111 void markDirty();
112 bool isDirty() const;
113 void compute();
114 bool isVisible(int x, int y) const;
115 bool isExplored(int x, int y) const;
116 bool isVisible3(int x, int y, int z) const;
117 bool isExplored3(int x, int y, int z) const;
118 std::string getState(int x, int y) const;
119 std::string getState3(int x, int y, int z) const;
120 void clearMemory();
121 void resetVisibleOnly();
122
123 float getMaskValue(int x, int y) const;
124 int getMaskByte(int x, int y) const;
125 float getMaskValue3(int x, int y, int z) const;
126 int getMaskByte3(int x, int y, int z) const;
127 bool fillMaskR8(std::vector<uint8_t> &out) const;
128 bool fillMaskR8Slice(std::vector<uint8_t> &out, int sliceZ) const;
129
134 graphics::Texture *buildMaskTexture(graphics::Graphics *gfx) const;
135 graphics::Texture *buildMaskTextureSlice(graphics::Graphics *gfx, int sliceZ) const;
136
137private:
138 struct Impl;
139 std::unique_ptr<Impl> impl_;
140};
141
142} // namespace eve::map
int y
Definition Grass.cpp:135
int z
Definition Grass.cpp:135
float height
Definition Grass.cpp:235
int x
Definition Grass.cpp:135
float depth
int width
TileLayer * layer
const char * name
Definition RockMesh.cpp:21
bool enabled
int margin
float scale
Definition TreeMesh.cpp:122
Dynamic field-of-view / fog-of-war facade. Phase A: 2D shadowcast + multi-revealer + explored memory....
Definition Fov.h:24
void blockOpaqueGid(int gid)
Definition Fov.cpp:981
bool canDetect(int revealerId, int x, int y, float targetStealth) const
Definition Fov.cpp:1159
float getElevation(int x, int y) const
Definition Fov.cpp:1041
bool isExplored(int x, int y) const
Definition Fov.cpp:1184
bool isOpaque(int x, int y) const
Definition Fov.cpp:1020
int getVerticalRange() const
Definition Fov.cpp:1059
int getHeight() const
Definition Fov.cpp:930
void bindLayer(TileLayer *layer)
Definition Fov.cpp:912
std::string getRadiusMetric() const
Definition Fov.cpp:956
void setAlgorithm(const std::string &name)
"shadowcast" | "raycast" | "permissive" | "rectangle"
Definition Fov.cpp:944
float getDetectionMargin() const
Definition Fov.cpp:1152
float getEyeOffset() const
Definition Fov.cpp:1053
void setRadiusMetric(const std::string &name)
"euclidean" | "chebyshev" | "manhattan" — ignored when topology is hex (cube distance).
Definition Fov.cpp:951
float getCliffBlock() const
Definition Fov.cpp:1047
void setRevealerEnabled(int id, bool enabled)
Definition Fov.cpp:1124
void setOpaque3(int x, int y, int z, bool opaque)
Definition Fov.cpp:1025
bool isVisible3(int x, int y, int z) const
Definition Fov.cpp:1191
void setDetectionMargin(float margin)
Definition Fov.cpp:1151
void setEyeOffset(float offset)
Definition Fov.cpp:1049
bool isVisible(int x, int y) const
Definition Fov.cpp:1178
int getEffectiveRadius(int id) const
Definition Fov.cpp:1154
void setSize(int width, int height)
Definition Fov.cpp:917
bool fillMaskR8(std::vector< uint8_t > &out) const
Definition Fov.cpp:1256
int getWidth() const
Definition Fov.cpp:929
void setRevealerPosition(int id, int x, int y)
Definition Fov.cpp:1087
float getRevealerPerception(int id) const
Definition Fov.cpp:1140
float getMaskValue3(int x, int y, int z) const
Definition Fov.cpp:1246
int getDepth() const
Definition Fov.cpp:931
void setBlockEmpty(bool enable)
Definition Fov.cpp:1001
std::string getMode() const
Definition Fov.cpp:942
int addRevealer(int x, int y, int radius)
Definition Fov.cpp:1061
void clearMemory()
Definition Fov.cpp:1227
std::string getState3(int x, int y, int z) const
Definition Fov.cpp:1215
float getMaskValue(int x, int y) const
Definition Fov.cpp:1234
void clearOpaqueGids()
Definition Fov.cpp:995
bool isExplored3(int x, int y, int z) const
Definition Fov.cpp:1196
int getRevealerCount() const
Definition Fov.cpp:1131
graphics::Texture * buildMaskTextureSlice(graphics::Graphics *gfx, int sliceZ) const
Definition Fov.cpp:1284
void setCliffBlock(float delta)
Definition Fov.cpp:1043
void setElevation(int x, int y, float elev)
Definition Fov.cpp:1035
std::string getTopology() const
Definition Fov.cpp:973
bool fillMaskR8Slice(std::vector< uint8_t > &out, int sliceZ) const
Definition Fov.cpp:1258
int addRevealer3(int x, int y, int z, int radius)
Definition Fov.cpp:1063
std::string getAlgorithm() const
Definition Fov.cpp:949
void setRevealerRadius(int id, int radius)
Definition Fov.cpp:1100
void setRevealerPosition3(int id, int x, int y, int z)
Definition Fov.cpp:1091
void setRevealerPerception(int id, float perception)
Soft RPG hooks (no hard dependency on rpg module). effectiveRadius = radius + floor(perception * perc...
Definition Fov.cpp:1133
void setRevealerFacing(int id, float facingDeg, float halfAngleDeg)
Definition Fov.cpp:1107
void removeRevealer(int id)
Definition Fov.cpp:1075
bool getCornerPeek() const
Definition Fov.cpp:979
void clearRevealers()
Definition Fov.cpp:1082
void clearRevealerFacing(int id)
Definition Fov.cpp:1116
bool isDirty() const
Definition Fov.cpp:1175
void compute()
Definition Fov.cpp:1176
void setPerceptionRadiusScale(float scale)
Definition Fov.cpp:1145
void setMode(const std::string &name)
"grid2d" (default) | "heightmap" | "volume"
Definition Fov.cpp:933
void unblockOpaqueGid(int gid)
Definition Fov.cpp:988
void markDirty()
Definition Fov.cpp:1174
int getMaskByte(int x, int y) const
Definition Fov.cpp:1240
void setVerticalRange(int range)
Definition Fov.cpp:1055
bool canDetect3(int revealerId, int x, int y, int z, float targetStealth) const
Definition Fov.cpp:1167
float getPerceptionRadiusScale() const
Definition Fov.cpp:1149
bool isOpaque3(int x, int y, int z) const
Definition Fov.cpp:1031
bool getBlockEmpty() const
Definition Fov.cpp:1007
std::string getState(int x, int y) const
Definition Fov.cpp:1202
void setCornerPeek(bool enable)
Definition Fov.cpp:975
void setOpaque(int x, int y, bool opaque)
Definition Fov.cpp:1009
Fov(Fov &&) noexcept
graphics::Texture * buildMaskTexture(graphics::Graphics *gfx) const
Upload current 2D / slice mask as RGBA8 Texture (R=G=B=A=mask byte). Caller owns the returned Texture...
Definition Fov.cpp:1280
void resetVisibleOnly()
Definition Fov.cpp:1229
void setTopology(const std::string &name)
"ortho" (default) | "hex" | "auto" (hex if bound layer is hex/staggered).
Definition Fov.cpp:958
void syncFromLayer()
Definition Fov.cpp:1033
void setVolumeSize(int width, int height, int depth)
Definition Fov.cpp:923
int getMaskByte3(int x, int y, int z) const
Definition Fov.cpp:1251
ECS tile layer entity. Script mutates tile GIDs / tileset / draw; TileRenderSystem batch-draws atlas ...
Definition TileLayer.h:30
卡牌游戏 UI 工具模块:工厂 + 脚本绑定入口。 功能参考 ycarowr/UiCard:扇形手牌布局、抽牌/洗牌、悬浮放大、拖拽到落牌区、 敌方手牌(背面/偷看)、费用不足置灰,以及可实时调节的布局...
Definition AnimTrail.h:6
放置世界:格子占用(多通道)+ 地形语义 + 已放置建筑实例。 行为由 PlacementSystem 提供;本类暴露便于脚本绑定的薄封装方法。 坐标换算统一走 eve::grid(支持 rectang...