mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2024-11-30 10:52:55 +08:00
151 lines
4.7 KiB
C#
151 lines
4.7 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 EditYnvPointPanel : ProjectPanel
|
|
{
|
|
public ProjectForm ProjectForm;
|
|
public YnvPoint YnvPoint { get; set; }
|
|
|
|
private bool populatingui = false;
|
|
|
|
public EditYnvPointPanel(ProjectForm projectForm)
|
|
{
|
|
ProjectForm = projectForm;
|
|
InitializeComponent();
|
|
}
|
|
|
|
public void SetYnvPoint(YnvPoint ynvPoint)
|
|
{
|
|
YnvPoint = ynvPoint;
|
|
Tag = ynvPoint;
|
|
UpdateFormTitle();
|
|
UpdateYnvPointUI();
|
|
}
|
|
|
|
private void UpdateFormTitle()
|
|
{
|
|
Text = "Nav Point " + YnvPoint.Index.ToString();
|
|
}
|
|
|
|
|
|
public void UpdateYnvPointUI()
|
|
{
|
|
if (YnvPoint == null)
|
|
{
|
|
////YnvPointPanel.Enabled = false;
|
|
DeletePointButton.Enabled = false;
|
|
AddToProjectButton.Enabled = false;
|
|
YnvPointPositionTextBox.Text = string.Empty;
|
|
YnvPointAngleUpDown.Value = 0;
|
|
YnvPointTypeUpDown.Value = 0;
|
|
}
|
|
else
|
|
{
|
|
populatingui = true;
|
|
////YnvPortalPanel.Enabled = true;
|
|
DeletePointButton.Enabled = ProjectForm.YnvExistsInProject(YnvPoint.Ynv);
|
|
AddToProjectButton.Enabled = !DeletePointButton.Enabled;
|
|
YnvPointPositionTextBox.Text = FloatUtil.GetVector3String(YnvPoint.Position);
|
|
YnvPointAngleUpDown.Value = YnvPoint.Angle;
|
|
YnvPointTypeUpDown.Value = YnvPoint.Type;
|
|
populatingui = false;
|
|
}
|
|
}
|
|
|
|
private void YnvPointPositionTextBox_TextChanged(object sender, EventArgs e)
|
|
{
|
|
if (populatingui) return;
|
|
if (YnvPoint == null) return;
|
|
Vector3 v = FloatUtil.ParseVector3String(YnvPointPositionTextBox.Text);
|
|
bool change = false;
|
|
lock (ProjectForm.ProjectSyncRoot)
|
|
{
|
|
if (YnvPoint.Position != v)
|
|
{
|
|
YnvPoint.SetPosition(v);
|
|
ProjectForm.SetYnvHasChanged(true);
|
|
change = true;
|
|
}
|
|
}
|
|
if (change)
|
|
{
|
|
if (ProjectForm.WorldForm != null)
|
|
{
|
|
ProjectForm.WorldForm.SetWidgetPosition(YnvPoint.Position);
|
|
ProjectForm.WorldForm.UpdateNavPointGraphics(YnvPoint, false);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void YnvPointAngleUpDown_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
if (populatingui) return;
|
|
if (YnvPoint == null) return;
|
|
byte ang = (byte)YnvPointAngleUpDown.Value;
|
|
bool change = false;
|
|
lock (ProjectForm.ProjectSyncRoot)
|
|
{
|
|
if (YnvPoint.Angle != ang)
|
|
{
|
|
YnvPoint.Angle = ang;
|
|
ProjectForm.SetYnvHasChanged(true);
|
|
change = true;
|
|
}
|
|
}
|
|
if (change)
|
|
{
|
|
if (ProjectForm.WorldForm != null)
|
|
{
|
|
ProjectForm.WorldForm.SetWidgetRotation(YnvPoint.Orientation);
|
|
//ProjectForm.WorldForm.UpdateNavPointGraphics(YnvPoint, false);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void YnvPointTypeUpDown_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
if (populatingui) return;
|
|
if (YnvPoint == null) return;
|
|
byte typ = (byte)YnvPointTypeUpDown.Value;
|
|
lock (ProjectForm.ProjectSyncRoot)
|
|
{
|
|
if (YnvPoint.Type != typ)
|
|
{
|
|
YnvPoint.Type = typ;
|
|
ProjectForm.SetYnvHasChanged(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void YnvPointGoToButton_Click(object sender, EventArgs e)
|
|
{
|
|
if (YnvPoint == null) return;
|
|
if (ProjectForm.WorldForm == null) return;
|
|
ProjectForm.WorldForm.GoToPosition(YnvPoint.Position);
|
|
}
|
|
|
|
private void AddToProjectButton_Click(object sender, EventArgs e)
|
|
{
|
|
if (YnvPoint == null) return;
|
|
ProjectForm.SetProjectItem(YnvPoint);
|
|
ProjectForm.AddYnvToProject(YnvPoint.Ynv);
|
|
}
|
|
|
|
private void DeletePointButton_Click(object sender, EventArgs e)
|
|
{
|
|
MessageBox.Show("Delete Point TODO!");
|
|
}
|
|
}
|
|
}
|