* fix a bug where I was assuming all entities would be SceneObjectGroups - of course, some are ScenePresences
* would be nice to have a separate list in InnerScene in the future since a lot of methods end up screen entities for SOGs0.6.0-stable
parent
7d55dfba8a
commit
442a938a3f
|
@ -50,11 +50,11 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver
|
|||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
protected IRegionSerialiser m_serialiser;
|
||||
protected List<EntityBase> m_sceneObjects;
|
||||
protected List<SceneObjectGroup> m_sceneObjects;
|
||||
protected string m_savePath;
|
||||
|
||||
public ArchiveWriteRequestExecution(
|
||||
List<EntityBase> sceneObjects, IRegionSerialiser serialiser, string savePath)
|
||||
List<SceneObjectGroup> sceneObjects, IRegionSerialiser serialiser, string savePath)
|
||||
{
|
||||
m_sceneObjects = sceneObjects;
|
||||
m_serialiser = serialiser;
|
||||
|
@ -67,10 +67,10 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver
|
|||
|
||||
TarArchiveWriter archive = new TarArchiveWriter();
|
||||
|
||||
foreach (EntityBase entity in m_sceneObjects)
|
||||
foreach (SceneObjectGroup sceneObject in m_sceneObjects)
|
||||
{
|
||||
// FIXME: I'm fairly sure that all entities are in fact SceneObjectGroups... must fix this
|
||||
SceneObjectGroup sceneObject = (SceneObjectGroup)entity;
|
||||
//m_log.DebugFormat("[ARCHIVER]: Saving {0} {1}, {2}", entity.Name, entity.UUID, entity.GetType());
|
||||
|
||||
LLVector3 position = sceneObject.AbsolutePosition;
|
||||
|
||||
string serializedObject = m_serialiser.SaveGroupToXml2(sceneObject);
|
||||
|
|
|
@ -163,24 +163,31 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver
|
|||
Dictionary<LLUUID, int> assetUuids = new Dictionary<LLUUID, int>();
|
||||
|
||||
List<EntityBase> entities = m_scene.GetEntities();
|
||||
List<SceneObjectGroup> sceneObjects = new List<SceneObjectGroup>();
|
||||
|
||||
// Filter entities so that we only have scene objects.
|
||||
// FIXME: Would be nicer to have this as a proper list in InnerScene, since lots of methods
|
||||
// end up having to do this
|
||||
foreach (EntityBase entity in entities)
|
||||
{
|
||||
if (entity is SceneObjectGroup)
|
||||
{
|
||||
GetSceneObjectAssetUuids((SceneObjectGroup)entity, assetUuids);
|
||||
}
|
||||
sceneObjects.Add((SceneObjectGroup)entity);
|
||||
}
|
||||
|
||||
if (entities.Count > 0)
|
||||
foreach (SceneObjectGroup sceneObject in sceneObjects)
|
||||
{
|
||||
m_log.DebugFormat("[ARCHIVER]: Successfully got serialization for {0} entities", entities.Count);
|
||||
GetSceneObjectAssetUuids(sceneObject, assetUuids);
|
||||
}
|
||||
|
||||
if (sceneObjects.Count > 0)
|
||||
{
|
||||
m_log.DebugFormat("[ARCHIVER]: Successfully got serialization for {0} scene objects", sceneObjects.Count);
|
||||
m_log.DebugFormat("[ARCHIVER]: Requiring save of {0} assets", assetUuids.Count);
|
||||
|
||||
// Asynchronously request all the assets required to perform this archive operation
|
||||
ArchiveWriteRequestExecution awre
|
||||
= new ArchiveWriteRequestExecution(
|
||||
entities, m_scene.RequestModuleInterface<IRegionSerialiser>(), m_savePath);
|
||||
sceneObjects, m_scene.RequestModuleInterface<IRegionSerialiser>(), m_savePath);
|
||||
new AssetsRequest(assetUuids.Keys, m_scene.AssetCache, awre.ReceivedAllAssets).Execute();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -319,6 +319,7 @@ mesh_physical_lod = 16
|
|||
;; append to existing physics logfile, or overwrite existing logfiles?
|
||||
;physics_logging_append_existing_logfile = true
|
||||
|
||||
|
||||
[RemoteAdmin]
|
||||
enabled = false
|
||||
access_password = unknown
|
||||
|
@ -333,6 +334,7 @@ prefix = /admin
|
|||
[RestRegionPlugin]
|
||||
enabled = false
|
||||
|
||||
|
||||
; Uncomment the following for IRC bridge
|
||||
; experimental, so if it breaks... keep both parts... yada yada
|
||||
; also, not good error detection when it fails
|
||||
|
|
Loading…
Reference in New Issue