From 8082f9e68a0d415e52edf8d45dc4cf5bceb49bfc Mon Sep 17 00:00:00 2001 From: Latif Khalifa Date: Tue, 12 Apr 2011 09:51:05 +0000 Subject: [PATCH] LIBOMV-895: Added mesh decoder git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3496 52acb1d6-8a22-11de-b505-999d5b087335 --- OpenMetaverse/Assets/AssetTypes/AssetMesh.cs | 64 ++++++++++++++++++- bin/zlib.net.dll | Bin 0 -> 69632 bytes prebuild.xml | 1 + 3 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 bin/zlib.net.dll diff --git a/OpenMetaverse/Assets/AssetTypes/AssetMesh.cs b/OpenMetaverse/Assets/AssetTypes/AssetMesh.cs index eac165db..ab9c0285 100644 --- a/OpenMetaverse/Assets/AssetTypes/AssetMesh.cs +++ b/OpenMetaverse/Assets/AssetTypes/AssetMesh.cs @@ -25,7 +25,11 @@ */ using System; +using System.IO; +using System.IO.Compression; using OpenMetaverse; +using OpenMetaverse.StructuredData; +using zlib; namespace OpenMetaverse.Assets { @@ -37,6 +41,11 @@ namespace OpenMetaverse.Assets /// Override the base classes AssetType public override AssetType AssetType { get { return AssetType.Mesh; } } + /// + /// Decoded mesh data + /// + public OSDMap MeshData; + /// Initializes a new instance of an AssetMesh object public AssetMesh() { } @@ -49,14 +58,63 @@ namespace OpenMetaverse.Assets } /// - /// TODO: Encodes a scripts contents into a LSO Bytecode file + /// TODO: Encodes Collada file into LLMesh format /// public override void Encode() { } /// - /// TODO: Decode LSO Bytecode into a string + /// Decodes mesh asset /// /// true - public override bool Decode() { return true; } + public override bool Decode() + { + try + { + MeshData = new OSDMap(); + + using (MemoryStream data = new MemoryStream(AssetData)) + { + OSDMap header = (OSDMap)OSDParser.DeserializeLLSDBinary(data); + long start = data.Position; + + foreach(string partName in header.Keys) + { + if (header[partName].Type != OSDType.Map) + continue; + OSDMap partInfo = (OSDMap)header[partName]; + if (partInfo["offset"] < 0 || partInfo["size"] == 0) + continue; + + byte[] part = new byte[partInfo["size"]]; + Buffer.BlockCopy(AssetData, partInfo["offset"] + (int)start, part, 0, part.Length); + + using (MemoryStream input = new MemoryStream(part)) + { + using (MemoryStream output = new MemoryStream()) + { + using (ZOutputStream zout = new ZOutputStream(output)) + { + byte[] buffer = new byte[2048]; + int len; + while ((len = input.Read(buffer, 0, buffer.Length)) > 0) + { + zout.Write(buffer, 0, len); + } + zout.Flush(); + output.Seek(0, SeekOrigin.Begin); + MeshData[partName] = OSDParser.DeserializeLLSDBinary(output); + } + } + } + } + } + return true; + } + catch (Exception ex) + { + Logger.Log("Failed to decode mesh asset", Helpers.LogLevel.Error, ex); + return false; + } + } } } diff --git a/bin/zlib.net.dll b/bin/zlib.net.dll new file mode 100644 index 0000000000000000000000000000000000000000..c156f8e7c5880363cf0afa50123c0d3dbdbf6021 GIT binary patch literal 69632 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 RChPI(G1~a>cFly`)sifBq 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 literal 0 HcmV?d00001 diff --git a/prebuild.xml b/prebuild.xml index 2555ef7d..2cb70da8 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -122,6 +122,7 @@ +