Merge branch 'master' of /var/git/opensim/
commit
28a45a7914
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue