In my crusade against facelights, I am striking the killing blow. Add a

DisableFacelights option to OpenSim.ini to finally kill those immersion-
breaking, silly vanity lights that destroy nighttime RP. Girls, you look
just fine without them. Guys, you too. Thank you. Melanie has left the building.
prebuild-update
Melanie 2010-08-08 01:57:02 +01:00
parent ab5a461c5c
commit cd2c7b9ac9
3 changed files with 33 additions and 0 deletions

View File

@ -314,6 +314,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private int m_cachedTextureSerial; private int m_cachedTextureSerial;
private PriorityQueue m_entityUpdates; private PriorityQueue m_entityUpdates;
private Prioritizer m_prioritizer; private Prioritizer m_prioritizer;
private bool m_disableFacelights = false;
/// <value> /// <value>
/// List used in construction of data blocks for an object update packet. This is to stop us having to /// List used in construction of data blocks for an object update packet. This is to stop us having to
@ -407,6 +408,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
set { m_IsLoggingOut = value; } set { m_IsLoggingOut = value; }
} }
public bool DisableFacelights
{
get { return m_disableFacelights; }
set { m_disableFacelights = value; }
}
public bool SendLogoutPacketWhenClosing { set { m_SendLogoutPacketWhenClosing = value; } } public bool SendLogoutPacketWhenClosing { set { m_SendLogoutPacketWhenClosing = value; } }
#endregion Properties #endregion Properties
@ -3487,6 +3494,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP
EntityUpdate update; EntityUpdate update;
while (updatesThisCall < maxUpdates && m_entityUpdates.TryDequeue(out update)) while (updatesThisCall < maxUpdates && m_entityUpdates.TryDequeue(out update))
{ {
if (update.Entity is SceneObjectPart)
{
SceneObjectPart part = (SceneObjectPart)update.Entity;
if (part.ParentGroup.IsAttachment && m_disableFacelights)
{
if (part.ParentGroup.RootPart.Shape.State != (byte)AttachmentPoint.LeftHand &&
part.ParentGroup.RootPart.Shape.State != (byte)AttachmentPoint.RightHand)
{
part.Shape.LightEntry = false;
}
}
}
++updatesThisCall; ++updatesThisCall;
#region UpdateFlags to packet type conversion #region UpdateFlags to packet type conversion

View File

@ -153,6 +153,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private int m_defaultRTO = 0; private int m_defaultRTO = 0;
private int m_maxRTO = 0; private int m_maxRTO = 0;
private bool m_disableFacelights = false;
public Socket Server { get { return null; } } public Socket Server { get { return null; } }
public LLUDPServer(IPAddress listenIP, ref uint port, int proxyPortOffsetParm, bool allow_alternate_port, IConfigSource configSource, AgentCircuitManager circuitManager) public LLUDPServer(IPAddress listenIP, ref uint port, int proxyPortOffsetParm, bool allow_alternate_port, IConfigSource configSource, AgentCircuitManager circuitManager)
@ -190,6 +192,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
m_defaultRTO = config.GetInt("DefaultRTO", 0); m_defaultRTO = config.GetInt("DefaultRTO", 0);
m_maxRTO = config.GetInt("MaxRTO", 0); m_maxRTO = config.GetInt("MaxRTO", 0);
m_disableFacelights = config.GetBoolean("DisableFacelights", false);
} }
else else
{ {
@ -898,6 +901,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
LLClientView client = new LLClientView(remoteEndPoint, m_scene, this, udpClient, sessionInfo, agentID, sessionID, circuitCode); LLClientView client = new LLClientView(remoteEndPoint, m_scene, this, udpClient, sessionInfo, agentID, sessionID, circuitCode);
client.OnLogout += LogoutHandler; client.OnLogout += LogoutHandler;
client.DisableFacelights = m_disableFacelights;
// Start the IClientAPI // Start the IClientAPI
client.Start(); client.Start();
} }

View File

@ -387,6 +387,13 @@
; ;
;TextureSendLimit = 20 ;TextureSendLimit = 20
; Quash and remove any light properties from attachments not on the
; hands. This allows flashlights and lanterns to function, but kills
; silly vanity "Facelights" dead. Sorry, head mounted miner's lamps
; will also be affected.
;
;DisableFacelights = "false"
[Chat] [Chat]
; Controls whether the chat module is enabled. Default is true. ; Controls whether the chat module is enabled. Default is true.
enabled = true; enabled = true;