private void RotChange(object sender, System.EventArgs e) { if (tb_itemname.Tag != null) { return; } if (lb_items.SelectedIndex < 0) { return; } try { tb_itemname.Tag = true; ExtensionItem ei = (ExtensionItem)lb_items.Items[lb_items.SelectedIndex]; ei.Rotation.X = Convert.ToSingle(tbrot1.Text); ei.Rotation.Y = Convert.ToSingle(tbrot2.Text); ei.Rotation.Z = Convert.ToSingle(tbrot3.Text); ei.Rotation.W = Convert.ToSingle(tbrot4.Text); lb_items.Items[lb_items.SelectedIndex] = ei; } catch (Exception) {} finally { tb_itemname.Tag = null; } }
private void DeleteItem(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e) { if (lb_items.SelectedIndex < 0) { return; } try { ExtensionItem[] list = (ExtensionItem[])gbIems.Tag; ExtensionItem ei = (ExtensionItem)lb_items.Items[lb_items.SelectedIndex]; list = (ExtensionItem[])Helper.Delete(list, ei); gbIems.Tag = list; lb_items.Items.Remove(ei); //write back to the wrapper if (tExtension.Tag != null) { Extension ext = (Extension)tExtension.Tag; ext.Items = list; } } catch (Exception ex) { Helper.ExceptionMessage("", ex); } }
private void ChangeName(object sender, System.EventArgs e) { if (tb_itemname.Tag != null) { return; } if (lb_items.SelectedIndex < 0) { return; } try { tb_itemname.Tag = true; ExtensionItem ei = (ExtensionItem)lb_items.Items[lb_items.SelectedIndex]; ei.Name = tb_itemname.Text; lb_items.Items[lb_items.SelectedIndex] = ei; } catch (Exception ex) { Helper.ExceptionMessage("", ex); } finally { tb_itemname.Tag = null; } }
private void OpenArrayEditor(object sender, System.EventArgs e) { try { fExtension fe = new fExtension(); fe.gbIems.Parent = fe; fe.tabControl1.Visible = false; fe.gbIems.Left = 8; fe.gbIems.Top = 8; //fe.Width = fe.gbIems.Width + 24; fe.gbIems.Width = fe.Width - 24; fe.gbIems.Height = fe.ClientRectangle.Height - 16; fe.gbIems.BackColor = SystemColors.Control; ExtensionItem ei = (ExtensionItem)lb_items.Items[lb_items.SelectedIndex]; fe.gbIems.Tag = ei.Items; foreach (ExtensionItem i in ei.Items) { fe.lb_items.Items.Add(i); } fe.ShowDialog(); ei.Items = (ExtensionItem[])fe.gbIems.Tag; lb_items.Items[lb_items.SelectedIndex] = ei; } catch (Exception ex) { Helper.ExceptionMessage("", ex); } }
/// <summary> /// Unserializes a BinaryStream into the Attributes of this Instance /// </summary> /// <param name="reader">The Stream that contains the FileData</param> public void Unserialize(System.IO.BinaryReader reader, uint ver) { version = reader.ReadUInt32(); typecode = reader.ReadByte(); if ((typecode < 0x07)) { int sz = 16; if ((typecode != 0x03) || (ver == 4)) { sz += 15; } if ((typecode <= 0x03) && (version == 3)) { if (ver == 5) { sz = 31; } else { sz = 15; } } if ((typecode <= 0x03) && ver == 4) { sz = 31; } items = new ExtensionItem[1]; ExtensionItem ei = new ExtensionItem(); ei.Typecode = ExtensionItem.ItemTypes.Binary; ei.Data = reader.ReadBytes(sz); items[0] = ei; } else { varname = reader.ReadString(); items = new ExtensionItem[reader.ReadUInt32()]; for (int i = 0; i < items.Length; i++) { items[i] = new ExtensionItem(); items[i].Unserialize(reader); } } }
private void BinChange(object sender, System.EventArgs e) { if (tb_itemname.Tag != null) { return; } if (lb_items.SelectedIndex < 0) { return; } try { tb_itemname.Tag = true; ExtensionItem ei = (ExtensionItem)lb_items.Items[lb_items.SelectedIndex]; ei.Data = Helper.HexListToBytes(tbbin.Text); lb_items.Items[lb_items.SelectedIndex] = ei; } catch (Exception) {} finally { tb_itemname.Tag = null; } }
private void StrChange(object sender, System.EventArgs e) { if (tb_itemname.Tag != null) { return; } if (lb_items.SelectedIndex < 0) { return; } try { tb_itemname.Tag = true; ExtensionItem ei = (ExtensionItem)lb_items.Items[lb_items.SelectedIndex]; ei.String = tbstr.Text; lb_items.Items[lb_items.SelectedIndex] = ei; } catch (Exception) {} finally { tb_itemname.Tag = null; } }
private void FloatChange(object sender, System.EventArgs e) { if (tb_itemname.Tag != null) { return; } if (lb_items.SelectedIndex < 0) { return; } try { tb_itemname.Tag = true; ExtensionItem ei = (ExtensionItem)lb_items.Items[lb_items.SelectedIndex]; ei.Single = Convert.ToSingle(tbfloat.Text); lb_items.Items[lb_items.SelectedIndex] = ei; } catch (Exception) {} finally { tb_itemname.Tag = null; } }
private void ValChange(object sender, System.EventArgs e) { if (tb_itemname.Tag != null) { return; } if (lb_items.SelectedIndex < 0) { return; } try { tb_itemname.Tag = true; ExtensionItem ei = (ExtensionItem)lb_items.Items[lb_items.SelectedIndex]; ei.Value = (int)Convert.ToUInt32(tbval.Text, 16); lb_items.Items[lb_items.SelectedIndex] = ei; } catch (Exception) {} finally { tb_itemname.Tag = null; } }
private void AddItem(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e) { try { ExtensionItem[] list = (ExtensionItem[])gbIems.Tag; ExtensionItem ei = new ExtensionItem(); ei.Typecode = (ExtensionItem.ItemTypes)cbtype.Items[cbtype.SelectedIndex]; list = (ExtensionItem[])Helper.Add(list, ei); gbIems.Tag = list; lb_items.Items.Add(ei); //write back to the wrapper if (tExtension.Tag != null) { Extension ext = (Extension)tExtension.Tag; ext.Items = list; } } catch (Exception ex) { Helper.ExceptionMessage("", ex); } }
/// <summary> /// adds the subsets to the tsDesignMode.. Block and returns a List of all added Subsets /// </summary> /// <param name="shpes"></param> /// <param name="gmnd"></param> /// <param name="subsets"></param> protected void GetSubsets(SimPe.Plugin.Rcol[] shpes, SimPe.Plugin.Rcol gmnd, ArrayList subsets) { ArrayList list = new ArrayList(); ArrayList localsubsets = new ArrayList(); DataListExtension dle = new DataListExtension(gmnd); uint index = (uint)(gm_pkg.FindFiles(0x4C697E5A).Length + 1); foreach (SimPe.Plugin.Rcol shpe in shpes) { SimPe.Plugin.Shape sh = (SimPe.Plugin.Shape)shpe.Blocks[0]; SimPe.Plugin.Rcol cres = FindResourceNode(shpe); foreach (SimPe.Plugin.ShapePart part in sh.Parts) { if (subsets.Contains(part.Subset)) { continue; } if (localsubsets.Contains(part.Subset)) { continue; } //Read the MATD Interfaces.Files.IPackedFileDescriptor[] pfds = package.FindFile(part.FileName + "_txmt", 0x49596978); foreach (Interfaces.Files.IPackedFileDescriptor pfd in pfds) { SimPe.Plugin.Rcol matd = new GenericRcol(null, false); matd.ProcessData(pfd, package); SimPe.Plugin.MaterialDefinition md = (SimPe.Plugin.MaterialDefinition)matd.Blocks[0]; //check that the Material is not transparent if (md.GetProperty("stdMatAlphaBlendMode").Value == "none") { //check that the Material references a texture if (package.FindFile(md.GetProperty("stdMatBaseTextureName").Value + "_txtr", 0x1C4A276C).Length > 0) { localsubsets.Add(part.Subset); SimPe.Plugin.ExtensionItem ei = new ExtensionItem(); ei.Name = part.Subset; ei.Typecode = ExtensionItem.ItemTypes.Array; WorkshopMMAT i = new WorkshopMMAT(part.Subset); object[] tag = new object[3]; tag[0] = matd; tag[1] = cres.FileName; tag[2] = ei; i.Tag = tag; //if (md.GetProperty("stdMatAlphaBlendMode").Value!="none") i.AddObjectStateIndex(1); list.Add(i); //dle.Extension.Items = (ExtensionItem[])Helper.Add(dle.Extension.Items, ei); //AddMMAT(matd, part.Type, cres.FileName, index++); } } } } } WorkshopMMAT[] mmats = new WorkshopMMAT[list.Count]; list.CopyTo(mmats); Listing li = new Listing(); if (mmats.Length > 0) { mmats = li.Execute(mmats); } foreach (WorkshopMMAT mmat in mmats) { subsets.Add(mmat.Subset); dle.Extension.Items = (ExtensionItem[])Helper.Add(dle.Extension.Items, (ExtensionItem)mmat.Tag[2]); AddMMAT((SimPe.Plugin.Rcol)mmat.Tag[0], mmat.Subset, (string)mmat.Tag[1], index++, false); } if (dle.Extension.Items.Length > 0) { AddDesignModeBlock(gmnd, dle); gmnd.SynchronizeUserData(); dn_pkg.Add(gmnd.FileDescriptor); } }
private void SelectItem(object sender, System.EventArgs e) { if (tb_itemname.Tag != null) { return; } HideAll(); if (lb_items.SelectedIndex < 0) { return; } lldel.Enabled = true; try { tb_itemname.Tag = true; ExtensionItem ei = (ExtensionItem)lb_items.Items[lb_items.SelectedIndex]; tb_itemname.Text = ei.Name; switch (ei.Typecode) { case ExtensionItem.ItemTypes.Value: { tbval.Text = "0x" + Helper.HexString((uint)ei.Value); ShowGroup(this.gbval); break; } case ExtensionItem.ItemTypes.Float: { tbfloat.Text = ei.Single.ToString();; ShowGroup(this.gbfloat); break; } case ExtensionItem.ItemTypes.Translation: { tbtrans1.Text = ei.Translation.X.ToString("N6"); tbtrans2.Text = ei.Translation.Y.ToString("N6"); tbtrans3.Text = ei.Translation.Z.ToString("N6"); ShowGroup(this.gbtrans); break; } case ExtensionItem.ItemTypes.String: { tbstr.Text = ei.String; ShowGroup(this.gbstr); break; } case ExtensionItem.ItemTypes.Rotation: { tbrot1.Text = ei.Rotation.X.ToString("N6"); tbrot2.Text = ei.Rotation.Y.ToString("N6"); tbrot3.Text = ei.Rotation.Z.ToString("N6"); tbrot4.Text = ei.Rotation.W.ToString("N6"); ShowGroup(this.gbrot); break; } case ExtensionItem.ItemTypes.Binary: { tbbin.Text = Helper.BytesToHexList(ei.Data); ShowGroup(this.gbbin); break; } case ExtensionItem.ItemTypes.Array: { ShowGroup(this.gbar); break; } } //switch } catch (Exception ex) { Helper.ExceptionMessage("", ex); } finally { tb_itemname.Tag = null; } }
/// <summary> /// Unserializes a BinaryStream into the Attributes of this Instance /// </summary> /// <param name="reader">The Stream that contains the FileData</param> public void Unserialize(System.IO.BinaryReader reader) { typecode = (ItemTypes)reader.ReadByte(); varname = reader.ReadString(); switch (typecode) { case ItemTypes.Value: { val = reader.ReadInt32(); break; } case ItemTypes.Float: { single = reader.ReadSingle(); break; } case ItemTypes.Translation: { translation.Unserialize(reader); break; } case ItemTypes.String: { str = reader.ReadString(); break; } case ItemTypes.Array: { ei = new ExtensionItem[reader.ReadUInt32()]; for (int i = 0; i < ei.Length; i++) { ei[i] = new ExtensionItem(); ei[i].Unserialize(reader); } break; } case ItemTypes.Rotation: { rotation.Unserialize(reader); break; } case ItemTypes.Binary: { int len = reader.ReadInt32(); data = reader.ReadBytes(len); break; } default: { throw new Exception("Unknown Extension Item 0x" + Helper.HexString((byte)typecode) + "\n\nPosition: 0x" + Helper.HexString(reader.BaseStream.Position)); } } }