refactor: push the part of SceneObjectGroup.CheckSculptAndLoad() that actually deals with the part into a SceneObjectPart.CheckSculptAndLoad() method
parent
2f3d0e209f
commit
0badf3718d
|
@ -3289,6 +3289,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return retmass;
|
return retmass;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// If the object is a sculpt/mesh, retrieve the mesh data for each part and reinsert it into each shape so that
|
||||||
|
/// the physics engine can use it.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// When the physics engine has finished with it, the sculpt data is discarded to save memory.
|
||||||
|
/// </remarks>
|
||||||
public void CheckSculptAndLoad()
|
public void CheckSculptAndLoad()
|
||||||
{
|
{
|
||||||
if (IsDeleted)
|
if (IsDeleted)
|
||||||
|
@ -3302,24 +3309,15 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
SceneObjectPart[] parts = m_parts.GetArray();
|
SceneObjectPart[] parts = m_parts.GetArray();
|
||||||
|
|
||||||
for (int i = 0; i < parts.Length; i++)
|
for (int i = 0; i < parts.Length; i++)
|
||||||
{
|
parts[i].CheckSculptAndLoad();
|
||||||
SceneObjectPart part = parts[i];
|
|
||||||
if (part.Shape.SculptEntry && part.Shape.SculptTexture != UUID.Zero)
|
|
||||||
{
|
|
||||||
// check if a previously decoded sculpt map has been cached
|
|
||||||
if (File.Exists(System.IO.Path.Combine("j2kDecodeCache", "smap_" + part.Shape.SculptTexture.ToString())))
|
|
||||||
{
|
|
||||||
part.SculptTextureCallback(part.Shape.SculptTexture, null);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_scene.AssetService.Get(
|
|
||||||
part.Shape.SculptTexture.ToString(), part, AssetReceived);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Handle an asset received asynchronously from the asset service.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="asset"></param>
|
||||||
protected void AssetReceived(string id, Object sender, AssetBase asset)
|
protected void AssetReceived(string id, Object sender, AssetBase asset)
|
||||||
{
|
{
|
||||||
SceneObjectPart sop = (SceneObjectPart)sender;
|
SceneObjectPart sop = (SceneObjectPart)sender;
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.IO;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.Serialization;
|
using System.Runtime.Serialization;
|
||||||
using System.Security.Permissions;
|
using System.Security.Permissions;
|
||||||
|
@ -4563,6 +4564,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_shape.PathTaperY = shapeBlock.PathTaperY;
|
m_shape.PathTaperY = shapeBlock.PathTaperY;
|
||||||
m_shape.PathTwist = shapeBlock.PathTwist;
|
m_shape.PathTwist = shapeBlock.PathTwist;
|
||||||
m_shape.PathTwistBegin = shapeBlock.PathTwistBegin;
|
m_shape.PathTwistBegin = shapeBlock.PathTwistBegin;
|
||||||
|
|
||||||
if (PhysActor != null)
|
if (PhysActor != null)
|
||||||
{
|
{
|
||||||
PhysActor.Shape = m_shape;
|
PhysActor.Shape = m_shape;
|
||||||
|
@ -4583,6 +4585,37 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
ScheduleFullUpdate();
|
ScheduleFullUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// If the part is a sculpt/mesh, retrieve the mesh data and reinsert it into the shape so that the physics
|
||||||
|
/// engine can use it.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// When the physics engine has finished with it, the sculpt data is discarded to save memory.
|
||||||
|
/// </remarks>
|
||||||
|
public void CheckSculptAndLoad()
|
||||||
|
{
|
||||||
|
// m_log.Debug("Processing CheckSculptAndLoad for {0} {1}", Name, LocalId);
|
||||||
|
|
||||||
|
if (ParentGroup.IsDeleted)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ((ParentGroup.RootPart.GetEffectiveObjectFlags() & (uint)PrimFlags.Phantom) != 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (Shape.SculptEntry && Shape.SculptTexture != UUID.Zero)
|
||||||
|
{
|
||||||
|
// check if a previously decoded sculpt map has been cached
|
||||||
|
if (File.Exists(System.IO.Path.Combine("j2kDecodeCache", "smap_" + Shape.SculptTexture.ToString())))
|
||||||
|
{
|
||||||
|
SculptTextureCallback(Shape.SculptTexture, null);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ParentGroup.Scene.AssetService.Get(Shape.SculptTexture.ToString(), this, AssetReceived);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Update the textures on the part.
|
/// Update the textures on the part.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -4819,6 +4852,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
Inventory.ApplyNextOwnerPermissions();
|
Inventory.ApplyNextOwnerPermissions();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateLookAt()
|
public void UpdateLookAt()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|
Loading…
Reference in New Issue