public void SendEstateTerrainHeights( ScriptInstance instance, ViewerAgentAccessor agent, AnArray list) { if (list.Count % 3 != 0) { return; } lock (instance) { ViewerConnection vc; ViewerCircuit viewerCircuit; if (m_Clients.TryGetValue(agent.AgentID, out vc) && vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit)) { var msg = new EstateOwnerMessage { AgentID = agent.AgentID, SessionID = viewerCircuit.SessionID, Method = "textureheights" }; for (int i = 0; i < list.Count; i += 3) { double lowVal = list[i + 1].AsReal; double highVal = list[i + 2].AsReal; msg.ParamList.Add(string.Format(CultureInfo.InvariantCulture, "{0} {1} {2}", list[i].AsInt, lowVal, highVal).ToUTF8Bytes()); } viewerCircuit.SendMessage(msg); } } }
private void EstateOwner_InstantMessage(AgentCircuit circuit, EstateOwnerMessage req) { if (req.ParamList.Count < 2) { return; } var message = (req.ParamList.Count < 5 ? req.ParamList[1] : req.ParamList[4]).FromUTF8Bytes(); var scene = circuit.Scene; var thisRegionId = scene.ID; var estateService = scene.EstateService; uint estateId; if (estateService.RegionMap.TryGetValue(thisRegionId, out estateId)) { foreach (var regionId in estateService.RegionMap[estateId]) { if (m_Scenes.TryGetValue(regionId, out scene)) { foreach (var agent in scene.RootAgents) { agent.SendAlertMessage(message, regionId); } } } } }
public void SendEstateTerrainDetail( ScriptInstance instance, ViewerAgentAccessor agent, AnArray list) { if (list.Count % 2 != 0) { return; } lock (instance) { ViewerConnection vc; ViewerCircuit viewerCircuit; if (m_Clients.TryGetValue(agent.AgentID, out vc) && vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit)) { var msg = new EstateOwnerMessage { AgentID = agent.AgentID, SessionID = viewerCircuit.SessionID, Method = "texturedetail" }; for (int i = 0; i < list.Count; i += 2) { msg.ParamList.Add($"{list[i].AsInt} {list[i + 1].AsUUID}".ToUTF8Bytes()); } viewerCircuit.SendMessage(msg); } } }
public void SendEstateInstantMessage( ScriptInstance instance, ViewerAgentAccessor agent, string message) { lock (instance) { ViewerConnection vc; ViewerCircuit viewerCircuit; if (m_Clients.TryGetValue(agent.AgentID, out vc) && vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit)) { var msg = new EstateOwnerMessage { AgentID = agent.AgentID, SessionID = viewerCircuit.SessionID, Method = "instantmessage" }; /* first four are unused for that case */ msg.ParamList.Add(string.Empty.ToUTF8Bytes()); msg.ParamList.Add(string.Empty.ToUTF8Bytes()); msg.ParamList.Add(string.Empty.ToUTF8Bytes()); msg.ParamList.Add(string.Empty.ToUTF8Bytes()); msg.ParamList.Add(message.ToUTF8Bytes()); viewerCircuit.SendMessage(msg); } } }
public void SendEstateGetInfo( ScriptInstance instance, ViewerAgentAccessor agent, LSLKey transactionID, LSLKey invoice) { lock (instance) { ViewerConnection vc; ViewerCircuit viewerCircuit; if (m_Clients.TryGetValue(agent.AgentID, out vc) && vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit)) { var msg = new EstateOwnerMessage { AgentID = agent.AgentID, SessionID = viewerCircuit.SessionID, Method = "getinfo", TransactionID = transactionID, Invoice = invoice }; viewerCircuit.SendMessage(msg); } } }
public override void SendEstateUpdateInfo(UUID invoice, UUID transactionID, EstateInfo estate, UUID fromSceneID, bool sendToAgentOnly = true) { var msg = new EstateOwnerMessage { AgentID = Owner.ID, SessionID = SessionID, Invoice = invoice, TransactionID = transactionID, Method = "estateupdateinfo" }; msg.ParamList.Add(StringToBytes(estate.Name)); msg.ParamList.Add(StringToBytes((string)estate.Owner.ID)); msg.ParamList.Add(StringToBytes(estate.ID.ToString())); msg.ParamList.Add(StringToBytes(((uint)estate.Flags).ToString())); if (estate.UseGlobalTime) { msg.ParamList.Add(StringToBytes("0")); } else { msg.ParamList.Add(StringToBytes(((int)((estate.SunPosition + 6) * 1024)).ToString())); } msg.ParamList.Add(StringToBytes(estate.ParentEstateID.ToString())); msg.ParamList.Add(StringToBytes(estate.CovenantID.ToString())); msg.ParamList.Add(StringToBytes(estate.CovenantTimestamp.AsULong.ToString())); msg.ParamList.Add(StringToBytes(sendToAgentOnly?"1":"0")); msg.ParamList.Add(StringToBytes(estate.AbuseEmail)); SendMessageIfRootAgent(msg, fromSceneID); }
private void EstateOwner_SetRegionInfo(AgentCircuit circuit, EstateOwnerMessage req) { if (req.ParamList.Count < 9) { return; } var scene = circuit.Scene; scene.RegionSettings.BlockTerraform = ParamStringToBool(req.ParamList[0]); scene.RegionSettings.BlockFly = ParamStringToBool(req.ParamList[1]); scene.RegionSettings.AllowDamage = ParamStringToBool(req.ParamList[2]); scene.RegionSettings.AllowLandResell = ParamStringToBool(req.ParamList[3]); scene.RegionSettings.AgentLimit = (int)decimal.Parse(req.ParamList[4].FromUTF8Bytes(), CultureInfo.InvariantCulture); scene.RegionSettings.ObjectBonus = float.Parse(req.ParamList[5].FromUTF8Bytes(), CultureInfo.InvariantCulture); scene.Access = (RegionAccess)int.Parse(req.ParamList[6].FromUTF8Bytes()); scene.RegionSettings.RestrictPushing = ParamStringToBool(req.ParamList[7]); scene.RegionSettings.AllowLandJoinDivide = ParamStringToBool(req.ParamList[8]); #if DEBUG m_Log.DebugFormat("RegionFlags={0} Access={1} AgentLimit={2} ObjectBonus={3}", scene.RegionSettings.AsFlags.ToString(), scene.Access, scene.RegionSettings.AgentLimit, scene.RegionSettings.ObjectBonus); #endif scene.ReregisterRegion(); scene.TriggerRegionSettingsChanged(); }
public void SendSetRegionDebug( ScriptInstance instance, ViewerAgentAccessor agent, int disableScripts, int disableCollision, int disablePhysics) { lock (instance) { ViewerConnection vc; ViewerCircuit viewerCircuit; if (m_Clients.TryGetValue(agent.AgentID, out vc) && vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit)) { var msg = new EstateOwnerMessage { AgentID = agent.AgentID, SessionID = viewerCircuit.SessionID, Method = "setregiondebug" }; msg.ParamList.Add(disableScripts.Clamp(0, 1).ToString().ToUTF8Bytes()); msg.ParamList.Add(disableCollision.Clamp(0, 1).ToString().ToUTF8Bytes()); msg.ParamList.Add(disablePhysics.Clamp(0, 1).ToString().ToUTF8Bytes()); viewerCircuit.SendMessage(msg); } } }
/* this is groups only, so no code check inside */ private void SendEstateList(UUID transactionID, UUID invoice, List <UGI> data, uint estateID, UUID fromSceneID) { int i = 0; while (i < data.Count) { int remaining = data.Count - i; if (remaining > 50) { remaining = 50; } var msg = new EstateOwnerMessage { TransactionID = transactionID, Invoice = invoice, AgentID = Owner.ID, SessionID = SessionID, Method = "setaccess" }; msg.ParamList.Add(StringToBytes(estateID.ToString())); msg.ParamList.Add(StringToBytes(((uint)EstateAccessFlags.AllowedGroups).ToString())); msg.ParamList.Add(StringToBytes("0")); msg.ParamList.Add(StringToBytes(remaining.ToString())); msg.ParamList.Add(StringToBytes("0")); msg.ParamList.Add(StringToBytes("0")); while (remaining-- != 0) { msg.ParamList.Add(data[i++].ID.GetBytes()); } SendMessageIfRootAgent(msg, fromSceneID); } }
public void SendEstateChangeInfo( ScriptInstance instance, ViewerAgentAccessor agent, string estateName, int estateFlags, double sunPos) { lock (instance) { ViewerConnection vc; ViewerCircuit viewerCircuit; if (m_Clients.TryGetValue(agent.AgentID, out vc) && vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit)) { var msg = new EstateOwnerMessage { AgentID = agent.AgentID, SessionID = viewerCircuit.SessionID, Method = "estatechangeinfo" }; uint actSunPos = (uint)((sunPos + 6) * 1024.0); msg.ParamList.Add(estateName.ToUTF8Bytes()); msg.ParamList.Add(((uint)estateFlags).ToString().ToUTF8Bytes()); msg.ParamList.Add(actSunPos.ToString().ToUTF8Bytes()); viewerCircuit.SendMessage(msg); } } }
private void EstateOwner_Colliders(AgentCircuit circuit, EstateOwnerMessage req) { SceneInterface scene = circuit.Scene; if (scene == null) { return; } ProcessTopColliders(circuit, scene, LandStatFilterFlags.None, string.Empty); }
private void EstateOwner_SetRegionDebug(AgentCircuit circuit, EstateOwnerMessage req) { if (req.ParamList.Count < 3) { return; } var scene = circuit.Scene; scene.RegionSettings.DisableScripts = ParamStringToBool(req.ParamList[0]); scene.RegionSettings.DisableCollisions = ParamStringToBool(req.ParamList[1]); scene.RegionSettings.DisablePhysics = ParamStringToBool(req.ParamList[2]); scene.TriggerRegionSettingsChanged(); }
private void EstateOwner_SimulatorMessage(AgentCircuit circuit, EstateOwnerMessage req) { if (req.ParamList.Count < 5) { return; } var message = req.ParamList[4].FromUTF8Bytes(); foreach (var agent in circuit.Scene.Agents) { agent.SendRegionNotice(Owner, message, req.CircuitSceneID); } }
private void EstateOwner_EstateChangeInfo(AgentCircuit circuit, EstateOwnerMessage req) { if (req.ParamList.Count < 3) { return; } var scene = circuit.Scene; var param1 = (RegionOptionFlags)uint.Parse(req.ParamList[1].FromUTF8Bytes()); uint param2 = uint.Parse(req.ParamList[2].FromUTF8Bytes()); string estateName = req.ParamList[0].FromUTF8Bytes(); #if DEBUG m_Log.DebugFormat("Changing Estate Info: Name={0}, Flags={1}, SunPos={2}", estateName, param1.ToString(), param2); #endif EstateInfo estate; var estateService = scene.EstateService; uint estateID; if (estateService.RegionMap.TryGetValue(circuit.Scene.ID, out estateID) && estateService.TryGetValue(estateID, out estate)) { if (param2 != 0) { estate.UseGlobalTime = false; estate.SunPosition = (param2 / 1024.0 - 6).Clamp(0, 24); } else { estate.UseGlobalTime = true; } if (estateName.Length != 0) { estate.Name = estateName; } estate.Flags = param1; estateService.Update(estate); SendEstateUpdateInfo(req.Invoice, req.TransactionID, estate, scene.ID); foreach (var regionID in estateService.RegionMap[estateID]) { SceneInterface estateScene; if (m_Scenes.TryGetValue(regionID, out estateScene)) { estateScene.TriggerEstateUpdate(); } } } }
private void EstateOwner_EstateChangeCovenantId(AgentCircuit circuit, EstateOwnerMessage req) { if (req.ParamList.Count < 1) { return; } var covenantID = UUID.Parse(req.ParamList[0].FromUTF8Bytes()); EstateInfo estate; uint estateID; var estateService = circuit.Scene.EstateService; if (covenantID != UUID.Zero) { AssetData data; if (!circuit.Scene.AssetService.TryGetValue(covenantID, out data)) { if (circuit.Agent.AssetService.TryGetValue(covenantID, out data)) { circuit.Scene.AssetService.Store(data); } else { return; } } if (data.Type != AssetType.Notecard) { /* do not allow to set anything else than a notecard here */ return; } } if (estateService.RegionMap.TryGetValue(circuit.Scene.ID, out estateID) && estateService.TryGetValue(estateID, out estate)) { estate.CovenantID = covenantID; estate.CovenantTimestamp = Date.Now; estateService.Update(estate); foreach (var regionID in estateService.RegionMap[estateID]) { SceneInterface estateScene; if (m_Scenes.TryGetValue(regionID, out estateScene)) { estateScene.TriggerEstateUpdate(); } } } }
private void EstateOwner_Restart(AgentCircuit circuit, EstateOwnerMessage req) { if (req.ParamList.Count < 1) { return; } float timeToRestart; if (!float.TryParse(req.ParamList[0].FromUTF8Bytes(), NumberStyles.Any, CultureInfo.InvariantCulture, out timeToRestart)) { timeToRestart = 120; } circuit.Scene.RequestRegionRestart((int)timeToRestart); }
private void EstateOwner_TeleportHomeAllUsers(AgentCircuit circuit, EstateOwnerMessage req) { var scene = circuit.Scene; foreach (var targetagent in scene.RootAgents) { if (targetagent == circuit.Agent) { /* do not do self-kick */ } else if (!targetagent.TeleportHome(scene)) { targetagent.KickUser(this.GetLanguageString(circuit.Agent.CurrentCulture, "YouHaveBeenKickedSinceYouCouldNotBeTeleportedHome", "You have been kicked since you could not be teleported home.")); } } }
private void TranslateEstateOwnerMessageSetExperience(EstateOwnerMessage m, ViewerConnection vc, ViewerAgentAccessor agent) { if (m.ParamList.Count < 5) { return; } var ev = new EstateOwnerMessageSetExperienceReceivedEvent { Agent = agent, TransactionID = m.TransactionID, Invoice = m.Invoice, }; int blockedCount; int trustedCount; int allowedCount; if (!int.TryParse(m.ParamList[0].FromUTF8Bytes(), out ev.EstateID) || !int.TryParse(m.ParamList[2].FromUTF8Bytes(), out blockedCount) || !int.TryParse(m.ParamList[3].FromUTF8Bytes(), out trustedCount) || !int.TryParse(m.ParamList[4].FromUTF8Bytes(), out allowedCount)) { return; } if (m.ParamList.Count < 5 + blockedCount + trustedCount + allowedCount) { return; } int offset = 5; while (blockedCount-- > 0) { ev.Blocked.Add(new LSLKey(new UUID(m.ParamList[offset++], 0))); } while (trustedCount-- > 0) { ev.Trusted.Add(new LSLKey(new UUID(m.ParamList[offset++], 0))); } while (allowedCount-- > 0) { ev.Allowed.Add(new LSLKey(new UUID(m.ParamList[offset++], 0))); } vc.PostEvent(ev); }
private void EstateOwner_TextureHeights(AgentCircuit circuit, EstateOwnerMessage req) { var scene = circuit.Scene; foreach (byte[] b in req.ParamList) { string s = b.FromUTF8Bytes(); string[] splitfield = s.Split(' '); if (splitfield.Length != 3) { continue; } var corner = Int16.Parse(splitfield[0]); var lowValue = float.Parse(splitfield[1], CultureInfo.InvariantCulture); var highValue = float.Parse(splitfield[2], CultureInfo.InvariantCulture); switch (corner) { case 0: scene.RegionSettings.Elevation1SW = lowValue; scene.RegionSettings.Elevation2SW = highValue; break; case 1: scene.RegionSettings.Elevation1NW = lowValue; scene.RegionSettings.Elevation2NW = highValue; break; case 2: scene.RegionSettings.Elevation1SE = lowValue; scene.RegionSettings.Elevation2SE = highValue; break; case 3: scene.RegionSettings.Elevation1NE = lowValue; scene.RegionSettings.Elevation2NE = highValue; break; default: break; } } scene.TriggerRegionSettingsChanged(); }
private void EstateOwner_KickEstate(AgentCircuit circuit, EstateOwnerMessage req) { if (req.ParamList.Count < 1) { return; } var prey = UUID.Parse(req.ParamList[0].FromUTF8Bytes()); IAgent targetagent; var scene = circuit.Scene; if (scene.RootAgents.TryGetValue(prey, out targetagent)) { targetagent.KickUser(this.GetLanguageString(targetagent.CurrentCulture, "YouHaveBeenKicked", "You have been kicked.")); } }
private void EstateOwner_TeleportHomeUser(AgentCircuit circuit, EstateOwnerMessage req) { if (req.ParamList.Count < 2) { return; } var prey = UUID.Parse(req.ParamList[1].FromUTF8Bytes()); var scene = circuit.Scene; IAgent targetagent; if (scene.RootAgents.TryGetValue(prey, out targetagent) && !targetagent.TeleportHome(scene)) { targetagent.KickUser(this.GetLanguageString(circuit.Agent.CurrentCulture, "YouHaveBeenKickedSinceYouCouldNotBeTeleportedHome", "You have been kicked since you could not be teleported home.")); } }
private void EstateOwner_Terrain(AgentCircuit circuit, EstateOwnerMessage req) { if (req.ParamList.Count < 1) { return; } SceneInterface scene = circuit.Scene; if (scene == null) { return; } switch (req.ParamList[0].FromUTF8Bytes()) { case "download filename": if (req.ParamList.Count > 1) { string viewerFilename = req.ParamList[1].FromUTF8Bytes(); AddNewFile("terrain.raw", LLRAWData.ToLLRaw(scene.Terrain.AllPatches)); circuit.SendMessage(new InitiateDownload { AgentID = ID, SimFilename = "terrain.raw", ViewerFilename = viewerFilename }); } break; case "upload filename": if (req.ParamList.Count > 1) { var t = new TerrainUploadTransaction(circuit.Scene) { Filename = req.ParamList[1].FromUTF8Bytes() }; AddTerrainUploadTransaction(t, req.CircuitSceneID); } break; default: break; } }
private void EstateOwner_GetInfo(AgentCircuit circuit, EstateOwnerMessage req) { var scene = circuit.Scene; uint estateID; EstateInfo estateInfo; if (!scene.EstateService.RegionMap.TryGetValue(scene.ID, out estateID) || !scene.EstateService.TryGetValue(estateID, out estateInfo)) { return; } SendEstateList( req.TransactionID, req.Invoice, EstateAccessFlags.Managers, scene.EstateService.EstateManager.All[estateID], estateID, req.CircuitSceneID); SendEstateList( req.TransactionID, req.Invoice, EstateAccessFlags.AllowedAgents, scene.EstateService.EstateAccess.All[estateID], estateID, req.CircuitSceneID); SendEstateList( req.TransactionID, req.Invoice, scene.EstateService.EstateGroup.All[estateID], estateID, req.CircuitSceneID); SendEstateList( req.TransactionID, req.Invoice, EstateAccessFlags.BannedAgents, scene.EstateService.EstateBans.All[estateID], estateID, req.CircuitSceneID); SendEstateUpdateInfo(req.Invoice, req.TransactionID, estateInfo, req.CircuitSceneID); }
public void SendTelehubDelete( ScriptInstance instance, ViewerAgentAccessor agent) { lock (instance) { ViewerConnection vc; ViewerCircuit viewerCircuit; if (m_Clients.TryGetValue(agent.AgentID, out vc) && vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit)) { var msg = new EstateOwnerMessage { AgentID = agent.AgentID, Method = "telehub" }; msg.ParamList.Add("delete".ToUTF8Bytes()); viewerCircuit.SendMessage(msg); } } }
private void SendEstateList(UUID transactionID, UUID invoice, EstateAccessFlags code, List <UGUI> data, uint estateID, UUID fromSceneID) { int i = 0; while (i < data.Count) { int remaining = data.Count - i; if (remaining > 50) { remaining = 50; } var msg = new EstateOwnerMessage { TransactionID = transactionID, Invoice = invoice, AgentID = Owner.ID, SessionID = SessionID, Method = "setaccess" }; msg.ParamList.Add(StringToBytes(estateID.ToString())); msg.ParamList.Add(StringToBytes(((uint)code).ToString())); foreach (var flag in m_OrderedAccessFlags) { if (code == flag) { msg.ParamList.Add(StringToBytes(remaining.ToString())); } else { msg.ParamList.Add(StringToBytes("0")); } } while (remaining-- != 0) { msg.ParamList.Add(data[i++].ID.GetBytes()); } SendMessageIfRootAgent(msg, fromSceneID); } }
public void SendEstateSetRegionTerrain( ScriptInstance instance, ViewerAgentAccessor agent, LSLKey transactionID, LSLKey invoice, double waterHeight, double terrainRaiseLimit, double terrainLowerLimit, int isSunFixed, double sunPosition, int useEstateSun) { lock (instance) { ViewerConnection vc; ViewerCircuit viewerCircuit; if (m_Clients.TryGetValue(agent.AgentID, out vc) && vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit)) { var msg = new EstateOwnerMessage { AgentID = agent.AgentID, SessionID = viewerCircuit.SessionID, Method = "setregionterrain", TransactionID = transactionID, Invoice = invoice }; msg.ParamList.Add(waterHeight.ToString(CultureInfo.InvariantCulture).ToUTF8Bytes()); msg.ParamList.Add(terrainRaiseLimit.ToString(CultureInfo.InvariantCulture).ToUTF8Bytes()); msg.ParamList.Add(terrainLowerLimit.ToString(CultureInfo.InvariantCulture).ToUTF8Bytes()); msg.ParamList.Add(useEstateSun.Clamp(0, 1).ToString().ToUTF8Bytes()); msg.ParamList.Add(isSunFixed.Clamp(0, 1).ToString().ToUTF8Bytes()); msg.ParamList.Add(sunPosition.ToString(CultureInfo.InvariantCulture).ToUTF8Bytes()); msg.ParamList.Add("0".ToUTF8Bytes()); msg.ParamList.Add("0".ToUTF8Bytes()); msg.ParamList.Add("6".ToUTF8Bytes()); viewerCircuit.SendMessage(msg); } } }
public void SendSetRegionInfo( ScriptInstance instance, ViewerAgentAccessor agent, int blockTerraform, int blockFly, int allowDamage, int allowLandResell, int agentLimit, double objectBonus, int access, int restrictPushing, int allowLandJoinDivide) { lock (instance) { ViewerConnection vc; ViewerCircuit viewerCircuit; if (m_Clients.TryGetValue(agent.AgentID, out vc) && vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit)) { var msg = new EstateOwnerMessage { AgentID = agent.AgentID, SessionID = viewerCircuit.SessionID, Method = "setregioninfo" }; msg.ParamList.Add(blockTerraform.Clamp(0, 1).ToString().ToUTF8Bytes()); msg.ParamList.Add(blockFly.Clamp(0, 1).ToString().ToUTF8Bytes()); msg.ParamList.Add(allowDamage.Clamp(0, 1).ToString().ToUTF8Bytes()); msg.ParamList.Add(allowLandResell.Clamp(0, 1).ToString().ToUTF8Bytes()); msg.ParamList.Add(agentLimit.ToString().ToUTF8Bytes()); msg.ParamList.Add(string.Format(CultureInfo.InvariantCulture, "{0}", objectBonus).ToUTF8Bytes()); msg.ParamList.Add(access.ToString().ToUTF8Bytes()); msg.ParamList.Add(restrictPushing.ToString().ToUTF8Bytes()); msg.ParamList.Add(allowLandJoinDivide.ToString().ToUTF8Bytes()); viewerCircuit.SendMessage(msg); } } }
private void EstateOwner_SetRegionTerrain(AgentCircuit circuit, EstateOwnerMessage req) { if (req.ParamList.Count != 9) { return; } var scene = circuit.Scene; scene.RegionSettings.WaterHeight = float.Parse(req.ParamList[0].FromUTF8Bytes(), CultureInfo.InvariantCulture); scene.RegionSettings.TerrainRaiseLimit = float.Parse(req.ParamList[1].FromUTF8Bytes(), CultureInfo.InvariantCulture); scene.RegionSettings.TerrainLowerLimit = float.Parse(req.ParamList[2].FromUTF8Bytes(), CultureInfo.InvariantCulture); scene.RegionSettings.IsSunFixed = ParamStringToBool(req.ParamList[4]); scene.RegionSettings.SunPosition = (double.Parse(req.ParamList[5].FromUTF8Bytes(), CultureInfo.InvariantCulture) - 6).Clamp(0, 24); scene.RegionSettings.UseEstateSun = ParamStringToBool(req.ParamList[3]); /* 6 is bool estate use global time */ /* 7 is bool for IsEstateFixedSun */ /* 8 estate sun_hour */ scene.TriggerRegionSettingsChanged(); }
public void SendEstateChangeCovenantID( ScriptInstance instance, ViewerAgentAccessor agent, LSLKey id) { lock (instance) { ViewerConnection vc; ViewerCircuit viewerCircuit; if (m_Clients.TryGetValue(agent.AgentID, out vc) && vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit)) { var msg = new EstateOwnerMessage { AgentID = agent.AgentID, SessionID = viewerCircuit.SessionID, Method = "estatechangecovenantid" }; msg.ParamList.Add(id.AsUUID.GetBytes()); viewerCircuit.SendMessage(msg); } } }
public void SendRegionRestart( ScriptInstance instance, ViewerAgentAccessor agent, double timeToRestart) { lock (instance) { ViewerConnection vc; ViewerCircuit viewerCircuit; if (m_Clients.TryGetValue(agent.AgentID, out vc) && vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit)) { var msg = new EstateOwnerMessage { AgentID = agent.AgentID, SessionID = viewerCircuit.SessionID, Method = "restart" }; msg.ParamList.Add(timeToRestart.ToString(CultureInfo.InvariantCulture).ToUTF8Bytes()); viewerCircuit.SendMessage(msg); } } }