功能:正确的U型洞方向

pull/1906/MERGE
ChenX 2 years ago
parent 699864a18a
commit 8438daecc1

@ -583,26 +583,64 @@ export class Command_DrawHole implements Command
if (!equalv3(wall.StartPoint, route.from.position, 1e-3)) if (!equalv3(wall.StartPoint, route.from.position, 1e-3))
wall.Reverse(); wall.Reverse();
let needRevrse = false;
let length1 = wall1.Length;
let length2 = wall2.Length;
if (!equalv3(wall1.EndPoint, route.from.position, 1e-3)) if (!equalv3(wall1.EndPoint, route.from.position, 1e-3))
{
wall1.Reverse(); wall1.Reverse();
let wall1Range = ParseWallRange(orgWalls[0])[0];
length1 *= wall1Range[1];
//需要翻转洞的方向
if (wall1Range.left !== WallFaceType.Inside)
needRevrse = true;
}
else
{
let wall1Range = arrayLast(ParseWallRange(orgWalls[0]));
length1 *= 1 - wall1Range[0];
//需要翻转洞的方向
if (wall1Range.right !== WallFaceType.Inside)
needRevrse = true;
}
if (!equalv3(wall2.StartPoint, route.to.position, 1e-3)) if (!equalv3(wall2.StartPoint, route.to.position, 1e-3))
{
wall2.Reverse(); wall2.Reverse();
let wall2Range = arrayLast(ParseWallRange(orgWalls[2]));
length2 *= 1 - wall2Range[0];
}
else
{
let wall2Range = ParseWallRange(orgWalls[2])[0];
length2 *= wall2Range[1];
}
if (r1.length > 600) if (length1 > 600)
wall1.StartPoint = wall1.GetPointAtDistance(wall1.Length - 600); wall1.StartPoint = wall1.GetPointAtDistance(wall1.Length - 600);
else else
wall1.StartPoint = r1.to.position; wall1.StartPoint = wall1.GetPointAtDistance(wall1.Length - length1);
if (r2.length > 600) if (length2 > 600)
wall2.EndPoint = wall2.GetPointAtDistance(600); wall2.EndPoint = wall2.GetPointAtDistance(600);
else else
wall2.EndPoint = r2.to.position; wall2.EndPoint = wall2.GetPointAtDistance(length2);
fakerWalls = [wall1, wall, wall2]; fakerWalls = [wall1, wall, wall2];
preWalls = orgWalls; preWalls = orgWalls;
if (needRevrse)
{
fakerWalls.reverse();
orgWalls.reverse();
for (let w of fakerWalls) w.Reverse();
}
let lowestwall = orgWalls.reduce((pre, cur) => //高度最低的墙 let lowestwall = orgWalls.reduce((pre, cur) => //高度最低的墙
{ {
return pre.Height < cur.Height ? pre : cur; return pre.Height < cur.Height ? pre : cur;

Loading…
Cancel
Save