/// <summary> /// Initializes a new region using the passed regioninfo /// </summary> /// <returns></returns> /// <param name="simBase">Sim base.</param> /// <param name="regionInfo">Region info.</param> /// <param name="currentInfo">Current region info.</param> public virtual RegionInfo CreateNewRegion(ISimulationBase simBase, RegionInfo regionInfo, Dictionary <string, int> currentInfo) { ReadConfig(simBase); _regionData = new RegionData(); _regionData.Init(); // something wrong here, prompt for details if (regionInfo == null) { return(CreateNewRegion(simBase, currentInfo)); } BackupFile = regionInfo.RegionName; if (m_scene != null) { IGridRegisterModule gridRegister = m_scene.RequestModuleInterface <IGridRegisterModule>(); //Re-register so that if the position has changed, we get the new neighbors gridRegister.RegisterRegionWithGrid(m_scene, true, false, null); ForceBackup(); MainConsole.Instance.Info("[FileBasedSimulationData]: Save completed."); } return(regionInfo); }
public void CreateMapTileAsync(AssetBase Mapasset, AssetBase Terrainasset, UUID lastMapRegionUUID, UUID lastTerrainRegionUUID) { IMapImageGenerator terrain = m_scene.RequestModuleInterface <IMapImageGenerator>(); if (terrain == null) { return; } //Delete the old assets if (lastMapRegionUUID != UUID.Zero) { m_scene.AssetService.Delete(lastMapRegionUUID.ToString()); } if (lastTerrainRegionUUID != UUID.Zero) { m_scene.AssetService.Delete(lastTerrainRegionUUID.ToString()); } byte[] terraindata, mapdata; terrain.CreateMapTile(out terraindata, out mapdata); if (terraindata != null) { Terrainasset.Data = terraindata; m_scene.AssetService.Store(Terrainasset); } if (mapdata != null) { Mapasset.Data = mapdata; m_scene.AssetService.Store(Mapasset); RegenerateMaptile(Mapasset.ID, Mapasset.Data); } else if (Terrainasset != null) { RegenerateMaptile(Terrainasset.ID, Terrainasset.Data); } if (Terrainasset != null) { Terrainasset.Data = null; Terrainasset = null; } if (Mapasset != null) { Mapasset.Data = null; Mapasset = null; } //Update the grid map IGridRegisterModule gridRegModule = m_scene.RequestModuleInterface <IGridRegisterModule>(); if (gridRegModule != null) { gridRegModule.UpdateGridRegion(m_scene); } }
public void RemoveRegion(IScene scene) { scene.SimulationDataService.RemoveRegion(); IGridRegisterModule gridRegisterModule = scene.RequestModuleInterface <IGridRegisterModule>(); gridRegisterModule.DeleteRegion(scene); MainConsole.Instance.Warn("Region " + scene.RegionInfo.RegionName + " was removed, restarting the instance in 10 seconds"); System.Threading.Thread.Sleep(10000); Environment.Exit(0); }
private void OnUpdateRegion(object source, ElapsedEventArgs e) { if (m_scene != null) { IGridRegisterModule gridRegModule = m_scene.RequestModuleInterface <IGridRegisterModule>(); if (gridRegModule != null) { gridRegModule.UpdateGridRegion(m_scene); } } }
private RegionInfo CreateRegionFromConsole(RegionInfo info) { if (info == null) { info = new RegionInfo(); info.RegionID = UUID.Random(); } info.RegionName = MainConsole.Instance.Prompt("Region Name: ", info.RegionName); info.RegionLocX = int.Parse(MainConsole.Instance.Prompt("Region Location X: ", ((info.RegionLocX == 0 ? 1000 : info.RegionLocX / Constants.RegionSize)).ToString())) * Constants.RegionSize; info.RegionLocY = int.Parse(MainConsole.Instance.Prompt("Region location Y: ", ((info.RegionLocY == 0 ? 1000 : info.RegionLocY / Constants.RegionSize)).ToString())) * Constants.RegionSize; info.RegionSizeX = int.Parse(MainConsole.Instance.Prompt("Region size X: ", info.RegionSizeX.ToString())); info.RegionSizeY = int.Parse(MainConsole.Instance.Prompt("Region size Y: ", info.RegionSizeY.ToString())); info.RegionType = MainConsole.Instance.Prompt("Region Type: ", (info.RegionType == "" ? "Mainland" : info.RegionType)); info.SeeIntoThisSimFromNeighbor = bool.Parse( MainConsole.Instance.Prompt("See into this sim from neighbors: ", info.SeeIntoThisSimFromNeighbor.ToString().ToLower(), new List <string>() { "true", "false" }).ToLower()); info.ObjectCapacity = int.Parse(MainConsole.Instance.Prompt("Object capacity: ", info.ObjectCapacity == 0 ? "50000" : info.ObjectCapacity.ToString())); if (m_scene != null) { IGridRegisterModule gridRegister = m_scene.RequestModuleInterface <IGridRegisterModule>(); gridRegister.UpdateGridRegion(m_scene); ForceBackup(); MainConsole.Instance.Info("[FileBasedSimulationData]: Save completed."); } return(info); }
private object EventManager_OnGenericEvent(string FunctionName, object parameters) { if (FunctionName != "PreRegisterRegion") { return(null); } IConfig handlerConfig = m_config.Configs["Handlers"]; if (handlerConfig.GetString("SimulationInHandler", "") != Name) { return(null); } if (m_LocalSimulationService != null) { return(null); } bool secure = handlerConfig.GetBoolean("SecureSimulation", true); IHttpServer server = m_registry.RequestModuleInterface <ISimulationBase>().GetHttpServer( (uint)handlerConfig.GetInt("SimulationInHandlerPort")); m_LocalSimulationService = m_registry.RequestModuleInterface <ISimulationService>(); string path = "/" + UUID.Random().ToString() + "/agent/"; IGridRegisterModule registerModule = m_registry.RequestModuleInterface <IGridRegisterModule>(); if (registerModule != null && secure) { registerModule.AddGenericInfo("SimulationAgent", path); } else { secure = false; path = "/agent/"; } server.AddHTTPHandler(path, new AgentHandler(m_LocalSimulationService.GetInnerService(), m_registry, secure). Handler); server.AddHTTPHandler("/object/", new ObjectHandler(m_LocalSimulationService.GetInnerService(), m_config).Handler); return(null); }
/// <summary> /// The god has requested that we update something in the region configs /// </summary> /// <param name="client"></param> /// <param name="BillableFactor"></param> /// <param name="PricePerMeter"></param> /// <param name="EstateID"></param> /// <param name="RegionFlags"></param> /// <param name="SimName"></param> /// <param name="RedirectX"></param> /// <param name="RedirectY"></param> public void GodUpdateRegionInfoUpdate(IClientAPI client, float BillableFactor, int PricePerMeter, ulong EstateID, ulong RegionFlags, byte[] SimName, int RedirectX, int RedirectY) { //Check god perms if (!((Scene)client.Scene).Permissions.IsGod(client.AgentId)) { return; } //Update their current region with new information string oldRegionName = client.Scene.RegionInfo.RegionName; client.Scene.RegionInfo.RegionName = Utils.BytesToString(SimName); //Set the region loc X and Y if (RedirectX != 0) { client.Scene.RegionInfo.RegionLocX = RedirectX * (int)Constants.RegionSize; } if (RedirectY != 0) { client.Scene.RegionInfo.RegionLocY = RedirectY * (int)Constants.RegionSize; } //Update the estate ID if (client.Scene.RegionInfo.EstateSettings.EstateID != EstateID) { //If they are changing estates, we have to ask them for the password to the estate, so send them an llTextBox string Password = ""; IWorldComm comm = client.Scene.RequestModuleInterface <IWorldComm>(); IDialogModule dialog = client.Scene.RequestModuleInterface <IDialogModule>(); //If the comms module is not null, we send the user a text box on a random channel so that they cannot be tapped into if (comm != null && dialog != null) { int Channel = new Random().Next(1000, 100000); //Block the channel so NOONE can access it until the question is answered comm.AddBlockedChannel(Channel); ChannelDirectory.Add(client.AgentId, new EstateChange() { Channel = Channel, EstateID = (uint)EstateID, OldEstateID = ((Scene)client.Scene).RegionInfo.EstateSettings.EstateID }); //Set the ID temperarily, if it doesn't work, we will revert it later ((Scene)client.Scene).RegionInfo.EstateSettings.EstateID = (uint)EstateID; client.OnChatFromClient += OnChatFromClient; dialog.SendTextBoxToUser(client.AgentId, "Please type the password for the estate you wish to join. (Note: this channel is secured and will not be able to be listened in on)", Channel, "Server", UUID.Zero, UUID.Zero); } else { bool changed = DataManager.DataManager.RequestPlugin <IEstateConnector>().LinkRegion(((Scene)client.Scene).RegionInfo.RegionID, (int)EstateID, Util.Md5Hash(Password)); if (!changed) { client.SendAgentAlertMessage("Unable to connect to the given estate.", false); } else { client.Scene.RegionInfo.EstateSettings.EstateID = (uint)EstateID; client.Scene.RegionInfo.EstateSettings.Save(); } } } //Set the other settings client.Scene.RegionInfo.EstateSettings.BillableFactor = BillableFactor; client.Scene.RegionInfo.EstateSettings.PricePerMeter = PricePerMeter; client.Scene.RegionInfo.EstateSettings.SetFromFlags(RegionFlags); client.Scene.RegionInfo.RegionSettings.AllowDamage = ((RegionFlags & (ulong)OpenMetaverse.RegionFlags.AllowDamage) == (ulong)OpenMetaverse.RegionFlags.AllowDamage); client.Scene.RegionInfo.RegionSettings.FixedSun = ((RegionFlags & (ulong)OpenMetaverse.RegionFlags.SunFixed) == (ulong)OpenMetaverse.RegionFlags.SunFixed); client.Scene.RegionInfo.RegionSettings.BlockTerraform = ((RegionFlags & (ulong)OpenMetaverse.RegionFlags.BlockTerraform) == (ulong)OpenMetaverse.RegionFlags.BlockTerraform); client.Scene.RegionInfo.RegionSettings.Sandbox = ((RegionFlags & (ulong)OpenMetaverse.RegionFlags.Sandbox) == (ulong)OpenMetaverse.RegionFlags.Sandbox); //Update skipping scripts/physics/collisions IEstateModule mod = client.Scene.RequestModuleInterface <IEstateModule>(); if (mod != null) { mod.SetSceneCoreDebug(((RegionFlags & (ulong)OpenMetaverse.RegionFlags.SkipScripts) == (ulong)OpenMetaverse.RegionFlags.SkipScripts), ((RegionFlags & (ulong)OpenMetaverse.RegionFlags.SkipCollisions) == (ulong)OpenMetaverse.RegionFlags.SkipCollisions), ((RegionFlags & (ulong)OpenMetaverse.RegionFlags.SkipPhysics) == (ulong)OpenMetaverse.RegionFlags.SkipPhysics)); } //Save the changes client.Scene.RegionInfo.EstateSettings.Save(); client.Scene.RegionInfo.RegionSettings.Save(); //Save the changes IConfig config = m_config.Configs["RegionStartup"]; if (config != null) { //TERRIBLE! Needs to be modular, but we can't access the module from a scene module! if (config.GetString("Default") == "RegionLoaderDataBaseSystem") { SaveChangesDatabase(client.Scene.RegionInfo); } else { SaveChangesFile(oldRegionName, client.Scene.RegionInfo); } } else { SaveChangesFile(oldRegionName, client.Scene.RegionInfo); } //Tell the clients to update all references to the new settings foreach (IScenePresence sp in client.Scene.GetScenePresences()) { HandleRegionInfoRequest(sp.ControllingClient, ((Scene)client.Scene)); } //Update the grid server as well IGridRegisterModule gridRegisterModule = client.Scene.RequestModuleInterface <IGridRegisterModule>(); if (gridRegisterModule != null) { gridRegisterModule.UpdateGridRegion(client.Scene); } }
public LSL_Integer llEdgeOfWorld(LSL_Vector pos, LSL_Vector dir) { if (!ScriptProtection.CheckThreatLevel(ThreatLevel.None, "LSL", m_host, "LSL", m_itemID)) { return(0); } // edge will be used to pass the Region Coordinates offset // we want to check for a neighboring sim LSL_Vector edge = new LSL_Vector(0, 0, 0); if (dir.x == 0) { if (dir.y == 0) { // Direction vector is 0,0 so return // false since we're staying in the sim return(0); } // Y is the only valid direction edge.y = dir.y / Math.Abs(dir.y); } else { LSL_Float mag; if (dir.x > 0) { mag = (World.RegionInfo.RegionSizeX - pos.x) / dir.x; } else { mag = (pos.x / dir.x); } mag = Math.Abs(mag); edge.y = pos.y + (dir.y * mag); if (edge.y > World.RegionInfo.RegionSizeY || edge.y < 0) { // Y goes out of bounds first edge.y = dir.y / Math.Abs(dir.y); } else { // X goes out of bounds first or its a corner exit edge.y = 0; edge.x = dir.x / Math.Abs(dir.x); } } IGridRegisterModule service = World.RequestModuleInterface <IGridRegisterModule>(); List <GridRegion> neighbors = new List <GridRegion>(); if (service != null) { neighbors = service.GetNeighbors(World); } int neighborX = World.RegionInfo.RegionLocX + (int)dir.x; int neighborY = World.RegionInfo.RegionLocY + (int)dir.y; if (neighbors.Any(neighbor => neighbor.RegionLocX == neighborX && neighbor.RegionLocY == neighborY)) { return(LSL_Integer.TRUE); } return(LSL_Integer.FALSE); }
protected void SetRegionInfoOption(string module, string[] cmdparams) { IScene scene = MainConsole.Instance.ConsoleScene; if (scene == null) { scene = m_scenes[0]; } #region 3 Params needed if (cmdparams.Length < 4) { m_log.Warn("Not enough parameters!"); return; } if (cmdparams[2] == "Maturity") { if (cmdparams[3] == "PG") { scene.RegionInfo.AccessLevel = Util.ConvertMaturityToAccessLevel(0); } else if (cmdparams[3] == "Mature") { scene.RegionInfo.AccessLevel = Util.ConvertMaturityToAccessLevel(1); } else if (cmdparams[3] == "Adult") { scene.RegionInfo.AccessLevel = Util.ConvertMaturityToAccessLevel(2); } else { m_log.Warn("Your parameter did not match any existing parameters. Try PG, Mature, or Adult"); return; } scene.RegionInfo.RegionSettings.Save(); //Tell the grid about the changes IGridRegisterModule gridRegModule = scene.RequestModuleInterface <IGridRegisterModule>(); if (gridRegModule != null) { gridRegModule.UpdateGridRegion(scene); } } #endregion #region 4 Params needed if (cmdparams.Length < 4) { m_log.Warn("Not enough parameters!"); return; } if (cmdparams[2] == "AddEstateBan".ToLower()) { EstateBan EB = new EstateBan(); EB.BannedUserID = m_scenes[0].UserAccountService.GetUserAccount(UUID.Zero, cmdparams[3], cmdparams[4]).PrincipalID; scene.RegionInfo.EstateSettings.AddBan(EB); } if (cmdparams[2] == "AddEstateManager".ToLower()) { scene.RegionInfo.EstateSettings.AddEstateManager(m_scenes[0].UserAccountService.GetUserAccount(UUID.Zero, cmdparams[3], cmdparams[4]).PrincipalID); } if (cmdparams[2] == "AddEstateAccess".ToLower()) { scene.RegionInfo.EstateSettings.AddEstateUser(m_scenes[0].UserAccountService.GetUserAccount(UUID.Zero, cmdparams[3], cmdparams[4]).PrincipalID); } if (cmdparams[2] == "RemoveEstateBan".ToLower()) { scene.RegionInfo.EstateSettings.RemoveBan(m_scenes[0].UserAccountService.GetUserAccount(UUID.Zero, cmdparams[3], cmdparams[4]).PrincipalID); } if (cmdparams[2] == "RemoveEstateManager".ToLower()) { scene.RegionInfo.EstateSettings.RemoveEstateManager(m_scenes[0].UserAccountService.GetUserAccount(UUID.Zero, cmdparams[3], cmdparams[4]).PrincipalID); } if (cmdparams[2] == "RemoveEstateAccess".ToLower()) { scene.RegionInfo.EstateSettings.RemoveEstateUser(m_scenes[0].UserAccountService.GetUserAccount(UUID.Zero, cmdparams[3], cmdparams[4]).PrincipalID); } #endregion scene.RegionInfo.RegionSettings.Save(); scene.RegionInfo.EstateSettings.Save(); }
/// <summary> /// The god has requested that we update something in the region configuration /// </summary> /// <param name="client"></param> /// <param name="BillableFactor"></param> /// <param name="PricePerMeter"></param> /// <param name="EstateID"></param> /// <param name="RegionFlags"></param> /// <param name="SimName"></param> /// <param name="RedirectX"></param> /// <param name="RedirectY"></param> public void GodUpdateRegionInfoUpdate(IClientAPI client, float BillableFactor, int PricePerMeter, ulong EstateID, ulong RegionFlags, byte [] SimName, int RedirectX, int RedirectY) { IEstateConnector estateConnector = Framework.Utilities.DataManager.RequestPlugin <IEstateConnector> (); //Check god perms if (!client.Scene.Permissions.IsGod(client.AgentId)) { return; } string oldRegionName = client.Scene.RegionInfo.RegionName; //Update their current region with new information if (Utils.BytesToString(SimName) != oldRegionName) { client.Scene.RegionInfo.RegionName = Utils.BytesToString(SimName); MainConsole.Instance.InfoFormat("[God] Region {0} has been renamed to {1}", oldRegionName, Utils.BytesToString(SimName)); client.SendAgentAlertMessage("Region has been renamed to " + Utils.BytesToString(SimName), true); } // Save the old region locations int oldRegionLocX = client.Scene.RegionInfo.RegionLocX; int oldRegionLocY = client.Scene.RegionInfo.RegionLocY; int newRegionLocX = oldRegionLocX; int newRegionLocY = oldRegionLocY; //Set the region loc X and Y if (RedirectX != 0) { client.Scene.RegionInfo.RegionLocX = RedirectX * Constants.RegionSize; newRegionLocX = RedirectX; } if (RedirectY != 0) { client.Scene.RegionInfo.RegionLocY = RedirectY * Constants.RegionSize; newRegionLocY = RedirectY; } // Check if there's changes to display the new coords on the console and inworld if (newRegionLocX != oldRegionLocX || newRegionLocY != oldRegionLocY) { var oldMapLocX = oldRegionLocX / Constants.RegionSize; var oldMapLocY = oldRegionLocY / Constants.RegionSize; var newMapLocX = newRegionLocX / Constants.RegionSize; var newMapLocY = newRegionLocY / Constants.RegionSize; MainConsole.Instance.InfoFormat("[God] Region {0} has been moved from {1},{2} to {3},{4}", client.Scene.RegionInfo.RegionName, oldMapLocX, oldMapLocY, newMapLocX, newMapLocY); client.SendAgentAlertMessage("Region has been moved from " + oldMapLocX + "," + oldMapLocY + " to " + newMapLocX + "," + newMapLocY, true); } //Update the estate ID if (client.Scene.RegionInfo.EstateSettings.EstateID != EstateID) { bool changed = estateConnector.LinkRegion(client.Scene.RegionInfo.RegionID, (int)EstateID); if (!changed) { client.SendAgentAlertMessage("Unable to connect to the given estate.", false); } else { client.Scene.RegionInfo.EstateSettings.EstateID = (uint)EstateID; estateConnector.SaveEstateSettings(client.Scene.RegionInfo.EstateSettings); } } //Set/Reset Estate settings client.Scene.RegionInfo.EstateSettings.BillableFactor = BillableFactor; client.Scene.RegionInfo.EstateSettings.PricePerMeter = PricePerMeter; client.Scene.RegionInfo.EstateSettings.SetFromFlags(RegionFlags); // Set/Reset Region flags client.Scene.RegionInfo.RegionSettings.AllowDamage = ((RegionFlags & (ulong)OpenMetaverse.RegionFlags.AllowDamage) == (ulong)OpenMetaverse.RegionFlags.AllowDamage); client.Scene.RegionInfo.RegionSettings.FixedSun = ((RegionFlags & (ulong)OpenMetaverse.RegionFlags.SunFixed) == (ulong)OpenMetaverse.RegionFlags.SunFixed); client.Scene.RegionInfo.RegionSettings.BlockTerraform = ((RegionFlags & (ulong)OpenMetaverse.RegionFlags.BlockTerraform) == (ulong)OpenMetaverse.RegionFlags.BlockTerraform); client.Scene.RegionInfo.RegionSettings.Sandbox = ((RegionFlags & (ulong)OpenMetaverse.RegionFlags.Sandbox) == (ulong)OpenMetaverse.RegionFlags.Sandbox); //Update skipping scripts/physics/collisions IEstateModule mod = client.Scene.RequestModuleInterface <IEstateModule> (); if (mod != null) { mod.SetSceneCoreDebug( ((RegionFlags & (ulong)OpenMetaverse.RegionFlags.SkipScripts) == (ulong)OpenMetaverse.RegionFlags.SkipScripts), ((RegionFlags & (ulong)OpenMetaverse.RegionFlags.SkipCollisions) == (ulong)OpenMetaverse.RegionFlags.SkipCollisions), ((RegionFlags & (ulong)OpenMetaverse.RegionFlags.SkipPhysics) == (ulong)OpenMetaverse.RegionFlags.SkipPhysics)); } //Save the changes estateConnector.SaveEstateSettings(client.Scene.RegionInfo.EstateSettings); //Tell the clients to update all references to the new settings foreach (IScenePresence sp in client.Scene.GetScenePresences()) { HandleRegionInfoRequest(sp.ControllingClient, client.Scene); } //Update the grid server as well IGridRegisterModule gridRegisterModule = client.Scene.RequestModuleInterface <IGridRegisterModule> (); if (gridRegisterModule != null) { gridRegisterModule.UpdateGridRegion(client.Scene); } }
/// <summary> /// The god has requested that we update something in the region configs /// </summary> /// <param name = "client"></param> /// <param name = "BillableFactor"></param> /// <param name = "PricePerMeter"></param> /// <param name = "EstateID"></param> /// <param name = "RegionFlags"></param> /// <param name = "SimName"></param> /// <param name = "RedirectX"></param> /// <param name = "RedirectY"></param> public void GodUpdateRegionInfoUpdate(IClientAPI client, float BillableFactor, int PricePerMeter, ulong EstateID, ulong RegionFlags, byte[] SimName, int RedirectX, int RedirectY) { //Check god perms if (!client.Scene.Permissions.IsGod(client.AgentId)) { return; } //Update their current region with new information string oldRegionName = client.Scene.RegionInfo.RegionName; client.Scene.RegionInfo.RegionName = Utils.BytesToString(SimName); //Set the region loc X and Y if (RedirectX != 0) { client.Scene.RegionInfo.RegionLocX = RedirectX * Constants.RegionSize; } if (RedirectY != 0) { client.Scene.RegionInfo.RegionLocY = RedirectY * Constants.RegionSize; } //Update the estate ID if (client.Scene.RegionInfo.EstateSettings.EstateID != EstateID) { bool changed = DataManager.DataManager.RequestPlugin <IEstateConnector>().LinkRegion( client.Scene.RegionInfo.RegionID, (int)EstateID); if (!changed) { client.SendAgentAlertMessage("Unable to connect to the given estate.", false); } else { client.Scene.RegionInfo.EstateSettings.EstateID = (uint)EstateID; client.Scene.RegionInfo.EstateSettings.Save(); } } //Set the other settings client.Scene.RegionInfo.EstateSettings.BillableFactor = BillableFactor; client.Scene.RegionInfo.EstateSettings.PricePerMeter = PricePerMeter; client.Scene.RegionInfo.EstateSettings.SetFromFlags(RegionFlags); client.Scene.RegionInfo.RegionSettings.AllowDamage = ((RegionFlags & (ulong)OpenMetaverse.RegionFlags.AllowDamage) == (ulong)OpenMetaverse.RegionFlags.AllowDamage); client.Scene.RegionInfo.RegionSettings.FixedSun = ((RegionFlags & (ulong)OpenMetaverse.RegionFlags.SunFixed) == (ulong)OpenMetaverse.RegionFlags.SunFixed); client.Scene.RegionInfo.RegionSettings.BlockTerraform = ((RegionFlags & (ulong)OpenMetaverse.RegionFlags.BlockTerraform) == (ulong)OpenMetaverse.RegionFlags.BlockTerraform); client.Scene.RegionInfo.RegionSettings.Sandbox = ((RegionFlags & (ulong)OpenMetaverse.RegionFlags.Sandbox) == (ulong)OpenMetaverse.RegionFlags.Sandbox); //Update skipping scripts/physics/collisions IEstateModule mod = client.Scene.RequestModuleInterface <IEstateModule>(); if (mod != null) { mod.SetSceneCoreDebug( ((RegionFlags & (ulong)OpenMetaverse.RegionFlags.SkipScripts) == (ulong)OpenMetaverse.RegionFlags.SkipScripts), ((RegionFlags & (ulong)OpenMetaverse.RegionFlags.SkipCollisions) == (ulong)OpenMetaverse.RegionFlags.SkipCollisions), ((RegionFlags & (ulong)OpenMetaverse.RegionFlags.SkipPhysics) == (ulong)OpenMetaverse.RegionFlags.SkipPhysics)); } //Save the changes client.Scene.RegionInfo.EstateSettings.Save(); client.Scene.RegionInfo.RegionSettings.Save(); //Save the changes IConfig config = m_config.Configs["RegionStartup"]; if (config != null) { //TERRIBLE! Needs to be modular, but we can't access the module from a scene module! if (config.GetString("Default") == "RegionLoaderDataBaseSystem") { SaveChangesDatabase(client.Scene.RegionInfo); } else { SaveChangesFile(oldRegionName, client.Scene.RegionInfo); } } else { SaveChangesFile(oldRegionName, client.Scene.RegionInfo); } //Tell the clients to update all references to the new settings foreach (IScenePresence sp in client.Scene.GetScenePresences()) { HandleRegionInfoRequest(sp.ControllingClient, client.Scene); } //Update the grid server as well IGridRegisterModule gridRegisterModule = client.Scene.RequestModuleInterface <IGridRegisterModule>(); if (gridRegisterModule != null) { gridRegisterModule.UpdateGridRegion(client.Scene); } }
/// <summary> /// Creates/updates a region from console. /// </summary> /// <returns>The region from console.</returns> /// <param name="info">Info.</param> /// <param name="prompt">If set to <c>true</c> prompt.</param> /// <param name="currentInfo">Current info.</param> RegionInfo CreateRegionFromConsole(RegionInfo info, Boolean prompt, Dictionary <string, int> currentInfo) { if (info == null || info.NewRegion) { if (info == null) { info = new RegionInfo(); } info.RegionID = UUID.Random(); if (currentInfo != null) { info.RegionLocX = currentInfo ["minX"] > 0 ? currentInfo ["minX"] : 1000 * Constants.RegionSize; info.RegionLocY = currentInfo ["minY"] > 0 ? currentInfo ["minY"] : 1000 * Constants.RegionSize; info.RegionPort = currentInfo ["port"] > 0 ? currentInfo ["port"] + 1 : 9000; } else { info.RegionLocX = 1000 * Constants.RegionSize; info.RegionLocY = 1000 * Constants.RegionSize; info.RegionPort = 9000; } prompt = true; } // prompt for user input if (prompt) { Utilities.MarkovNameGenerator rNames = new Utilities.MarkovNameGenerator(); string regionName = rNames.FirstName(m_regionNameSeed == null ? Utilities.RegionNames: m_regionNameSeed, 3, 7); if (info.RegionName != "") { regionName = info.RegionName; } do { info.RegionName = MainConsole.Instance.Prompt("Region Name (? for suggestion)", regionName); if (info.RegionName == "" || info.RegionName == "?") { regionName = rNames.NextName; info.RegionName = ""; continue; } }while (info.RegionName == ""); rNames.Reset(); info.RegionLocX = int.Parse(MainConsole.Instance.Prompt("Region Location X", ((info.RegionLocX == 0 ? 1000 : info.RegionLocX / Constants.RegionSize)).ToString())) * Constants.RegionSize; info.RegionLocY = int.Parse(MainConsole.Instance.Prompt("Region location Y", ((info.RegionLocY == 0 ? 1000 : info.RegionLocY / Constants.RegionSize)).ToString())) * Constants.RegionSize; //info.RegionLocZ = // int.Parse (MainConsole.Instance.Prompt ("Region location Z", // ((info.RegionLocZ == 0 // ? 0 // : info.RegionLocZ / Constants.RegionSize)).ToString ())) * Constants.RegionSize; info.RegionSizeX = int.Parse(MainConsole.Instance.Prompt("Region size X", info.RegionSizeX.ToString())); info.RegionSizeY = int.Parse(MainConsole.Instance.Prompt("Region size Y", info.RegionSizeY.ToString())); // * Mainland / Full Region (Private) // * Mainland / Homestead // * Mainland / Openspace // // * Estate / Full Region (Private) // info.RegionType = MainConsole.Instance.Prompt("Region Type (Mainland/Estate)", (info.RegionType == "" ? "Estate" : info.RegionType)); // Region presets or advanced setup string setupMode; string terrainOpen = "Grassland"; string terrainFull = "Grassland"; var responses = new List <string>(); if (info.RegionType.ToLower().StartsWith("m")) { // Mainland regions info.RegionType = "Mainland / "; responses.Add("Full Region"); responses.Add("Homestead"); responses.Add("Openspace"); responses.Add("Whitecore"); // TODO: remove? responses.Add("Custom"); setupMode = MainConsole.Instance.Prompt("Mainland region type?", "Full Region", responses).ToLower(); // allow specifying terrain for Openspace if (setupMode.StartsWith("o")) { terrainOpen = MainConsole.Instance.Prompt("Openspace terrain ( Grassland, Swamp, Aquatic)?", terrainOpen).ToLower(); } } else { // Estate regions info.RegionType = "Estate / "; responses.Add("Full Region"); responses.Add("Whitecore"); // TODO: WhiteCore 'standard' setup, rename?? responses.Add("Custom"); setupMode = MainConsole.Instance.Prompt("Estate region type?", "Full Region", responses).ToLower(); } // terrain can be specified for Full or custom regions if (setupMode.StartsWith("f") || setupMode.StartsWith("c")) { var tresp = new List <string>(); tresp.Add("Flatland"); tresp.Add("Grassland"); tresp.Add("Hills"); tresp.Add("Mountainous"); tresp.Add("Island"); tresp.Add("Swamp"); tresp.Add("Aquatic"); string tscape = MainConsole.Instance.Prompt("Terrain Type?", terrainFull, tresp); terrainFull = tscape; // TODO: This would be where we allow selection of preset terrain files } if (setupMode.StartsWith("c")) { info.RegionType = info.RegionType + "Custom"; info.RegionTerrain = terrainFull; // allow port selection info.RegionPort = int.Parse(MainConsole.Instance.Prompt("Region Port", info.RegionPort.ToString())); // Startup mode string scriptStart = MainConsole.Instance.Prompt( "Region Startup - Normal or Delayed startup (normal/delay) : ", "normal").ToLower(); info.Startup = scriptStart.StartsWith("n") ? StartupType.Normal : StartupType.Medium; info.SeeIntoThisSimFromNeighbor = MainConsole.Instance.Prompt( "See into this sim from neighbors (yes/no)", info.SeeIntoThisSimFromNeighbor ? "yes" : "no").ToLower() == "yes"; info.InfiniteRegion = MainConsole.Instance.Prompt( "Make an infinite region (yes/no)", info.InfiniteRegion ? "yes" : "no").ToLower() == "yes"; info.ObjectCapacity = int.Parse(MainConsole.Instance.Prompt("Object capacity", info.ObjectCapacity == 0 ? "50000" : info.ObjectCapacity.ToString())); } if (setupMode.StartsWith("w")) { // 'standard' setup info.RegionType = info.RegionType + "Whitecore"; //info.RegionPort; // use auto assigned port info.RegionTerrain = "Flatland"; info.Startup = StartupType.Normal; info.SeeIntoThisSimFromNeighbor = true; info.InfiniteRegion = false; info.ObjectCapacity = 50000; } if (setupMode.StartsWith("o")) { // 'Openspace' setup info.RegionType = info.RegionType + "Openspace"; //info.RegionPort; // use auto assigned port if (terrainOpen.StartsWith("a")) { info.RegionTerrain = "Aquatic"; } else if (terrainOpen.StartsWith("s")) { info.RegionTerrain = "Swamp"; } else { info.RegionTerrain = "Grassland"; } info.Startup = StartupType.Medium; info.SeeIntoThisSimFromNeighbor = true; info.InfiniteRegion = false; info.ObjectCapacity = 750; info.RegionSettings.AgentLimit = 10; info.RegionSettings.AllowLandJoinDivide = false; info.RegionSettings.AllowLandResell = false; } if (setupMode.StartsWith("h")) { // 'Homestead' setup info.RegionType = info.RegionType + "Homestead"; //info.RegionPort; // use auto assigned port info.RegionTerrain = "Homestead"; info.Startup = StartupType.Medium; info.SeeIntoThisSimFromNeighbor = true; info.InfiniteRegion = false; info.ObjectCapacity = 3750; info.RegionSettings.AgentLimit = 20; info.RegionSettings.AllowLandJoinDivide = false; info.RegionSettings.AllowLandResell = false; } if (setupMode.StartsWith("f")) { // 'Full Region' setup info.RegionType = info.RegionType + "Full Region"; //info.RegionPort; // use auto assigned port info.RegionTerrain = terrainFull; info.Startup = StartupType.Normal; info.SeeIntoThisSimFromNeighbor = true; info.InfiniteRegion = false; info.ObjectCapacity = 15000; info.RegionSettings.AgentLimit = 100; if (info.RegionType.StartsWith("M")) // defaults are 'true' { info.RegionSettings.AllowLandJoinDivide = false; info.RegionSettings.AllowLandResell = false; } } } // are we updating or adding?? if (m_scene != null) { IGridRegisterModule gridRegister = m_scene.RequestModuleInterface <IGridRegisterModule>(); //Re-register so that if the position has changed, we get the new neighbors gridRegister.RegisterRegionWithGrid(m_scene, true, false, null); // Tell clients about changes IEstateModule es = m_scene.RequestModuleInterface <IEstateModule> (); if (es != null) { es.sendRegionHandshakeToAll(); } // in case we have changed the name if (m_scene.SimulationDataService.BackupFile != info.RegionName) { string oldFile = BuildSaveFileName(m_scene.SimulationDataService.BackupFile); if (File.Exists(oldFile)) { File.Delete(oldFile); } m_scene.SimulationDataService.BackupFile = info.RegionName; } m_scene.SimulationDataService.ForceBackup(); MainConsole.Instance.InfoFormat("[FileBasedSimulationData]: Save of {0} completed.", info.RegionName); } return(info); }
private RegionInfo CreateRegionFromConsole(RegionInfo info) { if (info == null) { info = new RegionInfo(); info.RegionID = UUID.Random(); info.RegionPort = 9000; } info.RegionName = MainConsole.Instance.Prompt("Region Name: ", info.RegionName); info.RegionLocX = int.Parse(MainConsole.Instance.Prompt("Region Location X: ", ((info.RegionLocX == 0 ? 1000 : info.RegionLocX / Constants.RegionSize)).ToString())) * Constants.RegionSize; info.RegionLocY = int.Parse(MainConsole.Instance.Prompt("Region location Y: ", ((info.RegionLocY == 0 ? 1000 : info.RegionLocY / Constants.RegionSize)).ToString())) * Constants.RegionSize; info.RegionSizeX = int.Parse(MainConsole.Instance.Prompt("Region size X: ", info.RegionSizeX.ToString())); info.RegionSizeY = int.Parse(MainConsole.Instance.Prompt("Region size Y: ", info.RegionSizeY.ToString())); info.RegionPort = int.Parse(MainConsole.Instance.Prompt("Region Port: ", info.RegionPort.ToString())); info.RegionType = MainConsole.Instance.Prompt("Region Type: ", (info.RegionType == "" ? "Flatland" : info.RegionType)); info.SeeIntoThisSimFromNeighbor = bool.Parse( MainConsole.Instance.Prompt("See into this sim from neighbors: ", info.SeeIntoThisSimFromNeighbor.ToString().ToLower(), new List <string>() { "true", "false" }).ToLower()); info.InfiniteRegion = bool.Parse( MainConsole.Instance.Prompt("Make an infinite region: ", info.InfiniteRegion.ToString().ToLower(), new List <string>() { "true", "false" }).ToLower()); info.ObjectCapacity = int.Parse(MainConsole.Instance.Prompt("Object capacity: ", info.ObjectCapacity == 0 ? "50000" : info.ObjectCapacity.ToString())); if (m_scene != null) { IGridRegisterModule gridRegister = m_scene.RequestModuleInterface <IGridRegisterModule>(); //Re-register so that if the position has changed, we get the new neighbors gridRegister.RegisterRegionWithGrid(m_scene, true, false, null); ForceBackup(); MainConsole.Instance.Info("[FileBasedSimulationData]: Save completed."); } return(info); }
public void CreateMapTileAsync(object worthless) { IMapImageGenerator terrain = m_scene.RequestModuleInterface <IMapImageGenerator>(); if (terrain == null) { return; } bool changed = false; byte[] terraindata, mapdata; terrain.CreateMapTile(out terraindata, out mapdata); if (terraindata != null) { UUID newID = UUID.Zero; if (m_scene.RegionInfo.RegionSettings.TerrainMapImageID != UUID.Zero) { m_scene.AssetService.UpdateContent(m_scene.RegionInfo.RegionSettings.TerrainMapImageID, terraindata, out newID); m_scene.RegionInfo.RegionSettings.TerrainMapImageID = newID; changed = true; } if (m_scene.RegionInfo.RegionSettings.TerrainMapImageID == UUID.Zero) { AssetBase Terrainasset = new AssetBase( UUID.Random(), "terrainMapImage_" + m_scene.RegionInfo.RegionID.ToString(), AssetType.Simstate, m_scene.RegionInfo.RegionID) { Data = terraindata, Description = m_scene.RegionInfo.RegionName, Flags = AssetFlags.Deletable | AssetFlags.Rewritable | AssetFlags.Maptile }; newID = m_scene.AssetService.Store(Terrainasset); } if (m_scene.RegionInfo.RegionSettings.TerrainMapImageID != newID) { m_scene.RegionInfo.RegionSettings.TerrainMapImageID = newID; changed = true; } } if (mapdata != null) { UUID newID = UUID.Zero; if (m_scene.RegionInfo.RegionSettings.TerrainImageID != UUID.Zero) { m_scene.AssetService.UpdateContent(m_scene.RegionInfo.RegionSettings.TerrainImageID, mapdata, out newID); m_scene.RegionInfo.RegionSettings.TerrainImageID = newID; changed = true; } if (m_scene.RegionInfo.RegionSettings.TerrainImageID == UUID.Zero) { AssetBase Mapasset = new AssetBase( UUID.Random(), "terrainImage_" + m_scene.RegionInfo.RegionID.ToString(), AssetType.Simstate, m_scene.RegionInfo.RegionID) { Data = mapdata, Description = m_scene.RegionInfo.RegionName, Flags = AssetFlags.Deletable | AssetFlags.Rewritable | AssetFlags.Maptile }; newID = m_scene.AssetService.Store(Mapasset); } if (m_scene.RegionInfo.RegionSettings.TerrainImageID != newID) { m_scene.RegionInfo.RegionSettings.TerrainImageID = newID; changed = true; } } if (changed)//Make sure to update the db with the new settings { m_scene.RegionInfo.RegionSettings.Save(); } //Update the grid map IGridRegisterModule gridRegModule = m_scene.RequestModuleInterface <IGridRegisterModule>(); if (gridRegModule != null) { gridRegModule.UpdateGridRegion(m_scene); } }
public void CreateMapTileAsync(object worthless) { IMapImageGenerator terrain = m_scene.RequestModuleInterface <IMapImageGenerator>(); if (terrain == null) { return; } byte[] terraindata, mapdata; terrain.CreateMapTile(out terraindata, out mapdata); if (terraindata != null) { if (m_scene.RegionInfo.RegionSettings.TerrainMapImageID != UUID.Zero) { m_scene.RegionInfo.RegionSettings.TerrainMapImageID = m_scene.AssetService.UpdateContent(m_scene.RegionInfo.RegionSettings.TerrainMapImageID, terraindata); } if (m_scene.RegionInfo.RegionSettings.TerrainMapImageID == UUID.Zero) //Do not optimize away! UpdateContent can fail sometimes! { AssetBase Terrainasset = new AssetBase( UUID.Random(), "terrainMapImage_" + m_scene.RegionInfo.RegionID.ToString(), AssetType.Simstate, m_scene.RegionInfo.RegionID) { Data = terraindata, Description = m_scene.RegionInfo.RegionName, Flags = AssetFlags.Deletable | AssetFlags.Rewritable | AssetFlags.Maptile }; m_scene.RegionInfo.RegionSettings.TerrainMapImageID = m_scene.AssetService.Store(Terrainasset); } } if (mapdata != null) { if (m_scene.RegionInfo.RegionSettings.TerrainImageID != UUID.Zero) { m_scene.RegionInfo.RegionSettings.TerrainImageID = m_scene.AssetService.UpdateContent(m_scene.RegionInfo.RegionSettings.TerrainImageID, mapdata); } if (m_scene.RegionInfo.RegionSettings.TerrainImageID == UUID.Zero) //Do not optimize away! UpdateContent can fail sometimes! { AssetBase Mapasset = new AssetBase( UUID.Random(), "terrainImage_" + m_scene.RegionInfo.RegionID.ToString(), AssetType.Simstate, m_scene.RegionInfo.RegionID) { Data = mapdata, Description = m_scene.RegionInfo.RegionName, Flags = AssetFlags.Deletable | AssetFlags.Rewritable | AssetFlags.Maptile }; m_scene.RegionInfo.RegionSettings.TerrainImageID = m_scene.AssetService.Store(Mapasset); } } byte[] overlay = GenerateOverlay(); if (overlay != null) { if (m_scene.RegionInfo.RegionSettings.ParcelMapImageID != UUID.Zero) { m_scene.RegionInfo.RegionSettings.ParcelMapImageID = m_scene.AssetService.UpdateContent(m_scene.RegionInfo.RegionSettings.ParcelMapImageID, overlay); } if (m_scene.RegionInfo.RegionSettings.ParcelMapImageID == UUID.Zero) //Do not optimize away! UpdateContent can fail sometimes! { AssetBase Parcelasset = new AssetBase( UUID.Random(), "terrainMapImage_" + m_scene.RegionInfo.RegionID.ToString(), AssetType.Simstate, m_scene.RegionInfo.RegionID) { Data = overlay, Description = m_scene.RegionInfo.RegionName, Flags = AssetFlags.Deletable | AssetFlags.Rewritable | AssetFlags.Maptile }; m_scene.RegionInfo.RegionSettings.ParcelMapImageID = m_scene.AssetService.Store(Parcelasset); } } else { m_scene.RegionInfo.RegionSettings.ParcelMapImageID = UUID.Zero; } m_scene.RegionInfo.RegionSettings.TerrainMapLastRegenerated = DateTime.Now; //Update the grid map IGridRegisterModule gridRegModule = m_scene.RequestModuleInterface <IGridRegisterModule>(); if (gridRegModule != null) { gridRegModule.UpdateGridRegion(m_scene); } }
public Dictionary <string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary <string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary <string, object>(); var gridService = webInterface.Registry.RequestModuleInterface <IGridService> (); if (requestParameters.ContainsKey("Submit")) { string RegionServerURL = requestParameters["RegionServerURL"].ToString(); // required if (RegionServerURL == "") { response = "<h3>" + translator.GetTranslatedString("RegionServerURLError") + "</h3>"; return(null); } string RegionName = requestParameters["RegionName"].ToString(); //string OwnerUUID = requestParameters["OwnerUUID"].ToString(); string RegionLocX = requestParameters["RegionLocX"].ToString(); string RegionLocY = requestParameters["RegionLocY"].ToString(); string RegionSizeX = requestParameters["RegionSizeX"].ToString(); string RegionSizeY = requestParameters["RegionSizeY"].ToString(); string RegionType = requestParameters["RegionType"].ToString(); string RegionPresetType = requestParameters["RegionPresetType"].ToString(); string RegionTerrain = requestParameters["RegionTerrain"].ToString(); string RegionLoadTerrain = requestParameters.ContainsKey("RegionLoadTerrain") ? requestParameters["RegionLoadTerrain"].ToString() : ""; //bool ToSAccept = requestParameters.ContainsKey("ToSAccept") && // requestParameters["ToSAccept"].ToString() == "Accepted"; // string UserType = requestParameters.ContainsKey("UserType") // only admins can set membership // ? requestParameters ["UserType"].ToString () // : "Resident"; // a bit of idiot proofing if (RegionName == "") { response = "<h3>" + translator.GetTranslatedString("RegionNameError") + "</h3>"; return(null); } if ((RegionLocX == "") || (RegionLocY == "")) { response = "<h3>" + translator.GetTranslatedString("RegionLocationError") + "</h3>"; return(null); } // so far so good... // build the new region details int RegionPort = int.Parse(requestParameters ["RegionPort"].ToString()); var newRegion = new RegionInfo(); newRegion.RegionName = RegionName; newRegion.RegionType = RegionType; newRegion.RegionLocX = int.Parse(RegionLocX); newRegion.RegionLocY = int.Parse(RegionLocY); newRegion.RegionSizeX = int.Parse(RegionSizeX); newRegion.RegionSizeY = int.Parse(RegionSizeY); newRegion.RegionPort = RegionPort; newRegion.SeeIntoThisSimFromNeighbor = true; newRegion.InfiniteRegion = false; newRegion.ObjectCapacity = 50000; newRegion.Startup = StartupType.Normal; var regionPreset = RegionPresetType.ToLower(); if (regionPreset.StartsWith("c", System.StringComparison.Ordinal)) { newRegion.RegionPort = int.Parse(requestParameters["RegionPort"].ToString()); newRegion.SeeIntoThisSimFromNeighbor = (requestParameters["RegionVisibility"].ToString().ToLower() == "yes"); newRegion.InfiniteRegion = (requestParameters["RegionInfinite"].ToString().ToLower() == "yes"); newRegion.ObjectCapacity = int.Parse(requestParameters["RegionCapacity"].ToString()); string delayStartup = requestParameters["RegionDelayStartup"].ToString(); newRegion.Startup = delayStartup.StartsWith("n", System.StringComparison.Ordinal) ? StartupType.Normal : StartupType.Medium; } if (regionPreset.StartsWith("w", System.StringComparison.Ordinal)) { // 'standard' setup newRegion.RegionType = newRegion.RegionType + "Whitecore"; //info.RegionPort; // use auto assigned port newRegion.RegionTerrain = "Flatland"; newRegion.Startup = StartupType.Normal; newRegion.SeeIntoThisSimFromNeighbor = true; newRegion.InfiniteRegion = false; newRegion.ObjectCapacity = 50000; newRegion.RegionPort = RegionPort; } if (regionPreset.StartsWith("o", System.StringComparison.Ordinal)) { // 'Openspace' setup newRegion.RegionType = newRegion.RegionType + "Openspace"; //newRegion.RegionPort; // use auto assigned port if (RegionTerrain.StartsWith("a", System.StringComparison.Ordinal)) { newRegion.RegionTerrain = "Aquatic"; } else { newRegion.RegionTerrain = "Grassland"; } newRegion.Startup = StartupType.Medium; newRegion.SeeIntoThisSimFromNeighbor = true; newRegion.InfiniteRegion = false; newRegion.ObjectCapacity = 750; newRegion.RegionSettings.AgentLimit = 10; newRegion.RegionSettings.AllowLandJoinDivide = false; newRegion.RegionSettings.AllowLandResell = false; } if (regionPreset.StartsWith("h", System.StringComparison.Ordinal)) { // 'Homestead' setup newRegion.RegionType = newRegion.RegionType + "Homestead"; //info.RegionPort; // use auto assigned port newRegion.RegionTerrain = "Homestead"; newRegion.Startup = StartupType.Medium; newRegion.SeeIntoThisSimFromNeighbor = true; newRegion.InfiniteRegion = false; newRegion.ObjectCapacity = 3750; newRegion.RegionSettings.AgentLimit = 20; newRegion.RegionSettings.AllowLandJoinDivide = false; newRegion.RegionSettings.AllowLandResell = false; } if (regionPreset.StartsWith("f", System.StringComparison.Ordinal)) { // 'Full Region' setup newRegion.RegionType = newRegion.RegionType + "Full Region"; //newRegion.RegionPort; // use auto assigned port newRegion.RegionTerrain = RegionTerrain; newRegion.Startup = StartupType.Normal; newRegion.SeeIntoThisSimFromNeighbor = true; newRegion.InfiniteRegion = false; newRegion.ObjectCapacity = 15000; newRegion.RegionSettings.AgentLimit = 100; if (newRegion.RegionType.StartsWith("M", System.StringComparison.Ordinal)) // defaults are 'true' { newRegion.RegionSettings.AllowLandJoinDivide = false; newRegion.RegionSettings.AllowLandResell = false; } } if (RegionLoadTerrain.Length > 0) { // we are loading terrain from a file... handled later newRegion.RegionTerrain = "Custom"; } // Disabled as this is a work in progress and will break with the current scenemanager (Dec 5 - greythane- // TODO: !!! Assumes everything is local for now !!! ISceneManager scenemanager = webInterface.Registry.RequestModuleInterface <ISceneManager> (); if (scenemanager.CreateRegion(newRegion)) { IGridRegisterModule gridRegister = webInterface.Registry.RequestModuleInterface <IGridRegisterModule>(); if (gridRegister != null) { if (gridRegister.RegisterRegionWithGrid(null, true, false, null)) { response = "<h3>Successfully created region, redirecting to main page</h3>" + "<script language=\"javascript\">" + "setTimeout(function() {window.location.href = \"index.html\";}, 3000);" + "</script>"; } } // response = "<h3>" + error + "</h3>"; response = "<h3> Error registering region with grid</h3>"; } else { response = "<h3>Error creating this region.</h3>"; } return(null); } // we have or need data if (httpRequest.Query.ContainsKey("regionid")) { var region = gridService.GetRegionByUUID(null, UUID.Parse(httpRequest.Query ["regionid"].ToString())); vars.Add("RegionName", region.RegionName); UserAccount estateOwnerAccount = null; var estateOwner = UUID.Zero; IEstateConnector estateConnector = Framework.Utilities.DataManager.RequestPlugin <IEstateConnector> (); if (estateConnector != null) { EstateSettings estate = estateConnector.GetEstateSettings(region.RegionID); if (estate != null) { estateOwner = estate.EstateOwner; } var accountService = webInterface.Registry.RequestModuleInterface <IUserAccountService> (); if (accountService != null) { estateOwnerAccount = accountService.GetUserAccount(null, estate.EstateOwner); } } vars.Add("OwnerUUID", estateOwner); vars.Add("OwnerName", estateOwnerAccount != null ? estateOwnerAccount.Name : "No account found"); vars.Add("RegionLocX", region.RegionLocX / Constants.RegionSize); vars.Add("RegionLocY", region.RegionLocY / Constants.RegionSize); vars.Add("RegionSizeX", region.RegionSizeX); vars.Add("RegionSizeY", region.RegionSizeY); vars.Add("RegionType", region.RegionType); vars.Add("RegionTerrain", region.RegionTerrain); vars.Add("RegionOnline", (region.Flags & (int)RegionFlags.RegionOnline) == (int)RegionFlags.RegionOnline ? translator.GetTranslatedString("Online") : translator.GetTranslatedString("Offline")); IWebHttpTextureService webTextureService = webInterface.Registry. RequestModuleInterface <IWebHttpTextureService> (); if (webTextureService != null && region.TerrainMapImage != UUID.Zero) { vars.Add("RegionImageURL", webTextureService.GetTextureURL(region.TerrainMapImage)); } else { vars.Add("RegionImageURL", "images/icons/no_picture.jpg"); } } else { // default values // check for user region name seed string[] m_regionNameSeed = null; IConfig regionConfig = webInterface.Registry.RequestModuleInterface <ISimulationBase>().ConfigSource.Configs["FileBasedSimulationData"]; if (regionConfig != null) { string regionNameSeed = regionConfig.GetString("RegionNameSeed", ""); if (regionNameSeed != "") { m_regionNameSeed = regionNameSeed.Split(','); } } var rNames = new Utilities.MarkovNameGenerator(); string regionName = rNames.FirstName(m_regionNameSeed == null ? Utilities.RegionNames: m_regionNameSeed, 3, 7); vars.Add("RegionName", regionName); var scenemanager = webInterface.Registry.RequestModuleInterface <ISceneManager> (); var gconnector = Framework.Utilities.DataManager.RequestPlugin <IGenericsConnector>(); var settings = gconnector.GetGeneric <WebUISettings>(UUID.Zero, "WebUISettings", "Settings"); if (settings == null) { settings = new WebUISettings(); } // get some current details //List<GridRegion> regions = gridService.GetRegionsByName(null, "", null,null); var currentInfo = scenemanager.FindCurrentRegionInfo(); //Dictionary<string, int> currentInfo = null; if (currentInfo != null) { vars.Add("RegionLocX", currentInfo ["minX"] > 0 ? currentInfo ["minX"] : settings.MapCenter.X); vars.Add("RegionLocY", currentInfo ["minY"] > 0 ? currentInfo ["minY"] : settings.MapCenter.Y); vars.Add("RegionPort", currentInfo ["port"] > 0 ? currentInfo ["port"] + 1 : 9000); } else { vars.Add("RegionLocX", settings.MapCenter.X); vars.Add("RegionLocY", settings.MapCenter.Y); vars.Add("RegionPort", 9000); } vars.Add("RegionSizeX", Constants.RegionSize); vars.Add("RegionSizeY", Constants.RegionSize); vars.Add("RegionType", WebHelpers.RegionTypeArgs(translator)); vars.Add("RegionPresetType", WebHelpers.RegionPresetArgs(translator)); vars.Add("RegionTerrain", WebHelpers.RegionTerrainArgs(translator)); } // Labels //vars.Add ("RegionInformationText", translator.GetTranslatedString ("RegionInformationText")); vars.Add("RegionNameText", translator.GetTranslatedString("RegionNameText")); vars.Add("RegionLocationText", translator.GetTranslatedString("RegionLocationText")); vars.Add("RegionSizeText", translator.GetTranslatedString("RegionSizeText")); vars.Add("RegionTypeText", translator.GetTranslatedString("RegionTypeText")); vars.Add("RegionPresetText", translator.GetTranslatedString("RegionPresetText")); vars.Add("RegionTerrainText", translator.GetTranslatedString("RegionTerrainText")); vars.Add("OwnerNameText", translator.GetTranslatedString("OwnerNameText")); vars.Add("RegionPortText", translator.GetTranslatedString("RegionPortText")); vars.Add("RegionDelayStartupText", translator.GetTranslatedString("RegionDelayStartupText")); vars.Add("RegionVisibilityText", translator.GetTranslatedString("RegionVisibilityText")); vars.Add("RegionInfiniteText", translator.GetTranslatedString("RegionInfiniteText")); vars.Add("RegionCapacityText", translator.GetTranslatedString("RegionCapacityText")); vars.Add("Yes", translator.GetTranslatedString("Yes")); vars.Add("No", translator.GetTranslatedString("No")); vars.Add("Accept", translator.GetTranslatedString("Accept")); vars.Add("Submit", translator.GetTranslatedString("Submit")); vars.Add("SubmitURL", "home.html"); vars.Add("ErrorMessage", ""); return(vars); }
protected void SetRegionInfoOption(IScene scene, string[] cmdparams) { #region 3 Params needed if (cmdparams.Length < 4) { MainConsole.Instance.Warn("Not enough parameters!"); return; } if (cmdparams[2] == "Maturity") { switch (cmdparams[3]) { case "PG": m_scene.RegionInfo.AccessLevel = Util.ConvertMaturityToAccessLevel(0); break; case "Mature": m_scene.RegionInfo.AccessLevel = Util.ConvertMaturityToAccessLevel(1); break; case "Adult": m_scene.RegionInfo.AccessLevel = Util.ConvertMaturityToAccessLevel(2); break; default: MainConsole.Instance.Warn( "Your parameter did not match any existing parameters. Try PG, Mature, or Adult"); return; } //Tell the grid about the changes IGridRegisterModule gridRegModule = m_scene.RequestModuleInterface <IGridRegisterModule>(); if (gridRegModule != null) { gridRegModule.UpdateGridRegion(m_scene); } } #endregion #region 4 Params needed if (cmdparams.Length < 4) { MainConsole.Instance.Warn("Not enough parameters!"); return; } if (cmdparams[2] == "AddEstateBan".ToLower()) { EstateBan EB = new EstateBan { BannedUserID = m_scene.UserAccountService.GetUserAccount(null, cmdparams[3], cmdparams[4]).PrincipalID }; m_scene.RegionInfo.EstateSettings.AddBan(EB); } if (cmdparams[2] == "AddEstateManager".ToLower()) { m_scene.RegionInfo.EstateSettings.AddEstateManager( m_scene.UserAccountService.GetUserAccount(null, cmdparams[3], cmdparams[4]).PrincipalID); } if (cmdparams[2] == "AddEstateAccess".ToLower()) { m_scene.RegionInfo.EstateSettings.AddEstateUser( m_scene.UserAccountService.GetUserAccount(null, cmdparams[3], cmdparams[4]).PrincipalID); } if (cmdparams[2] == "RemoveEstateBan".ToLower()) { m_scene.RegionInfo.EstateSettings.RemoveBan( m_scene.UserAccountService.GetUserAccount(null, cmdparams[3], cmdparams[4]).PrincipalID); } if (cmdparams[2] == "RemoveEstateManager".ToLower()) { m_scene.RegionInfo.EstateSettings.RemoveEstateManager( m_scene.UserAccountService.GetUserAccount(null, cmdparams[3], cmdparams[4]).PrincipalID); } if (cmdparams[2] == "RemoveEstateAccess".ToLower()) { m_scene.RegionInfo.EstateSettings.RemoveEstateUser( m_scene.UserAccountService.GetUserAccount(null, cmdparams[3], cmdparams[4]).PrincipalID); } #endregion Aurora.Framework.Utilities.DataManager.RequestPlugin <IEstateConnector>(). SaveEstateSettings(m_scene.RegionInfo.EstateSettings); }