Merge branch 'master' into vehicles
commit
ffd59868f5
|
@ -402,6 +402,7 @@ namespace OpenSim.Client.VWoHTTP.ClientStack
|
|||
public event PickInfoUpdate OnPickInfoUpdate = delegate { };
|
||||
public event AvatarNotesUpdate OnAvatarNotesUpdate = delegate { };
|
||||
public event MuteListRequest OnMuteListRequest = delegate { };
|
||||
public event AvatarInterestUpdate OnAvatarInterestUpdate = delegate { };
|
||||
public event PlacesQuery OnPlacesQuery = delegate { };
|
||||
|
||||
|
||||
|
@ -1118,6 +1119,11 @@ namespace OpenSim.Client.VWoHTTP.ClientStack
|
|||
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)
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
|
|
|
@ -119,7 +119,7 @@ namespace OpenSim.Data.MSSQL
|
|||
updateBuilder.AppendFormat("{0} = @{0}",field);
|
||||
|
||||
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");
|
||||
|
@ -135,7 +135,7 @@ namespace OpenSim.Data.MSSQL
|
|||
|
||||
insertBuilder.AppendFormat("insert into {0} (UUID, ", m_Realm);
|
||||
insertBuilder.Append(String.Join(", ", fields));
|
||||
insertBuilder.Append(") values ( @principalID, @");
|
||||
insertBuilder.Append(") values (@principalID, @");
|
||||
insertBuilder.Append(String.Join(", @", fields));
|
||||
insertBuilder.Append(")");
|
||||
|
||||
|
|
|
@ -146,7 +146,7 @@ namespace OpenSim.Data.MSSQL
|
|||
sceneObjectPart.Name, sceneObjectPart.UUID, sceneObjectPart.GroupPosition, groupID);
|
||||
|
||||
sceneObjectPart.UUID = groupID;
|
||||
}
|
||||
}
|
||||
|
||||
grp = new SceneObjectGroup(sceneObjectPart);
|
||||
}
|
||||
|
|
|
@ -62,7 +62,7 @@ namespace OpenSim.Data.MSSQL
|
|||
conn.Open();
|
||||
Migration m = new Migration(conn, GetType().Assembly, "GridStore");
|
||||
m.Update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<RegionData> Get(string regionName, UUID scopeID)
|
||||
|
@ -98,7 +98,7 @@ namespace OpenSim.Data.MSSQL
|
|||
return null;
|
||||
|
||||
return ret[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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.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;
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ namespace OpenSim.Data.MSSQL
|
|||
conn.Open();
|
||||
Migration m = new Migration(conn, GetType().Assembly, "UserStore");
|
||||
m.Update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<UserAccountData> Query(UUID principalID, UUID scopeID, string query)
|
||||
|
@ -134,7 +134,7 @@ namespace OpenSim.Data.MSSQL
|
|||
updateBuilder.AppendFormat("{0} = @{0}", field);
|
||||
|
||||
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");
|
||||
|
@ -153,7 +153,7 @@ namespace OpenSim.Data.MSSQL
|
|||
StringBuilder insertBuilder = new StringBuilder();
|
||||
insertBuilder.AppendFormat("insert into {0} (UUID, ScopeID, ", m_Realm);
|
||||
insertBuilder.Append(String.Join(", ", fields));
|
||||
insertBuilder.Append(") values ( @principalID, @scopeID, @");
|
||||
insertBuilder.Append(") values (@principalID, @scopeID, @");
|
||||
insertBuilder.Append(String.Join(", @", fields));
|
||||
insertBuilder.Append(")");
|
||||
|
||||
|
|
|
@ -67,8 +67,8 @@ namespace OpenSim.Framework
|
|||
return m_pqueue.Dequeue();
|
||||
|
||||
if (m_queue.Count > 0)
|
||||
return m_queue.Dequeue();
|
||||
return default(T);
|
||||
return m_queue.Dequeue();
|
||||
return default(T);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -121,7 +121,7 @@ namespace OpenSim.Framework
|
|||
{
|
||||
m_pqueue.Clear();
|
||||
m_queue.Clear();
|
||||
Monitor.Pulse(m_queueSync);
|
||||
Monitor.Pulse(m_queueSync);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -792,6 +792,7 @@ namespace OpenSim.Framework
|
|||
event PickGodDelete OnPickGodDelete;
|
||||
event PickInfoUpdate OnPickInfoUpdate;
|
||||
event AvatarNotesUpdate OnAvatarNotesUpdate;
|
||||
event AvatarInterestUpdate OnAvatarInterestUpdate;
|
||||
|
||||
event MuteListRequest OnMuteListRequest;
|
||||
|
||||
|
|
|
@ -303,6 +303,7 @@ namespace OpenSim.Framework
|
|||
private int m_physPrimMax = 0;
|
||||
private bool m_clampPrimSize = false;
|
||||
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.
|
||||
|
@ -478,6 +479,11 @@ namespace OpenSim.Framework
|
|||
get { return (byte)Util.ConvertMaturityToAccessLevel((uint)RegionSettings.Maturity); }
|
||||
}
|
||||
|
||||
public string RegionType
|
||||
{
|
||||
get { return m_regionType; }
|
||||
}
|
||||
|
||||
public void SetEndPoint(string ipaddr, int port)
|
||||
{
|
||||
IPAddress tmpIP = IPAddress.Parse(ipaddr);
|
||||
|
@ -654,8 +660,8 @@ namespace OpenSim.Framework
|
|||
|
||||
MasterAvatarAssignedUUID = new UUID(masterAvatarUUID);
|
||||
|
||||
m_regionType = config.GetString("RegionType", String.Empty);
|
||||
|
||||
|
||||
// Prim stuff
|
||||
//
|
||||
m_nonphysPrimMax = config.GetInt("NonphysicalPrimMax", 256);
|
||||
|
@ -721,6 +727,9 @@ namespace OpenSim.Framework
|
|||
|
||||
if (ScopeID != UUID.Zero)
|
||||
config.Set("ScopeID", ScopeID.ToString());
|
||||
|
||||
if (RegionType != String.Empty)
|
||||
config.Set("RegionType", RegionType);
|
||||
}
|
||||
|
||||
public bool ignoreIncomingConfiguration(string configuration_key, object configuration_result)
|
||||
|
@ -810,6 +819,9 @@ namespace OpenSim.Framework
|
|||
|
||||
configMember.addConfigurationOption("scope_id", ConfigurationOption.ConfigurationTypes.TYPE_UUID,
|
||||
"Scope ID for this region", ScopeID.ToString(), true);
|
||||
|
||||
configMember.addConfigurationOption("region_type", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
|
||||
"Region Type", String.Empty, true);
|
||||
}
|
||||
|
||||
public void loadConfigurationOptions()
|
||||
|
@ -873,6 +885,9 @@ namespace OpenSim.Framework
|
|||
|
||||
configMember.addConfigurationOption("scope_id", ConfigurationOption.ConfigurationTypes.TYPE_UUID,
|
||||
"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)
|
||||
|
@ -953,6 +968,9 @@ namespace OpenSim.Framework
|
|||
case "scope_id":
|
||||
ScopeID = (UUID)configuration_result;
|
||||
break;
|
||||
case "region_type":
|
||||
m_regionType = (string)configuration_result;
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -988,6 +1006,8 @@ namespace OpenSim.Framework
|
|||
args["allow_alt_ports"] = OSD.FromBoolean(m_allow_alternate_ports);
|
||||
if ((proxyUrl != null) && !proxyUrl.Equals(""))
|
||||
args["proxy_url"] = OSD.FromString(proxyUrl);
|
||||
if (RegionType != String.Empty)
|
||||
args["region_type"] = OSD.FromString(RegionType);
|
||||
|
||||
return args;
|
||||
}
|
||||
|
@ -1035,6 +1055,8 @@ namespace OpenSim.Framework
|
|||
m_allow_alternate_ports = args["allow_alt_ports"].AsBoolean();
|
||||
if (args["proxy_url"] != null)
|
||||
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)
|
||||
|
|
|
@ -41,7 +41,7 @@ namespace OpenSim.Framework.Serialization.External
|
|||
public class LandDataSerializer
|
||||
{
|
||||
protected static UTF8Encoding m_utf8Encoding = new UTF8Encoding();
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Reify/deserialize landData
|
||||
/// </summary>
|
||||
|
@ -52,7 +52,7 @@ namespace OpenSim.Framework.Serialization.External
|
|||
{
|
||||
return Deserialize(m_utf8Encoding.GetString(serializedLandData, 0, serializedLandData.Length));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Reify/deserialize landData
|
||||
/// </summary>
|
||||
|
@ -62,10 +62,10 @@ namespace OpenSim.Framework.Serialization.External
|
|||
public static LandData Deserialize(string serializedLandData)
|
||||
{
|
||||
LandData landData = new LandData();
|
||||
|
||||
|
||||
StringReader sr = new StringReader(serializedLandData);
|
||||
XmlTextReader xtr = new XmlTextReader(sr);
|
||||
|
||||
|
||||
xtr.ReadStartElement("LandData");
|
||||
|
||||
landData.Area = Convert.ToInt32( xtr.ReadElementString("Area"));
|
||||
|
@ -106,7 +106,7 @@ namespace OpenSim.Framework.Serialization.External
|
|||
pae.Time = Convert.ToDateTime( xtr.ReadElementString("Time"));
|
||||
pae.Flags = (AccessList)Convert.ToUInt32( xtr.ReadElementString("AccessList"));
|
||||
xtr.ReadEndElement();
|
||||
|
||||
|
||||
landData.ParcelAccessList.Add(pae);
|
||||
}
|
||||
}
|
||||
|
@ -122,13 +122,13 @@ namespace OpenSim.Framework.Serialization.External
|
|||
landData.OtherCleanTime = Convert.ToInt32( xtr.ReadElementString("OtherCleanTime"));
|
||||
|
||||
xtr.ReadEndElement();
|
||||
|
||||
|
||||
xtr.Close();
|
||||
sr.Close();
|
||||
|
||||
|
||||
return landData;
|
||||
}
|
||||
|
||||
|
||||
public static string Serialize(LandData landData)
|
||||
{
|
||||
StringWriter sw = new StringWriter();
|
||||
|
@ -137,8 +137,8 @@ namespace OpenSim.Framework.Serialization.External
|
|||
|
||||
xtw.WriteStartDocument();
|
||||
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("AuthBuyerID", landData.AuthBuyerID.ToString());
|
||||
xtw.WriteElementString("Category", Convert.ToString((sbyte)landData.Category));
|
||||
|
@ -170,7 +170,7 @@ namespace OpenSim.Framework.Serialization.External
|
|||
xtw.WriteEndElement();
|
||||
}
|
||||
xtw.WriteEndElement();
|
||||
|
||||
|
||||
xtw.WriteElementString("PassHours", Convert.ToString(landData.PassHours));
|
||||
xtw.WriteElementString("PassPrice", Convert.ToString(landData.PassPrice));
|
||||
xtw.WriteElementString("SalePrice", Convert.ToString(landData.SalePrice));
|
||||
|
@ -184,7 +184,7 @@ namespace OpenSim.Framework.Serialization.External
|
|||
|
||||
xtw.Close();
|
||||
sw.Close();
|
||||
|
||||
|
||||
return sw.ToString();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -246,7 +246,7 @@ namespace OpenSim.Framework.Servers
|
|||
foreach (ProcessThread t in threads)
|
||||
{
|
||||
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)
|
||||
sb.Append(", Reason: " + t.WaitReason + Environment.NewLine);
|
||||
else
|
||||
|
|
|
@ -9969,11 +9969,28 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
Utils.BytesToString(avatarNotesUpdate.Data.Notes));
|
||||
break;
|
||||
|
||||
// case PacketType.AvatarInterestsUpdate:
|
||||
// AvatarInterestsUpdatePacket avatarInterestUpdate =
|
||||
// (AvatarInterestsUpdatePacket)Pack;
|
||||
//
|
||||
// break;
|
||||
case PacketType.AvatarInterestsUpdate:
|
||||
AvatarInterestsUpdatePacket avatarInterestUpdate =
|
||||
(AvatarInterestsUpdatePacket)Pack;
|
||||
|
||||
#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:
|
||||
PlacesQueryPacket placesQueryPacket =
|
||||
|
|
|
@ -730,7 +730,7 @@ namespace Flotsam.RegionModules.AssetCache
|
|||
int fileCount = GetFileCacheCount(m_CacheDirectory);
|
||||
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:");
|
||||
|
||||
|
@ -770,7 +770,7 @@ namespace Flotsam.RegionModules.AssetCache
|
|||
int assetsCached = CacheScenes();
|
||||
m_log.InfoFormat("[FLOTSAM ASSET CACHE] Completed Scene Caching, {0} assets found.", assetsCached);
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
|
|
|
@ -128,6 +128,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
public CommunicationsManager CommsManager;
|
||||
|
||||
protected SceneCommunicationService m_sceneGridService;
|
||||
public bool loginsdisabled = true;
|
||||
|
||||
public SceneCommunicationService SceneGridService
|
||||
{
|
||||
|
@ -1062,6 +1063,11 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
StatsReporter.SetActiveScripts(m_sceneGraph.GetActiveScriptsCount());
|
||||
StatsReporter.addScriptLines(m_sceneGraph.GetScriptLPS());
|
||||
}
|
||||
if (loginsdisabled && (m_frame > 20))
|
||||
{
|
||||
m_log.Debug("[REGION]: Enabling Logins");
|
||||
loginsdisabled = false;
|
||||
}
|
||||
}
|
||||
catch (NotImplementedException)
|
||||
{
|
||||
|
@ -1110,13 +1116,13 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
public void AddGroupTarget(SceneObjectGroup grp)
|
||||
{
|
||||
lock(m_groupsWithTargets)
|
||||
lock (m_groupsWithTargets)
|
||||
m_groupsWithTargets[grp.UUID] = grp;
|
||||
}
|
||||
|
||||
public void RemoveGroupTarget(SceneObjectGroup grp)
|
||||
{
|
||||
lock(m_groupsWithTargets)
|
||||
lock (m_groupsWithTargets)
|
||||
m_groupsWithTargets.Remove(grp.UUID);
|
||||
}
|
||||
|
||||
|
@ -3227,6 +3233,11 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
/// also return a reason.</returns>
|
||||
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
|
||||
m_log.InfoFormat(
|
||||
"[CONNECTION BEGIN]: Region {0} told of incoming {1} agent {2} {3} {4} (circuit code {5})",
|
||||
|
|
|
@ -908,6 +908,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
if (PhysicsActor != null)
|
||||
{
|
||||
m_physicsActor.OnRequestTerseUpdate -= SendTerseUpdateToAllClients;
|
||||
m_physicsActor.OnOutOfBounds -= OutOfBoundsCall;
|
||||
m_scene.PhysicsScene.RemoveAvatar(PhysicsActor);
|
||||
m_physicsActor.UnSubscribeEvents();
|
||||
m_physicsActor.OnCollisionUpdate -= PhysicsCollisionUpdate;
|
||||
|
@ -3410,11 +3411,22 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
scene.AddPhysicsActorTaint(m_physicsActor);
|
||||
//m_physicsActor.OnRequestTerseUpdate += SendTerseUpdateToAllClients;
|
||||
m_physicsActor.OnCollisionUpdate += PhysicsCollisionUpdate;
|
||||
m_physicsActor.OnOutOfBounds += OutOfBoundsCall; // Called for PhysicsActors when there's something wrong
|
||||
m_physicsActor.SubscribeEvents(500);
|
||||
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.
|
||||
private void PhysicsCollisionUpdate(EventArgs e)
|
||||
{
|
||||
|
|
|
@ -831,7 +831,9 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
|
|||
public event PickInfoUpdate OnPickInfoUpdate;
|
||||
public event AvatarNotesUpdate OnAvatarNotesUpdate;
|
||||
public event MuteListRequest OnMuteListRequest;
|
||||
public event AvatarInterestUpdate OnAvatarInterestUpdate;
|
||||
public event PlacesQuery OnPlacesQuery;
|
||||
|
||||
#pragma warning restore 67
|
||||
|
||||
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)
|
||||
{
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ namespace OpenSim.Region.Physics.Manager
|
|||
int[] getIndexListAsIntLocked();
|
||||
float[] getVertexListAsFloatLocked();
|
||||
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 releasePinned();
|
||||
void Append(IMesh newMesh);
|
||||
|
|
|
@ -70,7 +70,7 @@ namespace OpenSim.Region.Physics.Meshing
|
|||
throw new NotSupportedException("Attempt to Add to a pinned Mesh");
|
||||
// If a vertex of the triangle is not yet in the vertices list,
|
||||
// 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;
|
||||
if (!m_vertices.ContainsKey(triangle.v2))
|
||||
m_vertices[triangle.v2] = m_vertices.Count;
|
||||
|
@ -153,7 +153,7 @@ namespace OpenSim.Region.Physics.Meshing
|
|||
|
||||
private float[] getVertexListAsFloat()
|
||||
{
|
||||
if(m_vertices == null)
|
||||
if (m_vertices == null)
|
||||
throw new NotSupportedException();
|
||||
float[] result = new float[m_vertices.Count * 3];
|
||||
foreach (KeyValuePair<Vertex, int> kvp in m_vertices)
|
||||
|
@ -169,7 +169,7 @@ namespace OpenSim.Region.Physics.Meshing
|
|||
|
||||
public float[] getVertexListAsFloatLocked()
|
||||
{
|
||||
if( m_pinnedVertexes.IsAllocated )
|
||||
if (m_pinnedVertexes.IsAllocated)
|
||||
return (float[])(m_pinnedVertexes.Target);
|
||||
|
||||
float[] result = getVertexListAsFloat();
|
||||
|
|
|
@ -1105,7 +1105,19 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
public void UpdatePositionAndVelocity()
|
||||
{
|
||||
// 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!)
|
||||
if (vec.X < 0.0f) vec.X = 0.0f;
|
||||
|
@ -1137,7 +1149,16 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
else
|
||||
{
|
||||
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.Y = (vec.Y);
|
||||
|
||||
|
|
|
@ -827,8 +827,8 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
IntPtr vertices, indices;
|
||||
int vertexCount, indexCount;
|
||||
int vertexStride, triStride;
|
||||
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.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.releaseSourceMeshData(); // free up the original mesh data to save memory
|
||||
|
||||
|
|
|
@ -243,6 +243,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
private readonly HashSet<OdeCharacter> _taintedActors = new HashSet<OdeCharacter>();
|
||||
private readonly List<d.ContactGeom> _perloopContact = new List<d.ContactGeom>();
|
||||
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, PhysicsActor> actor_name_map = new Dictionary<IntPtr, PhysicsActor>();
|
||||
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)
|
||||
{
|
||||
|
@ -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)
|
||||
{
|
||||
//if (timeStep < 0.2f)
|
||||
|
@ -3792,7 +3813,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
}
|
||||
|
||||
public void start(int unused)
|
||||
{
|
||||
{
|
||||
ds.SetViewpoint(ref xyz, ref hpr);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ScenePresence presence = m_Engine.World.GetScenePresence(part.OwnerID);
|
||||
// else
|
||||
// {
|
||||
// ScenePresence presence = m_Engine.World.GetScenePresence(part.OwnerID);
|
||||
|
||||
if (presence != null && (!postOnRez))
|
||||
presence.ControllingClient.SendAgentAlertMessage("Compile successful", false);
|
||||
// if (presence != null && (!postOnRez))
|
||||
// presence.ControllingClient.SendAgentAlertMessage("Compile successful", false);
|
||||
|
||||
// // m_log.ErrorFormat("[Script] Unable to load script state, file not found");
|
||||
}
|
||||
// }
|
||||
}
|
||||
|
||||
public void Init()
|
||||
|
|
|
@ -604,9 +604,6 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
|||
|
||||
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)
|
||||
{
|
||||
try
|
||||
|
@ -615,10 +612,17 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
|||
string text = "Warning:\n" + warning;
|
||||
if (text.Length > 1000)
|
||||
text = text.Substring(0, 1000);
|
||||
World.SimChat(Utils.StringToBytes(text),
|
||||
ChatTypeEnum.DebugChannel, 2147483647,
|
||||
part.AbsolutePosition,
|
||||
part.Name, part.UUID, false);
|
||||
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),
|
||||
ChatTypeEnum.DebugChannel, 2147483647,
|
||||
part.AbsolutePosition,
|
||||
part.Name, part.UUID, false);
|
||||
}
|
||||
}
|
||||
catch (Exception e2) // LEGIT: User Scripting
|
||||
{
|
||||
|
@ -634,8 +638,6 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
|||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (presence != null && (!postOnRez))
|
||||
presence.ControllingClient.SendAgentAlertMessage("Script saved with errors, check debug window!", false);
|
||||
try
|
||||
{
|
||||
// DISPLAY ERROR INWORLD
|
||||
|
@ -645,10 +647,16 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
|||
string text = "Error compiling script '" + item.Name + "':\n" + e.Message.ToString();
|
||||
if (text.Length > 1000)
|
||||
text = text.Substring(0, 1000);
|
||||
World.SimChat(Utils.StringToBytes(text),
|
||||
ChatTypeEnum.DebugChannel, 2147483647,
|
||||
part.AbsolutePosition,
|
||||
part.Name, part.UUID, false);
|
||||
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),
|
||||
ChatTypeEnum.DebugChannel, 2147483647,
|
||||
part.AbsolutePosition,
|
||||
part.Name, part.UUID, false);
|
||||
}
|
||||
}
|
||||
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}",
|
||||
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.LineMap = linemap;
|
||||
|
||||
|
@ -1250,5 +1264,10 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
|||
|
||||
return instance.CanBeDeleted();
|
||||
}
|
||||
|
||||
private bool ShowScriptSaveResponse(UUID ownerID, UUID assetID, string text, bool compiled)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,14 +46,14 @@ namespace OpenSim.Tests.Common.Mock
|
|||
m_scene = scene;
|
||||
}
|
||||
|
||||
public List<ILandObject> ParcelsNearPoint(Vector3 position)
|
||||
{
|
||||
return new List<ILandObject>();
|
||||
public List<ILandObject> ParcelsNearPoint(Vector3 position)
|
||||
{
|
||||
return new List<ILandObject>();
|
||||
}
|
||||
|
||||
public List<ILandObject> AllParcels()
|
||||
{
|
||||
return new List<ILandObject>();
|
||||
public List<ILandObject> AllParcels()
|
||||
{
|
||||
return new List<ILandObject>();
|
||||
}
|
||||
|
||||
protected ILandObject GetNoLand()
|
||||
|
@ -63,18 +63,18 @@ namespace OpenSim.Tests.Common.Mock
|
|||
return obj;
|
||||
}
|
||||
|
||||
public ILandObject GetLandObject(int x, int y)
|
||||
{
|
||||
public ILandObject GetLandObject(int x, int y)
|
||||
{
|
||||
return GetNoLand();
|
||||
}
|
||||
|
||||
public ILandObject GetLandObject(int localID)
|
||||
{
|
||||
public ILandObject GetLandObject(int localID)
|
||||
{
|
||||
return GetNoLand();
|
||||
}
|
||||
|
||||
public ILandObject GetLandObject(float x, float y)
|
||||
{
|
||||
public ILandObject GetLandObject(float x, float y)
|
||||
{
|
||||
return GetNoLand();
|
||||
}
|
||||
|
||||
|
|
|
@ -45,3 +45,9 @@ MasterAvatarUUID = "00000000-0000-0000-0000-000000000000"
|
|||
; *
|
||||
|
||||
; ScopeID = "00000000-0000-0000-0000-000000000000"
|
||||
|
||||
; *
|
||||
; * Product name (used in search from viewer 1.23
|
||||
; *
|
||||
|
||||
; RegionType = "Mainland"
|
||||
|
|
Loading…
Reference in New Issue