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

@ -119,7 +119,7 @@ namespace OpenSim.Data.MSSQL
updateBuilder.AppendFormat("{0} = @{0}",field); updateBuilder.AppendFormat("{0} = @{0}",field);
first = false; first = false;
cmd.Parameters.Add(m_database.CreateParameter("@" + field, data.Data[field])); cmd.Parameters.Add(m_database.CreateParameter("@" + field, data.Data[field]));
} }
updateBuilder.Append(" where UUID = @principalID"); updateBuilder.Append(" where UUID = @principalID");
@ -135,7 +135,7 @@ namespace OpenSim.Data.MSSQL
insertBuilder.AppendFormat("insert into {0} (UUID, ", m_Realm); insertBuilder.AppendFormat("insert into {0} (UUID, ", m_Realm);
insertBuilder.Append(String.Join(", ", fields)); insertBuilder.Append(String.Join(", ", fields));
insertBuilder.Append(") values ( @principalID, @"); insertBuilder.Append(") values (@principalID, @");
insertBuilder.Append(String.Join(", @", fields)); insertBuilder.Append(String.Join(", @", fields));
insertBuilder.Append(")"); insertBuilder.Append(")");

View File

@ -146,7 +146,7 @@ namespace OpenSim.Data.MSSQL
sceneObjectPart.Name, sceneObjectPart.UUID, sceneObjectPart.GroupPosition, groupID); sceneObjectPart.Name, sceneObjectPart.UUID, sceneObjectPart.GroupPosition, groupID);
sceneObjectPart.UUID = groupID; sceneObjectPart.UUID = groupID;
} }
grp = new SceneObjectGroup(sceneObjectPart); grp = new SceneObjectGroup(sceneObjectPart);
} }

View File

@ -62,7 +62,7 @@ namespace OpenSim.Data.MSSQL
conn.Open(); conn.Open();
Migration m = new Migration(conn, GetType().Assembly, "GridStore"); Migration m = new Migration(conn, GetType().Assembly, "GridStore");
m.Update(); m.Update();
} }
} }
public List<RegionData> Get(string regionName, UUID scopeID) public List<RegionData> Get(string regionName, UUID scopeID)
@ -98,7 +98,7 @@ namespace OpenSim.Data.MSSQL
return null; return null;
return ret[0]; return ret[0];
} }
} }
public RegionData Get(UUID regionID, UUID scopeID) public RegionData Get(UUID regionID, UUID scopeID)
@ -251,7 +251,7 @@ namespace OpenSim.Data.MSSQL
{ {
string insert = "insert into [" + m_Realm + "] ([uuid], [ScopeID], [locX], [locY], [sizeX], [sizeY], [regionName], [" + string insert = "insert into [" + m_Realm + "] ([uuid], [ScopeID], [locX], [locY], [sizeX], [sizeY], [regionName], [" +
String.Join("], [", fields) + String.Join("], [", fields) +
"]) values ( @regionID, @scopeID, @posX, @posY, @sizeX, @sizeY, @regionName, @" + String.Join(", @", fields) + ")"; "]) values (@regionID, @scopeID, @posX, @posY, @sizeX, @sizeY, @regionName, @" + String.Join(", @", fields) + ")";
cmd.CommandText = insert; cmd.CommandText = insert;

View File

@ -54,7 +54,7 @@ namespace OpenSim.Data.MSSQL
conn.Open(); conn.Open();
Migration m = new Migration(conn, GetType().Assembly, "UserStore"); Migration m = new Migration(conn, GetType().Assembly, "UserStore");
m.Update(); m.Update();
} }
} }
public List<UserAccountData> Query(UUID principalID, UUID scopeID, string query) public List<UserAccountData> Query(UUID principalID, UUID scopeID, string query)
@ -134,7 +134,7 @@ namespace OpenSim.Data.MSSQL
updateBuilder.AppendFormat("{0} = @{0}", field); updateBuilder.AppendFormat("{0} = @{0}", field);
first = false; first = false;
cmd.Parameters.Add(m_database.CreateParameter("@" + field, data.Data[field])); cmd.Parameters.Add(m_database.CreateParameter("@" + field, data.Data[field]));
} }
updateBuilder.Append(" where UUID = @principalID"); updateBuilder.Append(" where UUID = @principalID");
@ -153,7 +153,7 @@ namespace OpenSim.Data.MSSQL
StringBuilder insertBuilder = new StringBuilder(); StringBuilder insertBuilder = new StringBuilder();
insertBuilder.AppendFormat("insert into {0} (UUID, ScopeID, ", m_Realm); insertBuilder.AppendFormat("insert into {0} (UUID, ScopeID, ", m_Realm);
insertBuilder.Append(String.Join(", ", fields)); insertBuilder.Append(String.Join(", ", fields));
insertBuilder.Append(") values ( @principalID, @scopeID, @"); insertBuilder.Append(") values (@principalID, @scopeID, @");
insertBuilder.Append(String.Join(", @", fields)); insertBuilder.Append(String.Join(", @", fields));
insertBuilder.Append(")"); insertBuilder.Append(")");

View File

@ -67,8 +67,8 @@ namespace OpenSim.Framework
return m_pqueue.Dequeue(); return m_pqueue.Dequeue();
if (m_queue.Count > 0) if (m_queue.Count > 0)
return m_queue.Dequeue(); return m_queue.Dequeue();
return default(T); return default(T);
} }
} }
@ -121,7 +121,7 @@ namespace OpenSim.Framework
{ {
m_pqueue.Clear(); m_pqueue.Clear();
m_queue.Clear(); m_queue.Clear();
Monitor.Pulse(m_queueSync); Monitor.Pulse(m_queueSync);
} }
} }
} }

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,8 +660,8 @@ namespace OpenSim.Framework
MasterAvatarAssignedUUID = new UUID(masterAvatarUUID); MasterAvatarAssignedUUID = new UUID(masterAvatarUUID);
m_regionType = config.GetString("RegionType", String.Empty);
// Prim stuff // Prim stuff
// //
m_nonphysPrimMax = config.GetInt("NonphysicalPrimMax", 256); m_nonphysPrimMax = config.GetInt("NonphysicalPrimMax", 256);
@ -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

@ -41,7 +41,7 @@ namespace OpenSim.Framework.Serialization.External
public class LandDataSerializer public class LandDataSerializer
{ {
protected static UTF8Encoding m_utf8Encoding = new UTF8Encoding(); protected static UTF8Encoding m_utf8Encoding = new UTF8Encoding();
/// <summary> /// <summary>
/// Reify/deserialize landData /// Reify/deserialize landData
/// </summary> /// </summary>
@ -52,7 +52,7 @@ namespace OpenSim.Framework.Serialization.External
{ {
return Deserialize(m_utf8Encoding.GetString(serializedLandData, 0, serializedLandData.Length)); return Deserialize(m_utf8Encoding.GetString(serializedLandData, 0, serializedLandData.Length));
} }
/// <summary> /// <summary>
/// Reify/deserialize landData /// Reify/deserialize landData
/// </summary> /// </summary>
@ -62,10 +62,10 @@ namespace OpenSim.Framework.Serialization.External
public static LandData Deserialize(string serializedLandData) public static LandData Deserialize(string serializedLandData)
{ {
LandData landData = new LandData(); LandData landData = new LandData();
StringReader sr = new StringReader(serializedLandData); StringReader sr = new StringReader(serializedLandData);
XmlTextReader xtr = new XmlTextReader(sr); XmlTextReader xtr = new XmlTextReader(sr);
xtr.ReadStartElement("LandData"); xtr.ReadStartElement("LandData");
landData.Area = Convert.ToInt32( xtr.ReadElementString("Area")); landData.Area = Convert.ToInt32( xtr.ReadElementString("Area"));
@ -106,7 +106,7 @@ namespace OpenSim.Framework.Serialization.External
pae.Time = Convert.ToDateTime( xtr.ReadElementString("Time")); pae.Time = Convert.ToDateTime( xtr.ReadElementString("Time"));
pae.Flags = (AccessList)Convert.ToUInt32( xtr.ReadElementString("AccessList")); pae.Flags = (AccessList)Convert.ToUInt32( xtr.ReadElementString("AccessList"));
xtr.ReadEndElement(); xtr.ReadEndElement();
landData.ParcelAccessList.Add(pae); landData.ParcelAccessList.Add(pae);
} }
} }
@ -122,13 +122,13 @@ namespace OpenSim.Framework.Serialization.External
landData.OtherCleanTime = Convert.ToInt32( xtr.ReadElementString("OtherCleanTime")); landData.OtherCleanTime = Convert.ToInt32( xtr.ReadElementString("OtherCleanTime"));
xtr.ReadEndElement(); xtr.ReadEndElement();
xtr.Close(); xtr.Close();
sr.Close(); sr.Close();
return landData; return landData;
} }
public static string Serialize(LandData landData) public static string Serialize(LandData landData)
{ {
StringWriter sw = new StringWriter(); StringWriter sw = new StringWriter();
@ -137,8 +137,8 @@ namespace OpenSim.Framework.Serialization.External
xtw.WriteStartDocument(); xtw.WriteStartDocument();
xtw.WriteStartElement("LandData"); xtw.WriteStartElement("LandData");
xtw.WriteElementString("Area", Convert.ToString(landData.Area)); xtw.WriteElementString("Area", Convert.ToString(landData.Area));
xtw.WriteElementString("AuctionID", Convert.ToString(landData.AuctionID)); xtw.WriteElementString("AuctionID", Convert.ToString(landData.AuctionID));
xtw.WriteElementString("AuthBuyerID", landData.AuthBuyerID.ToString()); xtw.WriteElementString("AuthBuyerID", landData.AuthBuyerID.ToString());
xtw.WriteElementString("Category", Convert.ToString((sbyte)landData.Category)); xtw.WriteElementString("Category", Convert.ToString((sbyte)landData.Category));
@ -170,7 +170,7 @@ namespace OpenSim.Framework.Serialization.External
xtw.WriteEndElement(); xtw.WriteEndElement();
} }
xtw.WriteEndElement(); xtw.WriteEndElement();
xtw.WriteElementString("PassHours", Convert.ToString(landData.PassHours)); xtw.WriteElementString("PassHours", Convert.ToString(landData.PassHours));
xtw.WriteElementString("PassPrice", Convert.ToString(landData.PassPrice)); xtw.WriteElementString("PassPrice", Convert.ToString(landData.PassPrice));
xtw.WriteElementString("SalePrice", Convert.ToString(landData.SalePrice)); xtw.WriteElementString("SalePrice", Convert.ToString(landData.SalePrice));
@ -184,7 +184,7 @@ namespace OpenSim.Framework.Serialization.External
xtw.Close(); xtw.Close();
sw.Close(); sw.Close();
return sw.ToString(); return sw.ToString();
} }
} }

View File

@ -246,7 +246,7 @@ namespace OpenSim.Framework.Servers
foreach (ProcessThread t in threads) foreach (ProcessThread t in threads)
{ {
sb.Append("ID: " + t.Id + ", TotalProcessorTime: " + t.TotalProcessorTime + ", TimeRunning: " + sb.Append("ID: " + t.Id + ", TotalProcessorTime: " + t.TotalProcessorTime + ", TimeRunning: " +
(DateTime.Now - t.StartTime) + ", Pri: " + t.CurrentPriority + ", State: " + t.ThreadState ); (DateTime.Now - t.StartTime) + ", Pri: " + t.CurrentPriority + ", State: " + t.ThreadState);
if (t.ThreadState == System.Diagnostics.ThreadState.Wait) if (t.ThreadState == System.Diagnostics.ThreadState.Wait)
sb.Append(", Reason: " + t.WaitReason + Environment.NewLine); sb.Append(", Reason: " + t.WaitReason + Environment.NewLine);
else else

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

@ -730,7 +730,7 @@ namespace Flotsam.RegionModules.AssetCache
int fileCount = GetFileCacheCount(m_CacheDirectory); int fileCount = GetFileCacheCount(m_CacheDirectory);
m_log.InfoFormat("[FLOTSAM ASSET CACHE] File Cache : {0} assets", fileCount); m_log.InfoFormat("[FLOTSAM ASSET CACHE] File Cache : {0} assets", fileCount);
foreach ( string s in Directory.GetFiles(m_CacheDirectory, "*.fac" ) ) foreach (string s in Directory.GetFiles(m_CacheDirectory, "*.fac"))
{ {
m_log.Info("[FLOTSAM ASSET CACHE] Deep Scans were performed on the following regions:"); m_log.Info("[FLOTSAM ASSET CACHE] Deep Scans were performed on the following regions:");
@ -770,7 +770,7 @@ namespace Flotsam.RegionModules.AssetCache
int assetsCached = CacheScenes(); int assetsCached = CacheScenes();
m_log.InfoFormat("[FLOTSAM ASSET CACHE] Completed Scene Caching, {0} assets found.", assetsCached); m_log.InfoFormat("[FLOTSAM ASSET CACHE] Completed Scene Caching, {0} assets found.", assetsCached);
}); });
break; break;

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)
{ {
@ -1110,13 +1116,13 @@ namespace OpenSim.Region.Framework.Scenes
public void AddGroupTarget(SceneObjectGroup grp) public void AddGroupTarget(SceneObjectGroup grp)
{ {
lock(m_groupsWithTargets) lock (m_groupsWithTargets)
m_groupsWithTargets[grp.UUID] = grp; m_groupsWithTargets[grp.UUID] = grp;
} }
public void RemoveGroupTarget(SceneObjectGroup grp) public void RemoveGroupTarget(SceneObjectGroup grp)
{ {
lock(m_groupsWithTargets) lock (m_groupsWithTargets)
m_groupsWithTargets.Remove(grp.UUID); m_groupsWithTargets.Remove(grp.UUID);
} }
@ -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

@ -48,7 +48,7 @@ namespace OpenSim.Region.Physics.Manager
int[] getIndexListAsIntLocked(); int[] getIndexListAsIntLocked();
float[] getVertexListAsFloatLocked(); float[] getVertexListAsFloatLocked();
void getIndexListAsPtrToIntArray(out IntPtr indices, out int triStride, out int indexCount); void getIndexListAsPtrToIntArray(out IntPtr indices, out int triStride, out int indexCount);
void getVertexListAsPtrToFloatArray( out IntPtr vertexList, out int vertexStride, out int vertexCount ); void getVertexListAsPtrToFloatArray(out IntPtr vertexList, out int vertexStride, out int vertexCount);
void releaseSourceMeshData(); void releaseSourceMeshData();
void releasePinned(); void releasePinned();
void Append(IMesh newMesh); void Append(IMesh newMesh);

View File

@ -70,7 +70,7 @@ namespace OpenSim.Region.Physics.Meshing
throw new NotSupportedException("Attempt to Add to a pinned Mesh"); throw new NotSupportedException("Attempt to Add to a pinned Mesh");
// If a vertex of the triangle is not yet in the vertices list, // If a vertex of the triangle is not yet in the vertices list,
// add it and set its index to the current index count // add it and set its index to the current index count
if( !m_vertices.ContainsKey(triangle.v1) ) if (!m_vertices.ContainsKey(triangle.v1))
m_vertices[triangle.v1] = m_vertices.Count; m_vertices[triangle.v1] = m_vertices.Count;
if (!m_vertices.ContainsKey(triangle.v2)) if (!m_vertices.ContainsKey(triangle.v2))
m_vertices[triangle.v2] = m_vertices.Count; m_vertices[triangle.v2] = m_vertices.Count;
@ -153,7 +153,7 @@ namespace OpenSim.Region.Physics.Meshing
private float[] getVertexListAsFloat() private float[] getVertexListAsFloat()
{ {
if(m_vertices == null) if (m_vertices == null)
throw new NotSupportedException(); throw new NotSupportedException();
float[] result = new float[m_vertices.Count * 3]; float[] result = new float[m_vertices.Count * 3];
foreach (KeyValuePair<Vertex, int> kvp in m_vertices) foreach (KeyValuePair<Vertex, int> kvp in m_vertices)
@ -169,7 +169,7 @@ namespace OpenSim.Region.Physics.Meshing
public float[] getVertexListAsFloatLocked() public float[] getVertexListAsFloatLocked()
{ {
if( m_pinnedVertexes.IsAllocated ) if (m_pinnedVertexes.IsAllocated)
return (float[])(m_pinnedVertexes.Target); return (float[])(m_pinnedVertexes.Target);
float[] result = getVertexListAsFloat(); float[] result = getVertexListAsFloat();

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;
vec = d.BodyGetLinearVel(Body); try
{
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

@ -827,8 +827,8 @@ namespace OpenSim.Region.Physics.OdePlugin
IntPtr vertices, indices; IntPtr vertices, indices;
int vertexCount, indexCount; int vertexCount, indexCount;
int vertexStride, triStride; int vertexStride, triStride;
mesh.getVertexListAsPtrToFloatArray( out vertices, out vertexStride, out vertexCount ); // Note, that vertices are fixed in unmanaged heap mesh.getVertexListAsPtrToFloatArray(out vertices, out vertexStride, out vertexCount); // Note, that vertices are fixed in unmanaged heap
mesh.getIndexListAsPtrToIntArray( out indices, out triStride, out indexCount ); // Also fixed, needs release after usage mesh.getIndexListAsPtrToIntArray(out indices, out triStride, out indexCount); // Also fixed, needs release after usage
mesh.releaseSourceMeshData(); // free up the original mesh data to save memory mesh.releaseSourceMeshData(); // free up the original mesh data to save memory

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)
@ -3792,7 +3813,7 @@ namespace OpenSim.Region.Physics.OdePlugin
} }
public void start(int unused) public void start(int unused)
{ {
ds.SetViewpoint(ref xyz, ref hpr); ds.SetViewpoint(ref xyz, ref hpr);
} }
#endif #endif

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,10 +612,17 @@ 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);
World.SimChat(Utils.StringToBytes(text), if (!ShowScriptSaveResponse(item.OwnerID,
ChatTypeEnum.DebugChannel, 2147483647, assetID, text, true))
part.AbsolutePosition, {
part.Name, part.UUID, false); if (presence != null && (!postOnRez))
presence.ControllingClient.SendAgentAlertMessage("Script saved with warnings, check debug window!", false);
World.SimChat(Utils.StringToBytes(text),
ChatTypeEnum.DebugChannel, 2147483647,
part.AbsolutePosition,
part.Name, part.UUID, false);
}
} }
catch (Exception e2) // LEGIT: User Scripting catch (Exception e2) // LEGIT: User Scripting
{ {
@ -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,10 +647,16 @@ 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);
World.SimChat(Utils.StringToBytes(text), if (!ShowScriptSaveResponse(item.OwnerID,
ChatTypeEnum.DebugChannel, 2147483647, assetID, text, false))
part.AbsolutePosition, {
part.Name, part.UUID, false); if (presence != null && (!postOnRez))
presence.ControllingClient.SendAgentAlertMessage("Script saved with errors, check debug window!", false);
World.SimChat(Utils.StringToBytes(text),
ChatTypeEnum.DebugChannel, 2147483647,
part.AbsolutePosition,
part.Name, part.UUID, false);
}
} }
catch (Exception e2) // LEGIT: User Scripting catch (Exception e2) // LEGIT: User Scripting
{ {
@ -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

@ -46,14 +46,14 @@ namespace OpenSim.Tests.Common.Mock
m_scene = scene; m_scene = scene;
} }
public List<ILandObject> ParcelsNearPoint(Vector3 position) public List<ILandObject> ParcelsNearPoint(Vector3 position)
{ {
return new List<ILandObject>(); return new List<ILandObject>();
} }
public List<ILandObject> AllParcels() public List<ILandObject> AllParcels()
{ {
return new List<ILandObject>(); return new List<ILandObject>();
} }
protected ILandObject GetNoLand() protected ILandObject GetNoLand()
@ -63,18 +63,18 @@ namespace OpenSim.Tests.Common.Mock
return obj; return obj;
} }
public ILandObject GetLandObject(int x, int y) public ILandObject GetLandObject(int x, int y)
{ {
return GetNoLand(); return GetNoLand();
} }
public ILandObject GetLandObject(int localID) public ILandObject GetLandObject(int localID)
{ {
return GetNoLand(); return GetNoLand();
} }
public ILandObject GetLandObject(float x, float y) public ILandObject GetLandObject(float x, float y)
{ {
return GetNoLand(); return GetNoLand();
} }

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"