本文整理汇总了C#中OpenSim.Region.Framework.Scenes.Scene.AddModuleInterfaces方法的典型用法代码示例。如果您正苦于以下问题:C# Scene.AddModuleInterfaces方法的具体用法?C# Scene.AddModuleInterfaces怎么用?C# Scene.AddModuleInterfaces使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OpenSim.Region.Framework.Scenes.Scene
的用法示例。
在下文中一共展示了Scene.AddModuleInterfaces方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Initialise
public void Initialise(Scene scene, IConfigSource source, ISimulationBase openSimBase)
{
if (serviceConnectors == null)
{
serviceConnectors = AuroraModuleLoader.PickupModules<IService>();
foreach (IService connector in serviceConnectors)
{
try
{
connector.Initialize(source, openSimBase.ApplicationRegistry);
}
catch
{
}
}
foreach (IService connector in serviceConnectors)
{
try
{
connector.PostInitialize(source, openSimBase.ApplicationRegistry);
}
catch
{
}
}
}
scene.AddModuleInterfaces(openSimBase.ApplicationRegistry.GetInterfaces());
}
示例2: SetupScene
/// <summary>
/// Create a scene and its initial base structures.
/// </summary>
/// <param name="regionInfo"></param>
/// <param name="proxyOffset"></param>
/// <param name="configSource"></param>
/// <param name="clientServer"> </param>
/// <returns></returns>
protected Scene SetupScene (RegionInfo regionInfo, IConfigSource configSource)
{
AgentCircuitManager circuitManager = new AgentCircuitManager ();
List<IClientNetworkServer> clientServers = AuroraModuleLoader.PickupModules<IClientNetworkServer> ();
List<IClientNetworkServer> allClientServers = new List<IClientNetworkServer> ();
foreach (IClientNetworkServer clientServer in clientServers)
{
foreach (int port in regionInfo.UDPPorts)
{
IClientNetworkServer copy = clientServer.Copy ();
copy.Initialise (port, m_configSource, circuitManager);
allClientServers.Add (copy);
}
}
Scene scene = new Scene ();
scene.AddModuleInterfaces (m_openSimBase.ApplicationRegistry.GetInterfaces ());
scene.Initialize (regionInfo, circuitManager, allClientServers);
return scene;
}
示例3: UploadCompleteHandler
//.........这里部分代码省略.........
InventoryItemBase itemBase = new InventoryItemBase(UUID.Random(), m_service.AgentID)
{
AssetType = (sbyte) AssetType.Mesh,
AssetID = meshAsset.ID,
CreatorId = m_service.AgentID.ToString(),
Folder = meshFolder.ID,
InvType = (int) InventoryType.Texture,
Name = "(Mesh) - " + assetName,
CurrentPermissions = (uint) PermissionMask.All,
BasePermissions = (uint) PermissionMask.All,
EveryOnePermissions = everyone_mask,
GroupPermissions = group_mask,
NextPermissions = next_owner_mask
};
//Bad... but whatever
m_inventoryService.AddItem(itemBase);
pbs.SculptEntry = true;
pbs.SculptTexture = meshAsset.ID;
pbs.SculptType = (byte) SculptType.Mesh;
pbs.SculptData = meshAsset.Data;
Vector3 position = inner_instance_list["position"].AsVector3();
Vector3 scale = inner_instance_list["scale"].AsVector3();
Quaternion rotation = inner_instance_list["rotation"].AsQuaternion();
int physicsShapeType = inner_instance_list["physics_shape_type"].AsInteger();
int material = inner_instance_list["material"].AsInteger();
int mesh = inner_instance_list["mesh"].AsInteger();
UUID owner_id = m_service.AgentID;
IScene fakeScene = new Scene();
fakeScene.AddModuleInterfaces(m_service.Registry.GetInterfaces());
SceneObjectPart prim = new SceneObjectPart(owner_id, pbs, position, Quaternion.Identity,
Vector3.Zero, assetName, fakeScene)
{Scale = scale, AbsolutePosition = position};
rotations.Add(rotation);
positions.Add(position);
prim.UUID = UUID.Random();
prim.CreatorID = owner_id;
prim.OwnerID = owner_id;
prim.GroupID = UUID.Zero;
prim.LastOwnerID = prim.OwnerID;
prim.CreationDate = Util.UnixTimeSinceEpoch();
prim.Name = assetName;
prim.Description = "";
prim.PhysicsType = (byte) physicsShapeType;
prim.BaseMask = (uint) PermissionMask.All;
prim.EveryoneMask = everyone_mask;
prim.NextOwnerMask = next_owner_mask;
prim.GroupMask = group_mask;
prim.OwnerMask = (uint) PermissionMask.All;
if (grp == null)
grp = new SceneObjectGroup(prim, fakeScene);
else
grp.AddChild(prim, i + 1);
grp.RootPart.IsAttachment = false;
}
if (grp.ChildrenList.Count > 1) //Fix first link #
grp.RootPart.LinkNum++;
示例4: LoadLibraries
/// <summary>
/// Use the asset set information at path to load assets
/// </summary>
/// <param name = "path"></param>
/// <param name = "assets"></param>
protected void LoadLibraries(string iarFileName)
{
RegionInfo regInfo = new RegionInfo();
IScene m_MockScene = null;
//Make the scene for the IAR loader
if (m_registry is IScene)
m_MockScene = (IScene) m_registry;
else
{
m_MockScene = new Scene();
m_MockScene.Initialize(regInfo);
m_MockScene.AddModuleInterfaces(m_registry.GetInterfaces());
}
UserAccount uinfo = m_MockScene.UserAccountService.GetUserAccount(UUID.Zero, m_service.LibraryOwner);
//Make the user account for the default IAR
if (uinfo == null)
{
MainConsole.Instance.Warn("Creating user " + m_service.LibraryOwnerName);
m_MockScene.UserAccountService.CreateUser(m_service.LibraryOwner, m_service.LibraryOwnerName, "", "");
uinfo = m_MockScene.UserAccountService.GetUserAccount(UUID.Zero, m_service.LibraryOwner);
m_MockScene.InventoryService.CreateUserInventory(uinfo.PrincipalID, false);
}
if (m_MockScene.InventoryService.GetRootFolder(m_service.LibraryOwner) == null)
m_MockScene.InventoryService.CreateUserInventory(uinfo.PrincipalID, false);
List<InventoryFolderBase> rootFolders = m_MockScene.InventoryService.GetFolderFolders(uinfo.PrincipalID,
UUID.Zero);
#if (!ISWIN)
bool alreadyExists = false;
foreach (InventoryFolderBase folder in rootFolders)
{
if (folder.Name == iarFileName)
{
alreadyExists = true;
break;
}
}
#else
bool alreadyExists = rootFolders.Any(folder => folder.Name == iarFileName);
#endif
if (alreadyExists)
{
MainConsole.Instance.InfoFormat("[LIBRARY INVENTORY]: Found previously loaded iar file {0}, ignoring.", iarFileName);
return;
}
MainConsole.Instance.InfoFormat("[LIBRARY INVENTORY]: Loading iar file {0}", iarFileName);
InventoryFolderBase rootFolder = m_MockScene.InventoryService.GetRootFolder(uinfo.PrincipalID);
if (null == rootFolder)
{
//We need to create the root folder, otherwise the IAR freaks
m_MockScene.InventoryService.CreateUserInventory(uinfo.PrincipalID, false);
}
InventoryArchiveReadRequest archread = new InventoryArchiveReadRequest(m_MockScene, uinfo, "/", iarFileName,
false);
try
{
List<InventoryNodeBase> nodes = new List<InventoryNodeBase>(archread.Execute(true));
if (nodes.Count == 0)
return;
InventoryFolderBase f = (InventoryFolderBase) nodes[0];
TraverseFolders(nodes[0].ID, m_MockScene);
//This is our loaded folder
//Fix the name for later
f.Name = iarFileName;
f.ParentID = UUID.Zero;
//f.Type = (int)AssetType.RootFolder;
m_MockScene.InventoryService.UpdateFolder(f);
}
catch (Exception e)
{
MainConsole.Instance.DebugFormat("[LIBRARY MODULE]: Exception when processing archive {0}: {1}", iarFileName,
e.StackTrace);
}
finally
{
archread.Close();
}
}
示例5: LoadLibraries
/// <summary>
/// Use the asset set information at path to load assets
/// </summary>
/// <param name="path"></param>
/// <param name="assets"></param>
protected void LoadLibraries(string iarFileName)
{
RegionInfo regInfo = new RegionInfo();
Scene m_MockScene = null;
//Make the scene for the IAR loader
if (m_registry is Scene)
m_MockScene = (Scene)m_registry;
else
{
m_MockScene = new Scene(regInfo);
m_MockScene.AddModuleInterfaces(m_registry.GetInterfaces());
}
UserAccount uinfo = m_MockScene.UserAccountService.GetUserAccount(UUID.Zero, m_service.LibraryOwner);
//Make the user account for the default IAR
if (uinfo == null)
{
m_log.Warn("Creating user " + m_service.LibraryOwnerName[0] + " " + m_service.LibraryOwnerName[1]);
m_MockScene.UserAccountService.CreateUser(m_service.LibraryOwnerName[0],
m_service.LibraryOwnerName[1], "", "");
uinfo = m_MockScene.UserAccountService.GetUserAccount(UUID.Zero, m_service.LibraryOwnerName[0],
m_service.LibraryOwnerName[1]);
m_MockScene.InventoryService.CreateUserInventory(uinfo.PrincipalID);
}
InventoryCollection col = m_MockScene.InventoryService.GetFolderContent(uinfo.PrincipalID, UUID.Zero);
bool alreadyExists = false;
foreach (InventoryFolderBase folder in col.Folders)
{
if (folder.Name == iarFileName)
{
alreadyExists = true;
break;
}
}
if (alreadyExists)
{
m_log.InfoFormat("[LIBRARY INVENTORY]: Found previously loaded iar file {0}, ignoring.", iarFileName);
return;
}
m_log.InfoFormat("[LIBRARY INVENTORY]: Loading iar file {0}", iarFileName);
InventoryFolderBase rootFolder = m_MockScene.InventoryService.GetRootFolder(uinfo.PrincipalID);
if (null == rootFolder)
{
//We need to create the root folder, otherwise the IAR freaks
m_MockScene.InventoryService.CreateUserInventory(uinfo.PrincipalID);
}
InventoryArchiveReadRequest archread = new InventoryArchiveReadRequest(m_MockScene, uinfo, "/", iarFileName, false);
try
{
List<InventoryNodeBase> nodes = new List<InventoryNodeBase>(archread.Execute(true));
if (nodes.Count == 0)
return;
InventoryFolderImpl f = new InventoryFolderImpl((InventoryFolderBase)nodes[0]);
TraverseFolders(f, nodes[0].ID, m_MockScene);
//This is our loaded folder
//Fix the name for later
f.Name = iarFileName;
f.ParentID = UUID.Zero;
bool update = m_MockScene.InventoryService.UpdateFolder(f);
m_service.AddToDefaultInventory(f);
}
catch (Exception e)
{
m_log.DebugFormat("[LIBRARY MODULE]: Exception when processing archive {0}: {1}", iarFileName, e.StackTrace);
}
finally
{
archread.Close();
}
}
示例6: SetupScene
/// <summary>
/// Create a scene and its initial base structures.
/// </summary>
/// <param name="regionInfo"></param>
/// <param name="proxyOffset"></param>
/// <param name="configSource"></param>
/// <param name="clientServer"> </param>
/// <returns></returns>
protected Scene SetupScene(RegionInfo regionInfo, IConfigSource configSource)
{
AgentCircuitManager circuitManager = new AgentCircuitManager();
IPAddress listenIP = regionInfo.InternalEndPoint.Address;
if (!IPAddress.TryParse(regionInfo.InternalEndPoint.Address.ToString(), out listenIP))
listenIP = IPAddress.Parse("0.0.0.0");
uint port = (uint)regionInfo.InternalEndPoint.Port;
string ClientstackDll = m_config.Configs["Startup"].GetString("ClientStackPlugin", "OpenSim.Region.ClientStack.LindenUDP.dll");
IClientNetworkServer clientServer = AuroraModuleLoader.LoadPlugin<IClientNetworkServer> (Util.BasePathCombine(ClientstackDll));
clientServer.Initialise(
listenIP, ref port, 0, regionInfo.m_allow_alternate_ports,
m_config, circuitManager);
regionInfo.InternalEndPoint.Port = (int)port;
Scene scene = new Scene ();
scene.AddModuleInterfaces (m_OpenSimBase.ApplicationRegistry.GetInterfaces ());
scene.Initialize (regionInfo, circuitManager, clientServer);
StartModules(scene);
m_clientServers.Add(clientServer);
//Do this here so that we don't have issues later when startup complete messages start coming in
m_localScenes.Add(scene);
return scene;
}
示例7: FinishedStartup
public void FinishedStartup()
{
m_log.InfoFormat("[DefaultInventoryToIARConverter]: start");
string IARName = "DefaultInventory.iar";
IniConfigSource iniSource = null;
try
{
iniSource = new IniConfigSource("DefaultInventory/Inventory.ini", Nini.Ini.IniFileType.AuroraStyle);
}
catch
{
}
IConfig libConfig = m_config.Configs["DefaultAssetsIARCreator"];
if (libConfig == null)
libConfig = iniSource.Configs["DefaultAssetsIARCreator"];
if (libConfig != null)
{
if (!libConfig.GetBoolean("Enabled", false))
return;
IARName = libConfig.GetString("NameOfIAR", IARName);
}
else
return;
m_service = m_registry.RequestModuleInterface<ILibraryService>();
RegionInfo regInfo = new RegionInfo();
IScene m_MockScene = null;
//Make the scene for the IAR loader
if (m_registry is IScene)
m_MockScene = (IScene)m_registry;
else
{
m_MockScene = new Scene();
m_MockScene.Initialize(regInfo);
m_MockScene.AddModuleInterfaces(m_registry.GetInterfaces());
}
m_log.InfoFormat("[DefaultInventoryToIARConverter]: 1");
UserAccount uinfo = m_MockScene.UserAccountService.GetUserAccount(null, m_service.LibraryOwner);
//Make the user account for the default IAR
if (uinfo == null)
{
uinfo = new UserAccount(m_service.LibraryOwner);
uinfo.Name = m_service.LibraryOwnerName;
//m_MockScene.InventoryService.CreateUserInventory(m_service.LibraryOwner, false);
m_log.InfoFormat("[DefaultInventoryToIARConverter]: 1,1");
m_Database = DataManager.RequestPlugin<IInventoryData>();
m_log.InfoFormat("[DefaultInventoryToIARConverter]: 1,2");
if(m_Database == null) m_log.InfoFormat("[DefaultInventoryToIARConverter]: m_Database == null");
InventoryFolderBase newFolder = new InventoryFolderBase
{
Name = "My Inventory",
Type = 9,
Version = 1,
ID = new UUID("00000112-000f-0000-0000-000100bba000"),
Owner = m_service.LibraryOwner,
ParentID = UUID.Zero
};
m_log.InfoFormat("[DefaultInventoryToIARConverter]: 1,3");
m_Database.StoreFolder(newFolder);
m_log.InfoFormat("[DefaultInventoryToIARConverter]: 1,4");
}
m_log.InfoFormat("[DefaultInventoryToIARConverter]: 2");
List<AssetBase> assets = new List<AssetBase> ();
if (m_MockScene.InventoryService != null)
{
//Add the folders to the user's inventory
InventoryCollection i = m_MockScene.InventoryService.GetFolderContent (m_service.LibraryOwner, UUID.Zero);
if (i != null)
{
foreach (InventoryItemBase item in i.Items)
{
AssetBase asset = m_MockScene.RequestModuleInterface<IAssetService> ().Get (item.AssetID.ToString ());
if (asset != null)
{
assets.Add (asset);
m_log.InfoFormat("[DefaultInventoryToIARConverter]: added asset");
}
}
}
else m_log.InfoFormat("[DefaultInventoryToIARConverter]: i == null");
}
m_log.InfoFormat("[DefaultInventoryToIARConverter]: 3");
InventoryFolderBase rootFolder = null;
List<InventoryFolderBase> rootFolders = m_MockScene.InventoryService.GetRootFolders (m_service.LibraryOwner);
foreach (InventoryFolderBase folder in rootFolders)
{
m_log.InfoFormat("folder name {0}", folder.Name);
//if (folder.Name == "My Inventory")
// continue;
rootFolder = folder;
break;
}
//.........这里部分代码省略.........
示例8: LoadFromFile
public void LoadFromFile()
{
GZipStream m_loadStream = new GZipStream(ArchiveHelpers.GetStream(m_fileName), CompressionMode.Decompress);
TarArchiveReader reader = new TarArchiveReader(m_loadStream);
byte[] data;
string filePath;
TarArchiveReader.TarEntryType entryType;
#region Our Region Info
IParcelServiceConnector parcelService = Aurora.DataManager.DataManager.RequestPlugin<IParcelServiceConnector>();
SceneManager sceneManager = m_simulationBase.ApplicationRegistry.RequestModuleInterface<SceneManager>();
RegionInfo regionInfo = new RegionInfo();
IScene fakeScene = new Scene();
fakeScene.AddModuleInterfaces(m_simulationBase.ApplicationRegistry.GetInterfaces());
#endregion
while ((data = reader.ReadEntry(out filePath, out entryType)) != null)
{
if (TarArchiveReader.TarEntryType.TYPE_DIRECTORY == entryType)
continue;
if (filePath.StartsWith("estate/"))
{
string estateData = Encoding.UTF8.GetString(data);
EstateSettings settings = new EstateSettings(WebUtils.ParseXmlResponse(estateData));
regionInfo.EstateSettings = settings;
}
else if (filePath.StartsWith("regioninfo/"))
{
regionInfo.UnpackRegionInfoData((OSDMap)OSDParser.DeserializeLLSDBinary(data));
}
}
if (!m_useExistingRegionInfo)
{
regionInfo.RegionID = UUID.Random();
regionInfo.RegionName = MainConsole.Instance.Prompt("Region Name: ", regionInfo.RegionName);
regionInfo.RegionLocX = int.Parse(MainConsole.Instance.Prompt("Region Position X: ", regionInfo.RegionLocX.ToString()));
regionInfo.RegionLocY = int.Parse(MainConsole.Instance.Prompt("Region Position Y: ", regionInfo.RegionLocY.ToString()));
regionInfo.InternalEndPoint.Port = int.Parse(MainConsole.Instance.Prompt("HTTP Port: ", regionInfo.InternalEndPoint.Port.ToString()));
}
//ISimulationDataStore simulationStore = sceneManager.SimulationDataService;
//Hijack the old simulation service and replace it with ours
sceneManager.SimulationDataService = new OverridenFileBasedSimulationData (m_fileName, m_saveNewArchiveAtClose);
///Now load the region!
sceneManager.AllRegions++;
sceneManager.StartNewRegion (regionInfo);
}
示例9: Start
public void Start(IConfigSource config, IRegistryCore registry)
{
string IARName = "DefaultInventory.iar";
IniConfigSource iniSource = null;
try
{
iniSource = new IniConfigSource("DefaultInventory/Inventory.ini", Nini.Ini.IniFileType.AuroraStyle);
}
catch
{
}
IConfig libConfig = config.Configs["DefaultAssetsIARCreator"];
if (libConfig == null)
libConfig = iniSource.Configs["DefaultAssetsIARCreator"];
if (libConfig != null)
{
if (!libConfig.GetBoolean("Enabled", false))
return;
IARName = libConfig.GetString("NameOfIAR", IARName);
}
else
return;
m_service = registry.RequestModuleInterface<ILibraryService>();
RegionInfo regInfo = new RegionInfo();
IScene m_MockScene = null;
//Make the scene for the IAR loader
if (registry is IScene)
m_MockScene = (IScene)registry;
else
{
m_MockScene = new Scene();
m_MockScene.Initialize(regInfo);
m_MockScene.AddModuleInterfaces(registry.GetInterfaces());
}
UserAccount uinfo = m_MockScene.UserAccountService.GetUserAccount(UUID.Zero, m_service.LibraryOwner);
//Make the user account for the default IAR
if (uinfo == null)
{
uinfo = new UserAccount(m_service.LibraryOwner);
uinfo.Name = m_service.LibraryOwnerName;
m_MockScene.InventoryService.CreateUserInventory(m_service.LibraryOwner, false);
}
List<AssetBase> assets = new List<AssetBase> ();
if (m_MockScene.InventoryService != null)
{
//Add the folders to the user's inventory
InventoryCollection i = m_MockScene.InventoryService.GetFolderContent (m_service.LibraryOwner, UUID.Zero);
if (i != null)
{
foreach (InventoryItemBase item in i.Items)
{
AssetBase asset = m_MockScene.RequestModuleInterface<IAssetService> ().Get (item.AssetID.ToString ());
if (asset != null)
assets.Add (asset);
}
}
}
InventoryFolderBase rootFolder = null;
List<InventoryFolderBase> rootFolders = m_MockScene.InventoryService.GetRootFolders (m_service.LibraryOwner);
foreach (InventoryFolderBase folder in rootFolders)
{
if (folder.Name == "My Inventory")
continue;
rootFolder = folder;
break;
}
if (rootFolder != null)
{
//Save the IAR of the default assets
InventoryArchiveWriteRequest write = new InventoryArchiveWriteRequest (Guid.NewGuid (), null, m_MockScene,
uinfo, "/", new GZipStream (new FileStream (IARName, FileMode.Create), CompressionMode.Compress), true, rootFolder, assets);
write.Execute ();
}
}