private void ApplyEdit()
        {
            STProgressBar progressBar = new STProgressBar();

            progressBar.Task          = "Applying Edits";
            progressBar.Value         = 0;
            progressBar.StartPosition = FormStartPosition.CenterScreen;
            progressBar.Show();
            progressBar.Refresh();


            Image Image = pictureBoxCustom1.Image;

            if (Image != null)
            {
                ActiveTexture.Width  = (uint)Image.Width;
                ActiveTexture.Height = (uint)Image.Height;

                ActiveTexture.SetImageData(new Bitmap(Image), CurArrayDisplayLevel);

                CurMipDisplayLevel = 0;
                HasBeenEdited      = false;
            }

            ActiveTexture.EditedImages[CurArrayDisplayLevel].bitmap.Dispose();
            ActiveTexture.EditedImages[CurArrayDisplayLevel] = null;

            progressBar.Value = 100;
        }
Example #2
0
        private void ApplyEdit(Image Image)
        {
            STProgressBar progressBar = new STProgressBar();

            progressBar.Task          = "Applying Edits";
            progressBar.Value         = 0;
            progressBar.IsConstant    = true;
            progressBar.StartPosition = FormStartPosition.CenterScreen;
            progressBar.Show();
            progressBar.Refresh();

            ActiveTexture.Width  = (uint)Image.Width;
            ActiveTexture.Height = (uint)Image.Height;

            ActiveTexture.SetImageData(new Bitmap(Image), CurArrayDisplayLevel);

            CurMipDisplayLevel = 0;
            HasBeenEdited      = false;

            if (ActiveTexture.EditedImages != null && ActiveTexture.EditedImages[CurArrayDisplayLevel] != null)
            {
                if (ActiveTexture.EditedImages[CurArrayDisplayLevel].bitmap != null)
                {
                    ActiveTexture.EditedImages[CurArrayDisplayLevel].bitmap.Dispose();
                }
                ActiveTexture.EditedImages[CurArrayDisplayLevel] = null;
            }

            progressBar.Value = 100;

            UpdateTextureReplace(new Bitmap(Image));
        }
 private void UpdateProgressbar(STProgressBar progressBar, int length, int maxLength)
 {
     if (progressBar.InvokeRequired)
     {
         progressBar.Invoke((MethodInvoker) delegate {
             progressBar.Task  = $"Searching characters {length} of max {maxLength}";
             progressBar.Value = ((length * 100) / maxLength);
             progressBar.Refresh();
         });
     }
 }
Example #4
0
            public void Write(FileWriter writer, List <FileEntry> Files)
            {
                STProgressBar progressBar = new STProgressBar();

                progressBar.Task          = "Writing File Tree...";
                progressBar.Value         = 0;
                progressBar.StartPosition = FormStartPosition.CenterScreen;
                progressBar.Show();
                progressBar.Refresh();

                long pos = writer.Position;

                //reserve space
                for (int i = 0; i < Files.Count; i++)
                {
                    writer.Write(uint.MaxValue);
                    writer.Write(uint.MaxValue);
                    writer.Write(uint.MaxValue);
                }

                for (int i = 0; i < Files.Count; i++)
                {
                    writer.WriteUint32Offset(pos + (i * 12));
                    writer.Write(Files[i].FileName);
                }

                for (int i = 0; i < Files.Count; i++)
                {
                    progressBar.Value = (i * 100) / Files.Count;
                    progressBar.Task  = $"Packing {Files[i].FileName}";
                    progressBar.Refresh();

                    writer.WriteUint32Offset(pos + (i * 12) + 4);

                    //More simple to get the size this way than getting file data over and over
                    //Also we don't need to store the bytes in memory
                    //    long _fileStart = writer.Position;
                    writer.Write(Files[i].FileData);
                    //   long _fileEnd = writer.Position;

                    /*   using (writer.TemporarySeek(pos + (i * 12) + 8, System.IO.SeekOrigin.Begin))
                     * {
                     *     writer.Write((uint)(_fileEnd - _fileStart));
                     * }*/
                }

                progressBar.Close();
                progressBar.Dispose();
            }
Example #5
0
        private void ExportAll(object sender, EventArgs args)
        {
            FolderSelectDialog fsd = new FolderSelectDialog();

            if (fsd.ShowDialog() == DialogResult.OK)
            {
                progressBar      = new STProgressBar();
                progressBar.Task = "Extracing Files...";
                progressBar.Refresh();
                progressBar.Value         = 0;
                progressBar.StartPosition = FormStartPosition.CenterScreen;
                progressBar.Show();

                ExportAll(fsd.SelectedPath, progressBar);
            }
        }
        private void stButton1_Click(object sender, EventArgs e)
        {
            STProgressBar progressBar = new STProgressBar();

            progressBar.FormClosed += OnProgressBarExist;
            progressBar.Show();
            progressBar.Task = $"Searching characters";

            string hashType = hashTypeCB.GetSelectedText();

            Thread Thread = new Thread((ThreadStart)(() =>
            {
                BruteForceHashes(progressBar, hashType);
            }));

            Thread.Start();
        }
Example #7
0
        private void ExportAll(string Folder, STProgressBar progressBar)
        {
            int Curfile = 0;

            foreach (FileEntry asst in Nodes)
            {
                int value = (Curfile * 100) / beaFile.FileList.Count;
                progressBar.Value = value;
                progressBar.Refresh();

                try
                {
                    if (!String.IsNullOrWhiteSpace(Path.GetDirectoryName($"{Folder}/{beaFile.Name}/{asst.FullName}")))
                    {
                        if (!File.Exists(asst.FullName))
                        {
                            if (!Directory.Exists($"{Folder}/{beaFile.Name}/{asst.FullName}"))
                            {
                                Directory.CreateDirectory(Path.GetDirectoryName($"{Folder}/{beaFile.Name}/{asst.FullName}"));
                            }
                        }
                    }
                    File.WriteAllBytes($"{Folder}/{beaFile.Name}/{asst.FullName}", GetASSTData(asst));
                }
                catch
                {
                }

                Curfile++;
                if (value == 99)
                {
                    value = 100;
                }
                progressBar.Value = value;
                progressBar.Refresh();
            }
        }
        private void BruteForceHashes(STProgressBar progressBar, string hashType)
        {
            if (bruteForceHashTB.Text.Length == 0)
            {
                return;
            }

            var characterSet = SetupCharacters();

            CancelOperation = false;

            List <ulong> hashes = new List <ulong>();

            foreach (var line in bruteForceHashTB.Lines)
            {
                ulong hash = 0;
                ulong.TryParse(line, out hash);
                if (hash == 0)
                {
                    continue;
                }

                hashes.Add(hash);
            }

            if (hashes.Count == 0)
            {
                return;
            }



            int maxLength = (int)maxLengthUD.Value;

            char lastChar  = 'z';
            var  firstChar = characterSet.FirstOrDefault();

            int  charIndex = 0;
            bool useSpace  = true;

            for (int length = 1; length <= maxLength; ++length)
            {
                UpdateProgressbar(progressBar, length, maxLength);

                StringBuilder Sb = new StringBuilder(new String(' ', length));
                while (true && CancelOperation == false && hashes.Count > 0)
                {
                    String value = Sb.ToString();

                    ulong calculatedHash = CalculateHash(hashType, $"{characterStartTB.Text}{value}");
                    if (hashes.Contains(calculatedHash))
                    {
                        UpdateTextbox($"{characterStartTB.Text}{value}");
                        hashes.Remove(calculatedHash);

                        if (hashes.Count == 0)
                        {
                            if (progressBar.InvokeRequired)
                            {
                                progressBar.Invoke((MethodInvoker) delegate {
                                    progressBar.Close();
                                });
                            }
                            return;
                        }
                    }

                    foreach (var line in characterStartTB.Lines)
                    {
                        ulong calculatedHash2 = CalculateHash(hashType, $"{line}{value}");
                        if (hashes.Contains(calculatedHash2))
                        {
                            UpdateTextbox($"{line}{value}");
                            hashes.Remove(calculatedHash2);

                            if (hashes.Count == 0)
                            {
                                if (progressBar.InvokeRequired)
                                {
                                    progressBar.Invoke((MethodInvoker) delegate {
                                        progressBar.Close();
                                    });
                                }
                                return;
                            }
                        }
                    }

                    if (value.All(item => item == lastChar))
                    {
                        break;
                    }

                    // Add one: aaa -> aab -> ... aaz -> aba -> ... -> zzz
                    for (int i = length - 1; i >= 0; --i)
                    {
                        if (Sb[i] == ' ')
                        {
                            Sb[i] = '/';
                            break;
                        }
                        else if (Sb[i] == '/')
                        {
                            if (UseNumbered)
                            {
                                Sb[i] = '0';
                            }
                            else
                            {
                                if (UseUppercase)
                                {
                                    Sb[i] = 'A';
                                }
                                else
                                {
                                    Sb[i] = 'a';
                                }
                            }
                            break;
                        }
                        else if (Sb[i] == '0')
                        {
                            Sb[i] = '1'; break;
                        }
                        else if (Sb[i] == '1')
                        {
                            Sb[i] = '2'; break;
                        }
                        else if (Sb[i] == '2')
                        {
                            Sb[i] = '3'; break;
                        }
                        else if (Sb[i] == '3')
                        {
                            Sb[i] = '4'; break;
                        }
                        else if (Sb[i] == '4')
                        {
                            Sb[i] = '5'; break;
                        }
                        else if (Sb[i] == '5')
                        {
                            Sb[i] = '6'; break;
                        }
                        else if (Sb[i] == '6')
                        {
                            Sb[i] = '7'; break;
                        }
                        else if (Sb[i] == '7')
                        {
                            Sb[i] = '8'; break;
                        }
                        else if (Sb[i] == '8')
                        {
                            Sb[i] = '9'; break;
                        }
                        else if (Sb[i] == '9')
                        {
                            if (UseUppercase)
                            {
                                Sb[i] = 'A';
                            }
                            else
                            {
                                Sb[i] = 'a';
                            }
                            break;
                        }
                        else if (Sb[i] == 'Z')
                        {
                            Sb[i] = 'a';
                            break;
                        }
                        else if (Sb[i] != lastChar)
                        {
                            Sb[i] = (Char)(Sb[i] + 1);
                            break;
                        }
                        else
                        {
                            Sb[i] = ' ';
                        }
                    }
                }
            }

            progressBar.Close();
        }
Example #9
0
        public void UpdateVertexData()
        {
            if (!Runtime.OpenTKInitialized)
            {
                return;
            }

            STProgressBar progressBar = new STProgressBar();

            progressBar.Task          = "Updating Vertex Data...";
            progressBar.Value         = 0;
            progressBar.StartPosition = FormStartPosition.CenterScreen;
            progressBar.Show();
            progressBar.Refresh();

            Loaded = false;

            DisplayVertex[] Vertices;
            int[]           Faces;

            int poffset             = 0;
            int voffset             = 0;
            List <DisplayVertex> Vs = new List <DisplayVertex>();
            List <int>           Ds = new List <int>();

            int TotalShapeCount = models.Sum(b => b.shapes.Count);

            int curShape = 0;
            int value    = 0;

            foreach (FMDL mdl in models)
            {
                foreach (FSHP m in mdl.shapes)
                {
                    progressBar.Task  = "Updating Shape... " + m.Text;
                    value             = ((curShape * 100) / TotalShapeCount);
                    progressBar.Value = value;
                    progressBar.Refresh();

                    m.Offset = poffset * 4;
                    List <DisplayVertex> pv = m.CreateDisplayVertices();
                    Vs.AddRange(pv);

                    for (int i = 0; i < m.lodMeshes[m.DisplayLODIndex].displayFaceSize; i++)
                    {
                        Ds.Add(m.display[i] + voffset);
                    }
                    poffset += m.lodMeshes[m.DisplayLODIndex].displayFaceSize;
                    voffset += pv.Count;

                    curShape++;
                }
            }

            progressBar.Value = 100;
            progressBar.Close();

            // Binds
            Vertices = Vs.ToArray();
            Faces    = Ds.ToArray();

            // Bind only once!
            GL.BindBuffer(BufferTarget.ArrayBuffer, vbo_position);
            GL.BufferData <DisplayVertex>(BufferTarget.ArrayBuffer, (IntPtr)(Vertices.Length * DisplayVertex.Size), Vertices, BufferUsageHint.StaticDraw);

            GL.BindBuffer(BufferTarget.ElementArrayBuffer, ibo_elements);
            GL.BufferData <int>(BufferTarget.ElementArrayBuffer, (IntPtr)(Faces.Length * sizeof(int)), Faces, BufferUsageHint.StaticDraw);

            LibraryGUI.Instance.UpdateViewport();

            Loaded = true;
        }