1
0
mirror of synced 2024-11-12 02:00:50 +01:00

Alot of layout editor improvements

- Parent origins are now properly applied. Origin values are also correct (were previously being done wrong).
- Rotations on X and Y axis now work correctly.
- Selection shows a proper bounding if the rotation is rotated on the X or Y axis.
- Perspective and orthographic modes can be toggled be
tween in the layout editor.
Alpha influence is applied properly to picture boxes.
Adjustments to bflim loading, so it can load textures without an extension.
This commit is contained in:
KillzXGaming 2019-09-06 19:12:39 -04:00
parent 62005511e8
commit a0e680e626
11 changed files with 786 additions and 611 deletions

View File

@ -192,6 +192,8 @@ namespace LayoutBXLYT.Cafe
public Dictionary<string, STGenericTexture> GetTextures()
{
BFLIM test = new BFLIM();
Dictionary<string, STGenericTexture> textures = new Dictionary<string, STGenericTexture>();
if (IFileInfo.ArchiveParent != null)
{
@ -205,7 +207,7 @@ namespace LayoutBXLYT.Cafe
if (!textures.ContainsKey(tex.Key))
textures.Add(tex.Key, tex.Value);
}
else if (Utils.GetExtension(file.FileName) == ".bflim")
else if (test.Identify(new MemoryStream(file.FileData)))
{
BFLIM bflim = (BFLIM)file.OpenFile();
file.FileFormat = bflim;
@ -394,6 +396,7 @@ namespace LayoutBXLYT.Cafe
AddPaneToTable(panel);
if (!setRoot)
{
panel.IsRoot = true;
RootPane = panel;
setRoot = true;
}
@ -1569,7 +1572,7 @@ namespace LayoutBXLYT.Cafe
public override string Signature { get; } = "pan1";
private byte _flags1;
private byte _flags2;
private byte origin;
[DisplayName("Is Visible"), CategoryAttribute("Flags")]
public bool Visible
@ -1597,46 +1600,46 @@ namespace LayoutBXLYT.Cafe
}
[DisplayName("Origin X"), CategoryAttribute("Origin")]
public OriginX originX
public override OriginX originX
{
get { return (OriginX)((_flags2 & 0xC0) >> 6); }
get { return (OriginX)(origin & 3); }
set
{
_flags2 &= unchecked((byte)(~0xC0));
_flags2 |= (byte)((byte)value << 6);
origin &= unchecked((byte)(~3));
origin |= (byte)value;
}
}
[DisplayName("Origin Y"), CategoryAttribute("Origin")]
public OriginY originY
public override OriginY originY
{
get { return (OriginY)((_flags2 & 0x30) >> 4); }
get { return (OriginY)((origin >> 2) & 3); }
set
{
_flags2 &= unchecked((byte)(~0x30));
_flags2 |= (byte)((byte)value << 4);
origin |= (byte)((byte)value << 2);
origin &= unchecked((byte)(~3));
}
}
[Browsable(false)]
public OriginX ParentOriginX
[DisplayName("Parent Origin X"), CategoryAttribute("Origin")]
public override OriginX ParentOriginX
{
get { return (OriginX)((_flags2 & 0xC) >> 2); }
get { return (OriginX)((origin >> 4) & 3); }
set
{
_flags2 &= unchecked((byte)(~0xC));
_flags2 |= (byte)((byte)value << 2);
origin |= (byte)((byte)value << 4);
origin &= unchecked((byte)(~3));
}
}
[Browsable(false)]
public OriginY ParentOriginY
[DisplayName("Parent Origin Y"), CategoryAttribute("Origin")]
public override OriginY ParentOriginY
{
get { return (OriginY)((_flags2 & 0x3)); }
get { return (OriginY)((origin >> 6) & 3); }
set
{
_flags2 &= unchecked((byte)(~0x3));
_flags2 |= (byte)value;
origin |= (byte)((byte)value << 6);
origin &= unchecked((byte)(~3));
}
}
@ -1673,7 +1676,7 @@ namespace LayoutBXLYT.Cafe
public PAN1(FileReader reader) : base()
{
_flags1 = reader.ReadByte();
_flags2 = reader.ReadByte();
origin = reader.ReadByte();
Alpha = reader.ReadByte();
PaneMagFlags = reader.ReadByte();
Name = reader.ReadString(0x18).Replace("\0", string.Empty);
@ -1688,7 +1691,7 @@ namespace LayoutBXLYT.Cafe
public override void Write(FileWriter writer, BxlytHeader header)
{
writer.Write(_flags1);
writer.Write(_flags2);
writer.Write(origin);
writer.Write(Alpha);
writer.Write(PaneMagFlags);
writer.WriteString(Name, 0x18);

View File

@ -13,6 +13,13 @@ namespace LayoutBXLYT
{
public class BasePane : SectionCommon
{
public bool IsRoot = false;
public bool ParentIsRoot
{
get { return Parent != null && Parent.IsRoot; }
}
[DisplayName("Alpha"), CategoryAttribute("Alpha")]
public byte Alpha { get; set; }
@ -46,10 +53,10 @@ namespace LayoutBXLYT
[DisplayName("Origin X"), CategoryAttribute("Origin")]
public virtual OriginY originY { get; set; }
[Browsable(false)]
[DisplayName("Parent Origin X"), CategoryAttribute("Origin")]
public virtual OriginX ParentOriginX { get; set; }
[Browsable(false)]
[DisplayName("Parent Origin Y"), CategoryAttribute("Origin")]
public virtual OriginY ParentOriginY { get; set; }
[Browsable(false)]
@ -77,8 +84,7 @@ namespace LayoutBXLYT
{
get
{
if (rectangle == null)
UpdateRectangle();
UpdateRectangle();
return rectangle;
}
}
@ -90,26 +96,60 @@ namespace LayoutBXLYT
public CustomRectangle CreateRectangle()
{
//Do origin transforms
var transformed = TransformOrientation((int)Width, (int)Height);
//Now do parent transforms
Vector2 ParentWH = new Vector2(0, 0);
if (Parent != null && Parent is BasePane)
ParentWH = new Vector2((int)Parent.Width, (int)Parent.Height);
var transformedParent = TransformOrientation(ParentWH.X, ParentWH.Y);
// if (Parent != null)
// transformed -= transformedParent;
var transformed = TransformOrientation((int)Width, (int)Height, originX, originY);
var parentTransform = ParentOriginTransform(transformed);
return new CustomRectangle(
transformed.X,
transformed.Y,
transformed.Z,
transformed.W);
parentTransform.X,
parentTransform.Y,
parentTransform.Z,
parentTransform.W);
}
private Vector4 TransformOrientation(int Width, int Height)
//Get the previous transform from the parent origin
private Vector4 ParentOriginTransform(Vector4 points)
{
//Dont shift the root or the first child of the root
//The parent setting shouldn't be set, but it doesn't hurt to do this
if (IsRoot || ParentIsRoot || Parent == null)
return points;
var transformedPosition = TransformOrientationPosition((int)Parent.Width, (int)Parent.Height, ParentOriginX, ParentOriginY);
var transformed = ShiftRectangle(transformedPosition, points);
if (Parent != null)
return Parent.ParentOriginTransform(transformed);
return transformed;
}
private static Vector4 ShiftRectangle(Vector2 position, Vector4 points)
{
int left = points[0] + position.X;
int right = points[1] + position.X;
int top = points[2] + position.Y;
int bottom = points[3] + position.Y;
return new Vector4(left, right, top, bottom);
}
private static Vector2 TransformOrientationPosition(int Width, int Height, OriginX originX, OriginY originY)
{
int x = 0;
int y = 0;
if (originX == OriginX.Left)
x = -(Width / 2);
else if (originX == OriginX.Right)
x = (Width / 2);
if (originY == OriginY.Top)
y = Height / 2;
else if (originY == OriginY.Bottom)
y = -(Height / 2);
return new Vector2(x,y);
}
private static Vector4 TransformOrientation(int Width, int Height, OriginX originX, OriginY originY)
{
int left = 0;
int right = 0;

View File

@ -1561,5 +1561,8 @@
<ItemGroup>
<None Include="Resources\Layout\QuickAccess.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Layout\OrthoView.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -30,10 +30,8 @@
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LayoutEditor));
this.dockPanel1 = new WeifenLuo.WinFormsUI.Docking.DockPanel();
this.backColorDisplay = new System.Windows.Forms.PictureBox();
this.viewportBackColorCB = new Toolbox.Library.Forms.STComboBox();
this.stToolStrip1 = new Toolbox.Library.Forms.STToolStrip();
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
this.stMenuStrip1 = new Toolbox.Library.Forms.STMenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@ -44,11 +42,15 @@
this.viewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.textureListToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.textConverterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.orthographicViewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.debugShading = new Toolbox.Library.Forms.STComboBox();
this.stLabel1 = new Toolbox.Library.Forms.STLabel();
((System.ComponentModel.ISupportInitialize)(this.backColorDisplay)).BeginInit();
this.backColorDisplay = new System.Windows.Forms.PictureBox();
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
this.toolstripOrthoBtn = new System.Windows.Forms.ToolStripButton();
this.stToolStrip1.SuspendLayout();
this.stMenuStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.backColorDisplay)).BeginInit();
this.SuspendLayout();
//
// dockPanel1
@ -60,15 +62,6 @@
this.dockPanel1.TabIndex = 6;
this.dockPanel1.ActiveDocumentChanged += new System.EventHandler(this.dockPanel1_ActiveDocumentChanged);
//
// backColorDisplay
//
this.backColorDisplay.Location = new System.Drawing.Point(253, 25);
this.backColorDisplay.Name = "backColorDisplay";
this.backColorDisplay.Size = new System.Drawing.Size(21, 21);
this.backColorDisplay.TabIndex = 10;
this.backColorDisplay.TabStop = false;
this.backColorDisplay.Click += new System.EventHandler(this.backColorDisplay_Click);
//
// viewportBackColorCB
//
this.viewportBackColorCB.BorderColor = System.Drawing.Color.Empty;
@ -86,22 +79,13 @@
// stToolStrip1
//
this.stToolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripButton1});
this.toolStripButton1,
this.toolstripOrthoBtn});
this.stToolStrip1.Location = new System.Drawing.Point(0, 24);
this.stToolStrip1.Name = "stToolStrip1";
this.stToolStrip1.Size = new System.Drawing.Size(549, 25);
this.stToolStrip1.TabIndex = 3;
this.stToolStrip1.Text = "stToolStrip1";
this.stToolStrip1.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.stToolStrip1_ItemClicked);
//
// toolStripButton1
//
this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image")));
this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButton1.Name = "toolStripButton1";
this.toolStripButton1.Size = new System.Drawing.Size(23, 22);
this.toolStripButton1.Text = "toolStripButton1";
//
// stMenuStrip1
//
@ -164,7 +148,8 @@
//
this.viewToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.textureListToolStripMenuItem,
this.textConverterToolStripMenuItem});
this.textConverterToolStripMenuItem,
this.orthographicViewToolStripMenuItem});
this.viewToolStripMenuItem.Name = "viewToolStripMenuItem";
this.viewToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
this.viewToolStripMenuItem.Text = "View";
@ -172,17 +157,25 @@
// textureListToolStripMenuItem
//
this.textureListToolStripMenuItem.Name = "textureListToolStripMenuItem";
this.textureListToolStripMenuItem.Size = new System.Drawing.Size(150, 22);
this.textureListToolStripMenuItem.Size = new System.Drawing.Size(173, 22);
this.textureListToolStripMenuItem.Text = "Texture List";
this.textureListToolStripMenuItem.Click += new System.EventHandler(this.textureListToolStripMenuItem_Click);
//
// textConverterToolStripMenuItem
//
this.textConverterToolStripMenuItem.Name = "textConverterToolStripMenuItem";
this.textConverterToolStripMenuItem.Size = new System.Drawing.Size(150, 22);
this.textConverterToolStripMenuItem.Size = new System.Drawing.Size(173, 22);
this.textConverterToolStripMenuItem.Text = "Text Converter";
this.textConverterToolStripMenuItem.Click += new System.EventHandler(this.textConverterToolStripMenuItem_Click);
//
// orthographicViewToolStripMenuItem
//
this.orthographicViewToolStripMenuItem.CheckOnClick = true;
this.orthographicViewToolStripMenuItem.Name = "orthographicViewToolStripMenuItem";
this.orthographicViewToolStripMenuItem.Size = new System.Drawing.Size(173, 22);
this.orthographicViewToolStripMenuItem.Text = "Orthographic View";
this.orthographicViewToolStripMenuItem.Click += new System.EventHandler(this.orthographicViewToolStripMenuItem_Click);
//
// debugShading
//
this.debugShading.BorderColor = System.Drawing.Color.Empty;
@ -205,6 +198,35 @@
this.stLabel1.TabIndex = 14;
this.stLabel1.Text = "Debug Shading:";
//
// backColorDisplay
//
this.backColorDisplay.Location = new System.Drawing.Point(253, 25);
this.backColorDisplay.Name = "backColorDisplay";
this.backColorDisplay.Size = new System.Drawing.Size(21, 21);
this.backColorDisplay.TabIndex = 10;
this.backColorDisplay.TabStop = false;
this.backColorDisplay.Click += new System.EventHandler(this.backColorDisplay_Click);
//
// toolStripButton1
//
this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image")));
this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButton1.Name = "toolStripButton1";
this.toolStripButton1.Size = new System.Drawing.Size(23, 22);
this.toolStripButton1.Text = "toolStripButton1";
this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click);
//
// toolstripOrthoBtn
//
this.toolstripOrthoBtn.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolstripOrthoBtn.Image = global::FirstPlugin.Properties.Resources.OrthoView;
this.toolstripOrthoBtn.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolstripOrthoBtn.Name = "toolstripOrthoBtn";
this.toolstripOrthoBtn.Size = new System.Drawing.Size(23, 22);
this.toolstripOrthoBtn.Text = "Toggle Orthographic";
this.toolstripOrthoBtn.Click += new System.EventHandler(this.toolstripOrthoBtn_Click);
//
// LayoutEditor
//
this.AllowDrop = true;
@ -224,11 +246,11 @@
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.LayoutEditor_DragEnter);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.LayoutEditor_KeyDown);
this.ParentChanged += new System.EventHandler(this.LayoutEditor_ParentChanged);
((System.ComponentModel.ISupportInitialize)(this.backColorDisplay)).EndInit();
this.stToolStrip1.ResumeLayout(false);
this.stToolStrip1.PerformLayout();
this.stMenuStrip1.ResumeLayout(false);
this.stMenuStrip1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.backColorDisplay)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@ -253,5 +275,7 @@
private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem1;
private Toolbox.Library.Forms.STComboBox debugShading;
private Toolbox.Library.Forms.STLabel stLabel1;
private System.Windows.Forms.ToolStripMenuItem orthographicViewToolStripMenuItem;
private System.Windows.Forms.ToolStripButton toolstripOrthoBtn;
}
}

View File

@ -52,6 +52,7 @@ namespace LayoutBXLYT
viewportBackColorCB.Items.Add("Back Color : Default");
viewportBackColorCB.Items.Add("Back Color : Custom");
viewportBackColorCB.SelectedIndex = 0;
orthographicViewToolStripMenuItem.Checked = true;
foreach (var type in Enum.GetValues(typeof(Runtime.LayoutEditor.DebugShading)).Cast<Runtime.LayoutEditor.DebugShading>())
debugShading.Items.Add(type);
@ -82,6 +83,7 @@ namespace LayoutBXLYT
Viewport.DockHandler.AllowEndUserDocking = false;
Viewports.Add(Viewport);
ActiveViewport = Viewport;
ActiveViewport.UseOrtho = orthographicViewToolStripMenuItem.Checked;
if (!isLoaded)
InitializeDockPanels();
@ -296,6 +298,7 @@ namespace LayoutBXLYT
{
var file = (dockContent).LayoutFile;
ReloadEditors(file);
ActiveViewport = dockContent;
dockContent.UpdateViewport();
}
@ -524,11 +527,6 @@ namespace LayoutBXLYT
}
}
private void stToolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
SaveActiveFile(false);
}
private void debugShading_SelectedIndexChanged(object sender, EventArgs e)
{
if (debugShading.SelectedIndex < 0) return;
@ -537,5 +535,37 @@ namespace LayoutBXLYT
if (ActiveViewport != null)
ActiveViewport.UpdateViewport();
}
private void orthographicViewToolStripMenuItem_Click(object sender, EventArgs e) {
ToggleOrthMode();
}
private void toolstripOrthoBtn_Click(object sender, EventArgs e) {
if (orthographicViewToolStripMenuItem.Checked)
orthographicViewToolStripMenuItem.Checked = false;
else
orthographicViewToolStripMenuItem.Checked = true;
ToggleOrthMode();
}
private void ToggleOrthMode()
{
if (ActiveViewport != null)
{
if (orthographicViewToolStripMenuItem.Checked)
toolstripOrthoBtn.Image = BitmapExtension.GrayScale(FirstPlugin.Properties.Resources.OrthoView);
else
toolstripOrthoBtn.Image = FirstPlugin.Properties.Resources.OrthoView;
ActiveViewport.UseOrtho = orthographicViewToolStripMenuItem.Checked;
ActiveViewport.ResetCamera();
ActiveViewport.UpdateViewport();
}
}
private void toolStripButton1_Click(object sender, EventArgs e) {
SaveActiveFile(false);
}
}
}

View File

@ -124,7 +124,7 @@
<data name="toolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAG9YSURBVHhe7b0HuBzFlf69u17jtfHnNdjYZKGcrjLKOecA
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAG9ESURBVHhe7b0HuBzFlf69u17jtfHnNdjYZKGcrjLKOecA
ylko54wSklAOKCAJgchCCYGEQOSc4Q+2AZNFEibnnERa13femj4zZ2pOT7pzp0ei63l+t+90muruet86
VV3d8x9hClOYwhSmMIUpTGEKU5jCFKYwhSlMYQpTmMIUpjCFKUxhClOYwhSmMIUpTGEKU5jCFKYwhSlM
YQpTmMIUpjCFKUxhClOYwhSmMIUpTGEKU5jCFKYwhenITl26dDmV2Ne+Xfs3q1Sp8nOTJk1MrmnatKml
@ -146,460 +146,460 @@
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
</value>
</data>
<metadata name="stMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

View File

@ -34,6 +34,11 @@ namespace LayoutBXLYT
private Dictionary<string, STGenericTexture> Textures;
public void ResetCamera()
{
Camera = new Camera2D();
}
public void ResetLayout(BxlytHeader bxlyt)
{
LayoutFile = bxlyt;
@ -87,6 +92,7 @@ namespace LayoutBXLYT
OnRender();
}
public bool UseOrtho = true;
private Color BackgroundColor => Runtime.LayoutEditor.BackgroundColor;
private void OnRender()
{
@ -95,9 +101,19 @@ namespace LayoutBXLYT
GL.Viewport(0, 0, glControl1.Width, glControl1.Height);
GL.MatrixMode(MatrixMode.Projection);
GL.LoadIdentity();
GL.Ortho(0, glControl1.Width, glControl1.Height, 0, -1, 100);
GL.MatrixMode(MatrixMode.Modelview);
GL.LoadIdentity();
if (UseOrtho)
{
GL.Ortho(-(glControl1.Width / 2.0f), glControl1.Width / 2.0f, glControl1.Height / 2.0f, -(glControl1.Height / 2.0f), -10000, 10000);
GL.MatrixMode(MatrixMode.Modelview);
GL.LoadIdentity();
}
else
{
var cameraPosition = new Vector3(Camera.Position.X, Camera.Position.Y, -(Camera.Zoom * 500));
var perspectiveMatrix = Matrix4.CreateTranslation(cameraPosition) * Matrix4.CreatePerspectiveFieldOfView(1.3f, glControl1.Width / (float)glControl1.Height, 0.01f, 100000);
GL.LoadMatrix(ref perspectiveMatrix);
GL.MatrixMode(MatrixMode.Modelview);
}
GL.ClearColor(BackgroundColor);
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
@ -111,25 +127,50 @@ namespace LayoutBXLYT
GL.Enable(EnableCap.Texture2D);
GL.BindTexture(TextureTarget.Texture2D, 0);
if (UseOrtho)
{
GL.PushMatrix();
GL.Scale(1 * Camera.Zoom, -1 * Camera.Zoom, 1);
GL.Translate(Camera.Position.X, Camera.Position.Y, 0);
}
DrawRootPane(LayoutFile.RootPane);
DrawGrid();
DrawXyLines();
RenderPanes(LayoutFile.RootPane, true, 255, false);
GL.Scale(1 * Camera.Zoom, -1 * Camera.Zoom, 1);
GL.Translate(Camera.Position.X, Camera.Position.Y, 0);
RenderPanes(LayoutFile.RootPane, true, 255);
if (UseOrtho)
GL.PopMatrix();
glControl1.SwapBuffers();
}
private void RenderPanes(BasePane pane, bool isRoot, byte parentAlpha, BasePane partPane = null)
private void RenderPanes(BasePane pane, bool isRoot, byte parentAlpha, bool parentAlphaInfluence, BasePane partPane = null)
{
if (!pane.DisplayInEditor)
return;
GL.PushMatrix();
//Check XY rotation and draw the pane before it was rotated
bool isRotatedXY = pane.Rotate.X != 0 || pane.Rotate.Y != 0;
if (isRotatedXY && SelectedPanes.Contains(pane))
{
GL.PushMatrix();
GL.Translate(pane.Translate.X, pane.Translate.Y, 0);
GL.Rotate(pane.Rotate.Z, 0, 0, 1);
GL.Scale(pane.Scale.X, pane.Scale.Y, 1);
if (pane is BFLYT.PAN1)
DrawDefaultPane((BFLYT.PAN1)pane);
else if (pane is BCLYT.PAN1)
DrawDefaultPane((BCLYT.PAN1)pane);
else if (pane is BRLYT.PAN1)
DrawDefaultPane((BRLYT.PAN1)pane);
GL.PopMatrix();
}
if (partPane != null)
{
var translate = partPane.Translate + pane.Translate;
@ -137,17 +178,22 @@ namespace LayoutBXLYT
var rotate = partPane.Rotate + pane.Rotate;
GL.Translate(translate.X + translate.X, translate.Y, 0);
GL.Rotate(rotate.Z, rotate.X, rotate.Y, rotate.Z);
GL.Rotate(rotate.X, 1,0,0);
GL.Rotate(rotate.Y, 0, 1, 0);
GL.Rotate(rotate.Z, 0, 0, 1);
GL.Scale(scale.X, scale.Y, 1);
}
else
{
GL.Translate(pane.Translate.X, pane.Translate.Y, 0);
GL.Rotate(pane.Rotate.Z, pane.Rotate.X, pane.Rotate.Y, pane.Rotate.Z);
GL.Rotate(pane.Rotate.X, 1, 0, 0);
GL.Rotate(pane.Rotate.Y, 0, 1, 0);
GL.Rotate(pane.Rotate.Z, 0, 0, 1);
GL.Scale(pane.Scale.X, pane.Scale.Y, 1);
}
byte effectiveAlpha = (byte)(parentAlpha == 255 ? pane.Alpha : (pane.Alpha * parentAlpha) / 255);
parentAlphaInfluence = parentAlphaInfluence || pane.InfluenceAlpha;
if (!isRoot)
{
@ -158,7 +204,7 @@ namespace LayoutBXLYT
else if (pane is BRLYT.PIC1)
DrawPicturePane((BRLYT.PIC1)pane, effectiveAlpha);
else if (pane is BFLYT.PRT1)
DrawPartsPane((BFLYT.PRT1)pane, effectiveAlpha);
DrawPartsPane((BFLYT.PRT1)pane, effectiveAlpha, parentAlphaInfluence);
else if (pane is BFLYT.PAN1)
DrawDefaultPane((BFLYT.PAN1)pane);
else if (pane is BCLYT.PAN1)
@ -172,21 +218,15 @@ namespace LayoutBXLYT
else
isRoot = false;
byte childAlpha = pane.InfluenceAlpha ? effectiveAlpha : byte.MaxValue;
byte childAlpha = pane.InfluenceAlpha || parentAlphaInfluence ? effectiveAlpha : byte.MaxValue;
foreach (var childPane in pane.Childern)
RenderPanes(childPane, isRoot, childAlpha, partPane);
RenderPanes(childPane, isRoot, childAlpha, parentAlphaInfluence, partPane);
GL.PopMatrix();
}
private void DrawRootPane(BasePane pane)
{
GL.LoadIdentity();
GL.PushMatrix();
GL.Scale(pane.Scale.X * Camera.Zoom, -pane.Scale.Y * Camera.Zoom, 1);
GL.Rotate(pane.Rotate.Z, pane.Rotate.X, pane.Rotate.Y, pane.Rotate.Z);
GL.Translate(pane.Translate.X + Camera.Position.X, pane.Translate.Y + Camera.Position.Y, 0);
Color color = Color.Black;
if (SelectedPanes.Contains(pane))
color = Color.Red;
@ -212,8 +252,6 @@ namespace LayoutBXLYT
GL.Vertex2(rect.RightPoint, rect.BottomPoint);
GL.Vertex2(rect.LeftPoint, rect.BottomPoint);
GL.End();
GL.PopMatrix();
}
private void DrawDefaultPane(BasePane pane)
@ -236,16 +274,16 @@ namespace LayoutBXLYT
color,
};
DrawRectangle(pane.CreateRectangle(), TexCoords, Colors);
DrawRectangle(pane.Rectangle, TexCoords, Colors);
}
private void DrawPartsPane(BFLYT.PRT1 pane, byte effectiveAlpha)
private void DrawPartsPane(BFLYT.PRT1 pane, byte effectiveAlpha, bool parentInfluenceAlpha)
{
pane.UpdateTextureData(this.Textures);
var partPane = pane.GetExternalPane();
if (partPane != null)
{
RenderPanes(partPane, false, effectiveAlpha);
RenderPanes(partPane, false, effectiveAlpha, parentInfluenceAlpha);
}
else
DrawDefaultPane(pane);
@ -255,7 +293,7 @@ namespace LayoutBXLYT
foreach (var prop in pane.Properties)
{
if (prop.Property != null)
RenderPanes(prop.Property, false, effectiveAlpha);
RenderPanes(prop.Property, false, effectiveAlpha, parentInfluenceAlpha || pane.InfluenceAlpha);
}
}
}
@ -314,7 +352,7 @@ namespace LayoutBXLYT
};
}
DrawRectangle(pane.CreateRectangle(), TexCoords, Colors, false, effectiveAlpha);
DrawRectangle(pane.Rectangle, TexCoords, Colors, false, effectiveAlpha);
GL.BindTexture(TextureTarget.Texture2D, 0);
}
@ -355,7 +393,7 @@ namespace LayoutBXLYT
};
}
DrawRectangle(pane.CreateRectangle(), TexCoords, Colors, false);
DrawRectangle(pane.Rectangle, TexCoords, Colors, false, effectiveAlpha);
GL.BindTexture(TextureTarget.Texture2D, 0);
}
@ -380,6 +418,7 @@ namespace LayoutBXLYT
bool defaultShading = Runtime.LayoutEditor.Shading == Runtime.LayoutEditor.DebugShading.Default;
SetBlending(mat.BlackColor.Color, mat.WhiteColor.Color);
if (pane.TexCoords.Length > 0 && defaultShading)
{
string textureMap0 = "";
@ -416,10 +455,13 @@ namespace LayoutBXLYT
if (pane.TexCoords.Length > 0 && Runtime.LayoutEditor.Shading == Runtime.LayoutEditor.DebugShading.UVTestPattern)
{
GL.BindTexture(TextureTarget.Texture2D, RenderTools.uvTestPattern.RenderableTex.TexID);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, ConvertTextureWrap(mat.TextureMaps[0].WrapModeU));
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, ConvertTextureWrap(mat.TextureMaps[0].WrapModeV));
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, ConvertMagFilterMode(mat.TextureMaps[0].MaxFilterMode));
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, ConvertMinFilterMode(mat.TextureMaps[0].MinFilterMode));
if (mat.TextureMaps.Length > 0)
{
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, ConvertTextureWrap(mat.TextureMaps[0].WrapModeU));
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, ConvertTextureWrap(mat.TextureMaps[0].WrapModeV));
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, ConvertMagFilterMode(mat.TextureMaps[0].MaxFilterMode));
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, ConvertMinFilterMode(mat.TextureMaps[0].MinFilterMode));
}
}
if (Runtime.LayoutEditor.Shading == Runtime.LayoutEditor.DebugShading.BlackColor)
@ -434,15 +476,39 @@ namespace LayoutBXLYT
Colors[i] = pane.Material.WhiteColor.Color;
}
DrawRectangle(pane.CreateRectangle(), TexCoords, Colors, false);
DrawRectangle(pane.Rectangle, TexCoords, Colors, false, effectiveAlpha);
GL.BindTexture(TextureTarget.Texture2D, 0);
// GL.PopAttrib();
// GL.PopAttrib();
}
public void DrawRectangle(CustomRectangle rect, Vector2[] texCoords, Color[] colors, bool useLines = true, byte alpha = 255)
private void SetBlending(Color blackColor, Color whiteColor)
{
/* GL.PushAttrib(AttribMask.AllAttribBits);
GL.Enable(EnableCap.Blend);
GL.BlendFunc(BlendingFactor.ConstantColor, BlendingFactor.Zero);
GL.BlendEquation(BlendEquationMode.FuncAdd);
GL.BlendColor(Color.FromArgb(255, blackColor));
GL.Enable(EnableCap.Blend);*/
/* GL.PushAttrib(AttribMask.AllAttribBits);
GL.Enable(EnableCap.Blend);
GL.BlendFunc(BlendingFactor.ConstantColor, BlendingFactor.OneMinusSrcColor);
GL.BlendEquation(BlendEquationMode.FuncAdd);
GL.BlendColor(whiteColor);
GL.Enable(EnableCap.Blend);*/
}
public void DrawRectangle(CustomRectangle rect, Vector2[] texCoords,
Color[] colors, bool useLines = true, byte alpha = 255)
{
for (int i = 0; i < colors.Length; i++)
colors[i] = Color.FromArgb((colors[i].A * alpha) / 255, colors[i]);
{
uint setalpha = (uint)((colors[i].A * alpha) / 255);
colors[i] = Color.FromArgb((int)setalpha, colors[i]);
}
if (useLines)
{
@ -624,11 +690,6 @@ namespace LayoutBXLYT
private void DrawXyLines()
{
GL.LoadIdentity();
GL.PushMatrix();
GL.Scale(1 * Camera.Zoom, -1 * Camera.Zoom, 1);
GL.Translate(Camera.Position.X, Camera.Position.Y, 0);
int lineLength = 20;
GL.Color3(Color.Green);
@ -642,8 +703,6 @@ namespace LayoutBXLYT
GL.Vertex2(0, 0);
GL.Vertex2(lineLength, 0);
GL.End();
GL.PopMatrix();
}
private void DrawGrid()
@ -651,12 +710,6 @@ namespace LayoutBXLYT
var size = 40;
var amount = 300;
GL.LoadIdentity();
GL.PushMatrix();
GL.Scale(1 * Camera.Zoom, -1 * Camera.Zoom, 1);
GL.Translate(Camera.Position.X, Camera.Position.Y, 0);
GL.Rotate(90, new Vector3(1,0,0));
GL.LineWidth(0.001f);
GL.Color3(BackgroundColor.Darken(20));
GL.Begin(PrimitiveType.Lines);
@ -674,17 +727,16 @@ namespace LayoutBXLYT
GL.LineWidth(0.001f);
}
GL.Vertex3(new Vector3(-amount * size, 0f, i * size));
GL.Vertex3(new Vector3(amount * size, 0f, i * size));
GL.Vertex3(new Vector3(i * size, 0f, -amount * size));
GL.Vertex3(new Vector3(i * size, 0f, amount * size));
GL.Vertex2(new Vector2(-amount * size, i * size));
GL.Vertex2(new Vector2(amount * size, i * size));
GL.Vertex2(new Vector2(i * size, -amount * size));
GL.Vertex2(new Vector2(i * size, amount * size));
squareGridCounter++;
}
GL.End();
GL.Color3(Color.Transparent);
GL.PopAttrib();
GL.PopMatrix();
}
private bool mouseHeldDown = false;
@ -778,10 +830,20 @@ namespace LayoutBXLYT
protected override void OnMouseWheel(MouseEventArgs e)
{
base.OnMouseWheel(e);
if (e.Delta > 0 && Camera.Zoom > 0)
Camera.Zoom += 0.1f;
if (e.Delta < 0 && Camera.Zoom < 10 && Camera.Zoom > 0.1)
Camera.Zoom -= 0.1f;
if (UseOrtho)
{
if (e.Delta > 0 && Camera.Zoom > 0)
Camera.Zoom += 0.1f;
if (e.Delta < 0 && Camera.Zoom < 100 && Camera.Zoom > 0.1)
Camera.Zoom -= 0.1f;
}
else
{
if (e.Delta > 0 && Camera.Zoom > 0.1)
Camera.Zoom -= 0.1f;
if (e.Delta < 0 && Camera.Zoom < 100 && Camera.Zoom > 0)
Camera.Zoom += 0.1f;
}
glControl1.Invalidate();
}

View File

@ -200,6 +200,16 @@ namespace FirstPlugin.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap OrthoView {
get {
object obj = ResourceManager.GetObject("OrthoView", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>

View File

@ -130,15 +130,24 @@
<data name="ViewportIconDisable" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ViewportIconDisable.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="TextPane" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Layout\TextPane.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ViewportIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ViewportIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="AlignmentPane" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Layout\AlignmentPane.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="AddIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AddIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="RemoveIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\RemoveIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="NullPane" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Layout\NullPane.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Basic_NrmBC5" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Basic_NrmBC5.dds;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
@ -148,9 +157,24 @@
<data name="Basic_Bake_st1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Basic_Bake_st1.dds;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="BoundryPane" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Layout\BoundryPane.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScissorPane" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Layout\ScissorPane.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="PicturePane" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Layout\PicturePane.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Basic_Nrm" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Basic_Nrm.dds;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="ArrowIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ArrowIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="QuickAccess" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Layout\QuickAccess.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="White" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\White.dds;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
@ -160,34 +184,13 @@
<data name="TextureError" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\TextureError.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="arrowMinimize " type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\arrowMinimize .png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ArrowIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ArrowIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="AlignmentPane" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Layout\AlignmentPane.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="BoundryPane" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Layout\BoundryPane.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="NullPane" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Layout\NullPane.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="PicturePane" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Layout\PicturePane.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScissorPane" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Layout\ScissorPane.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="TextPane" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Layout\TextPane.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="WindowPane" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Layout\WindowPane.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="QuickAccess" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Layout\QuickAccess.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="arrowMinimize " type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\arrowMinimize .png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="OrthoView" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Layout\OrthoView.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 B

After

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 863 B