コード例 #1
0
    public void ClientCheckTextureIsComplete(short TextureId)
    {
        TextureMetadata texData = ClientTextureBuffers[TextureId];

        if (texData.Width <= 0 || texData.NumChunksExpected <= 0)
        {
            return;
        }
        if (texData.NumChunksReceived < texData.NumChunksExpected)
        {
            return;
        }

        // If we do have all chunks, deserialize the texture and clear the cached dict pair
        if (TextureId == 0)
        {
            Debug.Log("Client received all chunks for main puzzle texture; storing values into static PuzzleTexture");
            StaticJigsawData.PuzzleTexture = new Texture2D(texData.Width, texData.Height, texData.Format, texData.MipCount > 1);
            StaticJigsawData.PuzzleTexture.LoadRawTextureData(texData.RawBytes);
            StaticJigsawData.PuzzleTexture.Apply();
            ClientTextureBuffers.Remove(TextureId);

            HandlePuzzleTextureLoaded();
        }
        else
        {
            Debug.LogError("Client received all chunks for texture with unrecognized ID " + TextureId.ToString());
        }
    }
コード例 #2
0
        private static Dictionary <string, TextureMetadata> GetTextureData(Options option)
        {
            Dictionary <string, TextureMetadata> data = new Dictionary <string, TextureMetadata>();
            List <string> files = GetDataFiles(option.input_dir, option.extension);

            try {
                string        contentsMaps = File.ReadAllText(option.input_meta);
                List <string> mapData      = new List <string>(contentsMaps.Split('\n'));
                mapData.ForEach(d => {
                    string[] meta = d.Split(' ');
                    if (files.Contains(meta[0]))
                    {
                        string id = meta[0].Remove(0, option.input_dir.Length).Split('.')[0];
                        if (id.StartsWith("/"))
                        {
                            id = id.Remove(0, 1);
                        }
                        TextureMetadata tex = new TextureMetadata();
                        tex.populate(meta, id);
                        data.Add(meta[0], tex);
                    }
                });

                return(data);
            } catch (System.Exception except) {
                Console.WriteLine("Texheader creation error!\n" + except.ToString());
            }

            return(null);
        }
コード例 #3
0
ファイル: TexFile.cs プロジェクト: no1mann/Open-GHTCP
        public void method_1(int int_0, Image image_0, IMGPixelFormat imgpixelFormat_0)
        {
            TextureMetadata @class = this.textureList[int_0];

            @class.Height = (short)image_0.Height;
            @class.Width  = (short)image_0.Width;
            @class.Data   = new DDSTexture(image_0, (int)@class.MipMapCount, imgpixelFormat_0).ToByteArray();
        }
コード例 #4
0
        public int CloneTextureElement(int index)
        {
            var original = TextureList[index];
            var newMeta  = new TextureMetadata(original.UnkFlags, original.Key, original.Width, original.Height,
                                               original.UnkShort3, original.MipMapCount, original.UnkShort4, original.StartIndex, original.Length);

            TextureList.Add(newMeta);
            return(TextureList.Count - 1);
        }
コード例 #5
0
ファイル: TexFile.cs プロジェクト: no1mann/Open-GHTCP
        public Stream26 ToStream()
        {
            Stream26 stream                = new Stream26(true);
            int      textureCount          = this.TextureCount();
            int      textureMetaDataOffset = 0;

            if (!this._unkFlag0)
            {
                stream.WriteUInt(0xFACECAA7);                 //meow
                stream.WriteShort(284);
                stream.WriteShort((short)textureCount);
                stream.WriteInt(0);
                stream.WriteInt(0);
                stream.WriteInt(-1);

                int num3 = 2;
                while ((double)textureCount / Math.Pow(2.0, (double)(num3 - 2)) > 1.0)
                {
                    num3++;
                }
                num3--;
                stream.WriteInt(num3);                 //logarithm of textureCount?..
                stream.WriteInt(28);
                stream.WriteNBytes(0xEF, (int)(Math.Pow(2.0, (double)num3) * 12.0 + 28.0));

                textureMetaDataOffset = (int)stream.Position;
                stream.WriteIntAt(8, textureMetaDataOffset);
                stream.WriteInt(textureMetaDataOffset + textureCount * 44);
                stream.Position = (long)textureMetaDataOffset;
            }
            stream.WriteNBytes(0, 40 * textureCount);
            for (int i = 0; i < textureCount; i++)
            {
                TextureMetadata tex   = this.textureList[i];
                byte[]          array = this.method_2(i);
                stream.WriteShortAt(textureMetaDataOffset + 40 * i, 2600);
                stream.WriteShort(tex.unkShort0);
                stream.WriteInt(tex.unkInt);
                stream.WriteShort(tex.Width);
                stream.WriteShort(tex.Height);
                stream.WriteShort(tex.unkShort3);
                stream.WriteShort(tex.Width);
                stream.WriteShort(tex.Height);
                stream.WriteShort(tex.unkShort3);
                stream.WriteByte2(tex.MipMapCount);
                stream.WriteShort(tex.unkShort4);
                stream.WriteNBytes(0, 5);
                stream.WriteInt((int)stream.Length);
                stream.WriteInt(array.Length);
                stream.WriteInt(0);
                stream.WriteByteArrayAt((int)stream.Length, array, false);
            }
            return(stream);
        }
コード例 #6
0
 private TextureMetadata EnsureTexture(Texture tex)
 {
     if (tex == null)
     {
         return(null);
     }
     if (_textures.TryGetValue(tex, out var meta))
     {
         return(meta);
     }
     meta = new TextureMetadata {
         Texture = tex
     };
     _textures.Add(tex, meta);
     return(meta);
 }
コード例 #7
0
        public Texture Convert(string filePath, TextureConversionSettings settings)
        {
            Model.Texture texture;
            var           textureConverstionSettings = new Model.TextureConversionSettings(
                settings.MaxHeight,
                settings.MaxWidth,
                (uint)settings.OutputFormat,
                (uint)settings.ColorSpace,
                settings.KeepMipmaps,
                (uint)settings.FileType);

            var result = ImagingDriver.ConvertTexture(filePath, textureConverstionSettings, out texture);

            if ((result < 0) || (texture.Buffer == IntPtr.Zero))
            {
                return(null);
            }

            try
            {
                var metadata = new TextureMetadata
                {
                    Height       = texture.Metadata.Height,
                    Width        = texture.Metadata.Width,
                    MipmapsCount = texture.Metadata.MipmapsCount,
                    Format       = (DxgiFormat)texture.Metadata.DxgiFormat
                };

                var output = new Texture
                {
                    Buffer   = new byte[texture.Size],
                    Metadata = metadata
                };

                Marshal.Copy(texture.Buffer, output.Buffer, 0, output.Buffer.Length);

                return(output);
            }
            finally
            {
                ImagingDriver.ReleaseTextureBuffer(texture.Buffer);
            }
        }
コード例 #8
0
    public void OnClientReceiveTexMeta(NetworkMessage Msg)
    {
        TextureMetaMsg  metaMsg = Msg.ReadMessage <TextureMetaMsg>();
        TextureMetadata texData;

        if (ClientTextureBuffers.ContainsKey(metaMsg.TextureId))
        {
            texData = ClientTextureBuffers[metaMsg.TextureId];
        }
        else
        {
            texData = new TextureMetadata();
        }
        texData.Width    = metaMsg.Width;
        texData.Height   = metaMsg.Height;
        texData.ChunkSz  = metaMsg.ChunkSz;
        texData.Format   = metaMsg.Format;
        texData.MipCount = metaMsg.MipCount;

        Debug.Log("Client received metadata for texture " + metaMsg.TextureId.ToString());
        ClientTextureBuffers[metaMsg.TextureId] = texData;
    }
コード例 #9
0
ファイル: ImagingDriver.cs プロジェクト: S17L/iGP11
 internal static extern long GetTextureMetadata(string texturePath, out TextureMetadata textureMetadata);
コード例 #10
0
ファイル: BlendMapReader.cs プロジェクト: kitfka/AlleyCat
        protected BlendMap CreateBlendMap(TextureMetadata metadata, DirectoryInfo directory)
        {
            var texture = directory.GetFile(metadata.Texture);

            return(new BlendMap(texture, metadata.Min, metadata.Max));
        }
コード例 #11
0
 public GeneratedTexturePreviewNotification(Texture texture, TextureMetadata textureMetadata)
 {
     Texture         = texture;
     TextureMetadata = textureMetadata;
 }