private static string MxDBuildSaveStringShared(
            ref CompressionData cData,
            bool includeAltEnh,
            bool @break)
        {
            var    numArray = Array.Empty <byte>();
            string str;

            if (!MxDBuildSaveBuffer(ref numArray, includeAltEnh))
            {
                str = string.Empty;
            }
            else
            {
                var asciiEncoding = new ASCIIEncoding();
                cData.SzUncompressed = numArray.Length;
                var iBytes = Zlib.CompressChunk(ref numArray);
                cData.SzCompressed = iBytes.Length;
                var bytes = Zlib.HexEncodeBytes(iBytes);
                cData.SzEncoded = bytes.Length;
                str             = @break ? Zlib.BreakString(asciiEncoding.GetString(bytes), 67, true) : asciiEncoding.GetString(bytes);
            }

            return(str);
        }
Beispiel #2
0
        private Character CreateCharacterData(CompressionData compressionData)
        {
            var compressionDataStream = new CompressionDataStream(compressionData);
            var characterReader       = new CharacterReader(
                new BinaryReader(compressionDataStream));

            return(characterReader.Read());
        }
Beispiel #3
0
    public static string MxDBuildSaveHyperlink(bool useBbCode, bool justLink = false)
    {
        var    cData = new CompressionData();
        string str1  = MxDBuildSaveStringShared(ref cData, false, false);

        if (string.IsNullOrEmpty(str1))
        {
            return(string.Empty);
        }

        // this one seems to still work as intended, we may not need to change it
        string str3 = "http://www.cohplanner.com/mids/download.php" + ("?uc=" + cData.SzUncompressed + "&c=" + cData.SzCompressed + "&a=" + cData.SzEncoded + "&f=HEX&dc=") + str1;

        return(str3.Length <= DataLinkMaxLength ? (!justLink ? (!useBbCode ? "<a href=\"" + str3 + "\">Click this DataLink to open the build!</a>" : "[url=" + str3 + "]Click this DataLink to open the build![/url]") : str3) : "");
    }
Beispiel #4
0
        static void MakeCompressedCopy()
        {
            //Get Data
            string    path = AssetDatabase.GetAssetPath(Selection.activeObject);
            Texture2D tex  = AssetDatabase.LoadAssetAtPath <Texture2D>(path);


            //Show modal window
            bool            deleteOriginal = EditorPrefs.GetBool("Kcso_DeleteOriginal", false);
            CompressionData data           = new CompressionData(new Vector2Int(tex.width, tex.height), deleteOriginal, GetReferenceMats(tex));

            TextureCompressionWindow.Show(data, (CompressionData d) =>
            {
                EditorPrefs.SetBool("Kcso_DeleteOriginal", d.deleteOriginal);
                CreateCompressedTex(path, tex, d);
            });
        }
        public static string MxDBuildSaveString(bool inncludeAltEnh, bool forumMode)
        {
            var cData = new CompressionData();
            var str1  = MxDBuildSaveStringShared(ref cData, inncludeAltEnh, true);

            if (string.IsNullOrEmpty(str1))
            {
                return(string.Empty);
            }

            var    str3 = "\n";
            string str4;

            if (forumMode)
            {
                var flag1 = MidsContext.Config.Export.FormatCode[MidsContext.Config.ExportTarget].Notes
                            .IndexOf("HTML", StringComparison.Ordinal) > -1;
                var flag2 = MidsContext.Config.Export.FormatCode[MidsContext.Config.ExportTarget].Notes
                            .IndexOf("no <br /> tags", StringComparison.OrdinalIgnoreCase) > -1;
                if (flag1 && !flag2)
                {
                    str1 = str1.Replace("\n", "<br />");
                    str3 = "<br />";
                }

                // TODO: review this string for update to Mids Reborn
                // needs checking the reader to see if changing this will break anything
                var str5 = "| Copy & Paste this data into Mids Reborn : Hero Designer to view the build |" + str3;
                if (flag1)
                {
                    str5 = str5.Replace(" ", "&nbsp;");
                }
                str4 = str5 + "|-------------------------------------------------------------------|" + str3;
            }
            else
            {
                str4 = "|              Do not modify anything below this line!              |" + str3 +
                       "|-------------------------------------------------------------------|" + str3;
            }

            var str6 = ";HEX";

            return(str4 + "|" + MagicCompressed + ";" + cData.SzUncompressed + ";" + cData.SzCompressed + ";" +
                   cData.SzEncoded + str6 + ";|" + str3 + str1 + str3 +
                   "|-------------------------------------------------------------------|");
        }
Beispiel #6
0
    //------------------------------

    public static void Compress(CompressionData config)
    {
        //-i .../input.mp4 -c:v libx264 -crf 23 .../output.mp4 -y
        string[] command =
        {
            INPUT_INSTRUCTION,
            config.inputPath,
            CODEC_VIDEO_INSTRUCTION,
            LIB_X264_INSTRUCTION,
            CONSTANT_RATE_FACTOR_INSTRUCTION,
            config.crf.ToString(),
            config.outputPath,
            REWRITE_INSTRUCTION
        };

        DebugCommand(command);

        Wrapper.Execute(command);
    }
        public Link Read()
        {
            var uri   = new Uri(_reader.ReadToEnd());
            var query = QueryHelpers.ParseQuery(uri.Query);

            var compressionData = new CompressionData
            {
                CompressedByteCount   = int.Parse(query["c"]),
                EncodedByteCount      = int.Parse(query["a"]),
                UncompressedByteCount = int.Parse(query["uc"]),
                EncodedString         = query["dc"],
                Encoding = query["f"],
            };

            return(new Link
            {
                CompressionData = compressionData,
            });
        }
Beispiel #8
0
        public void CanDecompress()
        {
            // uc=1452&c=632&a=1264&f=HEX&dc=78DA6594D96E125118C7CF308394AD8516186A170A5DA02003442F5C63A2556F4AC552F512C7F6B4924C80303469AF4CEFEBD6363E8297BE8A8FE013B8DCBB8C1F7C7FB0E94C98FCE67CFB9243F5602DF4F9D1D15DA18CDFB74CDB6ED4B7BB66A723BBBE0DB3B7DF352DD17F7CF4CE0E358DAAB4A434B69A3DB3D5782ECD4EBB65A746CA35B92B5BB634EAFBFDD3A6DCB5E481B445A8D66E5BC63A59375B7B81C1A1DE9172273CF87CD8DC7BD52345904F56FF187DD0696E1BF7DA3B878DAA69F764F7304955ACD07BACF76B52E875BCE29747888A263CBFC13F4CED2FE8302B5FD401AB3EB80A4713116520BB1405A79863316631CE7CABC3857C14E41B43BE00F205902F847C09CAA3B28F5011E71DC5F1B2CCEB7D21D8DE648EBF04B799911D6625C775BFD7790BE4EBF11560034E828FC9C0CFBD79FCC83939CFBA1858239B20E204E1170313A04E36618E23C22AF7B341B20996A913985B02734B626E49CCED846A8DA2CFE80AFB5FCE8239E6EC2A9867160BCC4DCA33851EA68A5CCFFC0566C8268E1EE2A8791E5C009F908D8E383A7A5F1812B339A53AA751E734F69AC65ED3D86B1A7B5DC45EAF08DE479DE2CF20FE0CE22E0E89F80AD9CC717C65EE35CBF247CC33CA9D42EED4758EBD7483B97213BC05DEC68CEE30B7286E06BBC868F491D544D60BFAC031A64AB6CBB05D5E62D9EA32980573CC3AB596C35C739863FE023F858528A0EFC23166F206FC803B47390DE434505F09F595505F09F53D25DB32EE491939663581C7A11F3D22A58D6EAD937769CB2E49C525B9EA925C7349D65D929A36BAF9421948FC91D1BD76BE0548AB9CD7FE382F79C61D7E7759FDFC2F519533ECFE143CC1FFD547E6577D5493F30F4850DA70
            var compressionData = new CompressionData
            {
                // uc
                UncompressedByteCount = 1452,
                // c
                CompressedByteCount = 632,
                // a
                EncodedByteCount = 1264,
                // dc
                EncodedString = "78DA6594D96E125118C7CF308394AD8516186A170A5DA02003442F5C63A2556F4AC552F512C7F6B4924C80303469AF4CEFEBD6363E8297BE8A8FE013B8DCBB8C1F7C7FB0E94C98FCE67CFB9243F5602DF4F9D1D15DA18CDFB74CDB6ED4B7BB66A723BBBE0DB3B7DF352DD17F7CF4CE0E358DAAB4A434B69A3DB3D5782ECD4EBB65A746CA35B92B5BB634EAFBFDD3A6DCB5E481B445A8D66E5BC63A59375B7B81C1A1DE9172273CF87CD8DC7BD52345904F56FF187DD0696E1BF7DA3B878DAA69F764F7304955ACD07BACF76B52E875BCE29747888A263CBFC13F4CED2FE8302B5FD401AB3EB80A4713116520BB1405A79863316631CE7CABC3857C14E41B43BE00F205902F847C09CAA3B28F5011E71DC5F1B2CCEB7D21D8DE648EBF04B799911D6625C775BFD7790BE4EBF11560034E828FC9C0CFBD79FCC83939CFBA1858239B20E204E1170313A04E36618E23C22AF7B341B20996A913985B02734B626E49CCED846A8DA2CFE80AFB5FCE8239E6EC2A9867160BCC4DCA33851EA68A5CCFFC0566C8268E1EE2A8791E5C009F908D8E383A7A5F1812B339A53AA751E734F69AC65ED3D86B1A7B5DC45EAF08DE479DE2CF20FE0CE22E0E89F80AD9CC717C65EE35CBF247CC33CA9D42EED4758EBD7483B97213BC05DEC68CEE30B7286E06BBC868F491D544D60BFAC031A64AB6CBB05D5E62D9EA32980573CC3AB596C35C739863FE023F858528A0EFC23166F206FC803B47390DE434505F09F595505F09F53D25DB32EE491939663581C7A11F3D22A58D6EAD937769CB2E49C525B9EA925C7349D65D929A36BAF9421948FC91D1BD76BE0548AB9CD7FE382F79C61D7E7759FDFC2F519533ECFE143CC1FFD547E6577D5493F30F4850DA70",
                // f
                Encoding = "HEX",
            };

            using (var compressionDataStream = new CompressionDataStream(compressionData))
            {
                Assert.True(ContainsMagicNumber(compressionDataStream));
            }
        }
Beispiel #9
0
        private static void CreateCompressedTex(string path, Texture2D tex, CompressionData data)
        {
            //Create and blit new texture
            Texture2D     newTex  = new Texture2D(tex.width, tex.height);
            RenderTexture rendTex = RenderTexture.GetTemporary(tex.width, tex.height);

            Graphics.Blit(tex, rendTex);
            RenderTexture.active = rendTex;
            newTex.ReadPixels(new Rect(0, 0, rendTex.width, rendTex.height), 0, 0);
            newTex.Apply();
            RenderTexture.active = null;
            RenderTexture.ReleaseTemporary(rendTex);


            //Set asset importsettings
            newTex.Compress(true);


            //Write new asset
            path = path.Remove(path.Length - 3) + "asset";
            AssetDatabase.CreateAsset(newTex, path);
            AssetDatabase.ImportAsset(path);


            //Remplace in material
            if (data.materialReplace)
            {
                for (int i = 0; i < data.mats.Length; i++)
                {
                    data.mats[i].Key.SetTexture(data.mats[i].Value, newTex);
                }
            }

            //Delete original
            if (data.deleteOriginal)
            {
                AssetDatabase.DeleteAsset(AssetDatabase.GetAssetPath(tex));
            }
        }
Beispiel #10
0
        private bool TryBindMidsCompressionData(out CompressionData compressionData)
        {
            compressionData = null;
            if (!NavigationManager.TryGetQueryString <int>("uc", out var uncompressedByteCount))
            {
                return(false);
            }

            if (!NavigationManager.TryGetQueryString <int>("c", out var compressedByteCount))
            {
                return(false);
            }

            if (!NavigationManager.TryGetQueryString <int>("a", out var encodedByteCount))
            {
                return(false);
            }

            if (!NavigationManager.TryGetQueryString <string>("f", out var format))
            {
                return(false);
            }

            if (!NavigationManager.TryGetQueryString <string>("dc", out var encodedData))
            {
                return(false);
            }

            compressionData = new CompressionData
            {
                UncompressedByteCount = uncompressedByteCount,
                CompressedByteCount   = compressedByteCount,
                EncodedByteCount      = encodedByteCount,
                EncodedString         = encodedData,
                Encoding = format,
            };
            return(true);
        }
Beispiel #11
0
 public Save()
 {
     CompressionData = new CompressionData();
 }