Exemple #1
0
 private void button1_Click(object sender, EventArgs e)
 {
     IEnumerator enumerator = this.listView1.SelectedItems.GetEnumerator();
     try
     {
         if (enumerator.MoveNext())
         {
             ListViewItem listViewItem = (ListViewItem)enumerator.Current;
             if (listViewItem.Tag != null)
             {
                 Mt1 mt = ((FormII.MotInf)listViewItem.Tag).mt1;
                 Msetblk msetblk = new Msetblk(new MemoryStream(mt.bin, false));
                 T31 arg_6A_0 = this._Sora[0].mdlx.alt31[0];
                 Mlink mlink = this._Sora[0].ol = new Mlink();
                 MemoryStream fsMdlx = new MemoryStream(this._Sora[0].binMdlx, false);
                 MemoryStream fsMset = new MemoryStream(this._Sora[0].binMset, false);
                 for (float num = 0f; num <= 300f; num += 1f)
                 {
                     float[] array;
                     float[] array2;
                     float[] array3;
                     mlink.Permit_DEB(fsMdlx, msetblk.cntb1, fsMset, msetblk.cntb2, mt.off, num, out array, out array2, out array3);
                 }
             }
         }
     }
     finally
     {
         IDisposable disposable = enumerator as IDisposable;
         if (disposable != null)
         {
             disposable.Dispose();
         }
     }
 }
Exemple #2
0
 private void calcbody(FormII.CaseTris ct, FormII.Mesh M, Mt1 mt1)
 {
     Mdlxfst mdlx = M.mdlx;
     Msetfst mset = M.mset;
     List<Body1> albody = M.albody1;
     Mlink mlink = M.ol;
     ct.Close();
     albody.Clear();
     if (mdlx != null && mset != null)
     {
         T31 t = mdlx.alt31[0];
         Matrix[] array;
         if (mt1.isRaw)
         {
             MsetRawblk msetRawblk = new MsetRawblk(new MemoryStream(mt1.bin, false));
             int num = Math.Max(0, Math.Min(msetRawblk.cntFrames - 1, (int)Math.Floor((double)this.tick)));
             int num2 = Math.Max(0, Math.Min(msetRawblk.cntFrames - 1, (int)Math.Ceiling((double)this.tick)));
             if (num == num2)
             {
                 MsetRM msetRM = msetRawblk.alrm[num];
                 array = (M.Ma = msetRM.al.ToArray());
             }
             else
             {
                 MsetRM msetRM2 = msetRawblk.alrm[num];
                 float num3 = this.tick % 1f;
                 MsetRM msetRM3 = msetRawblk.alrm[num2];
                 float num4 = 1f - num3;
                 array = (M.Ma = new Matrix[msetRawblk.cntJoints]);
                 for (int i = 0; i < array.Length; i++)
                 {
                     array[i] = new Matrix
                     {
                         M11 = msetRM2.al[i].M11 * num4 + msetRM3.al[i].M11 * num3,
                         M21 = msetRM2.al[i].M21 * num4 + msetRM3.al[i].M21 * num3,
                         M31 = msetRM2.al[i].M31 * num4 + msetRM3.al[i].M31 * num3,
                         M41 = msetRM2.al[i].M41 * num4 + msetRM3.al[i].M41 * num3,
                         M12 = msetRM2.al[i].M12 * num4 + msetRM3.al[i].M12 * num3,
                         M22 = msetRM2.al[i].M22 * num4 + msetRM3.al[i].M22 * num3,
                         M32 = msetRM2.al[i].M32 * num4 + msetRM3.al[i].M32 * num3,
                         M42 = msetRM2.al[i].M42 * num4 + msetRM3.al[i].M42 * num3,
                         M13 = msetRM2.al[i].M13 * num4 + msetRM3.al[i].M13 * num3,
                         M23 = msetRM2.al[i].M23 * num4 + msetRM3.al[i].M23 * num3,
                         M33 = msetRM2.al[i].M33 * num4 + msetRM3.al[i].M33 * num3,
                         M43 = msetRM2.al[i].M43 * num4 + msetRM3.al[i].M43 * num3,
                         M14 = msetRM2.al[i].M14 * num4 + msetRM3.al[i].M14 * num3,
                         M24 = msetRM2.al[i].M24 * num4 + msetRM3.al[i].M24 * num3,
                         M34 = msetRM2.al[i].M34 * num4 + msetRM3.al[i].M34 * num3,
                         M44 = msetRM2.al[i].M44 * num4 + msetRM3.al[i].M44 * num3
                     };
                 }
             }
         }
         else
         {
             Msetblk msetblk = new Msetblk(new MemoryStream(mt1.bin, false));
             MemoryStream memoryStream = new MemoryStream();
             if (mlink == null)
             {
                 mlink = (M.ol = new Mlink());
             }
             mlink.Permit(new MemoryStream(M.binMdlx, false), msetblk.cntb1, new MemoryStream(M.binMset, false), msetblk.cntb2, mt1.off, this.tick, memoryStream);
             BinaryReader binaryReader = new BinaryReader(memoryStream);
             memoryStream.Position = 0L;
             array = (M.Ma = new Matrix[msetblk.cntb1]);
             for (int j = 0; j < msetblk.cntb1; j++)
             {
                 array[j] = new Matrix
                 {
                     M11 = binaryReader.ReadSingle(),
                     M12 = binaryReader.ReadSingle(),
                     M13 = binaryReader.ReadSingle(),
                     M14 = binaryReader.ReadSingle(),
                     M21 = binaryReader.ReadSingle(),
                     M22 = binaryReader.ReadSingle(),
                     M23 = binaryReader.ReadSingle(),
                     M24 = binaryReader.ReadSingle(),
                     M31 = binaryReader.ReadSingle(),
                     M32 = binaryReader.ReadSingle(),
                     M33 = binaryReader.ReadSingle(),
                     M34 = binaryReader.ReadSingle(),
                     M41 = binaryReader.ReadSingle(),
                     M42 = binaryReader.ReadSingle(),
                     M43 = binaryReader.ReadSingle(),
                     M44 = binaryReader.ReadSingle()
                 };
             }
         }
         Matrix mv = Matrix.Identity;
         if (M.parent != null && M.iMa != -1)
         {
             mv = M.parent.Ma[M.iMa];
         }
         foreach (T13vif current in t.al13)
         {
             int tops = 544;
             int top = 0;
             VU1Mem vU1Mem = new VU1Mem();
             new ParseVIF1(vU1Mem).Parse(new MemoryStream(current.bin, false), tops);
             Body1 item = SimaVU1.Sima(vU1Mem, array, tops, top, current.texi, current.alaxi, mv);
             albody.Add(item);
         }
         List<uint> list = new List<uint>();
         List<FormII.Sepa> list2 = new List<FormII.Sepa>();
         int num5 = 0;
         int num6 = 0;
         uint[] array2 = new uint[4];
         int num7 = 0;
         int num8 = (int)this.tick;
         int[] array3 = new int[]
         {
             1,
             2,
             3
         };
         foreach (Body1 current2 in albody)
         {
             int num9 = 0;
             for (int k = 0; k < current2.alvi.Length; k++)
             {
                 array2[num7] = (uint)(current2.alvi[k] | num6 << 12 | k << 24);
                 num7 = (num7 + 1 & 3);
                 if (current2.alfl[k] == 32)
                 {
                     list.Add(array2[num7 - array3[num8 * 103 % 3] & 3]);
                     list.Add(array2[num7 - array3[(1 + num8 * 103) % 3] & 3]);
                     list.Add(array2[num7 - array3[(2 + num8 * 103) % 3] & 3]);
                     num9++;
                 }
                 else
                 {
                     if (current2.alfl[k] == 48)
                     {
                         list.Add(array2[num7 - array3[(num8 << 1) % 3] & 3]);
                         list.Add(array2[num7 - array3[(2 + (num8 << 1)) % 3] & 3]);
                         list.Add(array2[num7 - array3[(1 + (num8 << 1)) % 3] & 3]);
                         num9++;
                     }
                 }
             }
             list2.Add(new FormII.Sepa(num5, num9, current2.t, num6));
             num5 += 3 * num9;
             num6++;
         }
         ct.alsepa = list2.ToArray();
         ct.cntVert = list.Count;
         ct.cntPrimitives = 0;
         if (ct.cntVert != 0)
         {
             ct.vb = new VertexBuffer(this.device, 36 * ct.cntVert, Usage.None, ct.vf = (VertexFormat.Texture3 | VertexFormat.Position), Pool.Managed);
             DataStream dataStream = ct.vb.Lock(0, 0, LockFlags.None);
             try
             {
                 int count = list.Count;
                 for (int l = 0; l < count; l++)
                 {
                     uint num10 = list[l];
                     uint num11 = num10 & 4095u;
                     uint index = num10 >> 12 & 4095u;
                     uint num12 = num10 >> 24 & 4095u;
                     Body1 body = albody[(int)index];
                     PTex3 value = new PTex3(body.alvert[(int)((UIntPtr)num11)], new Vector2(body.aluv[(int)((UIntPtr)num12)].X, body.aluv[(int)((UIntPtr)num12)].Y));
                     dataStream.Write<PTex3>(value);
                 }
                 dataStream.Position = 0L;
             }
             finally
             {
                 ct.vb.Unlock();
             }
         }
     }
 }
Exemple #3
0
 private void loadMset(string fmset, int ty)
 {
     FormII.Mesh mesh = this._Sora[ty];
     mesh.DisposeMset();
     if (File.Exists(fmset))
     {
         using (FileStream fileStream = File.OpenRead(fmset))
         {
             mesh.mset = new Msetfst(fileStream, Path.GetFileName(fmset));
         }
         if (ty == 0)
         {
             this.listView1.Items.Clear();
             foreach (Mt1 current in mesh.mset.al1)
             {
                 ListViewItem listViewItem = this.listView1.Items.Add(current.id);
                 FormII.MotInf motInf = new FormII.MotInf();
                 motInf.mt1 = current;
                 if (current.isRaw)
                 {
                     MsetRawblk msetRawblk = new MsetRawblk(new MemoryStream(current.bin, false));
                     motInf.maxtick = (float)msetRawblk.cntFrames;
                     motInf.mintick = 0f;
                 }
                 else
                 {
                     Msetblk msetblk = new Msetblk(new MemoryStream(current.bin, false));
                     motInf.maxtick = ((msetblk.to.al11.Length != 0) ? msetblk.to.al11[msetblk.to.al11.Length - 1] : 0f);
                     motInf.mintick = ((msetblk.to.al11.Length != 0) ? msetblk.to.al11[0] : 0f);
                 }
                 listViewItem.Tag = motInf;
             }
             this.listView1.Sorting = SortOrder.Ascending;
             this.listView1.Sort();
         }
         mesh.binMset = File.ReadAllBytes(fmset);
     }
     mesh.ol = null;
 }