- 添加移动区域边界结构体MoveAreaBounds并集成到地图配置中 - 实现移动区域索引查找和高亮显示功能 - 增加可移动区域检查开关movableAreaCheckEnabled - 优化调试信息显示,包括坐标和当前所在移动区域 - 重构移动区域相关代码,提高可维护性
33 lines
822 B
C++
33 lines
822 B
C++
#pragma once
|
|
|
|
#include <frostbite2D/2d/actor.h>
|
|
#include <vector>
|
|
|
|
namespace frostbite2D {
|
|
|
|
class GameMapLayer : public Actor {
|
|
public:
|
|
static constexpr size_t kInvalidMoveAreaIndex = static_cast<size_t>(-1);
|
|
|
|
void Render() override;
|
|
|
|
void SetDebugFeasibleAreaPolygon(const std::vector<Vec2>& polygon);
|
|
void AddDebugMoveAreaInfo(const Rect& rect, size_t index);
|
|
void SetDebugHighlightedMoveAreaIndex(size_t index);
|
|
void ClearDebugAreaInfo();
|
|
void AddObject(RefPtr<Actor> obj);
|
|
|
|
private:
|
|
struct DebugMoveAreaInfo {
|
|
Rect rect;
|
|
size_t index = kInvalidMoveAreaIndex;
|
|
};
|
|
|
|
std::vector<Vec2> feasibleAreaPolygon_;
|
|
std::vector<Rect> feasibleAreaFillRects_;
|
|
std::vector<DebugMoveAreaInfo> moveAreaInfoList_;
|
|
size_t highlightedMoveAreaIndex_ = kInvalidMoveAreaIndex;
|
|
};
|
|
|
|
} // namespace frostbite2D
|