Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
 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);
     }
 }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
        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();
        }
Exemplo n.º 7
0
        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);
            }
        }
Exemplo n.º 8
0
        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;
        }
Exemplo n.º 9
0
        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);
            }
        }
Exemplo n.º 10
0
 private void GLSurface_GLStop(object sender, EventArgs e)
 {
     GLFrameTimer.Stop();
     LoadedResource.Dispose();
 }