diff --git a/DungeonShooting_Godot/src/framework/map/DungeonRoomTemplate.cs b/DungeonShooting_Godot/src/framework/map/DungeonRoomTemplate.cs
index 60dd0a1..e1d2925 100644
--- a/DungeonShooting_Godot/src/framework/map/DungeonRoomTemplate.cs
+++ b/DungeonShooting_Godot/src/framework/map/DungeonRoomTemplate.cs
@@ -24,6 +24,12 @@
///
public static readonly string RoomTileConfigFile = System.Environment.CurrentDirectory + "\\resource\\map\\RoomConfig.json";
+ ///
+ /// 是否启用编辑模式
+ ///
+ [Export(PropertyHint.None, "是否启用编辑模式")]
+ public bool EnableEdit = false;
+
#if TOOLS
//是否悬停在线上
private bool _hover = false;
@@ -64,13 +70,16 @@
return;
}
+ //加载配置
var initConfigs = false;
if (_doorConfigs == null)
{
initConfigs = true;
_doorConfigs = ReadConfig(CalcTileRange(this), Name);
+ QueueRedraw();
}
+ //按键检测
var isClick = false;
if (Input.IsMouseButtonPressed(MouseButton.Left))
{
@@ -86,241 +95,255 @@
isClick = false;
}
- if (Input.IsMouseButtonPressed(MouseButton.Middle)) //中键移除门
+ if (EnableEdit) //启用了编辑功能
{
- if (_activeArea != null)
- {
- RemoveDoorArea(_activeArea);
- _hasActivePoint = false;
- _activeArea = null;
- }
- }
- else if (TileSet != null)
- {
- var mapRect = CalcTileRange(this);
- var mousePosition = GetLocalMousePosition();
-
- if (mapRect != _prevRect)
- {
- if (!initConfigs)
- {
- OnMapRectChange();
- }
- }
- _prevRect = mapRect;
-
- var tileSize = TileSet.TileSize;
- if (_isDrag) //拖拽中
+ if (Input.IsMouseButtonPressed(MouseButton.Middle)) //中键移除门
{
if (_activeArea != null)
{
- //拖拽节点操作
- if (_activeArea.Direction == DoorDirection.N || _activeArea.Direction == DoorDirection.S)
- {
- if (_activePointType == 0)
- {
- var mouseOffset = Approach(mousePosition.X, tileSize.X);
- _activeArea.StartPosition = new Vector2(mouseOffset, _activeArea.StartPosition.Y);
- _activeArea.Start = mouseOffset - mapRect.Position.X;
- _dragHasCollision = _activeArea.StartPosition.X <= mapRect.Position.X ||
- _activeArea.StartPosition.X + 3 * tileSize.X >= _activeArea.EndPosition.X ||
- CheckDoorCollision(_activeArea.Direction, _activeArea);
- }
- else
- {
- var mouseOffset = Approach(mousePosition.X, tileSize.X);
- _activeArea.EndPosition = new Vector2(mouseOffset, _activeArea.EndPosition.Y);
- _activeArea.End = mouseOffset - mapRect.Position.X;
- _dragHasCollision = _activeArea.EndPosition.X >= mapRect.Position.X + mapRect.Size.X ||
- _activeArea.EndPosition.X - 3 * tileSize.X <= _activeArea.StartPosition.X ||
- CheckDoorCollision(_activeArea.Direction, _activeArea);
- }
- }
- else
- {
- if (_activePointType == 0)
- {
- var mouseOffset = Approach(mousePosition.Y, tileSize.Y);
- _activeArea.StartPosition = new Vector2(_activeArea.StartPosition.X, mouseOffset);
- _activeArea.Start = mouseOffset - mapRect.Position.Y;
- _dragHasCollision = _activeArea.StartPosition.Y <= mapRect.Position.Y ||
- _activeArea.StartPosition.Y + 3 * tileSize.Y >= _activeArea.EndPosition.Y ||
- CheckDoorCollision(_activeArea.Direction, _activeArea);
- }
- else
- {
- var mouseOffset = Approach(mousePosition.Y, tileSize.Y);
- _activeArea.EndPosition = new Vector2(_activeArea.EndPosition.X, mouseOffset);
- _activeArea.End = mouseOffset - mapRect.Position.Y;
- _dragHasCollision = _activeArea.EndPosition.Y >= mapRect.Position.Y + mapRect.Size.Y ||
- _activeArea.EndPosition.Y - 3 * tileSize.Y <= _activeArea.StartPosition.Y ||
- CheckDoorCollision(_activeArea.Direction, _activeArea);
- }
- }
- }
- }
- else
- {
- if (Mathf.Abs(mousePosition.Y - mapRect.Position.Y) <= 8 && mousePosition.X >= mapRect.Position.X &&
- mousePosition.X <= mapRect.Position.X + mapRect.Size.X) //上
- {
- _hover = true;
- _hoverDirection = DoorDirection.N;
- var mouseOffset = Approach(mousePosition.X, tileSize.X);
- _hoverPoint1 = new Vector2(mouseOffset - tileSize.X * 2, mapRect.Position.Y);
- _hoverPoint2 = new Vector2(_hoverPoint1.X + tileSize.X * 4, _hoverPoint1.Y);
-
- //判断是否能放下新的门
- if (_hoverPoint1.X <= mapRect.Position.X || _hoverPoint2.X >= mapRect.Position.X + mapRect.Size.X ||
- CheckDoorCollision())
- {
- _canPut = false;
- FindHoverPoint(mouseOffset);
- }
- else
- {
- _canPut = true;
- _hasActivePoint = false;
- _activeArea = null;
- }
- }
- else if (Mathf.Abs(mousePosition.X - mapRect.Position.X) <= 8 &&
- mousePosition.Y >= mapRect.Position.Y &&
- mousePosition.Y <= mapRect.Position.Y + mapRect.Size.Y) //左
- {
- _hover = true;
- _hoverDirection = DoorDirection.W;
- var mouseOffset = Approach(mousePosition.Y, tileSize.Y);
- _hoverPoint1 = new Vector2(mapRect.Position.X, mouseOffset - tileSize.Y * 2);
- _hoverPoint2 = new Vector2(_hoverPoint1.X, _hoverPoint1.Y + tileSize.X * 4);
-
- //判断是否能放下新的门
- if (_hoverPoint1.Y <= mapRect.Position.Y || _hoverPoint2.Y >= mapRect.Position.Y + mapRect.Size.Y ||
- CheckDoorCollision())
- {
- _canPut = false;
- FindHoverPoint(mouseOffset);
- }
- else
- {
- _canPut = true;
- _hasActivePoint = false;
- _activeArea = null;
- }
- }
- else if (Mathf.Abs(mousePosition.Y - (mapRect.Position.Y + mapRect.Size.Y)) <= 8 &&
- mousePosition.X >= mapRect.Position.X &&
- mousePosition.X <= mapRect.Position.X + mapRect.Size.X) //下
- {
- _hover = true;
- _hoverDirection = DoorDirection.S;
- var mouseOffset = Approach(mousePosition.X, tileSize.X);
- _hoverPoint1 = new Vector2(mouseOffset - tileSize.X * 2,
- mapRect.Position.Y + mapRect.Size.Y);
- _hoverPoint2 = new Vector2(_hoverPoint1.X + tileSize.X * 4, _hoverPoint1.Y);
-
- //判断是否能放下新的门
- if (_hoverPoint1.X <= mapRect.Position.X || _hoverPoint2.X >= mapRect.Position.X + mapRect.Size.X ||
- CheckDoorCollision())
- {
- _canPut = false;
- FindHoverPoint(mouseOffset);
- }
- else
- {
- _canPut = true;
- _hasActivePoint = false;
- _activeArea = null;
- }
- }
- else if (Mathf.Abs(mousePosition.X - (mapRect.Position.X + mapRect.Size.X)) <= 8 &&
- mousePosition.Y >= mapRect.Position.Y &&
- mousePosition.Y <= mapRect.Position.Y + mapRect.Size.Y) //右
- {
- _hover = true;
- _hoverDirection = DoorDirection.E;
- var mouseOffset = Approach(mousePosition.Y, tileSize.Y);
- _hoverPoint1 = new Vector2(mapRect.Position.X + mapRect.Size.X,
- mouseOffset - tileSize.Y * 2);
- _hoverPoint2 = new Vector2(_hoverPoint1.X, _hoverPoint1.Y + tileSize.X * 4);
-
- //判断是否能放下新的门
- if (_hoverPoint1.Y <= mapRect.Position.Y || _hoverPoint2.Y >= mapRect.Position.Y + mapRect.Size.Y ||
- CheckDoorCollision())
- {
- _canPut = false;
- FindHoverPoint(mouseOffset);
- }
- else
- {
- _canPut = true;
- _hasActivePoint = false;
- _activeArea = null;
- }
- }
- else
- {
- _hover = false;
- _canPut = false;
+ RemoveDoorArea(_activeArea);
_hasActivePoint = false;
_activeArea = null;
}
}
+ else if (TileSet != null) //编辑操作
+ {
+ var mapRect = CalcTileRange(this);
+ var mousePosition = GetLocalMousePosition();
- if (isClick && _canPut) //判断是否可以创建新的点
- {
- CreateDoorArea(mapRect);
- }
- else if (_mouseDown && !_isDrag) //拖拽节点
- {
- _isDrag = true;
- _dragHasCollision = false;
- if (_activeArea != null)
+ if (mapRect != _prevRect)
{
- if (_activePointType == 0)
+ if (!initConfigs)
{
- _startDragValue = _activeArea.Start;
- _startDragPositionValue = _activeArea.StartPosition;
- }
- else
- {
- _startDragValue = _activeArea.End;
- _startDragPositionValue = _activeArea.EndPosition;
+ OnMapRectChange();
}
}
- }
- else if (!_mouseDown && _isDrag) //松开拖拽的点
- {
- _isDrag = false;
- if (_activeArea != null) //提交拖拽结果
+
+ _prevRect = mapRect;
+
+ var tileSize = TileSet.TileSize;
+ if (_isDrag) //拖拽中
{
- if (_dragHasCollision)
+ if (_activeArea != null)
{
- if (_activePointType == 0)
+ //拖拽节点操作
+ if (_activeArea.Direction == DoorDirection.N || _activeArea.Direction == DoorDirection.S)
{
- _activeArea.Start = _startDragValue;
- _activeArea.StartPosition = _startDragPositionValue;
+ if (_activePointType == 0)
+ {
+ var mouseOffset = Approach(mousePosition.X, tileSize.X);
+ _activeArea.StartPosition = new Vector2(mouseOffset, _activeArea.StartPosition.Y);
+ _activeArea.Start = mouseOffset - mapRect.Position.X;
+ _dragHasCollision = _activeArea.StartPosition.X <= mapRect.Position.X ||
+ _activeArea.StartPosition.X + 3 * tileSize.X >=
+ _activeArea.EndPosition.X ||
+ CheckDoorCollision(_activeArea.Direction, _activeArea);
+ }
+ else
+ {
+ var mouseOffset = Approach(mousePosition.X, tileSize.X);
+ _activeArea.EndPosition = new Vector2(mouseOffset, _activeArea.EndPosition.Y);
+ _activeArea.End = mouseOffset - mapRect.Position.X;
+ _dragHasCollision = _activeArea.EndPosition.X >= mapRect.Position.X + mapRect.Size.X ||
+ _activeArea.EndPosition.X - 3 * tileSize.X <=
+ _activeArea.StartPosition.X ||
+ CheckDoorCollision(_activeArea.Direction, _activeArea);
+ }
}
else
{
- _activeArea.End = _startDragValue;
- _activeArea.EndPosition = _startDragPositionValue;
+ if (_activePointType == 0)
+ {
+ var mouseOffset = Approach(mousePosition.Y, tileSize.Y);
+ _activeArea.StartPosition = new Vector2(_activeArea.StartPosition.X, mouseOffset);
+ _activeArea.Start = mouseOffset - mapRect.Position.Y;
+ _dragHasCollision = _activeArea.StartPosition.Y <= mapRect.Position.Y ||
+ _activeArea.StartPosition.Y + 3 * tileSize.Y >=
+ _activeArea.EndPosition.Y ||
+ CheckDoorCollision(_activeArea.Direction, _activeArea);
+ }
+ else
+ {
+ var mouseOffset = Approach(mousePosition.Y, tileSize.Y);
+ _activeArea.EndPosition = new Vector2(_activeArea.EndPosition.X, mouseOffset);
+ _activeArea.End = mouseOffset - mapRect.Position.Y;
+ _dragHasCollision = _activeArea.EndPosition.Y >= mapRect.Position.Y + mapRect.Size.Y ||
+ _activeArea.EndPosition.Y - 3 * tileSize.Y <=
+ _activeArea.StartPosition.Y ||
+ CheckDoorCollision(_activeArea.Direction, _activeArea);
+ }
}
}
- OnDoorAreaChange();
+ }
+ else
+ {
+ if (Mathf.Abs(mousePosition.Y - mapRect.Position.Y) <= 8 && mousePosition.X >= mapRect.Position.X &&
+ mousePosition.X <= mapRect.Position.X + mapRect.Size.X) //上
+ {
+ _hover = true;
+ _hoverDirection = DoorDirection.N;
+ var mouseOffset = Approach(mousePosition.X, tileSize.X);
+ _hoverPoint1 = new Vector2(mouseOffset - tileSize.X * 2, mapRect.Position.Y);
+ _hoverPoint2 = new Vector2(_hoverPoint1.X + tileSize.X * 4, _hoverPoint1.Y);
+
+ //判断是否能放下新的门
+ if (_hoverPoint1.X <= mapRect.Position.X ||
+ _hoverPoint2.X >= mapRect.Position.X + mapRect.Size.X ||
+ CheckDoorCollision())
+ {
+ _canPut = false;
+ FindHoverPoint(mouseOffset);
+ }
+ else
+ {
+ _canPut = true;
+ _hasActivePoint = false;
+ _activeArea = null;
+ }
+ }
+ else if (Mathf.Abs(mousePosition.X - mapRect.Position.X) <= 8 &&
+ mousePosition.Y >= mapRect.Position.Y &&
+ mousePosition.Y <= mapRect.Position.Y + mapRect.Size.Y) //左
+ {
+ _hover = true;
+ _hoverDirection = DoorDirection.W;
+ var mouseOffset = Approach(mousePosition.Y, tileSize.Y);
+ _hoverPoint1 = new Vector2(mapRect.Position.X, mouseOffset - tileSize.Y * 2);
+ _hoverPoint2 = new Vector2(_hoverPoint1.X, _hoverPoint1.Y + tileSize.X * 4);
+
+ //判断是否能放下新的门
+ if (_hoverPoint1.Y <= mapRect.Position.Y ||
+ _hoverPoint2.Y >= mapRect.Position.Y + mapRect.Size.Y ||
+ CheckDoorCollision())
+ {
+ _canPut = false;
+ FindHoverPoint(mouseOffset);
+ }
+ else
+ {
+ _canPut = true;
+ _hasActivePoint = false;
+ _activeArea = null;
+ }
+ }
+ else if (Mathf.Abs(mousePosition.Y - (mapRect.Position.Y + mapRect.Size.Y)) <= 8 &&
+ mousePosition.X >= mapRect.Position.X &&
+ mousePosition.X <= mapRect.Position.X + mapRect.Size.X) //下
+ {
+ _hover = true;
+ _hoverDirection = DoorDirection.S;
+ var mouseOffset = Approach(mousePosition.X, tileSize.X);
+ _hoverPoint1 = new Vector2(mouseOffset - tileSize.X * 2,
+ mapRect.Position.Y + mapRect.Size.Y);
+ _hoverPoint2 = new Vector2(_hoverPoint1.X + tileSize.X * 4, _hoverPoint1.Y);
+
+ //判断是否能放下新的门
+ if (_hoverPoint1.X <= mapRect.Position.X ||
+ _hoverPoint2.X >= mapRect.Position.X + mapRect.Size.X ||
+ CheckDoorCollision())
+ {
+ _canPut = false;
+ FindHoverPoint(mouseOffset);
+ }
+ else
+ {
+ _canPut = true;
+ _hasActivePoint = false;
+ _activeArea = null;
+ }
+ }
+ else if (Mathf.Abs(mousePosition.X - (mapRect.Position.X + mapRect.Size.X)) <= 8 &&
+ mousePosition.Y >= mapRect.Position.Y &&
+ mousePosition.Y <= mapRect.Position.Y + mapRect.Size.Y) //右
+ {
+ _hover = true;
+ _hoverDirection = DoorDirection.E;
+ var mouseOffset = Approach(mousePosition.Y, tileSize.Y);
+ _hoverPoint1 = new Vector2(mapRect.Position.X + mapRect.Size.X,
+ mouseOffset - tileSize.Y * 2);
+ _hoverPoint2 = new Vector2(_hoverPoint1.X, _hoverPoint1.Y + tileSize.X * 4);
+
+ //判断是否能放下新的门
+ if (_hoverPoint1.Y <= mapRect.Position.Y ||
+ _hoverPoint2.Y >= mapRect.Position.Y + mapRect.Size.Y ||
+ CheckDoorCollision())
+ {
+ _canPut = false;
+ FindHoverPoint(mouseOffset);
+ }
+ else
+ {
+ _canPut = true;
+ _hasActivePoint = false;
+ _activeArea = null;
+ }
+ }
+ else
+ {
+ _hover = false;
+ _canPut = false;
+ _hasActivePoint = false;
+ _activeArea = null;
+ }
}
- _dragHasCollision = false;
+ if (isClick && _canPut) //判断是否可以创建新的点
+ {
+ CreateDoorArea(mapRect);
+ }
+ else if (_mouseDown && !_isDrag) //拖拽节点
+ {
+ _isDrag = true;
+ _dragHasCollision = false;
+ if (_activeArea != null)
+ {
+ if (_activePointType == 0)
+ {
+ _startDragValue = _activeArea.Start;
+ _startDragPositionValue = _activeArea.StartPosition;
+ }
+ else
+ {
+ _startDragValue = _activeArea.End;
+ _startDragPositionValue = _activeArea.EndPosition;
+ }
+ }
+ }
+ else if (!_mouseDown && _isDrag) //松开拖拽的点
+ {
+ _isDrag = false;
+ if (_activeArea != null) //提交拖拽结果
+ {
+ if (_dragHasCollision)
+ {
+ if (_activePointType == 0)
+ {
+ _activeArea.Start = _startDragValue;
+ _activeArea.StartPosition = _startDragPositionValue;
+ }
+ else
+ {
+ _activeArea.End = _startDragValue;
+ _activeArea.EndPosition = _startDragPositionValue;
+ }
+ }
+
+ OnDoorAreaChange();
+ }
+
+ _dragHasCollision = false;
+ }
+
+ QueueRedraw();
}
-
- QueueRedraw();
+ else
+ {
+ ClearState();
+ }
}
else
{
- _hover = false;
- _canPut = false;
- _hasActivePoint = false;
- _activeArea = null;
+ ClearState();
}
//按下 ctrl + s 保存
@@ -473,6 +496,14 @@
}
}
+ private void ClearState()
+ {
+ _hover = false;
+ _canPut = false;
+ _hasActivePoint = false;
+ _activeArea = null;
+ }
+
//创建门
private void CreateDoorArea(Rect2 mapRect)
{
diff --git a/DungeonShooting_Godot/src/framework/map/DungeonTile.cs b/DungeonShooting_Godot/src/framework/map/DungeonTile.cs
index ade5c71..8dac660 100644
--- a/DungeonShooting_Godot/src/framework/map/DungeonTile.cs
+++ b/DungeonShooting_Godot/src/framework/map/DungeonTile.cs
@@ -20,6 +20,10 @@
/// TileMap 上层的层级
///
public const int TopMapLayer = 2;
+ ///
+ /// 连接房间的过道的地板层级
+ ///
+ public const int AisleFloorLayer = 3;
///
/// 配置层级的自定义数据名称
@@ -135,11 +139,11 @@
if (dir == 0) //横向
{
- FullHorizontalGalleryWall(config, rect, 0);
+ FullHorizontalAisleWall(config, rect, 0);
}
else //纵向
{
- FullVerticalGalleryWall(config, rect, 0);
+ FullVerticalAisleWall(config, rect, 0);
}
}
else //带交叉点
@@ -236,26 +240,26 @@
break;
}
- FillRect(FloorMapLayer, config.Floor, doorInfo.Cross + Vector2.One,
+ FillRect(AisleFloorLayer, config.Floor, doorInfo.Cross + Vector2.One,
new Vector2(GenerateDungeon.CorridorWidth - 2, GenerateDungeon.CorridorWidth - 2));
//墙壁, 0横向, 1纵向
if (dir1 == 0)
{
- FullHorizontalGalleryWall(config, rect, doorDir1 == DoorDirection.W ? 1: 2);
+ FullHorizontalAisleWall(config, rect, doorDir1 == DoorDirection.W ? 1: 2);
}
else
{
- FullVerticalGalleryWall(config, rect, doorDir1 == DoorDirection.N ? 1: 2);
+ FullVerticalAisleWall(config, rect, doorDir1 == DoorDirection.N ? 1 : 2);
}
if (dir2 == 0)
{
- FullHorizontalGalleryWall(config, rect2, doorDir2 == DoorDirection.W ? 1: 2);
+ FullHorizontalAisleWall(config, rect2, doorDir2 == DoorDirection.W ? 1 : 2);
}
else
{
- FullVerticalGalleryWall(config, rect2, doorDir2 == DoorDirection.N ? 1: 2);
+ FullVerticalAisleWall(config, rect2, doorDir2 == DoorDirection.N ? 1 : 2);
}
if ((doorDir1 == DoorDirection.N && doorDir2 == DoorDirection.E) || //↑→
@@ -377,42 +381,42 @@
}
}
}
-
- private void FullHorizontalGalleryWall(AutoTileConfig config, Rect2 rect, int type)
+
+ private void FullHorizontalAisleWall(AutoTileConfig config, Rect2 rect, int type)
{
- FillRect(FloorMapLayer, config.Floor, rect.Position + new Vector2(0, 1), rect.Size - new Vector2(0, 2));
+ FillRect(AisleFloorLayer, config.Floor, rect.Position + new Vector2(0, 1), rect.Size - new Vector2(0, 2));
FillRect(MiddleMapLayer, config.T, rect.Position, new Vector2(rect.Size.X, 1));
FillRect(TopMapLayer, config.B, rect.Position + new Vector2(0, rect.Size.Y - 1), new Vector2(rect.Size.X, 1));
//左
ClearRect(TopMapLayer, rect.Position + new Vector2(-1, 1), new Vector2(1, rect.Size.Y - 2));
if (type == 1)
{
- FillRect(FloorMapLayer, config.Floor, rect.Position + new Vector2(-1, 1), new Vector2(1, rect.Size.Y - 2));
+ FillRect(AisleFloorLayer, config.Floor, rect.Position + new Vector2(-1, 1), new Vector2(1, rect.Size.Y - 2));
}
//右
ClearRect(TopMapLayer, rect.Position + new Vector2(rect.Size.X, 1), new Vector2(1, rect.Size.Y - 2));
if (type == 2)
{
- FillRect(FloorMapLayer, config.Floor, rect.Position + new Vector2(rect.Size.X, 1), new Vector2(1, rect.Size.Y - 2));
+ FillRect(AisleFloorLayer, config.Floor, rect.Position + new Vector2(rect.Size.X, 1), new Vector2(1, rect.Size.Y - 2));
}
}
- private void FullVerticalGalleryWall(AutoTileConfig config, Rect2 rect, int type)
+ private void FullVerticalAisleWall(AutoTileConfig config, Rect2 rect, int type)
{
- FillRect(FloorMapLayer, config.Floor, rect.Position + new Vector2(1, 0), rect.Size - new Vector2(2, 0));
+ FillRect(AisleFloorLayer, config.Floor, rect.Position + new Vector2(1, 0), rect.Size - new Vector2(2, 0));
FillRect(TopMapLayer, config.L, rect.Position, new Vector2(1, rect.Size.Y));
FillRect(TopMapLayer, config.R, rect.Position + new Vector2(rect.Size.X - 1, 0), new Vector2(1, rect.Size.Y));
//上
ClearRect(TopMapLayer, rect.Position + new Vector2(1, -1), new Vector2(rect.Size.X - 2, 1));
if (type == 1)
{
- FillRect(FloorMapLayer, config.Floor, rect.Position + new Vector2(1, -1), new Vector2(rect.Size.X - 2, 1));
+ FillRect(AisleFloorLayer, config.Floor, rect.Position + new Vector2(1, -1), new Vector2(rect.Size.X - 2, 1));
}
//下
ClearRect(MiddleMapLayer, rect.Position + new Vector2(1, rect.Size.Y), new Vector2(rect.Size.X - 2, 1));
if (type == 2)
{
- FillRect(FloorMapLayer, config.Floor, rect.Position + new Vector2(1, rect.Size.Y), new Vector2(rect.Size.X - 2, 1));
+ FillRect(AisleFloorLayer, config.Floor, rect.Position + new Vector2(1, rect.Size.Y), new Vector2(rect.Size.X - 2, 1));
}
}
@@ -432,6 +436,9 @@
///
public void GenerateNavigationPolygon(int layer)
{
+ _usePoints.Clear();
+ _polygonDataList.Clear();
+
var size = new Vector2(_tileRoot.CellQuadrantSize, _tileRoot.CellQuadrantSize);
var rect = _tileRoot.GetUsedRect();
diff --git a/DungeonShooting_Godot/src/game/room/RoomManager.cs b/DungeonShooting_Godot/src/game/room/RoomManager.cs
index 448f6ed..0f891f8 100644
--- a/DungeonShooting_Godot/src/game/room/RoomManager.cs
+++ b/DungeonShooting_Godot/src/game/room/RoomManager.cs
@@ -60,7 +60,7 @@
_dungeonTile.AutoFillRoomTile(_autoTileConfig, _generateDungeon.StartRoom);
//生成寻路网格
- _dungeonTile.GenerateNavigationPolygon(DungeonTile.FloorMapLayer);
+ _dungeonTile.GenerateNavigationPolygon(DungeonTile.AisleFloorLayer);
//挂载导航区域
_dungeonTile.MountNavigationPolygon(this);
GD.Print("生成地牢用时: " + (DateTime.Now.Ticks - nowTicks) / 10000 + "毫秒");