public OSDMap PackRegionInfoData() { OSDMap args = new OSDMap(); args["region_id"] = OSD.FromUUID(RegionID); if ((RegionName != null) && !RegionName.Equals("")) args["region_name"] = OSD.FromString(RegionName); args["region_xloc"] = OSD.FromString(RegionLocX.ToString()); args["region_yloc"] = OSD.FromString(RegionLocY.ToString()); if (RegionType != String.Empty) args["region_type"] = OSD.FromString(RegionType); args["region_size_x"] = OSD.FromInteger(RegionSizeX); args["region_size_y"] = OSD.FromInteger(RegionSizeY); args["region_size_z"] = OSD.FromInteger(RegionSizeZ); args["InfiniteRegion"] = OSD.FromBoolean(InfiniteRegion); args["scope_id"] = OSD.FromUUID(ScopeID); args["all_scope_ids"] = AllScopeIDs.ToOSDArray(); args["object_capacity"] = OSD.FromInteger(m_objectCapacity); args["region_type"] = OSD.FromString(RegionType); args["see_into_this_sim_from_neighbor"] = OSD.FromBoolean(SeeIntoThisSimFromNeighbor); args["startupType"] = OSD.FromInteger((int) Startup); args["RegionSettings"] = RegionSettings.ToOSD(); args["GridSecureSessionID"] = GridSecureSessionID; if (EnvironmentSettings != null) args["EnvironmentSettings"] = EnvironmentSettings; args["OpenRegionSettings"] = OpenRegionSettings.ToOSD(); return args; }
public void UnpackRegionInfoData(OSDMap args) { if (args.ContainsKey("region_id")) RegionID = args["region_id"].AsUUID(); if (args.ContainsKey("region_name")) RegionName = args["region_name"].AsString(); if (args.ContainsKey("http_port")) UInt32.TryParse(args["http_port"].AsString(), out m_httpPort); if (args.ContainsKey("region_xloc")) { int locx; Int32.TryParse(args["region_xloc"].AsString(), out locx); RegionLocX = locx; } if (args.ContainsKey("region_yloc")) { int locy; Int32.TryParse(args["region_yloc"].AsString(), out locy); RegionLocY = locy; } IPAddress ip_addr = null; if (args.ContainsKey("internal_ep_address")) { IPAddress.TryParse(args["internal_ep_address"].AsString(), out ip_addr); } int port = 0; if (args.ContainsKey("internal_ep_port")) { Int32.TryParse(args["internal_ep_port"].AsString(), out port); } InternalEndPoint = new IPEndPoint(ip_addr, port); if (args.ContainsKey("region_type")) m_regionType = args["region_type"].AsString(); if (args.ContainsKey("scope_id")) ScopeID = args["scope_id"].AsUUID(); if (args.ContainsKey("all_scope_ids")) AllScopeIDs = ((OSDArray) args["all_scope_ids"]).ConvertAll<UUID>(o => o); if (args.ContainsKey("region_size_x")) RegionSizeX = args["region_size_x"].AsInteger(); if (args.ContainsKey("region_size_y")) RegionSizeY = args["region_size_y"].AsInteger(); if (args.ContainsKey("region_size_z")) RegionSizeZ = args["region_size_z"].AsInteger(); if (args.ContainsKey("object_capacity")) m_objectCapacity = args["object_capacity"].AsInteger(); if (args.ContainsKey("region_type")) RegionType = args["region_type"].AsString(); if (args.ContainsKey("see_into_this_sim_from_neighbor")) SeeIntoThisSimFromNeighbor = args["see_into_this_sim_from_neighbor"].AsBoolean(); if (args.ContainsKey("startupType")) Startup = (StartupType) args["startupType"].AsInteger(); if (args.ContainsKey("InfiniteRegion")) InfiniteRegion = args["InfiniteRegion"].AsBoolean(); if (args.ContainsKey("RegionSettings")) { RegionSettings = new RegionSettings(); RegionSettings.FromOSD((OSDMap) args["RegionSettings"]); } if (args.ContainsKey("GridSecureSessionID")) GridSecureSessionID = args["GridSecureSessionID"]; if (args.ContainsKey("OpenRegionSettings")) { OpenRegionSettings = new OpenRegionSettings(); OpenRegionSettings.FromOSD((OSDMap) args["OpenRegionSettings"]); } else OpenRegionSettings = new OpenRegionSettings(); if (args.ContainsKey("EnvironmentSettings")) EnvironmentSettings = args["EnvironmentSettings"]; }
/// <summary> /// Deserialize settings /// </summary> /// <param name="serializedSettings"></param> /// <returns></returns> /// <exception cref="System.Xml.XmlException"></exception> public static RegionSettings Deserialize(string serializedSettings) { RegionSettings settings = new RegionSettings(); StringReader sr = new StringReader(serializedSettings); XmlTextReader xtr = new XmlTextReader(sr); xtr.ReadStartElement("RegionSettings"); xtr.ReadStartElement("General"); while (xtr.Read() && xtr.NodeType != XmlNodeType.EndElement) { switch (xtr.Name) { case "AllowDamage": settings.AllowDamage = bool.Parse(xtr.ReadElementContentAsString()); break; case "AllowLandResell": settings.AllowLandResell = bool.Parse(xtr.ReadElementContentAsString()); break; case "AllowLandJoinDivide": settings.AllowLandJoinDivide = bool.Parse(xtr.ReadElementContentAsString()); break; case "BlockFly": settings.BlockFly = bool.Parse(xtr.ReadElementContentAsString()); break; case "BlockLandShowInSearch": settings.BlockShowInSearch = bool.Parse(xtr.ReadElementContentAsString()); break; case "BlockTerraform": settings.BlockTerraform = bool.Parse(xtr.ReadElementContentAsString()); break; case "DisableCollisions": settings.DisableCollisions = bool.Parse(xtr.ReadElementContentAsString()); break; case "DisablePhysics": settings.DisablePhysics = bool.Parse(xtr.ReadElementContentAsString()); break; case "DisableScripts": settings.DisableScripts = bool.Parse(xtr.ReadElementContentAsString()); break; case "MaturityRating": settings.Maturity = int.Parse(xtr.ReadElementContentAsString()); break; case "RestrictPushing": settings.RestrictPushing = bool.Parse(xtr.ReadElementContentAsString()); break; case "AgentLimit": settings.AgentLimit = int.Parse(xtr.ReadElementContentAsString()); break; case "ObjectBonus": settings.ObjectBonus = double.Parse(xtr.ReadElementContentAsString(), Culture.NumberFormatInfo); break; } } xtr.ReadEndElement(); xtr.ReadStartElement("GroundTextures"); while (xtr.Read() && xtr.NodeType != XmlNodeType.EndElement) { switch (xtr.Name) { case "Texture1": settings.TerrainTexture1 = UUID.Parse(xtr.ReadElementContentAsString()); break; case "Texture2": settings.TerrainTexture2 = UUID.Parse(xtr.ReadElementContentAsString()); break; case "Texture3": settings.TerrainTexture3 = UUID.Parse(xtr.ReadElementContentAsString()); break; case "Texture4": settings.TerrainTexture4 = UUID.Parse(xtr.ReadElementContentAsString()); break; case "ElevationLowSW": settings.Elevation1SW = double.Parse(xtr.ReadElementContentAsString(), Culture.NumberFormatInfo); break; case "ElevationLowNW": settings.Elevation1NW = double.Parse(xtr.ReadElementContentAsString(), Culture.NumberFormatInfo); break; case "ElevationLowSE": settings.Elevation1SE = double.Parse(xtr.ReadElementContentAsString(), Culture.NumberFormatInfo); break; case "ElevationLowNE": settings.Elevation1NE = double.Parse(xtr.ReadElementContentAsString(), Culture.NumberFormatInfo); break; case "ElevationHighSW": settings.Elevation2SW = double.Parse(xtr.ReadElementContentAsString(), Culture.NumberFormatInfo); break; case "ElevationHighNW": settings.Elevation2NW = double.Parse(xtr.ReadElementContentAsString(), Culture.NumberFormatInfo); break; case "ElevationHighSE": settings.Elevation2SE = double.Parse(xtr.ReadElementContentAsString(), Culture.NumberFormatInfo); break; case "ElevationHighNE": settings.Elevation2NE = double.Parse(xtr.ReadElementContentAsString(), Culture.NumberFormatInfo); break; } } xtr.ReadEndElement(); xtr.ReadStartElement("Terrain"); while (xtr.Read() && xtr.NodeType != XmlNodeType.EndElement) { switch (xtr.Name) { case "WaterHeight": settings.WaterHeight = double.Parse(xtr.ReadElementContentAsString(), Culture.NumberFormatInfo); break; case "TerrainRaiseLimit": settings.TerrainRaiseLimit = double.Parse(xtr.ReadElementContentAsString(), Culture.NumberFormatInfo); break; case "TerrainLowerLimit": settings.TerrainLowerLimit = double.Parse(xtr.ReadElementContentAsString(), Culture.NumberFormatInfo); break; case "UseEstateSun": settings.UseEstateSun = bool.Parse(xtr.ReadElementContentAsString()); break; case "FixedSun": settings.FixedSun = bool.Parse(xtr.ReadElementContentAsString()); break; } } xtr.Close(); return settings; }
public static string Serialize(RegionSettings settings) { StringWriter sw = new StringWriter(); XmlTextWriter xtw = new XmlTextWriter(sw) {Formatting = Formatting.Indented}; xtw.WriteStartDocument(); xtw.WriteStartElement("RegionSettings"); xtw.WriteStartElement("General"); xtw.WriteElementString("AllowDamage", settings.AllowDamage.ToString()); xtw.WriteElementString("AllowLandResell", settings.AllowLandResell.ToString()); xtw.WriteElementString("AllowLandJoinDivide", settings.AllowLandJoinDivide.ToString()); xtw.WriteElementString("BlockFly", settings.BlockFly.ToString()); xtw.WriteElementString("BlockLandShowInSearch", settings.BlockShowInSearch.ToString()); xtw.WriteElementString("BlockTerraform", settings.BlockTerraform.ToString()); xtw.WriteElementString("DisableCollisions", settings.DisableCollisions.ToString()); xtw.WriteElementString("DisablePhysics", settings.DisablePhysics.ToString()); xtw.WriteElementString("DisableScripts", settings.DisableScripts.ToString()); xtw.WriteElementString("MaturityRating", settings.Maturity.ToString()); xtw.WriteElementString("RestrictPushing", settings.RestrictPushing.ToString()); xtw.WriteElementString("AgentLimit", settings.AgentLimit.ToString()); xtw.WriteElementString("ObjectBonus", settings.ObjectBonus.ToString()); xtw.WriteEndElement(); xtw.WriteStartElement("GroundTextures"); xtw.WriteElementString("Texture1", settings.TerrainTexture1.ToString()); xtw.WriteElementString("Texture2", settings.TerrainTexture2.ToString()); xtw.WriteElementString("Texture3", settings.TerrainTexture3.ToString()); xtw.WriteElementString("Texture4", settings.TerrainTexture4.ToString()); xtw.WriteElementString("ElevationLowSW", settings.Elevation1SW.ToString()); xtw.WriteElementString("ElevationLowNW", settings.Elevation1NW.ToString()); xtw.WriteElementString("ElevationLowSE", settings.Elevation1SE.ToString()); xtw.WriteElementString("ElevationLowNE", settings.Elevation1NE.ToString()); xtw.WriteElementString("ElevationHighSW", settings.Elevation2SW.ToString()); xtw.WriteElementString("ElevationHighNW", settings.Elevation2NW.ToString()); xtw.WriteElementString("ElevationHighSE", settings.Elevation2SE.ToString()); xtw.WriteElementString("ElevationHighNE", settings.Elevation2NE.ToString()); xtw.WriteEndElement(); xtw.WriteStartElement("Terrain"); xtw.WriteElementString("WaterHeight", settings.WaterHeight.ToString()); xtw.WriteElementString("TerrainRaiseLimit", settings.TerrainRaiseLimit.ToString()); xtw.WriteElementString("TerrainLowerLimit", settings.TerrainLowerLimit.ToString()); xtw.WriteElementString("UseEstateSun", settings.UseEstateSun.ToString()); xtw.WriteElementString("FixedSun", settings.FixedSun.ToString()); // XXX: Need to expose interface to get sun phase information from sun module // xtw.WriteStartElement("SunPhase", xtw.WriteEndElement(); xtw.WriteEndElement(); xtw.Close(); return sw.ToString(); }
private warp_Object CreateTerrain(WarpRenderer renderer, bool textureTerrain) { ITerrainChannel terrain = m_scene.RequestModuleInterface <ITerrainChannel>(); float diff = (float)m_scene.RegionInfo.RegionSizeY / (float)Constants.RegionSize; warp_Object obj = new warp_Object(Constants.RegionSize * Constants.RegionSize, ((Constants.RegionSize - 1) * (Constants.RegionSize - 1) * 2)); for (float y = 0; y < m_scene.RegionInfo.RegionSizeY; y += diff) { for (float x = 0; x < m_scene.RegionInfo.RegionSizeX; x += diff) { warp_Vector pos = ConvertVector(x, y, terrain[(int)x, (int)y]); obj.addVertex(new warp_Vertex(pos, x / (float)(m_scene.RegionInfo.RegionSizeX), (((float)m_scene.RegionInfo.RegionSizeX) - y) / (m_scene.RegionInfo.RegionSizeX))); } } for (float y = 0; y < m_scene.RegionInfo.RegionSizeY; y += diff) { for (float x = 0; x < m_scene.RegionInfo.RegionSizeX; x += diff) { float newX = x / diff; float newY = y / diff; if (newX < Constants.RegionSize - 1 && newY < Constants.RegionSize - 1) { int v = (int)(newY * Constants.RegionSize + newX); // Normal Vector3 v1 = new Vector3(newX, newY, (terrain[(int)x, (int)y]) / Constants.TerrainCompression); Vector3 v2 = new Vector3(newX + 1, newY, (terrain[(int)x + 1, (int)y]) / Constants.TerrainCompression); Vector3 v3 = new Vector3(newX, newY + 1, (terrain[(int)x, (int)(y + 1)]) / Constants.TerrainCompression); warp_Vector norm = ConvertVector(SurfaceNormal(v1, v2, v3)); norm = norm.reverse(); obj.vertex(v).n = norm; // Triangle 1 obj.addTriangle( v, v + 1, v + Constants.RegionSize); // Triangle 2 obj.addTriangle( v + Constants.RegionSize + 1, v + Constants.RegionSize, v + 1); } } } renderer.Scene.addObject("Terrain", obj); UUID[] textureIDs = new UUID[4]; float[] startHeights = new float[4]; float[] heightRanges = new float[4]; RegionSettings regionInfo = m_scene.RegionInfo.RegionSettings; textureIDs[0] = regionInfo.TerrainTexture1; textureIDs[1] = regionInfo.TerrainTexture2; textureIDs[2] = regionInfo.TerrainTexture3; textureIDs[3] = regionInfo.TerrainTexture4; startHeights[0] = (float)regionInfo.Elevation1SW; startHeights[1] = (float)regionInfo.Elevation1NW; startHeights[2] = (float)regionInfo.Elevation1SE; startHeights[3] = (float)regionInfo.Elevation1NE; heightRanges[0] = (float)regionInfo.Elevation2SW; heightRanges[1] = (float)regionInfo.Elevation2NW; heightRanges[2] = (float)regionInfo.Elevation2SE; heightRanges[3] = (float)regionInfo.Elevation2NE; uint globalX, globalY; Utils.LongToUInts(m_scene.RegionInfo.RegionHandle, out globalX, out globalY); Bitmap image = TerrainSplat.Splat(terrain, textureIDs, startHeights, heightRanges, new Vector3d(globalX, globalY, 0.0), m_scene.AssetService, textureTerrain); warp_Texture texture = new warp_Texture(image); warp_Material material = new warp_Material(texture); material.setReflectivity(0); // reduces tile seams a bit thanks lkalif renderer.Scene.addMaterial("TerrainColor", material); renderer.SetObjectMaterial("Terrain", "TerrainColor"); return(obj); }
public void UnpackRegionInfoData(OSDMap args) { if (args.ContainsKey("region_id")) RegionID = args["region_id"].AsUUID(); if (args.ContainsKey("region_name")) RegionName = args["region_name"].AsString(); if (args.ContainsKey("http_port")) UInt32.TryParse(args["http_port"].AsString(), out m_httpPort); if (args.ContainsKey("region_xloc")) { int locx; Int32.TryParse(args["region_xloc"].AsString(), out locx); RegionLocX = locx; } if (args.ContainsKey("region_yloc")) { int locy; Int32.TryParse(args["region_yloc"].AsString(), out locy); RegionLocY = locy; } if (args.ContainsKey("region_type")) m_regionType = args["region_type"].AsString(); if (args.ContainsKey("scope_id")) ScopeID = args["scope_id"].AsUUID(); if (args.ContainsKey("all_scope_ids")) AllScopeIDs = ((OSDArray) args["all_scope_ids"]).ConvertAll<UUID>(o => o); if (args.ContainsKey("region_size_x")) RegionSizeX = args["region_size_x"].AsInteger(); if (args.ContainsKey("region_size_y")) RegionSizeY = args["region_size_y"].AsInteger(); if (args.ContainsKey("region_size_z")) RegionSizeZ = args["region_size_z"].AsInteger(); if (args.ContainsKey("object_capacity")) m_objectCapacity = args["object_capacity"].AsInteger(); if (args.ContainsKey("region_type")) RegionType = args["region_type"].AsString(); if (args.ContainsKey("see_into_this_sim_from_neighbor")) SeeIntoThisSimFromNeighbor = args["see_into_this_sim_from_neighbor"].AsBoolean(); if (args.ContainsKey("startupType")) Startup = (StartupType) args["startupType"].AsInteger(); if (args.ContainsKey("InfiniteRegion")) InfiniteRegion = args["InfiniteRegion"].AsBoolean(); if (args.ContainsKey("RegionSettings")) { RegionSettings = new RegionSettings(); RegionSettings.FromOSD((OSDMap) args["RegionSettings"]); } if (args.ContainsKey("GridSecureSessionID")) GridSecureSessionID = args["GridSecureSessionID"]; if (args.ContainsKey("OpenRegionSettings")) { OpenRegionSettings = new OpenRegionSettings(); OpenRegionSettings.FromOSD((OSDMap) args["OpenRegionSettings"]); } else OpenRegionSettings = new OpenRegionSettings(); if (args.ContainsKey("EnvironmentSettings")) EnvironmentSettings = args["EnvironmentSettings"]; }