mirror of
https://git.do.srb2.org/STJr/UltimateZoneBuilder.git
synced 2025-02-17 01:22:18 +00:00
New angle control logic was behaving incorrectly in some cases.
Angle control (the newer, photoshop-like one): left-clicking inside the control now clamps angle to 45-degree increments. Right-clicking inside the control sets precise angle. Thing Edit Form: replaced angle control with newer one. Classic modes: fixed minor rendering artifacts when drawing thing direction arrow.
This commit is contained in:
parent
2f2f74c231
commit
44bf0b9588
10 changed files with 247 additions and 238 deletions
|
@ -204,23 +204,13 @@ namespace CodeImp.DoomBuilder.Data
|
|||
// This loads the PLAYPAL palette
|
||||
public override Playpal LoadPalette()
|
||||
{
|
||||
Lump lump;
|
||||
|
||||
// Error when suspended
|
||||
if(issuspended) throw new Exception("Data reader is suspended");
|
||||
|
||||
// Look for a lump named PLAYPAL
|
||||
lump = file.FindLump("PLAYPAL");
|
||||
if(lump != null)
|
||||
{
|
||||
// Read the PLAYPAL from stream
|
||||
return new Playpal(lump.Stream);
|
||||
}
|
||||
else
|
||||
{
|
||||
// No palette
|
||||
return null;
|
||||
}
|
||||
Lump lump = file.FindLump("PLAYPAL");
|
||||
if(lump != null) return new Playpal(lump.Stream); // Read the PLAYPAL from stream
|
||||
return null; // No palette
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
@ -527,23 +517,13 @@ namespace CodeImp.DoomBuilder.Data
|
|||
// This returns the patch names from the PNAMES lump
|
||||
public override PatchNames LoadPatchNames()
|
||||
{
|
||||
Lump lump;
|
||||
|
||||
// Error when suspended
|
||||
if(issuspended) throw new Exception("Data reader is suspended");
|
||||
|
||||
// Look for a lump named PNAMES
|
||||
lump = file.FindLump("PNAMES");
|
||||
if(lump != null)
|
||||
{
|
||||
// Read the PNAMES from stream
|
||||
return new PatchNames(lump.Stream);
|
||||
}
|
||||
else
|
||||
{
|
||||
// No palette
|
||||
return null;
|
||||
}
|
||||
Lump lump = file.FindLump("PNAMES");
|
||||
if(lump != null) return new PatchNames(lump.Stream); // Read the PNAMES from stream
|
||||
return null; // No patch names found
|
||||
}
|
||||
|
||||
// This finds and returns a patch stream
|
||||
|
|
|
@ -25,6 +25,8 @@
|
|||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// AngleControl
|
||||
|
@ -33,6 +35,8 @@
|
|||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Name = "AngleControl";
|
||||
this.Size = new System.Drawing.Size(40, 40);
|
||||
this.toolTip.SetToolTip(this, "Left-click (and drag) to set angle snapped to 45-degree increment.\r\nRight-click (" +
|
||||
"and drag) to set precise angle.");
|
||||
this.Load += new System.EventHandler(this.AngleSelector_Load);
|
||||
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.AngleSelector_MouseMove);
|
||||
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.AngleSelector_MouseDown);
|
||||
|
@ -42,5 +46,7 @@
|
|||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ToolTip toolTip;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,12 +3,8 @@
|
|||
//The Code Project - http://www.codeproject.com
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||
|
@ -20,6 +16,12 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
|||
private Rectangle drawRegion;
|
||||
private Point origin;
|
||||
|
||||
//UI colors
|
||||
private readonly Color fillColor = Color.FromArgb(90, 255, 255, 255);
|
||||
private readonly Color fillInactiveColor = SystemColors.InactiveCaption;
|
||||
private readonly Color outlineColor = Color.FromArgb(86, 103, 141);
|
||||
private readonly Color outlineInactiveColor = SystemColors.InactiveBorder;
|
||||
|
||||
public AngleControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
@ -75,51 +77,33 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
|||
return xy;
|
||||
}
|
||||
|
||||
private float XYToDegrees(Point xy, Point origin)
|
||||
private int XYToDegrees(Point xy, Point origin)
|
||||
{
|
||||
double angle = 0.0;
|
||||
|
||||
if (xy.Y < origin.Y)
|
||||
{
|
||||
if (xy.X > origin.X)
|
||||
{
|
||||
angle = (double)(xy.X - origin.X) / (double)(origin.Y - xy.Y);
|
||||
angle = Math.Atan(angle);
|
||||
angle = 90.0 - angle * 180.0 / Math.PI;
|
||||
}
|
||||
else if (xy.X < origin.X)
|
||||
{
|
||||
angle = (double)(origin.X - xy.X) / (double)(origin.Y - xy.Y);
|
||||
angle = Math.Atan(-angle);
|
||||
angle = 90.0 - angle * 180.0 / Math.PI;
|
||||
}
|
||||
}
|
||||
else if (xy.Y > origin.Y)
|
||||
{
|
||||
if (xy.X > origin.X)
|
||||
{
|
||||
angle = (double)(xy.X - origin.X) / (double)(xy.Y - origin.Y);
|
||||
angle = Math.Atan(-angle);
|
||||
angle = 270.0 - angle * 180.0 / Math.PI;
|
||||
}
|
||||
else if (xy.X < origin.X)
|
||||
{
|
||||
angle = (double)(origin.X - xy.X) / (double)(xy.Y - origin.Y);
|
||||
angle = Math.Atan(angle);
|
||||
angle = 270.0 - angle * 180.0 / Math.PI;
|
||||
}
|
||||
}
|
||||
|
||||
if (angle > 180) angle -= 360; //Optional. Keeps values between -180 and 180
|
||||
return (float)angle;
|
||||
float xDiff = xy.X - origin.X;
|
||||
float yDiff = xy.Y - origin.Y;
|
||||
return (int)Math.Round(Math.Atan2(-yDiff, xDiff) * 180.0 / Math.PI);
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
Graphics g = e.Graphics;
|
||||
|
||||
Pen outline = new Pen(Color.FromArgb(86, 103, 141), 2.0f);
|
||||
SolidBrush fill = new SolidBrush(Color.FromArgb(90, 255, 255, 255));
|
||||
Pen outline;
|
||||
Pen needle;
|
||||
SolidBrush fill;
|
||||
Brush center;
|
||||
|
||||
if (this.Enabled) {
|
||||
outline = new Pen(outlineColor, 2.0f);
|
||||
fill = new SolidBrush(fillColor);
|
||||
needle = Pens.Black;
|
||||
center = Brushes.Black;
|
||||
} else {
|
||||
outline = new Pen(outlineInactiveColor, 2.0f);
|
||||
fill = new SolidBrush(fillInactiveColor);
|
||||
needle = Pens.DarkGray;
|
||||
center = Brushes.DarkGray;
|
||||
}
|
||||
|
||||
PointF anglePoint = DegreesToXY(angle, origin.X - 2, origin);
|
||||
Rectangle originSquare = new Rectangle(origin.X - 1, origin.Y - 1, 3, 3);
|
||||
|
@ -128,10 +112,10 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
|||
g.SmoothingMode = SmoothingMode.AntiAlias;
|
||||
g.DrawEllipse(outline, drawRegion);
|
||||
g.FillEllipse(fill, drawRegion);
|
||||
g.DrawLine(Pens.Black, origin, anglePoint);
|
||||
g.DrawLine(needle, origin, anglePoint);
|
||||
|
||||
g.SmoothingMode = SmoothingMode.HighSpeed; //Make the square edges sharp
|
||||
g.FillRectangle(Brushes.Black, originSquare);
|
||||
g.FillRectangle(center, originSquare);
|
||||
|
||||
fill.Dispose();
|
||||
outline.Dispose();
|
||||
|
@ -139,42 +123,34 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
|||
base.OnPaint(e);
|
||||
}
|
||||
|
||||
private void AngleSelector_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
int thisAngle = findNearestAngle(new Point(e.X, e.Y));
|
||||
private void AngleSelector_MouseDown(object sender, MouseEventArgs e) {
|
||||
int thisAngle = XYToDegrees(new Point(e.X, e.Y), origin);
|
||||
|
||||
if (thisAngle != -1)
|
||||
{
|
||||
if (e.Button == MouseButtons.Left) {
|
||||
thisAngle = (int)Math.Round(thisAngle / 45f) * 45;
|
||||
}
|
||||
|
||||
if(thisAngle != this.Angle) {
|
||||
this.Angle = thisAngle;
|
||||
if(!this.DesignMode && AngleChanged != null)
|
||||
AngleChanged(); //Raise event
|
||||
if(!this.DesignMode && AngleChanged != null) AngleChanged(); //Raise event
|
||||
this.Refresh();
|
||||
}
|
||||
}
|
||||
|
||||
private void AngleSelector_MouseMove(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Button == MouseButtons.Left || e.Button == MouseButtons.Right)
|
||||
{
|
||||
int thisAngle = findNearestAngle(new Point(e.X, e.Y));
|
||||
private void AngleSelector_MouseMove(object sender, MouseEventArgs e) {
|
||||
if (e.Button == MouseButtons.Left || e.Button == MouseButtons.Right) {
|
||||
int thisAngle = XYToDegrees(new Point(e.X, e.Y), origin);
|
||||
|
||||
if (thisAngle != -1)
|
||||
{
|
||||
if(e.Button == MouseButtons.Left) {
|
||||
thisAngle = (int)Math.Round(thisAngle / 45f) * 45;
|
||||
}
|
||||
|
||||
if(thisAngle != this.Angle) {
|
||||
this.Angle = thisAngle;
|
||||
if(!this.DesignMode && AngleChanged != null)
|
||||
AngleChanged(); //Raise event
|
||||
if(!this.DesignMode && AngleChanged != null) AngleChanged(); //Raise event
|
||||
this.Refresh();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private int findNearestAngle(Point mouseXY)
|
||||
{
|
||||
int thisAngle = (int)XYToDegrees(mouseXY, origin);
|
||||
if (thisAngle != 0)
|
||||
return thisAngle;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,120 +1,123 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
|
@ -1005,20 +1005,20 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
verts[offset].x = screenpos.x + sinarrowsize;
|
||||
verts[offset].y = screenpos.y + cosarrowsize;
|
||||
verts[offset].c = -1;
|
||||
verts[offset].u = 0.50f;
|
||||
verts[offset].v = 0f;
|
||||
verts[offset].u = 0.51f;
|
||||
verts[offset].v = 0.01f;
|
||||
offset++;
|
||||
verts[offset].x = screenpos.x - cosarrowsize;
|
||||
verts[offset].y = screenpos.y + sinarrowsize;
|
||||
verts[offset].c = -1;
|
||||
verts[offset].u = 1f;
|
||||
verts[offset].v = 0f;
|
||||
verts[offset].u = 0.99f;
|
||||
verts[offset].v = 0.01f;
|
||||
offset++;
|
||||
verts[offset].x = screenpos.x + cosarrowsize;
|
||||
verts[offset].y = screenpos.y - sinarrowsize;
|
||||
verts[offset].c = -1;
|
||||
verts[offset].u = 0.50f;
|
||||
verts[offset].v = 1f;
|
||||
verts[offset].u = 0.51f;
|
||||
verts[offset].v = 0.99f;
|
||||
offset++;
|
||||
verts[offset] = verts[offset - 2];
|
||||
offset++;
|
||||
|
@ -1027,8 +1027,8 @@ namespace CodeImp.DoomBuilder.Rendering
|
|||
verts[offset].x = screenpos.x - sinarrowsize;
|
||||
verts[offset].y = screenpos.y - cosarrowsize;
|
||||
verts[offset].c = -1;
|
||||
verts[offset].u = 1f;
|
||||
verts[offset].v = 1f;
|
||||
verts[offset].u = 0.99f;
|
||||
verts[offset].v = 0.99f;
|
||||
}
|
||||
|
||||
//mxd
|
||||
|
|
12
Source/Core/Windows/SectorEditFormUDMF.Designer.cs
generated
12
Source/Core/Windows/SectorEditFormUDMF.Designer.cs
generated
|
@ -464,7 +464,7 @@
|
|||
// cbUseFloorLineAngles
|
||||
//
|
||||
this.cbUseFloorLineAngles.AutoSize = true;
|
||||
this.cbUseFloorLineAngles.Location = new System.Drawing.Point(230, 119);
|
||||
this.cbUseFloorLineAngles.Location = new System.Drawing.Point(236, 119);
|
||||
this.cbUseFloorLineAngles.Name = "cbUseFloorLineAngles";
|
||||
this.cbUseFloorLineAngles.Size = new System.Drawing.Size(99, 18);
|
||||
this.cbUseFloorLineAngles.TabIndex = 57;
|
||||
|
@ -476,9 +476,9 @@
|
|||
// floorAngleControl
|
||||
//
|
||||
this.floorAngleControl.Angle = 0;
|
||||
this.floorAngleControl.Location = new System.Drawing.Point(186, 108);
|
||||
this.floorAngleControl.Location = new System.Drawing.Point(186, 104);
|
||||
this.floorAngleControl.Name = "floorAngleControl";
|
||||
this.floorAngleControl.Size = new System.Drawing.Size(38, 38);
|
||||
this.floorAngleControl.Size = new System.Drawing.Size(44, 44);
|
||||
this.floorAngleControl.TabIndex = 56;
|
||||
this.floorAngleControl.AngleChanged += new CodeImp.DoomBuilder.GZBuilder.Controls.AngleControl.AngleChangedDelegate(this.floorAngleControl_AngleChanged);
|
||||
//
|
||||
|
@ -662,7 +662,7 @@
|
|||
// cbUseCeilLineAngles
|
||||
//
|
||||
this.cbUseCeilLineAngles.AutoSize = true;
|
||||
this.cbUseCeilLineAngles.Location = new System.Drawing.Point(230, 119);
|
||||
this.cbUseCeilLineAngles.Location = new System.Drawing.Point(236, 119);
|
||||
this.cbUseCeilLineAngles.Name = "cbUseCeilLineAngles";
|
||||
this.cbUseCeilLineAngles.Size = new System.Drawing.Size(99, 18);
|
||||
this.cbUseCeilLineAngles.TabIndex = 56;
|
||||
|
@ -674,9 +674,9 @@
|
|||
// ceilAngleControl
|
||||
//
|
||||
this.ceilAngleControl.Angle = 0;
|
||||
this.ceilAngleControl.Location = new System.Drawing.Point(186, 108);
|
||||
this.ceilAngleControl.Location = new System.Drawing.Point(186, 104);
|
||||
this.ceilAngleControl.Name = "ceilAngleControl";
|
||||
this.ceilAngleControl.Size = new System.Drawing.Size(38, 38);
|
||||
this.ceilAngleControl.Size = new System.Drawing.Size(44, 44);
|
||||
this.ceilAngleControl.TabIndex = 55;
|
||||
this.ceilAngleControl.AngleChanged += new CodeImp.DoomBuilder.GZBuilder.Controls.AngleControl.AngleChangedDelegate(this.ceilAngleControl_AngleChanged);
|
||||
//
|
||||
|
|
|
@ -138,6 +138,21 @@
|
|||
<metadata name="label8.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="label14.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="label9.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="label13.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="label2.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="label8.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="groupfloorceiling.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
|
@ -147,6 +162,12 @@
|
|||
<metadata name="label5.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="label6.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="label5.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="tabproperties.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
|
@ -156,4 +177,7 @@
|
|||
<metadata name="fieldslist.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="fieldslist.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
27
Source/Core/Windows/ThingEditForm.Designer.cs
generated
27
Source/Core/Windows/ThingEditForm.Designer.cs
generated
|
@ -43,7 +43,6 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
this.posZ = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
|
||||
this.angle = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
|
||||
this.zlabel = new System.Windows.Forms.Label();
|
||||
this.anglecontrol = new CodeImp.DoomBuilder.Controls.AngleControl();
|
||||
this.labelAngle = new System.Windows.Forms.Label();
|
||||
this.tabs = new System.Windows.Forms.TabControl();
|
||||
this.tabproperties = new System.Windows.Forms.TabPage();
|
||||
|
@ -77,6 +76,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
this.fieldslist = new CodeImp.DoomBuilder.Controls.FieldsEditorControl();
|
||||
this.cancel = new System.Windows.Forms.Button();
|
||||
this.apply = new System.Windows.Forms.Button();
|
||||
this.anglecontrol = new CodeImp.DoomBuilder.GZBuilder.Controls.AngleControl();
|
||||
groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
groupBox2 = new System.Windows.Forms.GroupBox();
|
||||
label7 = new System.Windows.Forms.Label();
|
||||
|
@ -121,6 +121,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
//
|
||||
groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
groupBox2.Controls.Add(this.anglecontrol);
|
||||
groupBox2.Controls.Add(this.gravity);
|
||||
groupBox2.Controls.Add(this.labelGravity);
|
||||
groupBox2.Controls.Add(this.cbRandomAngle);
|
||||
|
@ -132,7 +133,6 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
groupBox2.Controls.Add(this.posZ);
|
||||
groupBox2.Controls.Add(this.angle);
|
||||
groupBox2.Controls.Add(this.zlabel);
|
||||
groupBox2.Controls.Add(this.anglecontrol);
|
||||
groupBox2.Controls.Add(this.labelAngle);
|
||||
groupBox2.Location = new System.Drawing.Point(394, 216);
|
||||
groupBox2.Name = "groupBox2";
|
||||
|
@ -268,18 +268,6 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
this.zlabel.Text = "Height:";
|
||||
this.zlabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// anglecontrol
|
||||
//
|
||||
this.anglecontrol.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.anglecontrol.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.anglecontrol.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.anglecontrol.Location = new System.Drawing.Point(152, 71);
|
||||
this.anglecontrol.Name = "anglecontrol";
|
||||
this.anglecontrol.Size = new System.Drawing.Size(84, 84);
|
||||
this.anglecontrol.TabIndex = 2;
|
||||
this.anglecontrol.Value = 0;
|
||||
this.anglecontrol.ButtonClicked += new System.EventHandler(this.anglecontrol_ButtonClicked);
|
||||
//
|
||||
// labelAngle
|
||||
//
|
||||
this.labelAngle.AutoSize = true;
|
||||
|
@ -674,6 +662,15 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
this.apply.UseVisualStyleBackColor = true;
|
||||
this.apply.Click += new System.EventHandler(this.apply_Click);
|
||||
//
|
||||
// anglecontrol
|
||||
//
|
||||
this.anglecontrol.Angle = 0;
|
||||
this.anglecontrol.Location = new System.Drawing.Point(152, 71);
|
||||
this.anglecontrol.Name = "anglecontrol";
|
||||
this.anglecontrol.Size = new System.Drawing.Size(88, 88);
|
||||
this.anglecontrol.TabIndex = 20;
|
||||
this.anglecontrol.AngleChanged += new CodeImp.DoomBuilder.GZBuilder.Controls.AngleControl.AngleChangedDelegate(this.anglecontrol_AngleChanged);
|
||||
//
|
||||
// ThingEditForm
|
||||
//
|
||||
this.AcceptButton = this.apply;
|
||||
|
@ -724,7 +721,6 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
private System.Windows.Forms.GroupBox settingsgroup;
|
||||
private CodeImp.DoomBuilder.Controls.CheckboxArrayControl flags;
|
||||
private System.Windows.Forms.Panel spritetex;
|
||||
private CodeImp.DoomBuilder.Controls.AngleControl anglecontrol;
|
||||
private System.Windows.Forms.GroupBox groupBox3;
|
||||
private System.Windows.Forms.GroupBox actiongroup;
|
||||
private System.Windows.Forms.Panel hexenpanel;
|
||||
|
@ -761,5 +757,6 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
private System.Windows.Forms.ComboBox scriptNumbers;
|
||||
private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox gravity;
|
||||
private System.Windows.Forms.Label labelGravity;
|
||||
private CodeImp.DoomBuilder.GZBuilder.Controls.AngleControl anglecontrol;
|
||||
}
|
||||
}
|
|
@ -411,15 +411,14 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
// Angle text changes
|
||||
private void angle_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
anglecontrol.Value = angle.GetResult(int.MinValue);
|
||||
anglecontrol.Angle = angle.GetResult(int.MinValue);
|
||||
updateAngle(); //mxd
|
||||
}
|
||||
|
||||
// Angle control clicked
|
||||
private void anglecontrol_ButtonClicked(object sender, EventArgs e)
|
||||
{
|
||||
angle.Text = anglecontrol.Value.ToString();
|
||||
updateAngle(); //mxd
|
||||
//mxd. Angle control clicked
|
||||
private void anglecontrol_AngleChanged() {
|
||||
angle.Text = anglecontrol.Angle.ToString();
|
||||
updateAngle();
|
||||
}
|
||||
|
||||
// Apply clicked
|
||||
|
|
|
@ -138,9 +138,36 @@
|
|||
<metadata name="actiongroup.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="groupBox3.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="tabcustom.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="fieldslist.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="actiongroup.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="hexenpanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="doompanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="hexenpanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="arg1label.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="arg0label.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="arg2label.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="arg1label.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
|
@ -156,9 +183,6 @@
|
|||
<metadata name="groupBox3.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="tabcustom.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="fieldslist.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
|
|
Loading…
Reference in a new issue