private void GLSurface_GLPaint(object sender, EventArgs e) { try { long time = DateTimeOffset.Now.ToUnixTimeMilliseconds(); float ox = GLSurface.ClientSize.Width % 2 == 0 ? 0 : 0.5f / GLSurface.Zoom; float oy = GLSurface.ClientSize.Height % 2 == 0 ? 0 : 0.5f / GLSurface.Zoom; GLSurface.Render(-ox - OffsetX, -oy - OffsetY); float tx = (int)Math.Round(-OffsetX + MouseManager.CurrentLocation.X - GLSurface.FieldW / 2 + 0.5) + OffsetX + (float)GLSurface.FieldW / 2 - 0.5f; float ty = (int)Math.Round(-OffsetY + MouseManager.CurrentLocation.Y - GLSurface.FieldH / 2 + 0.5) + OffsetY + (float)GLSurface.FieldH / 2 - 0.5f; gl.Color4ub(255, 0, 0, 255); gl.Begin(GL.LINE_LOOP); gl.Vertex2f(tx - 0.5f, ty - 0.5f); gl.Vertex2f(tx + 0.5f, ty - 0.5f); gl.Vertex2f(tx + 0.5f, ty + 0.5f); gl.Vertex2f(tx - 0.5f, ty + 0.5f); gl.End(); } catch (Exception ex) { GLFrameTimer.Stop(); MessageBox.Show(this, ex.ToString(), "Error: Can not render frame.", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public OutfitControl(string path) { InitializeComponent(); RagdollNodeNumeric.FixMouseWheel(); MenuTabs = new ToolStripMenuItem[] { new ToolStripMenuItem("Link ragdoll", null, LinkRagdollMenuItem_Click, Keys.Control | Keys.I), new ToolStripMenuItem("Link sprite", null, LinkSpriteMenuItem_Click, Keys.Control | Keys.Shift | Keys.I), new ToolStripMenuItem("Create node", null, CreateNodeMenuItem_Click, Keys.Control | Keys.A), new ToolStripMenuItem("Remove node", null, RemoveNodeMenuItem_Click, Keys.Control | Keys.D), new ToolStripMenuItem("Move node up", null, MoveNodeUpMenuItem_Click, Keys.Control | Keys.Up), new ToolStripMenuItem("Move node down", null, MoveNodeDownMenuItem_Click, Keys.Control | Keys.Down), new ToolStripMenuItem("Toggle grid", null, ToggleGridMenuItem_Click, Keys.Control | Keys.G), new ToolStripMenuItem("Toggle transparency", null, ToggleTransparencyMenuItem_Click, Keys.Control | Keys.H), new ToolStripMenuItem("Pixel perfect", null, PixelPerfectMenuItem_Click, Keys.Control | Keys.P), new ToolStripMenuItem("Background color", null, BackColorMenuItem_Click, Keys.Control | Keys.L), new ToolStripMenuItem("Reset position", null, ResetPositionMenuItem_Click, Keys.Control | Keys.R), }; for (int i = 3; i <= 5; i++) { MenuTabs[i].Enabled = false; } GLSurface.MakeCurrent(); LoadedResource = new OutfitResource(path); RagdollLinkTextBox.Text = LoadedResource.Ragdoll.Link; Story = new StoryItem <StoryState>(new StoryState(LoadedResource)); Story.ValueChanged += Story_ValueChanged; LoadedResource.Ragdoll.Reload(); RagdollLinkTextBox.Subresource = LoadedResource.Ragdoll; LoadedResource.Ragdoll.Resource?.Clothe(LoadedResource); ResourcePath = path; ResourceName = Path.GetFileName(path); GetTab("Toggle grid").Checked = LoadedResource.GridEnabled; GetTab("Toggle transparency").Checked = LoadedResource.Transparency; GetTab("Pixel perfect").Checked = LoadedResource.PixelPerfect; NodesListBox.BeginUpdate(); while (NodesListBox.Items.Count < LoadedResource.Count) { NodesListBox.Items.Add("Node: " + NodesListBox.Items.Count); } while (NodesListBox.Items.Count > LoadedResource.Count) { NodesListBox.Items.RemoveAt(NodesListBox.Items.Count - 1); } NodesListBox.EndUpdate(); GLSurface.BackColor = Color.FromArgb(LoadedResource.BackColor); ClotheTypeComboBox.Items.AddRange(Enum.GetNames(typeof(OutfitResource.Node.Clothe))); UpdateRedactor(); GLFrameTimer.Start(); }
private void GLSurface_GLStop(object sender, EventArgs e) { try { GLFrameTimer.Stop(); LoadedResource.Dispose(); } catch (Exception ex) { MessageBox.Show(this, ex.ToString(), "Error: Can not stop OpenGL.", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void GLSurface_GLPaint(object sender, EventArgs e) { try { gl.Color4ub(255, 255, 255, 255); LoadedResource.Render(OffsetX, OffsetY, Angle, DateTimeOffset.Now.ToUnixTimeMilliseconds()); float b = LoadedResource.PointBoundsX / GLSurface.Zoom; float s = LoadedResource.PointBoundsY / GLSurface.Zoom; gl.Disable(GL.TEXTURE_2D); if (PointCaptured) { gl.Begin(GL.LINES); gl.Color4ub(255, 0, 0, 128); gl.Vertex2f(OffsetX, -GLSurface.SurfaceSize.Height / 2f); gl.Vertex2f(OffsetX, GLSurface.SurfaceSize.Height / 2f); gl.Vertex2f(-GLSurface.SurfaceSize.Width / 2f, OffsetY); gl.Vertex2f(GLSurface.SurfaceSize.Width / 2f, OffsetY); gl.End(); } gl.Begin(GL.QUADS); gl.Color4ub(0, 0, 0, 255); gl.Vertex2f(OffsetX - b, OffsetY - b); gl.Vertex2f(OffsetX + b, OffsetY - b); gl.Vertex2f(OffsetX + b, OffsetY + b); gl.Vertex2f(OffsetX - b, OffsetY + b); if (PointCaptured) { gl.Color4ub(255, 0, 255, 255); } else { gl.Color4ub(255, 0, 255, 128); } gl.Vertex2f(OffsetX - s, OffsetY - s); gl.Vertex2f(OffsetX + s, OffsetY - s); gl.Vertex2f(OffsetX + s, OffsetY + s); gl.Vertex2f(OffsetX - s, OffsetY + s); gl.End(); } catch (Exception ex) { GLFrameTimer.Stop(); MessageBox.Show(this, ex.ToString(), "Error: Can not render frame.", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public SpriteControl(string path) { InitializeComponent(); FramesNumeric.FixMouseWheel(); DelayNumeric.FixMouseWheel(); ImgboxWNumeric.FixMouseWheel(); ImgboxHNumeric.FixMouseWheel(); AxisXNumeric.FixMouseWheel(); AxisYNumeric.FixMouseWheel(); AngleNumeric.FixMouseWheel(); MenuTabs = new ToolStripMenuItem[] { new ToolStripMenuItem("Link texture", null, LinkTextureMenuItem_Click, Keys.Control | Keys.I), new ToolStripMenuItem("Adjust size", null, AdjustSizeMenuItem_Click, Keys.Control | Keys.A), new ToolStripMenuItem("Pixel perfect", null, PixelPerfectMenuItem_Click, Keys.Control | Keys.P), new ToolStripMenuItem("Background color", null, BackColorMenuItem_Click, Keys.Control | Keys.L), new ToolStripMenuItem("Reset position", null, ResetPositionMenuItem_Click, Keys.Control | Keys.R), }; GLSurface.MakeCurrent(); LoadedResource = new SpriteResource(path); Story = new StoryItem <State>(new State(LoadedResource)); Story.ValueChanged += Story_ValueChanged; MenuTabs[4].Checked = LoadedResource.PixelPerfect; ResourcePath = path; ResourceName = Path.GetFileName(path); LoadedResource.Texture.SynchronizingObject = this; LoadedResource.Texture.Reloaded += Texture_Reloaded; FramesNumeric.Value = LoadedResource.FramesCount; DelayNumeric.Value = (decimal)LoadedResource.FrameDelay; ImgboxWNumeric.Value = (decimal)LoadedResource.ImgboxW; ImgboxHNumeric.Value = (decimal)LoadedResource.ImgboxH; AxisXNumeric.Value = (decimal)LoadedResource.AxisX; AxisYNumeric.Value = (decimal)LoadedResource.AxisY; AngleNumeric.Value = (decimal)LoadedResource.Angle; VFramesCheckBox.Checked = LoadedResource.VerticalFrames; LinkTextBox.Text = LoadedResource.Texture.Link; GLSurface.BackColor = Color.FromArgb(LoadedResource.BackColor); GLFrameTimer.Start(); }
public ToolControl(string path) { InitializeComponent(); FirePointXNumeric.FixMouseWheel(); FirePointYNumeric.FixMouseWheel(); FireVectorXNumeric.FixMouseWheel(); FireVectorYNumeric.FixMouseWheel(); MenuTabs = new ToolStripMenuItem[] { new ToolStripMenuItem("Link sprite", null, LinkSpriteMenuItem_Click, Keys.Control | Keys.I), new ToolStripMenuItem("Unlink sprite", null, UnlinkSpriteMenuItem_Click, Keys.Control | Keys.U), new ToolStripMenuItem("Create part", null, CreatePartMenuItem_Click, Keys.Control | Keys.A), new ToolStripMenuItem("Remove part", null, RemovePartMenuItem_Click, Keys.Control | Keys.D), new ToolStripMenuItem("Adjust fire vector", null, AdjustFireVectorMenuItem_Click, Keys.Control | Keys.F), new ToolStripMenuItem("Toggle transparency", null, ToggleTransparencyMenuItem_Click, Keys.Control | Keys.H), new ToolStripMenuItem("Pixel perfect", null, PixelPerfectMenuItem_Click, Keys.Control | Keys.P), new ToolStripMenuItem("Background color", null, BackColorMenuItem_Click, Keys.Control | Keys.L), new ToolStripMenuItem("Reset position", null, ResetPositionMenuItem_Click, Keys.Control | Keys.R), }; GLSurface.MakeCurrent(); LoadedResource = new ToolResource(path); Story = new StoryItem <State>(new State(LoadedResource)); Story.ValueChanged += Story_ValueChanged; ResourcePath = path; ResourceName = Path.GetFileName(path); ActionTextBox.TextChanged += (object sender, EventArgs e) => SyncTextBoxValue(sender, LoadedResource.ActionName, v => LoadedResource.ActionName = v); FirePointXNumeric.ValueChanged += (object sender, EventArgs e) => SyncNumericValue(sender, LoadedResource.FirePointX, v => LoadedResource.FirePointX = v); FirePointYNumeric.ValueChanged += (object sender, EventArgs e) => SyncNumericValue(sender, LoadedResource.FirePointY, v => LoadedResource.FirePointY = v); FireVectorXNumeric.ValueChanged += (object sender, EventArgs e) => SyncNumericValue(sender, LoadedResource.FireVectorX, v => LoadedResource.FireVectorX = v); FireVectorYNumeric.ValueChanged += (object sender, EventArgs e) => SyncNumericValue(sender, LoadedResource.FireVectorY, v => LoadedResource.FireVectorY = v); AttachedCheckBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxValue(sender, LoadedResource.AngleAttached, v => LoadedResource.AngleAttached = v); PartsListBox.SelectedIndexChanged += (object sender, EventArgs e) => RestoreChanges(false); PartsListBox.ItemCheck += (object sender, ItemCheckEventArgs e) => SyncCheckedValue(sender, e, LoadedResource.SpriteLockedOnCycle); GetTab("Pixel perfect").Checked = LoadedResource.PixelPerfect; GetTab("Toggle transparency").Checked = LoadedResource.Transparency; RestoreChanges(); GLFrameTimer.Start(); }
private void GLSurface_GLPaint(object sender, EventArgs e) { try { long time = DateTimeOffset.Now.ToUnixTimeMilliseconds(); float ox = GLSurface.ClientSize.Width % 2 == 0 ? 0 : 0.5f / GLSurface.Zoom; float oy = GLSurface.ClientSize.Height % 2 == 0 ? 0 : 0.5f / GLSurface.Zoom; var frame = LoadedResource.Ragdoll.Resource?.MakeFrame() ?? null; LoadedResource.Ragdoll.Resource?.Render(frame, OffsetX, OffsetY, time); } catch (Exception ex) { GLFrameTimer.Stop(); MessageBox.Show(this, ex.ToString(), "Error: Can not render frame.", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public TileControl(string path) { InitializeComponent(); SolidityNumeric.FixMouseWheel(); LayerNumeric.FixMouseWheel(); SizeNumeric.FixMouseWheel(); FramesCountNumeric.FixMouseWheel(); FrameDelayNumeric.FixMouseWheel(); OffsetXNumeric.FixMouseWheel(); OffsetYNumeric.FixMouseWheel(); TileComboBox.SelectedIndex = 0; MenuTabs = new ToolStripMenuItem[] { new ToolStripMenuItem("Link texture", null, LinkTextureMenuItem_Click, Keys.Control | Keys.I), new ToolStripMenuItem("Link event", null, LinkEventMenuItem_Click, Keys.Control | Keys.Shift | Keys.I), new ToolStripMenuItem("Toggle grid", null, ToggleGridMenuItem_Click, Keys.Control | Keys.G), new ToolStripMenuItem("Background color", null, BackColorMenuItem_Click, Keys.Control | Keys.L), new ToolStripMenuItem("Reset position", null, ResetPositionMenuItem_Click, Keys.Control | Keys.R), }; GLSurface.MakeCurrent(); LoadedResource = new TileResource(path); SolidityNumeric.ValueChanged += (object sender, EventArgs e) => SyncNumericValue(sender, LoadedResource.Solidity, v => LoadedResource.Solidity = v); LayerNumeric.ValueChanged += (object sender, EventArgs e) => { SyncNumericValue(sender, LoadedResource.Layer, v => LoadedResource.Layer = v); GLSurface.ResortTiles(); }; SizeNumeric.ValueChanged += (object sender, EventArgs e) => SyncNumericValue(sender, LoadedResource.PartSize, v => LoadedResource.PartSize = v); FramesCountNumeric.ValueChanged += (object sender, EventArgs e) => SyncNumericValue(sender, LoadedResource.FramesCount, v => LoadedResource.FramesCount = v); FrameDelayNumeric.ValueChanged += (object sender, EventArgs e) => SyncNumericValue(sender, LoadedResource.FrameDelay, v => LoadedResource.FrameDelay = v); OffsetXNumeric.ValueChanged += (object sender, EventArgs e) => SyncNumericValue(sender, LoadedResource.OffsetX, v => LoadedResource.OffsetX = v); OffsetYNumeric.ValueChanged += (object sender, EventArgs e) => SyncNumericValue(sender, LoadedResource.OffsetY, v => LoadedResource.OffsetY = v); TReactionBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxReaction(sender, LoadedResource.Reactions, v => LoadedResource.Reactions = v, TileResource.Reaction.T); TLReactionBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxReaction(sender, LoadedResource.Reactions, v => LoadedResource.Reactions = v, TileResource.Reaction.TL); LReactionBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxReaction(sender, LoadedResource.Reactions, v => LoadedResource.Reactions = v, TileResource.Reaction.L); LDReactionBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxReaction(sender, LoadedResource.Reactions, v => LoadedResource.Reactions = v, TileResource.Reaction.LD); DReactionBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxReaction(sender, LoadedResource.Reactions, v => LoadedResource.Reactions = v, TileResource.Reaction.D); DRReactionBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxReaction(sender, LoadedResource.Reactions, v => LoadedResource.Reactions = v, TileResource.Reaction.DR); RReactionBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxReaction(sender, LoadedResource.Reactions, v => LoadedResource.Reactions = v, TileResource.Reaction.R); RUReactionBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxReaction(sender, LoadedResource.Reactions, v => LoadedResource.Reactions = v, TileResource.Reaction.RT); MReactionBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxReaction(sender, LoadedResource.Reactions, v => LoadedResource.Reactions = v, TileResource.Reaction.M); TAnchorBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxAnchor(sender, LoadedResource.Anchors, v => LoadedResource.Anchors = v, TileResource.Anchor.T); LAnchorBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxAnchor(sender, LoadedResource.Anchors, v => LoadedResource.Anchors = v, TileResource.Anchor.L); DAnchorBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxAnchor(sender, LoadedResource.Anchors, v => LoadedResource.Anchors = v, TileResource.Anchor.D); RAnchorBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxAnchor(sender, LoadedResource.Anchors, v => LoadedResource.Anchors = v, TileResource.Anchor.R); FAnchorBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxAnchor(sender, LoadedResource.Anchors, v => LoadedResource.Anchors = v, TileResource.Anchor.F); BAnchorBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxAnchor(sender, LoadedResource.Anchors, v => LoadedResource.Anchors = v, TileResource.Anchor.B); PropertiesListBox.ItemCheck += (object sender, ItemCheckEventArgs e) => SyncFlags(sender, e, LoadedResource.Properties, v => LoadedResource.Properties = v); Story = new StoryItem <State>(new State(LoadedResource)); Story.ValueChanged += Story_ValueChanged; TextureLinkTextBox.Subresource = LoadedResource.Texture; ResourcePath = path; ResourceName = Path.GetFileName(path); ShapeComboBox.Items.AddRange(Enum.GetNames(typeof(TileResource.Shape))); EventsComboBox.SelectedIndex = 0; ShapeComboBox.SelectedIndex = (int)LoadedResource.Form; for (int i = 0; i < PropertiesListBox.Items.Count; i++) { PropertiesListBox.SetItemChecked(i, LoadedResource[i]); } PropertiesListBox.SelectedIndexChanged += (object sender, EventArgs e) => PropertiesListBox.SelectedIndex = -1; SolidityNumeric.Value = (decimal)LoadedResource.Solidity; LayerNumeric.Value = (decimal)LoadedResource.Layer; SizeNumeric.Value = (decimal)LoadedResource.PartSize; FramesCountNumeric.Value = (decimal)LoadedResource.FramesCount; FrameDelayNumeric.Value = (decimal)LoadedResource.FrameDelay; OffsetXNumeric.Value = (decimal)LoadedResource.OffsetX; OffsetYNumeric.Value = (decimal)LoadedResource.OffsetY; TReactionBox.Checked = LoadedResource.Reactions.HasFlag(TileResource.Reaction.T); TLReactionBox.Checked = LoadedResource.Reactions.HasFlag(TileResource.Reaction.TL); LReactionBox.Checked = LoadedResource.Reactions.HasFlag(TileResource.Reaction.L); LDReactionBox.Checked = LoadedResource.Reactions.HasFlag(TileResource.Reaction.LD); DReactionBox.Checked = LoadedResource.Reactions.HasFlag(TileResource.Reaction.D); DRReactionBox.Checked = LoadedResource.Reactions.HasFlag(TileResource.Reaction.DR); RReactionBox.Checked = LoadedResource.Reactions.HasFlag(TileResource.Reaction.R); RUReactionBox.Checked = LoadedResource.Reactions.HasFlag(TileResource.Reaction.RT); MReactionBox.Checked = LoadedResource.Reactions.HasFlag(TileResource.Reaction.M); TAnchorBox.Checked = LoadedResource.Anchors.HasFlag(TileResource.Anchor.T); LAnchorBox.Checked = LoadedResource.Anchors.HasFlag(TileResource.Anchor.L); DAnchorBox.Checked = LoadedResource.Anchors.HasFlag(TileResource.Anchor.D); RAnchorBox.Checked = LoadedResource.Anchors.HasFlag(TileResource.Anchor.R); FAnchorBox.Checked = LoadedResource.Anchors.HasFlag(TileResource.Anchor.F); BAnchorBox.Checked = LoadedResource.Anchors.HasFlag(TileResource.Anchor.B); GLFrameTimer.Start(); int ox = (int)(GLSurface.FieldW / 2); int oy = (int)(GLSurface.FieldH / 2); GLSurface.LoadTile(LoadedResource, TileName); GLSurface.PlaceTile(TileName, ox + 0, oy + 0); GLSurface.PlaceTile(TileName, ox - 1, oy + 0); GLSurface.PlaceTile(TileName, ox + 1, oy + 0); GLSurface.PlaceTile(TileName, ox + 0, oy - 1); GLSurface.PlaceTile(TileName, ox + 0, oy + 1); GLSurface.BackColor = Color.FromArgb(LoadedResource.BackColor); GLSurface.GridEnabled = LoadedResource.GridEnabled; GetTab("Toggle grid").Checked = LoadedResource.GridEnabled; }
private void GLSurface_GLPaint(object sender, EventArgs e) { try { long time = DateTimeOffset.Now.ToUnixTimeMilliseconds(); if (LoadedResource.Transparency) { gl.Color4ub(255, 255, 255, 150); } else { gl.Color4ub(255, 255, 255, 255); } LoadedResource.Render(OffsetX, OffsetY, Angle, time, 1000); // FIX THIS SHITTTTTT float b = LoadedResource.PointBoundsX / GLSurface.Zoom; float w = LoadedResource.PointBoundsY / GLSurface.Zoom; float lx = LoadedResource.FireVectorX; float ly = LoadedResource.FireVectorY; float x1 = LoadedResource.FirePointX; float y1 = LoadedResource.FirePointY; float x2 = x1 + LoadedResource.FireVectorX; float y2 = y1 + LoadedResource.FireVectorY; float d = (float)Math.Sqrt(lx * lx + ly * ly); float cs = LoadedResource.FireVectorX / d; float sn = LoadedResource.FireVectorY / d; gl.Disable(GL.TEXTURE_2D); gl.Begin(GL.TRIANGLES); gl.Color4ub(255, 255, 255, 128); gl.Vertex2f(OffsetX + x2 + (-b * cs - 0 * sn), OffsetY + y2 + (-b * sn + 0 * cs)); gl.Vertex2f(OffsetX + x2 + ((-b - w * 2f) * cs - w * 2f * sn), OffsetY + y2 + ((-b - w * 2f) * sn + w * 2f * cs)); gl.Vertex2f(OffsetX + x2 + ((-b - w * 2f) * cs - -w * 2f * sn), OffsetY + y2 + ((-b - w * 2f) * sn + -w * 2f * cs)); gl.End(); float lx2 = x2 + ((-b - w * 2f) * cs - 0 * sn); float ly2 = y2 + ((-b - w * 2f) * sn + 0 * cs); gl.Begin(GL.QUADS); gl.Color4ub(255, 255, 255, 128); gl.Vertex2f(OffsetX + x1 - w * sn, OffsetY + y1 + w * cs); gl.Vertex2f(OffsetX + lx2 - w * sn, OffsetY + ly2 + w * cs); gl.Vertex2f(OffsetX + lx2 + w * sn, OffsetY + ly2 - w * cs); gl.Vertex2f(OffsetX + x1 + w * sn, OffsetY + y1 - w * cs); gl.Color4ub(0, 0, 0, 255); gl.Vertex2f(OffsetX + x2 - b, OffsetY + y2 - b); gl.Vertex2f(OffsetX + x2 + b, OffsetY + y2 - b); gl.Vertex2f(OffsetX + x2 + b, OffsetY + y2 + b); gl.Vertex2f(OffsetX + x2 - b, OffsetY + y2 + b); if (CapturedPoint == 2) { gl.Color4ub(255, 0, 255, 255); } else { gl.Color4ub(255, 0, 255, 128); } gl.Vertex2f(OffsetX + x2 - w, OffsetY + y2 - w); gl.Vertex2f(OffsetX + x2 + w, OffsetY + y2 - w); gl.Vertex2f(OffsetX + x2 + w, OffsetY + y2 + w); gl.Vertex2f(OffsetX + x2 - w, OffsetY + y2 + w); gl.Color4ub(0, 0, 0, 255); gl.Vertex2f(OffsetX + x1 - b, OffsetY + y1 - b); gl.Vertex2f(OffsetX + x1 + b, OffsetY + y1 - b); gl.Vertex2f(OffsetX + x1 + b, OffsetY + y1 + b); gl.Vertex2f(OffsetX + x1 - b, OffsetY + y1 + b); if (CapturedPoint == 1) { gl.Color4ub(0, 255, 255, 255); } else { gl.Color4ub(0, 255, 255, 128); } gl.Vertex2f(OffsetX + x1 - w, OffsetY + y1 - w); gl.Vertex2f(OffsetX + x1 + w, OffsetY + y1 - w); gl.Vertex2f(OffsetX + x1 + w, OffsetY + y1 + w); gl.Vertex2f(OffsetX + x1 - w, OffsetY + y1 + w); gl.End(); if (CapturedPoint == 1) { gl.Begin(GL.LINES); gl.Color4ub(255, 0, 0, 128); gl.Vertex2f(OffsetX + x1, -GLSurface.SurfaceSize.Height / 2f); gl.Vertex2f(OffsetX + x1, GLSurface.SurfaceSize.Height / 2f); gl.Vertex2f(-GLSurface.SurfaceSize.Width / 2f, OffsetY + y1); gl.Vertex2f(GLSurface.SurfaceSize.Width / 2f, OffsetY + y1); gl.End(); } if (CapturedPoint == 2) { gl.Begin(GL.LINES); gl.Color4ub(255, 0, 0, 128); gl.Vertex2f(OffsetX + x2, -GLSurface.SurfaceSize.Height / 2f); gl.Vertex2f(OffsetX + x2, GLSurface.SurfaceSize.Height / 2f); gl.Vertex2f(-GLSurface.SurfaceSize.Width / 2f, OffsetY + y2); gl.Vertex2f(GLSurface.SurfaceSize.Width / 2f, OffsetY + y2); gl.End(); } } catch (Exception ex) { GLFrameTimer.Stop(); MessageBox.Show(this, ex.ToString(), "Error: Can not render frame.", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void GLSurface_GLStop(object sender, EventArgs e) { GLFrameTimer.Stop(); LoadedResource.Dispose(); }