private void UnlinkSpriteMenuItem_Click(object sender, EventArgs e) { try { GLSurface.MakeCurrent(); int sind = PartsListBox.SelectedIndex; if (sind < 0 || sind >= LoadedResource.Sprites.Count) { return; } var sprites = LoadedResource.Sprites[sind]; int index = VariantsListBox.SelectedIndex; if (index < 0 || index >= LoadedResource.Sprites[sind].Count) { return; } sprites[index].Dispose(); sprites.RemoveAt(index); VariantsListBox.Items.RemoveAt(index); BackupChanges(); MakeUnsaved(); } catch (Exception ex) { MessageBox.Show(this, ex.ToString(), "Error: Can not unlink sprite.", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void LinkSpriteMenuItem_Click(object sender, EventArgs e) { try { int sind = PartsListBox.SelectedIndex; if (sind < 0 || sind >= LoadedResource.Sprites.Count) { return; } var sprites = LoadedResource.Sprites[sind]; GLSurface.MakeCurrent(); var subform = new ExplorerForm(Directory.GetCurrentDirectory(), true, ResourceType.Sprite); if (subform.ShowDialog(this) == DialogResult.OK) { foreach (var link in subform.SelectedResources) { sprites.Add(new Subresource <SpriteResource>(link, true)); VariantsListBox.Items.Add(link); } BackupChanges(); MakeUnsaved(); } } catch (Exception ex) { MessageBox.Show(this, ex.ToString(), "Error: Can not .", 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(); }
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(); }
private void LinkSpriteMenuItem_Click(object sender, EventArgs e) { try { GLSurface.MakeCurrent(); var subform = new ExplorerForm(Directory.GetCurrentDirectory(), false, ResourceType.Ragdoll); if (subform.ShowDialog(this) == DialogResult.OK && subform.SelectedResources.Count == 1) { SpriteLinkTextBox.Text = subform.SelectedResources[0]; } } catch (Exception ex) { MessageBox.Show(this, ex.ToString(), "Error: Can not link ragdoll.", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
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 CreateNodeMenuItem_Click(object sender, EventArgs e) { try { GLSurface.MakeCurrent(); var index = NodesListBox.SelectedIndex + 1; LoadedResource.Ragdoll.Resource?.Unclothe(LoadedResource); LoadedResource.Nodes.Insert(index, new OutfitResource.Node()); LoadedResource.Ragdoll.Resource?.Clothe(LoadedResource); Story.Item = new StoryState(LoadedResource); NodesListBox.SelectedIndex = index; } catch (Exception ex) { MessageBox.Show(this, ex.ToString(), "Error: Can not create frame.", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void Story_ValueChanged(object sender, EventArgs e) { GLSurface.MakeCurrent(); LoadedResource.Ragdoll.Resource?.Unclothe(LoadedResource); Story.Item.ToResource(LoadedResource); LoadedResource.Ragdoll.Resource?.Clothe(LoadedResource); 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); } UpdateInterface(); MakeUnsaved(); }
private void RemoveNodeMenuItem_Click(object sender, EventArgs e) { try { GLSurface.MakeCurrent(); var index = NodesListBox.SelectedIndex; if (index >= 0 && index < LoadedResource.Count) { LoadedResource.Ragdoll.Resource?.Unclothe(LoadedResource); LoadedResource.Nodes[index].Dispose(); LoadedResource.Nodes.RemoveAt(index); LoadedResource.Ragdoll.Resource?.Clothe(LoadedResource); Story.Item = new StoryState(LoadedResource); } } catch (Exception ex) { MessageBox.Show(this, ex.ToString(), "Error: Can not remove frame.", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void CreatePartMenuItem_Click(object sender, EventArgs e) { try { GLSurface.MakeCurrent(); int index = PartsListBox.SelectedIndex + 1; if (index < 0 || index > LoadedResource.Count) { return; } LoadedResource.Sprites.Insert(index, new List <Subresource <SpriteResource> >()); LoadedResource.SelectedSprites.Insert(index, -1); LoadedResource.SpriteLockedOnCycle.Insert(index, false); PartsListBox.Items.Add("Part: " + PartsListBox.Items.Count); BackupChanges(); MakeUnsaved(); } catch (Exception ex) { MessageBox.Show(this, ex.ToString(), "Error: Can not create part.", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public void Activate() { GLSurface.MakeCurrent(); }
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 RestoreChanges(bool data_changed = true) { GLSurface.MakeCurrent(); var item = Story.Item; var pindex = PartsListBox.SelectedIndex; var vindex = VariantsListBox.SelectedIndex; if (data_changed) { LoadedResource.ActionName = item.ActionName; LoadedResource.FirePointX = item.FirePointX; LoadedResource.FirePointY = item.FirePointY; LoadedResource.FireVectorX = item.FireVectorX; LoadedResource.FireVectorY = item.FireVectorY; ActionTextBox.Text = item.ActionName; FirePointXNumeric.Value = (decimal)item.FirePointX; FirePointYNumeric.Value = (decimal)item.FirePointY; FireVectorXNumeric.Value = (decimal)item.FireVectorX; FireVectorYNumeric.Value = (decimal)item.FireVectorY; AttachedCheckBox.Checked = item.AngleAttached; if (LoadedResource.Count != item.Count) { MakeUnsaved(); while (LoadedResource.Count < item.Count) { LoadedResource.Sprites.Add(new List <Subresource <SpriteResource> >()); } while (LoadedResource.Count > item.Count) { foreach (var res in LoadedResource[LoadedResource.Count - 1]) { res.Resource?.Dispose(); } LoadedResource.Sprites.RemoveAt(LoadedResource.Count - 1); } } for (int i = 0; i < LoadedResource.Count; i++) { var icol = item[i]; var col = LoadedResource[i]; if (col.Count != icol.Length) { MakeUnsaved(); while (col.Count < item.Count) { col.Add(new Subresource <SpriteResource>()); } while (col.Count > item.Count) { col[col.Count - 1].Resource?.Dispose(); col.RemoveAt(col.Count - 1); } } for (int j = 0; j < col.Count; j++) { if (col[j].Link != icol[j]) { MakeUnsaved(); col[j].Link = icol[j]; } } } if (LoadedResource.SpriteLockedOnCycle.Count != item.LockedCount) { while (LoadedResource.SpriteLockedOnCycle.Count < item.LockedCount) { LoadedResource.SpriteLockedOnCycle.Add(false); } while (LoadedResource.SpriteLockedOnCycle.Count > item.LockedCount) { LoadedResource.SpriteLockedOnCycle.RemoveAt(LoadedResource.SpriteLockedOnCycle.Count - 1); } } for (int i = 0; i < LoadedResource.SpriteLockedOnCycle.Count; i++) { LoadedResource.SpriteLockedOnCycle[i] = item.IsLocked(i); } if (item.Count != PartsListBox.Items.Count) { PartsListBox.BeginUpdate(); while (PartsListBox.Items.Count < item.Count) { PartsListBox.Items.Add("Part: " + PartsListBox.Items.Count); } while (PartsListBox.Items.Count > item.Count) { PartsListBox.Items.RemoveAt(PartsListBox.Items.Count - 1); } PartsListBox.EndUpdate(); PartsListBox.SelectedIndex = Math.Min(pindex, PartsListBox.Items.Count - 1); } for (int i = 0; i < LoadedResource.SpriteLockedOnCycle.Count; i++) { PartsListBox.SetItemChecked(i, LoadedResource.SpriteLockedOnCycle[i]); } GLSurface.BackColor = Color.FromArgb(item.BackColor); LoadedResource.PointBoundsX = item.PointBoundsX; LoadedResource.PointBoundsY = item.PointBoundsY; GetTab("Pixel perfect").Checked = item.PixelPerfect; GetTab("Toggle transparency").Checked = item.Transparency; } if (pindex >= 0 && pindex < item.Count) { VariantsListBox.Enabled = true; var col = item[pindex]; VariantsListBox.BeginUpdate(); for (int i = 0; i < col.Length; i++) { if (i < VariantsListBox.Items.Count) { VariantsListBox.Items[i] = col[i]; } else { VariantsListBox.Items.Add(col[i]); } } while (VariantsListBox.Items.Count > col.Length) { VariantsListBox.Items.RemoveAt(VariantsListBox.Items.Count - 1); } VariantsListBox.EndUpdate(); } else { VariantsListBox.Items.Clear(); VariantsListBox.Enabled = false; } }