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()); } }
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); }
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(); }
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); }
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); }
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); }
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); } }
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; }
internal static extern long GetTextureMetadata(string texturePath, out TextureMetadata textureMetadata);
protected BlendMap CreateBlendMap(TextureMetadata metadata, DirectoryInfo directory) { var texture = directory.GetFile(metadata.Texture); return(new BlendMap(texture, metadata.Min, metadata.Max)); }
public GeneratedTexturePreviewNotification(Texture texture, TextureMetadata textureMetadata) { Texture = texture; TextureMetadata = textureMetadata; }