mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2024-11-21 22:42:54 +08:00
Auto update Allow full rotation flag for entities when changing their rotation
This commit is contained in:
parent
89e838550f
commit
071830b3d7
@ -32,6 +32,13 @@ namespace CodeWalker.WinForms
|
|||||||
UpdateFromValue();
|
UpdateFromValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public Vector3 EulerDeg
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return new Vector3((float)EulerXUpDown.Value, (float)EulerYUpDown.Value, (float)EulerZUpDown.Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private Quaternion _Value = Quaternion.Identity;
|
private Quaternion _Value = Quaternion.Identity;
|
||||||
private bool suppressEvents = false;
|
private bool suppressEvents = false;
|
||||||
|
@ -22,11 +22,12 @@ namespace CodeWalker.Project.Panels
|
|||||||
|
|
||||||
public void SetEntity(YmapEntityDef entity)
|
public void SetEntity(YmapEntityDef entity)
|
||||||
{
|
{
|
||||||
|
var sameEntity = (entity == CurrentEntity);
|
||||||
CurrentEntity = entity;
|
CurrentEntity = entity;
|
||||||
MloInstanceData instance = entity?.MloParent?.MloInstance;
|
MloInstanceData instance = entity?.MloParent?.MloInstance;
|
||||||
CurrentMCEntity = instance?.TryGetArchetypeEntity(entity);
|
CurrentMCEntity = instance?.TryGetArchetypeEntity(entity);
|
||||||
Tag = entity;
|
Tag = entity;
|
||||||
LoadEntity();
|
LoadEntity(sameEntity);
|
||||||
UpdateFormTitle();
|
UpdateFormTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,7 +56,7 @@ namespace CodeWalker.Project.Panels
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void LoadEntity()
|
private void LoadEntity(bool sameEntity)
|
||||||
{
|
{
|
||||||
if (CurrentEntity == null)
|
if (CurrentEntity == null)
|
||||||
{
|
{
|
||||||
@ -92,6 +93,8 @@ namespace CodeWalker.Project.Panels
|
|||||||
populatingui = true;
|
populatingui = true;
|
||||||
var e = CurrentEntity._CEntityDef;
|
var e = CurrentEntity._CEntityDef;
|
||||||
var po = CurrentEntity.PivotOrientation;
|
var po = CurrentEntity.PivotOrientation;
|
||||||
|
var rot = new Quaternion(e.rotation);
|
||||||
|
var rotupd = (EntityRotationQuatBox.Value != rot);
|
||||||
//EntityPanel.Enabled = true;
|
//EntityPanel.Enabled = true;
|
||||||
EntityAddToProjectButton.Enabled = CurrentEntity.Ymap != null ? !ProjectForm.YmapExistsInProject(CurrentEntity.Ymap) : !ProjectForm.YtypExistsInProject(CurrentEntity.MloParent?.Archetype?.Ytyp);
|
EntityAddToProjectButton.Enabled = CurrentEntity.Ymap != null ? !ProjectForm.YmapExistsInProject(CurrentEntity.Ymap) : !ProjectForm.YtypExistsInProject(CurrentEntity.MloParent?.Archetype?.Ytyp);
|
||||||
EntityDeleteButton.Enabled = !EntityAddToProjectButton.Enabled;
|
EntityDeleteButton.Enabled = !EntityAddToProjectButton.Enabled;
|
||||||
@ -100,7 +103,7 @@ namespace CodeWalker.Project.Panels
|
|||||||
EntityFlagsTextBox.Text = e.flags.ToString();
|
EntityFlagsTextBox.Text = e.flags.ToString();
|
||||||
EntityGuidTextBox.Text = e.guid.ToString();
|
EntityGuidTextBox.Text = e.guid.ToString();
|
||||||
EntityPositionTextBox.Text = FloatUtil.GetVector3String(e.position);
|
EntityPositionTextBox.Text = FloatUtil.GetVector3String(e.position);
|
||||||
EntityRotationQuatBox.Value = new Quaternion(e.rotation);
|
EntityRotationQuatBox.Value = rot;
|
||||||
EntityScaleXYTextBox.Text = FloatUtil.ToString(e.scaleXY);
|
EntityScaleXYTextBox.Text = FloatUtil.ToString(e.scaleXY);
|
||||||
EntityScaleZTextBox.Text = FloatUtil.ToString(e.scaleZ);
|
EntityScaleZTextBox.Text = FloatUtil.ToString(e.scaleZ);
|
||||||
EntityParentIndexTextBox.Text = e.parentIndex.ToString();
|
EntityParentIndexTextBox.Text = e.parentIndex.ToString();
|
||||||
@ -156,6 +159,12 @@ namespace CodeWalker.Project.Panels
|
|||||||
UpdateTabVisibility();
|
UpdateTabVisibility();
|
||||||
|
|
||||||
|
|
||||||
|
if (rotupd && sameEntity)
|
||||||
|
{
|
||||||
|
UpdateRotationFlag();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
var ms = ProjectForm.WorldForm?.CurrentMapSelection;
|
var ms = ProjectForm.WorldForm?.CurrentMapSelection;
|
||||||
if ((ms?.EntityDef != CurrentEntity) && (ms?.MloEntityDef != CurrentEntity))
|
if ((ms?.EntityDef != CurrentEntity) && (ms?.MloEntityDef != CurrentEntity))
|
||||||
{
|
{
|
||||||
@ -215,6 +224,17 @@ namespace CodeWalker.Project.Panels
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void UpdateRotationFlag()
|
||||||
|
{
|
||||||
|
if (CurrentEntity == null) return;
|
||||||
|
|
||||||
|
var eul = EntityRotationQuatBox.EulerDeg;
|
||||||
|
var flag = (eul.X != 0.0f) || (eul.Y != 0.0f); //this isn't fully correct, but probably better than nothing
|
||||||
|
|
||||||
|
EntityFlagsCheckedListBox.SetItemChecked(0, flag);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void EntityArchetypeTextBox_TextChanged(object sender, EventArgs e)
|
private void EntityArchetypeTextBox_TextChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (populatingui) return;
|
if (populatingui) return;
|
||||||
@ -416,6 +436,8 @@ namespace CodeWalker.Project.Panels
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UpdateRotationFlag();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void EntityScaleXYTextBox_TextChanged(object sender, EventArgs e)
|
private void EntityScaleXYTextBox_TextChanged(object sender, EventArgs e)
|
||||||
@ -793,9 +815,5 @@ namespace CodeWalker.Project.Panels
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void EntityFlagsCheckedListBox_SelectedIndexChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user