Merge branch 'master' into vehicles

0.6.8-post-fixes
Melanie 2009-10-19 21:58:51 +01:00
commit ffd59868f5
24 changed files with 218 additions and 76 deletions

View File

@ -402,6 +402,7 @@ namespace OpenSim.Client.VWoHTTP.ClientStack
public event PickInfoUpdate OnPickInfoUpdate = delegate { }; public event PickInfoUpdate OnPickInfoUpdate = delegate { };
public event AvatarNotesUpdate OnAvatarNotesUpdate = delegate { }; public event AvatarNotesUpdate OnAvatarNotesUpdate = delegate { };
public event MuteListRequest OnMuteListRequest = delegate { }; public event MuteListRequest OnMuteListRequest = delegate { };
public event AvatarInterestUpdate OnAvatarInterestUpdate = delegate { };
public event PlacesQuery OnPlacesQuery = delegate { }; public event PlacesQuery OnPlacesQuery = delegate { };
@ -1118,6 +1119,11 @@ namespace OpenSim.Client.VWoHTTP.ClientStack
throw new System.NotImplementedException(); throw new System.NotImplementedException();
} }
public void SendAvatarInterestUpdate(IClientAPI client, uint wantmask, string wanttext, uint skillsmask, string skillstext, string languages)
{
throw new System.NotImplementedException();
}
public void SendParcelDwellReply(int localID, UUID parcelID, float dwell) public void SendParcelDwellReply(int localID, UUID parcelID, float dwell)
{ {
throw new System.NotImplementedException(); throw new System.NotImplementedException();

View File

@ -792,6 +792,7 @@ namespace OpenSim.Framework
event PickGodDelete OnPickGodDelete; event PickGodDelete OnPickGodDelete;
event PickInfoUpdate OnPickInfoUpdate; event PickInfoUpdate OnPickInfoUpdate;
event AvatarNotesUpdate OnAvatarNotesUpdate; event AvatarNotesUpdate OnAvatarNotesUpdate;
event AvatarInterestUpdate OnAvatarInterestUpdate;
event MuteListRequest OnMuteListRequest; event MuteListRequest OnMuteListRequest;

View File

@ -303,6 +303,7 @@ namespace OpenSim.Framework
private int m_physPrimMax = 0; private int m_physPrimMax = 0;
private bool m_clampPrimSize = false; private bool m_clampPrimSize = false;
private int m_objectCapacity = 0; private int m_objectCapacity = 0;
private string m_regionType = String.Empty;
// Apparently, we're applying the same estatesettings regardless of whether it's local or remote. // Apparently, we're applying the same estatesettings regardless of whether it's local or remote.
@ -478,6 +479,11 @@ namespace OpenSim.Framework
get { return (byte)Util.ConvertMaturityToAccessLevel((uint)RegionSettings.Maturity); } get { return (byte)Util.ConvertMaturityToAccessLevel((uint)RegionSettings.Maturity); }
} }
public string RegionType
{
get { return m_regionType; }
}
public void SetEndPoint(string ipaddr, int port) public void SetEndPoint(string ipaddr, int port)
{ {
IPAddress tmpIP = IPAddress.Parse(ipaddr); IPAddress tmpIP = IPAddress.Parse(ipaddr);
@ -654,7 +660,7 @@ namespace OpenSim.Framework
MasterAvatarAssignedUUID = new UUID(masterAvatarUUID); MasterAvatarAssignedUUID = new UUID(masterAvatarUUID);
m_regionType = config.GetString("RegionType", String.Empty);
// Prim stuff // Prim stuff
// //
@ -721,6 +727,9 @@ namespace OpenSim.Framework
if (ScopeID != UUID.Zero) if (ScopeID != UUID.Zero)
config.Set("ScopeID", ScopeID.ToString()); config.Set("ScopeID", ScopeID.ToString());
if (RegionType != String.Empty)
config.Set("RegionType", RegionType);
} }
public bool ignoreIncomingConfiguration(string configuration_key, object configuration_result) public bool ignoreIncomingConfiguration(string configuration_key, object configuration_result)
@ -810,6 +819,9 @@ namespace OpenSim.Framework
configMember.addConfigurationOption("scope_id", ConfigurationOption.ConfigurationTypes.TYPE_UUID, configMember.addConfigurationOption("scope_id", ConfigurationOption.ConfigurationTypes.TYPE_UUID,
"Scope ID for this region", ScopeID.ToString(), true); "Scope ID for this region", ScopeID.ToString(), true);
configMember.addConfigurationOption("region_type", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
"Region Type", String.Empty, true);
} }
public void loadConfigurationOptions() public void loadConfigurationOptions()
@ -873,6 +885,9 @@ namespace OpenSim.Framework
configMember.addConfigurationOption("scope_id", ConfigurationOption.ConfigurationTypes.TYPE_UUID, configMember.addConfigurationOption("scope_id", ConfigurationOption.ConfigurationTypes.TYPE_UUID,
"Scope ID for this region", UUID.Zero.ToString(), true); "Scope ID for this region", UUID.Zero.ToString(), true);
configMember.addConfigurationOption("region_type", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
"Region Type", String.Empty, true);
} }
public bool shouldMasterAvatarDetailsBeAsked(string configuration_key) public bool shouldMasterAvatarDetailsBeAsked(string configuration_key)
@ -953,6 +968,9 @@ namespace OpenSim.Framework
case "scope_id": case "scope_id":
ScopeID = (UUID)configuration_result; ScopeID = (UUID)configuration_result;
break; break;
case "region_type":
m_regionType = (string)configuration_result;
break;
} }
return true; return true;
@ -988,6 +1006,8 @@ namespace OpenSim.Framework
args["allow_alt_ports"] = OSD.FromBoolean(m_allow_alternate_ports); args["allow_alt_ports"] = OSD.FromBoolean(m_allow_alternate_ports);
if ((proxyUrl != null) && !proxyUrl.Equals("")) if ((proxyUrl != null) && !proxyUrl.Equals(""))
args["proxy_url"] = OSD.FromString(proxyUrl); args["proxy_url"] = OSD.FromString(proxyUrl);
if (RegionType != String.Empty)
args["region_type"] = OSD.FromString(RegionType);
return args; return args;
} }
@ -1035,6 +1055,8 @@ namespace OpenSim.Framework
m_allow_alternate_ports = args["allow_alt_ports"].AsBoolean(); m_allow_alternate_ports = args["allow_alt_ports"].AsBoolean();
if (args["proxy_url"] != null) if (args["proxy_url"] != null)
proxyUrl = args["proxy_url"].AsString(); proxyUrl = args["proxy_url"].AsString();
if (args["region_type"] != null)
m_regionType = args["region_type"].AsString();
} }
public static RegionInfo Create(UUID regionID, string regionName, uint regX, uint regY, string externalHostName, uint httpPort, uint simPort, uint remotingPort, string serverURI) public static RegionInfo Create(UUID regionID, string regionName, uint regX, uint regY, string externalHostName, uint httpPort, uint simPort, uint remotingPort, string serverURI)

View File

@ -9969,11 +9969,28 @@ namespace OpenSim.Region.ClientStack.LindenUDP
Utils.BytesToString(avatarNotesUpdate.Data.Notes)); Utils.BytesToString(avatarNotesUpdate.Data.Notes));
break; break;
// case PacketType.AvatarInterestsUpdate: case PacketType.AvatarInterestsUpdate:
// AvatarInterestsUpdatePacket avatarInterestUpdate = AvatarInterestsUpdatePacket avatarInterestUpdate =
// (AvatarInterestsUpdatePacket)Pack; (AvatarInterestsUpdatePacket)Pack;
//
// break; #region Packet Session and User Check
if (m_checkPackets)
{
if (avatarInterestUpdate.AgentData.SessionID != SessionId ||
avatarInterestUpdate.AgentData.AgentID != AgentId)
break;
}
#endregion
AvatarInterestUpdate handlerAvatarInterestUpdate = OnAvatarInterestUpdate;
if (handlerAvatarInterestUpdate != null)
handlerAvatarInterestUpdate(this,
avatarInterestUpdate.PropertiesData.WantToMask,
Utils.BytesToString(avatarInterestUpdate.PropertiesData.WantToText),
avatarInterestUpdate.PropertiesData.SkillsMask,
Utils.BytesToString(avatarInterestUpdate.PropertiesData.SkillsText),
Utils.BytesToString(avatarInterestUpdate.PropertiesData.LanguagesText));
break;
case PacketType.PlacesQuery: case PacketType.PlacesQuery:
PlacesQueryPacket placesQueryPacket = PlacesQueryPacket placesQueryPacket =

View File

@ -128,6 +128,7 @@ namespace OpenSim.Region.Framework.Scenes
public CommunicationsManager CommsManager; public CommunicationsManager CommsManager;
protected SceneCommunicationService m_sceneGridService; protected SceneCommunicationService m_sceneGridService;
public bool loginsdisabled = true;
public SceneCommunicationService SceneGridService public SceneCommunicationService SceneGridService
{ {
@ -1062,6 +1063,11 @@ namespace OpenSim.Region.Framework.Scenes
StatsReporter.SetActiveScripts(m_sceneGraph.GetActiveScriptsCount()); StatsReporter.SetActiveScripts(m_sceneGraph.GetActiveScriptsCount());
StatsReporter.addScriptLines(m_sceneGraph.GetScriptLPS()); StatsReporter.addScriptLines(m_sceneGraph.GetScriptLPS());
} }
if (loginsdisabled && (m_frame > 20))
{
m_log.Debug("[REGION]: Enabling Logins");
loginsdisabled = false;
}
} }
catch (NotImplementedException) catch (NotImplementedException)
{ {
@ -3227,6 +3233,11 @@ namespace OpenSim.Region.Framework.Scenes
/// also return a reason.</returns> /// also return a reason.</returns>
public bool NewUserConnection(AgentCircuitData agent, out string reason) public bool NewUserConnection(AgentCircuitData agent, out string reason)
{ {
if (loginsdisabled)
{
reason = "Logins Disabled";
return false;
}
// Don't disable this log message - it's too helpful // Don't disable this log message - it's too helpful
m_log.InfoFormat( m_log.InfoFormat(
"[CONNECTION BEGIN]: Region {0} told of incoming {1} agent {2} {3} {4} (circuit code {5})", "[CONNECTION BEGIN]: Region {0} told of incoming {1} agent {2} {3} {4} (circuit code {5})",

View File

@ -908,6 +908,7 @@ namespace OpenSim.Region.Framework.Scenes
if (PhysicsActor != null) if (PhysicsActor != null)
{ {
m_physicsActor.OnRequestTerseUpdate -= SendTerseUpdateToAllClients; m_physicsActor.OnRequestTerseUpdate -= SendTerseUpdateToAllClients;
m_physicsActor.OnOutOfBounds -= OutOfBoundsCall;
m_scene.PhysicsScene.RemoveAvatar(PhysicsActor); m_scene.PhysicsScene.RemoveAvatar(PhysicsActor);
m_physicsActor.UnSubscribeEvents(); m_physicsActor.UnSubscribeEvents();
m_physicsActor.OnCollisionUpdate -= PhysicsCollisionUpdate; m_physicsActor.OnCollisionUpdate -= PhysicsCollisionUpdate;
@ -3410,11 +3411,22 @@ namespace OpenSim.Region.Framework.Scenes
scene.AddPhysicsActorTaint(m_physicsActor); scene.AddPhysicsActorTaint(m_physicsActor);
//m_physicsActor.OnRequestTerseUpdate += SendTerseUpdateToAllClients; //m_physicsActor.OnRequestTerseUpdate += SendTerseUpdateToAllClients;
m_physicsActor.OnCollisionUpdate += PhysicsCollisionUpdate; m_physicsActor.OnCollisionUpdate += PhysicsCollisionUpdate;
m_physicsActor.OnOutOfBounds += OutOfBoundsCall; // Called for PhysicsActors when there's something wrong
m_physicsActor.SubscribeEvents(500); m_physicsActor.SubscribeEvents(500);
m_physicsActor.LocalID = LocalId; m_physicsActor.LocalID = LocalId;
} }
private void OutOfBoundsCall(PhysicsVector pos)
{
//bool flying = m_physicsActor.Flying;
//RemoveFromPhysicalScene();
//AddToPhysicalScene(flying);
if (ControllingClient != null)
ControllingClient.SendAgentAlertMessage("Physics is having a problem with your avatar. You may not be able to move until you relog.",true);
}
// Event called by the physics plugin to tell the avatar about a collision. // Event called by the physics plugin to tell the avatar about a collision.
private void PhysicsCollisionUpdate(EventArgs e) private void PhysicsCollisionUpdate(EventArgs e)
{ {

View File

@ -831,7 +831,9 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
public event PickInfoUpdate OnPickInfoUpdate; public event PickInfoUpdate OnPickInfoUpdate;
public event AvatarNotesUpdate OnAvatarNotesUpdate; public event AvatarNotesUpdate OnAvatarNotesUpdate;
public event MuteListRequest OnMuteListRequest; public event MuteListRequest OnMuteListRequest;
public event AvatarInterestUpdate OnAvatarInterestUpdate;
public event PlacesQuery OnPlacesQuery; public event PlacesQuery OnPlacesQuery;
#pragma warning restore 67 #pragma warning restore 67
public void SetDebugPacketLevel(int newDebug) public void SetDebugPacketLevel(int newDebug)
@ -1570,6 +1572,11 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
} }
public void SendAvatarInterestUpdate(IClientAPI client, uint wantmask, string wanttext, uint skillsmask, string skillstext, string languages)
{
}
public void SendParcelDwellReply(int localID, UUID parcelID, float dwell) public void SendParcelDwellReply(int localID, UUID parcelID, float dwell)
{ {

View File

@ -1105,7 +1105,19 @@ namespace OpenSim.Region.Physics.OdePlugin
public void UpdatePositionAndVelocity() public void UpdatePositionAndVelocity()
{ {
// no lock; called from Simulate() -- if you call this from elsewhere, gotta lock or do Monitor.Enter/Exit! // no lock; called from Simulate() -- if you call this from elsewhere, gotta lock or do Monitor.Enter/Exit!
d.Vector3 vec = d.BodyGetPosition(Body); d.Vector3 vec;
try
{
vec = d.BodyGetPosition(Body);
}
catch (NullReferenceException)
{
_parent_scene.BadCharacter(this);
vec = new d.Vector3(_position.X, _position.Y, _position.Z);
base.RaiseOutOfBounds(_position); // Tells ScenePresence that there's a problem!
m_log.WarnFormat("[ODEPLUGIN]: Avatar Null reference for Avatar: {0}", m_name);
}
// kluge to keep things in bounds. ODE lets dead avatars drift away (they should be removed!) // kluge to keep things in bounds. ODE lets dead avatars drift away (they should be removed!)
if (vec.X < 0.0f) vec.X = 0.0f; if (vec.X < 0.0f) vec.X = 0.0f;
@ -1137,7 +1149,16 @@ namespace OpenSim.Region.Physics.OdePlugin
else else
{ {
m_lastUpdateSent = false; m_lastUpdateSent = false;
try
{
vec = d.BodyGetLinearVel(Body); vec = d.BodyGetLinearVel(Body);
}
catch (NullReferenceException)
{
vec.X = _velocity.X;
vec.Y = _velocity.Y;
vec.Z = _velocity.Z;
}
_velocity.X = (vec.X); _velocity.X = (vec.X);
_velocity.Y = (vec.Y); _velocity.Y = (vec.Y);

View File

@ -243,6 +243,7 @@ namespace OpenSim.Region.Physics.OdePlugin
private readonly HashSet<OdeCharacter> _taintedActors = new HashSet<OdeCharacter>(); private readonly HashSet<OdeCharacter> _taintedActors = new HashSet<OdeCharacter>();
private readonly List<d.ContactGeom> _perloopContact = new List<d.ContactGeom>(); private readonly List<d.ContactGeom> _perloopContact = new List<d.ContactGeom>();
private readonly List<PhysicsActor> _collisionEventPrim = new List<PhysicsActor>(); private readonly List<PhysicsActor> _collisionEventPrim = new List<PhysicsActor>();
private readonly HashSet<OdeCharacter> _badCharacter = new HashSet<OdeCharacter>();
public Dictionary<IntPtr, String> geom_name_map = new Dictionary<IntPtr, String>(); public Dictionary<IntPtr, String> geom_name_map = new Dictionary<IntPtr, String>();
public Dictionary<IntPtr, PhysicsActor> actor_name_map = new Dictionary<IntPtr, PhysicsActor>(); public Dictionary<IntPtr, PhysicsActor> actor_name_map = new Dictionary<IntPtr, PhysicsActor>();
private bool m_NINJA_physics_joints_enabled = false; private bool m_NINJA_physics_joints_enabled = false;
@ -1678,6 +1679,14 @@ namespace OpenSim.Region.Physics.OdePlugin
} }
} }
} }
public void BadCharacter(OdeCharacter chr)
{
lock (_badCharacter)
{
if (!_badCharacter.Contains(chr))
_badCharacter.Add(chr);
}
}
public override void RemoveAvatar(PhysicsActor actor) public override void RemoveAvatar(PhysicsActor actor)
{ {
@ -2987,6 +2996,18 @@ namespace OpenSim.Region.Physics.OdePlugin
} }
} }
lock (_badCharacter)
{
if (_badCharacter.Count > 0)
{
foreach (OdeCharacter chr in _badCharacter)
{
RemoveCharacter(chr);
}
_badCharacter.Clear();
}
}
lock (_activeprims) lock (_activeprims)
{ {
//if (timeStep < 0.2f) //if (timeStep < 0.2f)

View File

@ -353,15 +353,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
// m_log.ErrorFormat("[Script] Unable to load script state from xml: {0}\n"+e.ToString(), xml); // m_log.ErrorFormat("[Script] Unable to load script state from xml: {0}\n"+e.ToString(), xml);
} }
} }
else // else
{ // {
ScenePresence presence = m_Engine.World.GetScenePresence(part.OwnerID); // ScenePresence presence = m_Engine.World.GetScenePresence(part.OwnerID);
if (presence != null && (!postOnRez)) // if (presence != null && (!postOnRez))
presence.ControllingClient.SendAgentAlertMessage("Compile successful", false); // presence.ControllingClient.SendAgentAlertMessage("Compile successful", false);
// // m_log.ErrorFormat("[Script] Unable to load script state, file not found"); // }
}
} }
public void Init() public void Init()

View File

@ -604,9 +604,6 @@ namespace OpenSim.Region.ScriptEngine.XEngine
if (warnings != null && warnings.Length != 0) if (warnings != null && warnings.Length != 0)
{ {
if (presence != null && (!postOnRez))
presence.ControllingClient.SendAgentAlertMessage("Script saved with warnings, check debug window!", false);
foreach (string warning in warnings) foreach (string warning in warnings)
{ {
try try
@ -615,11 +612,18 @@ namespace OpenSim.Region.ScriptEngine.XEngine
string text = "Warning:\n" + warning; string text = "Warning:\n" + warning;
if (text.Length > 1000) if (text.Length > 1000)
text = text.Substring(0, 1000); text = text.Substring(0, 1000);
if (!ShowScriptSaveResponse(item.OwnerID,
assetID, text, true))
{
if (presence != null && (!postOnRez))
presence.ControllingClient.SendAgentAlertMessage("Script saved with warnings, check debug window!", false);
World.SimChat(Utils.StringToBytes(text), World.SimChat(Utils.StringToBytes(text),
ChatTypeEnum.DebugChannel, 2147483647, ChatTypeEnum.DebugChannel, 2147483647,
part.AbsolutePosition, part.AbsolutePosition,
part.Name, part.UUID, false); part.Name, part.UUID, false);
} }
}
catch (Exception e2) // LEGIT: User Scripting catch (Exception e2) // LEGIT: User Scripting
{ {
m_log.Error("[XEngine]: " + m_log.Error("[XEngine]: " +
@ -634,8 +638,6 @@ namespace OpenSim.Region.ScriptEngine.XEngine
} }
catch (Exception e) catch (Exception e)
{ {
if (presence != null && (!postOnRez))
presence.ControllingClient.SendAgentAlertMessage("Script saved with errors, check debug window!", false);
try try
{ {
// DISPLAY ERROR INWORLD // DISPLAY ERROR INWORLD
@ -645,11 +647,17 @@ namespace OpenSim.Region.ScriptEngine.XEngine
string text = "Error compiling script '" + item.Name + "':\n" + e.Message.ToString(); string text = "Error compiling script '" + item.Name + "':\n" + e.Message.ToString();
if (text.Length > 1000) if (text.Length > 1000)
text = text.Substring(0, 1000); text = text.Substring(0, 1000);
if (!ShowScriptSaveResponse(item.OwnerID,
assetID, text, false))
{
if (presence != null && (!postOnRez))
presence.ControllingClient.SendAgentAlertMessage("Script saved with errors, check debug window!", false);
World.SimChat(Utils.StringToBytes(text), World.SimChat(Utils.StringToBytes(text),
ChatTypeEnum.DebugChannel, 2147483647, ChatTypeEnum.DebugChannel, 2147483647,
part.AbsolutePosition, part.AbsolutePosition,
part.Name, part.UUID, false); part.Name, part.UUID, false);
} }
}
catch (Exception e2) // LEGIT: User Scripting catch (Exception e2) // LEGIT: User Scripting
{ {
m_log.Error("[XEngine]: "+ m_log.Error("[XEngine]: "+
@ -732,6 +740,12 @@ namespace OpenSim.Region.ScriptEngine.XEngine
m_log.DebugFormat("[XEngine] Loaded script {0}.{1}, script UUID {2}, prim UUID {3} @ {4}", m_log.DebugFormat("[XEngine] Loaded script {0}.{1}, script UUID {2}, prim UUID {3} @ {4}",
part.ParentGroup.RootPart.Name, item.Name, assetID, part.UUID, part.ParentGroup.RootPart.AbsolutePosition.ToString()); part.ParentGroup.RootPart.Name, item.Name, assetID, part.UUID, part.ParentGroup.RootPart.AbsolutePosition.ToString());
if (presence != null)
{
ShowScriptSaveResponse(item.OwnerID,
assetID, "Compile successful", true);
}
instance.AppDomain = appDomain; instance.AppDomain = appDomain;
instance.LineMap = linemap; instance.LineMap = linemap;
@ -1250,5 +1264,10 @@ namespace OpenSim.Region.ScriptEngine.XEngine
return instance.CanBeDeleted(); return instance.CanBeDeleted();
} }
private bool ShowScriptSaveResponse(UUID ownerID, UUID assetID, string text, bool compiled)
{
return false;
}
} }
} }

View File

@ -45,3 +45,9 @@ MasterAvatarUUID = "00000000-0000-0000-0000-000000000000"
; * ; *
; ScopeID = "00000000-0000-0000-0000-000000000000" ; ScopeID = "00000000-0000-0000-0000-000000000000"
; *
; * Product name (used in search from viewer 1.23
; *
; RegionType = "Mainland"