Skip to content

Commit b0dddfe

Browse files
committed
remove add visibility algorithms and always use symmetric shadowcasting
1 parent ed9fe33 commit b0dddfe

File tree

5 files changed

+193
-810
lines changed

5 files changed

+193
-810
lines changed

examples/19-gridmap.cc

Lines changed: 2 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -178,21 +178,13 @@ namespace {
178178
struct State {
179179
gf::Vec2I light = { 0, 0 };
180180
int radius = 6;
181-
gf::Visibility visibility = gf::Visibility::ShadowCast;
182181
};
183182

184183
class GridScene : public gf::Scene {
185184
public:
186185
GridScene(gf::BasicSceneManager* scene_manager)
187-
: m_scene_manager(scene_manager)
188-
, m_grid_entity(scene_manager)
186+
: m_grid_entity(scene_manager)
189187
{
190-
m_actions.add_action("RayCast"_id, gf::ActionSettings().add_keycode_control(gf::Keycode::Num1));
191-
m_actions.add_action("ShadowCast"_id, gf::ActionSettings().add_keycode_control(gf::Keycode::Num2));
192-
m_actions.add_action("DiamondWalls"_id, gf::ActionSettings().add_keycode_control(gf::Keycode::Num3));
193-
m_actions.add_action("Permissive"_id, gf::ActionSettings().add_keycode_control(gf::Keycode::Num4));
194-
m_actions.add_action("Improved"_id, gf::ActionSettings().add_keycode_control(gf::Keycode::Num5));
195-
196188
m_actions.add_action("clear"_id, gf::ActionSettings().add_keycode_control(gf::Keycode::C));
197189

198190
set_world_size(MapSize * CellSize);
@@ -215,7 +207,7 @@ namespace {
215207
if (position != m_state.light) {
216208
m_state.light = position;
217209
m_grid_entity.map().clear_visible();
218-
m_grid_entity.map().compute_field_of_vision(m_state.light, m_state.radius, m_state.visibility);
210+
m_grid_entity.map().compute_field_of_vision(m_state.light, m_state.radius);
219211
}
220212
}
221213
break;
@@ -228,47 +220,13 @@ namespace {
228220

229221
void do_handle_actions() override
230222
{
231-
gf::Visibility visibility = m_state.visibility;
232-
233-
if (m_actions.active("RayCast"_id)) {
234-
gf::Log::info("Visibility: RayCast");
235-
visibility = gf::Visibility::RayCast;
236-
}
237-
238-
if (m_actions.active("ShadowCast"_id)) {
239-
gf::Log::info("Visibility: ShadowCast");
240-
visibility = gf::Visibility::ShadowCast;
241-
}
242-
243-
if (m_actions.active("DiamondWalls"_id)) {
244-
gf::Log::info("Visibility: DiamondWalls");
245-
visibility = gf::Visibility::DiamondWalls;
246-
}
247-
248-
if (m_actions.active("Permissive"_id)) {
249-
gf::Log::info("Visibility: Permissive");
250-
visibility = gf::Visibility::Permissive;
251-
}
252-
253-
if (m_actions.active("Improved"_id)) {
254-
gf::Log::info("Visibility: Improved");
255-
visibility = gf::Visibility::Improved;
256-
}
257-
258-
if (visibility != m_state.visibility) {
259-
m_state.visibility = visibility;
260-
m_grid_entity.map().clear_visible();
261-
m_grid_entity.map().compute_field_of_vision(m_state.light, m_state.radius, m_state.visibility);
262-
}
263-
264223
if (m_actions.active("clear"_id)) {
265224
m_grid_entity.map().clear_explored();
266225
}
267226

268227
m_actions.reset();
269228
}
270229

271-
gf::BasicSceneManager* m_scene_manager = nullptr;
272230
GridEntity m_grid_entity;
273231
gf::ActionGroup m_actions;
274232
State m_state;

include/gf2/core/GridMap.h

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,6 @@ namespace gf {
2424
float blocked = 5.0f;
2525
};
2626

27-
enum class Visibility : uint8_t {
28-
RayCast,
29-
ShadowCast,
30-
DiamondWalls,
31-
Permissive,
32-
Improved,
33-
};
34-
3527
class GF_CORE_API GridMap {
3628
public:
3729
GridMap() = default;
@@ -78,11 +70,6 @@ namespace gf {
7870
bool visible(Vec2I position) const;
7971
bool explored(Vec2I position) const;
8072

81-
std::vector<Vec2I> compute_route(Vec2I origin, Vec2I target, RouteCost cost = {}, Route route = Route::AStar);
82-
83-
void compute_field_of_vision(Vec2I origin, int range_limit, Visibility visibility);
84-
void compute_local_field_of_vision(Vec2I origin, int range_limit, Visibility visibility);
85-
8673
uint32_t tag(Vec2I position) const;
8774
void set_tag(Vec2I position, uint32_t tag);
8875

@@ -98,10 +85,15 @@ namespace gf {
9885
set_tag(position, static_cast<uint32_t>(static_cast<std::underlying_type_t<E>>(tag)));
9986
}
10087

88+
std::vector<Vec2I> compute_route(Vec2I origin, Vec2I target, RouteCost cost = {}, Route route = Route::AStar);
89+
90+
void compute_field_of_vision(Vec2I origin, int range_limit);
91+
void compute_local_field_of_vision(Vec2I origin, int range_limit);
92+
10193
private:
10294
GridMap(Vec2I size, AnyGrid grid);
10395

104-
void raw_compute_field_of_vision(Vec2I origin, int range_limit, Flags<CellProperty> properties, Visibility visibility);
96+
void raw_compute_field_of_vision(Vec2I origin, int range_limit, Flags<CellProperty> properties);
10597

10698
Array2D<Flags<CellProperty>> m_cells;
10799
Array2D<uint32_t> m_tags;

include/gf2/core/GridVisibility.h

Lines changed: 0 additions & 140 deletions
This file was deleted.

0 commit comments

Comments
 (0)