diff options
author | UbitUmarov | 2012-02-11 03:25:17 +0000 |
---|---|---|
committer | UbitUmarov | 2012-02-11 03:25:17 +0000 |
commit | f415256e0b0d4b0191d52cb84090a0f1b0044ae9 (patch) | |
tree | 79b1a9edef88ebed7c5fa2bdd693be4571d07aa7 /OpenSim/Region/Physics/Meshing/Meshmerizer.cs | |
parent | scale avatar push force with avatar density (diff) | |
download | opensim-SC_OLD-f415256e0b0d4b0191d52cb84090a0f1b0044ae9.zip opensim-SC_OLD-f415256e0b0d4b0191d52cb84090a0f1b0044ae9.tar.gz opensim-SC_OLD-f415256e0b0d4b0191d52cb84090a0f1b0044ae9.tar.bz2 opensim-SC_OLD-f415256e0b0d4b0191d52cb84090a0f1b0044ae9.tar.xz |
Use mesh to estimate real center of prims if avaiable. Let sculpt map textures with alpha channel work. On linux J2DecodeCache folder must be deleted to remove bad entries. Corrently this can't be cached on linux (mono/ cairo/? problem)
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Physics/Meshing/Meshmerizer.cs | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/OpenSim/Region/Physics/Meshing/Meshmerizer.cs b/OpenSim/Region/Physics/Meshing/Meshmerizer.cs index f15e81b..ba461f7 100644 --- a/OpenSim/Region/Physics/Meshing/Meshmerizer.cs +++ b/OpenSim/Region/Physics/Meshing/Meshmerizer.cs | |||
@@ -74,6 +74,8 @@ namespace OpenSim.Region.Physics.Meshing | |||
74 | #endif | 74 | #endif |
75 | 75 | ||
76 | private bool cacheSculptMaps = true; | 76 | private bool cacheSculptMaps = true; |
77 | private bool cacheSculptAlphaMaps = true; | ||
78 | |||
77 | private string decodedSculptMapPath = null; | 79 | private string decodedSculptMapPath = null; |
78 | private bool useMeshiesPhysicsMesh = false; | 80 | private bool useMeshiesPhysicsMesh = false; |
79 | 81 | ||
@@ -87,7 +89,16 @@ namespace OpenSim.Region.Physics.Meshing | |||
87 | IConfig mesh_config = config.Configs["Mesh"]; | 89 | IConfig mesh_config = config.Configs["Mesh"]; |
88 | 90 | ||
89 | decodedSculptMapPath = start_config.GetString("DecodedSculptMapPath","j2kDecodeCache"); | 91 | decodedSculptMapPath = start_config.GetString("DecodedSculptMapPath","j2kDecodeCache"); |
92 | |||
90 | cacheSculptMaps = start_config.GetBoolean("CacheSculptMaps", cacheSculptMaps); | 93 | cacheSculptMaps = start_config.GetBoolean("CacheSculptMaps", cacheSculptMaps); |
94 | |||
95 | if (Environment.OSVersion.Platform == PlatformID.Unix) | ||
96 | { | ||
97 | cacheSculptAlphaMaps = false; | ||
98 | } | ||
99 | else | ||
100 | cacheSculptAlphaMaps = cacheSculptMaps; | ||
101 | |||
91 | if(mesh_config != null) | 102 | if(mesh_config != null) |
92 | useMeshiesPhysicsMesh = mesh_config.GetBoolean("UseMeshiesPhysicsMesh", useMeshiesPhysicsMesh); | 103 | useMeshiesPhysicsMesh = mesh_config.GetBoolean("UseMeshiesPhysicsMesh", useMeshiesPhysicsMesh); |
93 | 104 | ||
@@ -268,15 +279,18 @@ namespace OpenSim.Region.Physics.Meshing | |||
268 | { | 279 | { |
269 | if (!GenerateCoordsAndFacesFromPrimSculptData(primName, primShape, size, lod, out coords, out faces)) | 280 | if (!GenerateCoordsAndFacesFromPrimSculptData(primName, primShape, size, lod, out coords, out faces)) |
270 | return null; | 281 | return null; |
282 | // Remove the reference to any JPEG2000 sculpt data so it can be GCed | ||
283 | // don't loose it | ||
284 | // primShape.SculptData = Utils.EmptyBytes; | ||
271 | } | 285 | } |
286 | // primShape.SculptDataLoaded = true; | ||
272 | } | 287 | } |
273 | else | 288 | else |
274 | { | 289 | { |
275 | if (!GenerateCoordsAndFacesFromPrimShapeData(primName, primShape, size, lod, out coords, out faces)) | 290 | if (!GenerateCoordsAndFacesFromPrimShapeData(primName, primShape, size, lod, out coords, out faces)) |
276 | return null; | 291 | return null; |
277 | } | 292 | } |
278 | 293 | // keep compatible | |
279 | // Remove the reference to any JPEG2000 sculpt data so it can be GCed | ||
280 | primShape.SculptData = Utils.EmptyBytes; | 294 | primShape.SculptData = Utils.EmptyBytes; |
281 | 295 | ||
282 | int numCoords = coords.Count; | 296 | int numCoords = coords.Count; |
@@ -482,7 +496,8 @@ namespace OpenSim.Region.Physics.Meshing | |||
482 | 496 | ||
483 | //idata = CSJ2K.J2kImage.FromBytes(primShape.SculptData); | 497 | //idata = CSJ2K.J2kImage.FromBytes(primShape.SculptData); |
484 | 498 | ||
485 | if (cacheSculptMaps) | 499 | if (cacheSculptMaps && (cacheSculptAlphaMaps || (((ImageFlags)(idata.Flags) & ImageFlags.HasAlpha) ==0))) |
500 | // don't cache images with alpha channel in linux since mono can't load them correctly) | ||
486 | { | 501 | { |
487 | try { idata.Save(decodedSculptFileName, ImageFormat.MemoryBmp); } | 502 | try { idata.Save(decodedSculptFileName, ImageFormat.MemoryBmp); } |
488 | catch (Exception e) { m_log.Error("[SCULPT]: unable to cache sculpt map " + decodedSculptFileName + " " + e.Message); } | 503 | catch (Exception e) { m_log.Error("[SCULPT]: unable to cache sculpt map " + decodedSculptFileName + " " + e.Message); } |