本文整理汇总了C#中LandData.FromOSD方法的典型用法代码示例。如果您正苦于以下问题:C# LandData.FromOSD方法的具体用法?C# LandData.FromOSD怎么用?C# LandData.FromOSD使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LandData
的用法示例。
在下文中一共展示了LandData.FromOSD方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: LoadModuleFromArchive
public void LoadModuleFromArchive(byte[] data, string filePath, TarArchiveReader.TarEntryType type, IScene scene)
{
if (filePath.StartsWith("parcels/"))
{
if (!m_merge)
{
//Only use if we are not merging
LandData parcel = new LandData();
OSD parcelData = OSDParser.DeserializeLLSDBinary(data);
parcel.FromOSD((OSDMap)parcelData);
m_parcels.Add(parcel);
}
}
else if (filePath.StartsWith("terrain/"))
{
ITerrainModule terrainModule = m_scene.RequestModuleInterface<ITerrainModule>();
MemoryStream ms = new MemoryStream(data);
terrainModule.LoadFromStream(filePath, ms, 0, 0);
ms.Close();
}
else if (filePath.StartsWith("entities/"))
{
MemoryStream ms = new MemoryStream(data);
SceneObjectGroup sceneObject = OpenSim.Region.Framework.Scenes.Serialization.SceneObjectSerializer.FromXml2Format(ms, (Scene)scene);
foreach (SceneObjectPart part in sceneObject.ChildrenList)
{
if (!ResolveUserUuid(part.CreatorID))
part.CreatorID = m_scene.RegionInfo.EstateSettings.EstateOwner;
if (!ResolveUserUuid(part.OwnerID))
part.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner;
if (!ResolveUserUuid(part.LastOwnerID))
part.LastOwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner;
// And zap any troublesome sit target information
part.SitTargetOrientation = new Quaternion(0, 0, 0, 1);
part.SitTargetPosition = new Vector3(0, 0, 0);
// Fix ownership/creator of inventory items
// Not doing so results in inventory items
// being no copy/no mod for everyone
lock (part.TaskInventory)
{
TaskInventoryDictionary inv = part.TaskInventory;
foreach (KeyValuePair<UUID, TaskInventoryItem> kvp in inv)
{
if (!ResolveUserUuid(kvp.Value.OwnerID))
{
kvp.Value.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner;
}
if (!ResolveUserUuid(kvp.Value.CreatorID))
{
kvp.Value.CreatorID = m_scene.RegionInfo.EstateSettings.EstateOwner;
}
}
}
}
if (m_scene.SceneGraph.AddPrimToScene(sceneObject))
{
sceneObject.HasGroupChanged = true;
sceneObject.ScheduleGroupUpdate(PrimUpdateFlags.FullUpdate);
sceneObject.CreateScriptInstances(0, false, 0, UUID.Zero);
sceneObject.ResumeScripts();
}
}
}
示例2: Duplicate
public override IDataTransferable Duplicate()
{
LandData m = new LandData();
m.FromOSD(ToOSD());
return m;
}
示例3: LoadBackup
public RegionData LoadBackup(string file)
{
if (!File.Exists(file))
return null;
var stream = ArchiveHelpers.GetStream(file);
if (stream == null)
return null;
GZipStream m_loadStream = new GZipStream(stream, CompressionMode.Decompress);
TarArchiveReader reader = new TarArchiveReader(m_loadStream);
List<uint> foundLocalIDs = new List<uint>();
RegionData regiondata = new RegionData();
regiondata.Init();
byte[] data;
string filePath;
TarArchiveReader.TarEntryType entryType;
System.Collections.Concurrent.ConcurrentQueue<byte[]> groups =
new System.Collections.Concurrent.ConcurrentQueue<byte[]>();
//Load the archive data that we need
while ((data = reader.ReadEntry(out filePath, out entryType)) != null)
{
if (TarArchiveReader.TarEntryType.TYPE_DIRECTORY == entryType)
continue;
if (filePath.StartsWith("parcels/"))
{
//Only use if we are not merging
LandData parcel = new LandData();
OSD parcelData = OSDParser.DeserializeLLSDBinary(data);
parcel.FromOSD((OSDMap) parcelData);
if (parcel.OwnerID != UUID.Parse("05948863-b678-433e-87a4-e44d17678d1d"))
//The default owner of the 'default' region
regiondata.Parcels.Add(parcel);
}
else if (filePath.StartsWith("newstyleterrain/"))
{
regiondata.Terrain = data;
}
else if (filePath.StartsWith("newstylerevertterrain/"))
{
regiondata.RevertTerrain = data;
}
else if (filePath.StartsWith("newstylewater/"))
{
regiondata.Water = data;
}
else if (filePath.StartsWith("newstylerevertwater/"))
{
regiondata.RevertWater = data;
}
else if (filePath.StartsWith("entities/"))
{
groups.Enqueue(data);
}
else if (filePath.StartsWith("regioninfo/"))
{
RegionInfo info = new RegionInfo();
info.FromOSD((OSDMap) OSDParser.DeserializeLLSDBinary(data));
regiondata.RegionInfo = info;
}
data = null;
}
m_loadStream.Close();
m_loadStream = null;
int threadCount = groups.Count > 16 ? 16 : groups.Count;
System.Threading.Thread[] threads = new System.Threading.Thread[threadCount];
for (int i = 0; i < threadCount; i++)
{
threads[i] = new System.Threading.Thread(() =>
{
byte[] groupData;
while (groups.TryDequeue(out groupData))
{
MemoryStream ms = new MemoryStream(groupData);
ISceneEntity sceneObject =
SceneEntitySerializer.SceneObjectSerializer
.FromXml2Format(ref ms,
null);
ms.Close();
ms = null;
data = null;
if (sceneObject != null)
{
foreach (
ISceneChildEntity part in
sceneObject.ChildrenEntities())
{
lock (foundLocalIDs)
{
if (
!foundLocalIDs.Contains(
part.LocalId))
foundLocalIDs.Add(part.LocalId);
else
part.LocalId = 0;
//Reset it! Only use it once!
}
//.........这里部分代码省略.........
示例4: LoadModuleFromArchive
public void LoadModuleFromArchive(byte[] data, string filePath, TarArchiveReader.TarEntryType type,
IScene scene)
{
if (filePath.StartsWith("parcels/"))
{
if (!m_merge)
{
//Only use if we are not merging
LandData parcel = new LandData();
OSD parcelData = OSDParser.DeserializeLLSDBinary(data);
parcel.FromOSD((OSDMap) parcelData);
m_parcels.Add(parcel);
}
}
#region New Style Terrain Loading
else if (filePath.StartsWith("newstyleterrain/"))
{
ITerrainModule terrainModule = scene.RequestModuleInterface<ITerrainModule>();
terrainModule.TerrainMap = ReadTerrain(data, scene);
}
else if (filePath.StartsWith("newstylerevertterrain/"))
{
ITerrainModule terrainModule = scene.RequestModuleInterface<ITerrainModule>();
terrainModule.TerrainRevertMap = ReadTerrain(data, scene);
}
else if (filePath.StartsWith("newstylewater/"))
{
ITerrainModule terrainModule = scene.RequestModuleInterface<ITerrainModule>();
terrainModule.TerrainWaterMap = ReadTerrain(data, scene);
}
else if (filePath.StartsWith("newstylerevertwater/"))
{
ITerrainModule terrainModule = scene.RequestModuleInterface<ITerrainModule>();
terrainModule.TerrainWaterRevertMap = ReadTerrain(data, scene);
}
#endregion
#region Old Style Terrain Loading
else if (filePath.StartsWith("terrain/"))
{
ITerrainModule terrainModule = scene.RequestModuleInterface<ITerrainModule>();
MemoryStream ms = new MemoryStream(data);
terrainModule.LoadFromStream(filePath, ms, 0, 0);
ms.Close();
}
else if (filePath.StartsWith("revertterrain/"))
{
ITerrainModule terrainModule = scene.RequestModuleInterface<ITerrainModule>();
MemoryStream ms = new MemoryStream(data);
terrainModule.LoadRevertMapFromStream(filePath, ms, 0, 0);
ms.Close();
}
else if (filePath.StartsWith("water/"))
{
ITerrainModule terrainModule = scene.RequestModuleInterface<ITerrainModule>();
MemoryStream ms = new MemoryStream(data);
terrainModule.LoadWaterFromStream(filePath, ms, 0, 0);
ms.Close();
}
else if (filePath.StartsWith("revertwater/"))
{
ITerrainModule terrainModule = scene.RequestModuleInterface<ITerrainModule>();
MemoryStream ms = new MemoryStream(data);
terrainModule.LoadWaterRevertMapFromStream(filePath, ms, 0, 0);
ms.Close();
}
#endregion
else if (filePath.StartsWith("entities/"))
{
MemoryStream ms = new MemoryStream(data);
ISceneEntity sceneObject = SceneEntitySerializer.SceneObjectSerializer.FromXml2Format(ref ms, scene);
ms.Close();
ms = null;
data = null;
m_groups.Add(sceneObject);
}
else if (filePath.StartsWith("assets/"))
{
if (m_loadAssets)
{
AssetBase asset = new AssetBase();
asset.Unpack(OSDParser.DeserializeJson(Encoding.UTF8.GetString(data)));
scene.AssetService.Store(asset);
}
}
}
示例5: AddRegion
public byte[] AddRegion(OSDMap request, UUID regionID)
{
OSDArray requests = (OSDArray) request["Requests"];
List<LandData> parcels = new List<LandData>();
foreach (OSD o in requests)
{
LandData land = new LandData();
land.FromOSD((OSDMap) o);
land.RegionID = regionID;
parcels.Add(land);
}
if (parcels.Count == 0)
return new byte[1];
//Check whether this region is just spamming add to search and stop them if they are
if (timeBeforeNextUpdate.ContainsKey(parcels[0].RegionID) &&
Util.UnixTimeSinceEpoch() < timeBeforeNextUpdate[parcels[0].RegionID])
return new byte[1]; //Too soon to update
//Update the time with now + the time to wait for the next update
timeBeforeNextUpdate[parcels[0].RegionID] = Util.UnixTimeSinceEpoch() + (60*minTimeBeforeNextParcelUpdate);
DirectoryServiceConnector.AddRegion(parcels);
return new byte[1];
}
示例6: LoadModuleFromArchive
public void LoadModuleFromArchive(byte[] data, string filePath, TarArchiveReader.TarEntryType type, IScene scene)
{
if (filePath.StartsWith("parcels/"))
{
if (!m_merge)
{
//Only use if we are not merging
LandData parcel = new LandData();
OSD parcelData = OSDParser.DeserializeLLSDBinary(data);
parcel.FromOSD((OSDMap)parcelData);
m_parcels.Add(parcel);
}
}
#region New Style Terrain Loading
else if (filePath.StartsWith ("newstyleterrain/"))
{
ITerrainModule terrainModule = scene.RequestModuleInterface<ITerrainModule>();
terrainModule.TerrainMap = ReadTerrain(data, scene);
}
else if (filePath.StartsWith ("newstylerevertterrain/"))
{
ITerrainModule terrainModule = scene.RequestModuleInterface<ITerrainModule>();
terrainModule.TerrainRevertMap = ReadTerrain(data, scene);
}
else if (filePath.StartsWith ("newstylewater/"))
{
ITerrainModule terrainModule = scene.RequestModuleInterface<ITerrainModule>();
terrainModule.TerrainWaterMap = ReadTerrain(data, scene);
}
else if (filePath.StartsWith ("newstylerevertwater/"))
{
ITerrainModule terrainModule = scene.RequestModuleInterface<ITerrainModule>();
terrainModule.TerrainWaterRevertMap = ReadTerrain(data, scene);
}
#endregion
else if (filePath.StartsWith ("terrain/"))
{
ITerrainModule terrainModule = scene.RequestModuleInterface<ITerrainModule>();
MemoryStream ms = new MemoryStream (data);
terrainModule.LoadFromStream (filePath, ms, 0, 0);
ms.Close ();
}
else if (filePath.StartsWith ("revertterrain/"))
{
ITerrainModule terrainModule = scene.RequestModuleInterface<ITerrainModule>();
MemoryStream ms = new MemoryStream (data);
terrainModule.LoadRevertMapFromStream (filePath, ms, 0, 0);
ms.Close ();
}
else if (filePath.StartsWith ("water/"))
{
ITerrainModule terrainModule = scene.RequestModuleInterface<ITerrainModule>();
MemoryStream ms = new MemoryStream (data);
terrainModule.LoadWaterFromStream (filePath, ms, 0, 0);
ms.Close ();
}
else if (filePath.StartsWith ("revertwater/"))
{
ITerrainModule terrainModule = scene.RequestModuleInterface<ITerrainModule>();
MemoryStream ms = new MemoryStream (data);
terrainModule.LoadWaterRevertMapFromStream (filePath, ms, 0, 0);
ms.Close ();
}
else if (filePath.StartsWith ("entities/"))
{
MemoryStream ms = new MemoryStream (data);
SceneObjectGroup sceneObject = OpenSim.Region.Framework.Scenes.Serialization.SceneObjectSerializer.FromXml2Format (ref ms, scene);
ms.Close ();
ms = null;
data = null;
foreach(ISceneChildEntity part in sceneObject.ChildrenEntities())
{
if (!ResolveUserUuid (part.CreatorID))
part.CreatorID = m_scene.RegionInfo.EstateSettings.EstateOwner;
if (!ResolveUserUuid (part.OwnerID))
part.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner;
if (!ResolveUserUuid (part.LastOwnerID))
part.LastOwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner;
// Fix ownership/creator of inventory items
// Not doing so results in inventory items
// being no copy/no mod for everyone
lock (part.TaskInventory)
{
TaskInventoryDictionary inv = part.TaskInventory;
foreach (KeyValuePair<UUID, TaskInventoryItem> kvp in inv)
{
if (!ResolveUserUuid (kvp.Value.OwnerID))
{
kvp.Value.OwnerID = scene.RegionInfo.EstateSettings.EstateOwner;
}
if (!ResolveUserUuid (kvp.Value.CreatorID))
{
kvp.Value.CreatorID = scene.RegionInfo.EstateSettings.EstateOwner;
//.........这里部分代码省略.........
示例7: ReadBackup
protected virtual void ReadBackup (IScene scene)
{
List<uint> foundLocalIDs = new List<uint> ();
GZipStream m_loadStream;
try
{
m_loadStream = new GZipStream (ArchiveHelpers.GetStream (m_loadDirectory + m_fileName), CompressionMode.Decompress);
}
catch
{
CheckForOldDataBase ();
return;
}
TarArchiveReader reader = new TarArchiveReader (m_loadStream);
byte[] data;
string filePath;
TarArchiveReader.TarEntryType entryType;
//Load the archive data that we need
while ((data = reader.ReadEntry (out filePath, out entryType)) != null)
{
if (TarArchiveReader.TarEntryType.TYPE_DIRECTORY == entryType)
continue;
if (filePath.StartsWith ("parcels/"))
{
//Only use if we are not merging
LandData parcel = new LandData ();
OSD parcelData = OSDParser.DeserializeLLSDBinary (data);
parcel.FromOSD ((OSDMap)parcelData);
m_parcels.Add (parcel);
}
else if (filePath.StartsWith ("terrain/"))
{
m_terrain = data;
}
else if (filePath.StartsWith ("revertterrain/"))
{
m_revertTerrain = data;
}
else if (filePath.StartsWith ("water/"))
{
m_water = data;
}
else if (filePath.StartsWith ("revertwater/"))
{
m_revertWater = data;
}
else if (filePath.StartsWith ("entities/"))
{
MemoryStream ms = new MemoryStream (data);
SceneObjectGroup sceneObject = SceneObjectSerializer.FromXml2Format (ms, scene);
ms.Close ();
ms = null;
data = null;
foreach (ISceneChildEntity part in sceneObject.ChildrenEntities ())
{
if (!foundLocalIDs.Contains (part.LocalId))
foundLocalIDs.Add (part.LocalId);
else
part.LocalId = 0; //Reset it! Only use it once!
}
m_groups.Add (sceneObject);
}
}
m_loadStream.Close ();
m_loadStream = null;
foundLocalIDs.Clear ();
GC.Collect ();
}
示例8: AddRegion
public byte[] AddRegion (OSDMap request, UUID regionID)
{
OSDArray requests = (OSDArray)request["Requests"];
List<LandData> parcels = new List<LandData>();
foreach (OSD o in requests)
{
LandData land = new LandData();
land.FromOSD((OSDMap)o);
land.RegionID = regionID;
parcels.Add(land);
}
DirectoryServiceConnector.AddRegion(parcels);
return new byte[1];
}
示例9: GetParcelByOwner
public LandData[] GetParcelByOwner(UUID OwnerID)
{
List<LandData> Land = new List<LandData> ();
OSDMap mess = new OSDMap ();
mess["Method"] = "getparcelbyowner";
mess["OwnerID"] = OwnerID;
List<string> m_ServerURIs = m_registry.RequestModuleInterface<IConfigurationService> ().FindValueOf ("RemoteServerURI");
foreach (string m_ServerURI in m_ServerURIs)
{
OSDMap results = WebUtils.PostToService (m_ServerURI + "osd", mess, true, false);
OSDMap innerResults = (OSDMap)OSDParser.DeserializeJson (results["_RawResult"]);
OSDArray parcels = (OSDArray)innerResults["Parcels"];
foreach(OSD o in parcels)
{
LandData result = new LandData ();
result.FromOSD ((OSDMap)o);
Land.Add (result);
}
}
return Land.ToArray();
}
示例10: GetParcelInfo
public LandData GetParcelInfo(UUID InfoUUID)
{
OSDMap mess = new OSDMap ();
mess["Method"] = "getparcelinfo";
mess["InfoUUID"] = InfoUUID;
List<string> m_ServerURIs = m_registry.RequestModuleInterface<IConfigurationService> ().FindValueOf ("RemoteServerURI");
foreach (string m_ServerURI in m_ServerURIs)
{
OSDMap results = WebUtils.PostToService (m_ServerURI + "osd", mess, true, false);
OSDMap innerResults = (OSDMap)OSDParser.DeserializeJson (results["_RawResult"]);
if (innerResults["Success"])
{
LandData result = new LandData ();
result.FromOSD (innerResults);
return result;
}
}
return null;
}