mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2024-08-21 17:39:20 +08:00
312 lines
10 KiB
C#
312 lines
10 KiB
C#
using CodeWalker.GameFiles;
|
|
using SharpDX;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace CodeWalker.Project.Panels
|
|
{
|
|
public partial class EditYnvPortalPanel : ProjectPanel
|
|
{
|
|
public ProjectForm ProjectForm;
|
|
public YnvPortal YnvPortal { get; set; }
|
|
|
|
private bool populatingui = false;
|
|
|
|
public EditYnvPortalPanel(ProjectForm projectForm)
|
|
{
|
|
ProjectForm = projectForm;
|
|
InitializeComponent();
|
|
}
|
|
|
|
public void SetYnvPortal(YnvPortal ynvPortal)
|
|
{
|
|
YnvPortal = ynvPortal;
|
|
Tag = ynvPortal;
|
|
UpdateFormTitle();
|
|
UpdateYnvPortalUI();
|
|
}
|
|
|
|
private void UpdateFormTitle()
|
|
{
|
|
Text = "Nav Portal " + YnvPortal.Index.ToString();
|
|
}
|
|
|
|
|
|
public void UpdateYnvPortalUI()
|
|
{
|
|
if (YnvPortal == null)
|
|
{
|
|
DeletePortalButton.Enabled = false;
|
|
AddToProjectButton.Enabled = false;
|
|
PositionFromTextBox.Text = string.Empty;
|
|
PositionToTextBox.Text = string.Empty;
|
|
AngleUpDown.Value = 0;
|
|
TypeUpDown.Value = 0;
|
|
AreaIDFromUpDown.Value = 0;
|
|
AreaIDToUpDown.Value = 0;
|
|
PolyIDFrom1UpDown.Value = 0;
|
|
PolyIDTo1UpDown.Value = 0;
|
|
PolyIDFrom2UpDown.Value = 0;
|
|
PolyIDTo2UpDown.Value = 0;
|
|
Unk1UpDown.Value = 0;
|
|
Unk2UpDown.Value = 0;
|
|
}
|
|
else
|
|
{
|
|
populatingui = true;
|
|
DeletePortalButton.Enabled = ProjectForm.YnvExistsInProject(YnvPortal.Ynv);
|
|
AddToProjectButton.Enabled = !DeletePortalButton.Enabled;
|
|
PositionFromTextBox.Text = FloatUtil.GetVector3String(YnvPortal.PositionFrom);
|
|
PositionToTextBox.Text = FloatUtil.GetVector3String(YnvPortal.PositionTo);
|
|
AngleUpDown.Value = YnvPortal.Angle;
|
|
TypeUpDown.Value = YnvPortal.Type;
|
|
AreaIDFromUpDown.Value = YnvPortal.AreaIDFrom;
|
|
AreaIDToUpDown.Value = YnvPortal.AreaIDTo;
|
|
PolyIDFrom1UpDown.Value = YnvPortal.PolyIDFrom1;
|
|
PolyIDTo1UpDown.Value = YnvPortal.PolyIDTo1;
|
|
PolyIDFrom2UpDown.Value = YnvPortal.PolyIDFrom2;
|
|
PolyIDTo2UpDown.Value = YnvPortal.PolyIDTo2;
|
|
Unk1UpDown.Value = YnvPortal.Unk1;
|
|
Unk2UpDown.Value = YnvPortal.Unk2;
|
|
populatingui = false;
|
|
}
|
|
}
|
|
|
|
private void PositionFromTextBox_TextChanged(object sender, EventArgs e)
|
|
{
|
|
if (populatingui) return;
|
|
if (YnvPortal == null) return;
|
|
Vector3 v = FloatUtil.ParseVector3String(PositionFromTextBox.Text);
|
|
bool change = false;
|
|
lock (ProjectForm.ProjectSyncRoot)
|
|
{
|
|
if (YnvPortal.PositionFrom != v)
|
|
{
|
|
YnvPortal.PositionFrom = v;
|
|
ProjectForm.SetYnvHasChanged(true);
|
|
change = true;
|
|
}
|
|
}
|
|
if (change)
|
|
{
|
|
if (ProjectForm.WorldForm != null)
|
|
{
|
|
ProjectForm.WorldForm.SetWidgetPosition(YnvPortal.Position);
|
|
ProjectForm.WorldForm.UpdateNavPortalGraphics(YnvPortal, false);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void PositionToTextBox_TextChanged(object sender, EventArgs e)
|
|
{
|
|
if (populatingui) return;
|
|
if (YnvPortal == null) return;
|
|
Vector3 v = FloatUtil.ParseVector3String(PositionToTextBox.Text);
|
|
bool change = false;
|
|
lock (ProjectForm.ProjectSyncRoot)
|
|
{
|
|
if (YnvPortal.PositionTo != v)
|
|
{
|
|
YnvPortal.PositionTo = v;
|
|
ProjectForm.SetYnvHasChanged(true);
|
|
change = true;
|
|
}
|
|
}
|
|
if (change)
|
|
{
|
|
if (ProjectForm.WorldForm != null)
|
|
{
|
|
ProjectForm.WorldForm.SetWidgetPosition(YnvPortal.Position);
|
|
ProjectForm.WorldForm.UpdateNavPortalGraphics(YnvPortal, false);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void AngleUpDown_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
if (populatingui) return;
|
|
if (YnvPortal == null) return;
|
|
byte ang = (byte)AngleUpDown.Value;
|
|
bool change = false;
|
|
lock (ProjectForm.ProjectSyncRoot)
|
|
{
|
|
if (YnvPortal.Angle != ang)
|
|
{
|
|
YnvPortal.Angle = ang;
|
|
ProjectForm.SetYnvHasChanged(true);
|
|
change = true;
|
|
}
|
|
}
|
|
if (change)
|
|
{
|
|
if (ProjectForm.WorldForm != null)
|
|
{
|
|
ProjectForm.WorldForm.SetWidgetRotation(YnvPortal.Orientation);
|
|
//ProjectForm.WorldForm.UpdateNavPortalGraphics(YnvPortal, false);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void TypeUpDown_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
if (populatingui) return;
|
|
if (YnvPortal == null) return;
|
|
byte typ = (byte)TypeUpDown.Value;
|
|
lock (ProjectForm.ProjectSyncRoot)
|
|
{
|
|
if (YnvPortal.Type != typ)
|
|
{
|
|
YnvPortal.Type = typ;
|
|
ProjectForm.SetYnvHasChanged(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void AreaIDFromUpDown_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
if (populatingui) return;
|
|
if (YnvPortal == null) return;
|
|
ushort id = (ushort)AreaIDFromUpDown.Value;
|
|
lock (ProjectForm.ProjectSyncRoot)
|
|
{
|
|
if (YnvPortal.AreaIDFrom != id)
|
|
{
|
|
YnvPortal.AreaIDFrom = id;
|
|
ProjectForm.SetYnvHasChanged(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void AreaIDToUpDown_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
if (populatingui) return;
|
|
if (YnvPortal == null) return;
|
|
ushort id = (ushort)AreaIDToUpDown.Value;
|
|
lock (ProjectForm.ProjectSyncRoot)
|
|
{
|
|
if (YnvPortal.AreaIDTo != id)
|
|
{
|
|
YnvPortal.AreaIDTo = id;
|
|
ProjectForm.SetYnvHasChanged(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void PolyIDFrom1UpDown_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
if (populatingui) return;
|
|
if (YnvPortal == null) return;
|
|
ushort id = (ushort)PolyIDFrom1UpDown.Value;
|
|
lock (ProjectForm.ProjectSyncRoot)
|
|
{
|
|
if (YnvPortal.PolyIDFrom1 != id)
|
|
{
|
|
YnvPortal.PolyIDFrom1 = id;
|
|
ProjectForm.SetYnvHasChanged(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void PolyIDTo1UpDown_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
if (populatingui) return;
|
|
if (YnvPortal == null) return;
|
|
ushort id = (ushort)PolyIDTo1UpDown.Value;
|
|
lock (ProjectForm.ProjectSyncRoot)
|
|
{
|
|
if (YnvPortal.PolyIDTo1 != id)
|
|
{
|
|
YnvPortal.PolyIDTo1 = id;
|
|
ProjectForm.SetYnvHasChanged(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void PolyIDFrom2UpDown_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
if (populatingui) return;
|
|
if (YnvPortal == null) return;
|
|
ushort id = (ushort)PolyIDFrom2UpDown.Value;
|
|
lock (ProjectForm.ProjectSyncRoot)
|
|
{
|
|
if (YnvPortal.PolyIDFrom2 != id)
|
|
{
|
|
YnvPortal.PolyIDFrom2 = id;
|
|
ProjectForm.SetYnvHasChanged(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void PolyIDTo2UpDown_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
if (populatingui) return;
|
|
if (YnvPortal == null) return;
|
|
ushort id = (ushort)PolyIDTo2UpDown.Value;
|
|
lock (ProjectForm.ProjectSyncRoot)
|
|
{
|
|
if (YnvPortal.PolyIDTo2 != id)
|
|
{
|
|
YnvPortal.PolyIDTo2 = id;
|
|
ProjectForm.SetYnvHasChanged(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void Unk1UpDown_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
if (populatingui) return;
|
|
if (YnvPortal == null) return;
|
|
ushort unk = (ushort)Unk1UpDown.Value;
|
|
lock (ProjectForm.ProjectSyncRoot)
|
|
{
|
|
if (YnvPortal.Unk1 != unk)
|
|
{
|
|
YnvPortal.Unk1 = unk;
|
|
ProjectForm.SetYnvHasChanged(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void Unk2UpDown_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
if (populatingui) return;
|
|
if (YnvPortal == null) return;
|
|
byte unk = (byte)Unk2UpDown.Value;
|
|
lock (ProjectForm.ProjectSyncRoot)
|
|
{
|
|
if (YnvPortal.Unk2 != unk)
|
|
{
|
|
YnvPortal.Unk2 = unk;
|
|
ProjectForm.SetYnvHasChanged(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void GoToButton_Click(object sender, EventArgs e)
|
|
{
|
|
if (YnvPortal == null) return;
|
|
if (ProjectForm.WorldForm == null) return;
|
|
ProjectForm.WorldForm.GoToPosition(YnvPortal.Position);
|
|
}
|
|
|
|
private void AddToProjectButton_Click(object sender, EventArgs e)
|
|
{
|
|
if (YnvPortal == null) return;
|
|
ProjectForm.SetProjectItem(YnvPortal);
|
|
ProjectForm.AddYnvToProject(YnvPortal.Ynv);
|
|
}
|
|
|
|
private void DeletePortalButton_Click(object sender, EventArgs e)
|
|
{
|
|
MessageBox.Show("Delete Portal TODO!");
|
|
}
|
|
}
|
|
}
|