Example #1
0
        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;
            }
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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;
            }
        }
Example #4
0
        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);
            }
        }
Example #5
0
        /// <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);
                }
            }
        }
Example #6
0
        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;
            }
        }
Example #7
0
        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;
            }
        }
Example #8
0
        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;
            }
        }
Example #9
0
        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;
            }
        }
Example #10
0
        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);
            }
        }
Example #11
0
        /// <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);
            }
        }
Example #12
0
        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;
            }
        }
Example #13
0
        /// <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));
            }
            }
        }