mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2024-11-16 20:17:30 +08:00
parent
6cf72c4b74
commit
e5dc63f429
@ -706,7 +706,6 @@ namespace CodeWalker.World
|
||||
{
|
||||
var xDir = Math.Min(1, Math.Max(-1, desiredX - ynd.CellX));
|
||||
var yDir = Math.Min(1, Math.Max(-1, desiredY - ynd.CellY));
|
||||
|
||||
var x = desiredX;
|
||||
var y = desiredY;
|
||||
|
||||
@ -718,11 +717,9 @@ namespace CodeWalker.World
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
x += xDir;
|
||||
}
|
||||
}
|
||||
|
||||
if (yDir != 0)
|
||||
{
|
||||
while (y >= 0 && y <= 31)
|
||||
@ -731,16 +728,61 @@ namespace CodeWalker.World
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
y += yDir;
|
||||
}
|
||||
}
|
||||
|
||||
var dx = x - ynd.CellX;
|
||||
var dy = y - ynd.CellY;
|
||||
var areaId = y * 32 + x;
|
||||
var areaIdorig = ynd.AreaID;
|
||||
var changed = ynd.AreaID != areaId;
|
||||
ynd.CellX = x;
|
||||
ynd.CellY = y;
|
||||
var areaId = y * 32 + x;
|
||||
ynd.AreaID = areaId;
|
||||
ynd.Name = $"nodes{areaId}";
|
||||
if (changed)
|
||||
{
|
||||
var nodes = ynd.Nodes;
|
||||
if (nodes != null)
|
||||
{
|
||||
for (int i = 0; i < nodes.Length; i++)
|
||||
{
|
||||
var node = nodes[i];
|
||||
node.SetPosition(node.Position + new Vector3(512 * dx, 512 * dy, 0));
|
||||
if (node.AreaID == areaIdorig)
|
||||
{
|
||||
node.AreaID = (ushort)areaId;
|
||||
}
|
||||
}
|
||||
}
|
||||
var links = ynd.Links;
|
||||
if (links != null)
|
||||
{
|
||||
for (int i = 0; i < links.Length; i++)
|
||||
{
|
||||
var link = links[i];
|
||||
if (link._RawData.AreaID == areaIdorig)
|
||||
{
|
||||
link._RawData.AreaID = (ushort)areaId;
|
||||
}
|
||||
}
|
||||
}
|
||||
var juncs = ynd.Junctions;
|
||||
if (juncs != null)
|
||||
{
|
||||
for (int i = 0; i < juncs.Length; i++)
|
||||
{
|
||||
var junc = juncs[i];
|
||||
junc.PositionX += (short)(512 * dx);
|
||||
junc.PositionY += (short)(512 * dy);
|
||||
}
|
||||
}
|
||||
ynd.UpdateAllNodePositions();
|
||||
ynd.UpdateBoundingBox();
|
||||
ynd.UpdateTriangleVertices(null);
|
||||
ynd.BuildStructs();
|
||||
}
|
||||
NodeGrid.UpdateYnd(ynd);
|
||||
}
|
||||
|
||||
|
656
CodeWalker/Project/Panels/EditYndNodePanel.Designer.cs
generated
656
CodeWalker/Project/Panels/EditYndNodePanel.Designer.cs
generated
File diff suppressed because it is too large
Load Diff
@ -103,11 +103,12 @@ namespace CodeWalker.Project.Panels
|
||||
{
|
||||
if (ProjectForm.WorldForm == null)
|
||||
{
|
||||
MessageBox.Show("You can only do this while in full CodeWalker", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
MessageBox.Show("You can only do this while the Project Window is open.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
ProjectForm.WorldForm.Space.MoveYndArea(Ynd, x, y);
|
||||
ProjectForm.WorldForm.UpdatePathYndGraphics(Ynd, true);
|
||||
ProjectForm.SetYndHasChanged(Ynd, true);
|
||||
|
||||
// Take the updated information
|
||||
|
Loading…
Reference in New Issue
Block a user