Merge branch 'master' of /var/git/opensim/

viewer-2-initial-appearance
opensim mirror account 2010-10-14 20:40:09 -07:00
commit 28a45a7914
1 changed files with 71 additions and 71 deletions

View File

@ -30,10 +30,10 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Region.Physics.Manager; using OpenSim.Region.Physics.Manager;
using OpenMetaverse; using OpenMetaverse;
using OpenMetaverse.StructuredData; using OpenMetaverse.StructuredData;
using System.Drawing; using System.Drawing;
using System.Drawing.Imaging; using System.Drawing.Imaging;
using System.IO.Compression; using System.IO.Compression;
using PrimMesher; using PrimMesher;
using log4net; using log4net;
@ -266,75 +266,75 @@ namespace OpenSim.Region.Physics.Meshing
if (primShape.SculptEntry) if (primShape.SculptEntry)
{ {
if (((OpenMetaverse.SculptType)primShape.SculptType) == SculptType.Mesh) if (((OpenMetaverse.SculptType)primShape.SculptType) == SculptType.Mesh)
{ {
// add code for mesh physics proxy generation here // add code for mesh physics proxy generation here
m_log.Debug("[MESH]: mesh proxy generation not implemented yet "); m_log.Debug("[MESH]: mesh proxy generation not implemented yet ");
OSD meshOsd; OSD meshOsd;
if (primShape.SculptData.Length > 0) if (primShape.SculptData.Length > 0)
{ {
m_log.Debug("[MESH]: asset data length: " + primShape.SculptData.Length.ToString()); m_log.Debug("[MESH]: asset data length: " + primShape.SculptData.Length.ToString());
byte[] header = Util.StringToBytes256("<? LLSD/Binary ?>"); byte[] header = Util.StringToBytes256("<? LLSD/Binary ?>");
////dump to debugging file ////dump to debugging file
//string filename = System.IO.Path.Combine(decodedSculptMapPath, "mesh_" + primShape.SculptTexture.ToString()); //string filename = System.IO.Path.Combine(decodedSculptMapPath, "mesh_" + primShape.SculptTexture.ToString());
//BinaryWriter writer = new BinaryWriter(File.Open(filename, FileMode.Create)); //BinaryWriter writer = new BinaryWriter(File.Open(filename, FileMode.Create));
//writer.Write(primShape.SculptData); //writer.Write(primShape.SculptData);
//writer.Close(); //writer.Close();
} }
else else
{ {
m_log.Error("[MESH]: asset data is zero length"); m_log.Error("[MESH]: asset data is zero length");
return null; return null;
} }
try try
{ {
meshOsd = OSDParser.DeserializeLLSDBinary(primShape.SculptData, true); meshOsd = OSDParser.DeserializeLLSDBinary(primShape.SculptData, true);
} }
catch (Exception e) catch (Exception e)
{ {
m_log.Error("[MESH]: exception decoding mesh asset: " + e.ToString()); m_log.Error("[MESH]: exception decoding mesh asset: " + e.ToString());
return null; return null;
} }
if (meshOsd is OSDMap) if (meshOsd is OSDMap)
{ {
OSDMap map = (OSDMap)meshOsd; OSDMap map = (OSDMap)meshOsd;
//foreach (string name in map.Keys) //foreach (string name in map.Keys)
// m_log.Debug("[MESH]: key:" + name + " value:" + map[name].AsString()); // m_log.Debug("[MESH]: key:" + name + " value:" + map[name].AsString());
OSDMap physicsParms = (OSDMap)map["physics_shape"]; OSDMap physicsParms = (OSDMap)map["physics_shape"];
int physOffset = physicsParms["offset"].AsInteger(); int physOffset = physicsParms["offset"].AsInteger();
int physSize = physicsParms["size"].AsInteger(); int physSize = physicsParms["size"].AsInteger();
if (physOffset < 0 || physSize == 0) if (physOffset < 0 || physSize == 0)
return null; // no mesh data in asset return null; // no mesh data in asset
m_log.Debug("[MESH]: physOffset:" + physOffset.ToString() + " physSize:" + physSize.ToString()); m_log.Debug("[MESH]: physOffset:" + physOffset.ToString() + " physSize:" + physSize.ToString());
//MemoryStream ms = new MemoryStream(primShape.SculptData, physOffset, physSize); //MemoryStream ms = new MemoryStream(primShape.SculptData, physOffset, physSize);
//GZipStream gzStream = new GZipStream(ms, CompressionMode.Decompress); //GZipStream gzStream = new GZipStream(ms, CompressionMode.Decompress);
//int maxSize = physSize * 5; // arbitrary guess //int maxSize = physSize * 5; // arbitrary guess
//byte[] readBuffer = new byte[maxSize]; //byte[] readBuffer = new byte[maxSize];
//int bytesRead = gzStream.Read(readBuffer, 0, maxSize); //int bytesRead = gzStream.Read(readBuffer, 0, maxSize);
//OSD physMeshOsd = OSDParser.DeserializeLLSDBinary(readBuffer); //OSD physMeshOsd = OSDParser.DeserializeLLSDBinary(readBuffer);
} }
//just bail out for now until mesh code is finished //just bail out for now until mesh code is finished
return null; return null;
} }
else else
{ {