DelinkFromGroup now calls AddNewSceneObjectByDelink, to avoid calling SyncNewObject later.
Also, replace all "SYMMETRIC SYNC" with "DSG SYNC" in comments.dsg
parent
a5ebd04d9d
commit
1c1d3893fc
|
@ -386,7 +386,7 @@ namespace OpenSim.Framework
|
||||||
public string RemotingAddress;
|
public string RemotingAddress;
|
||||||
public UUID ScopeID = UUID.Zero;
|
public UUID ScopeID = UUID.Zero;
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
//IP:port for the symmetric sync listener this actor is configured to connect to
|
//IP:port for the symmetric sync listener this actor is configured to connect to
|
||||||
private string m_syncServerAddr = String.Empty;
|
private string m_syncServerAddr = String.Empty;
|
||||||
private int m_syncServerPort;
|
private int m_syncServerPort;
|
||||||
|
@ -398,7 +398,7 @@ namespace OpenSim.Framework
|
||||||
private int m_physicsSyncServerPort;
|
private int m_physicsSyncServerPort;
|
||||||
private uint m_quarkLocX;
|
private uint m_quarkLocX;
|
||||||
private uint m_quarkLocY;
|
private uint m_quarkLocY;
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
// 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.
|
||||||
|
|
||||||
|
@ -689,7 +689,7 @@ namespace OpenSim.Framework
|
||||||
get { return Util.UIntsToLong((RegionLocX * (uint) Constants.RegionSize), (RegionLocY * (uint) Constants.RegionSize)); }
|
get { return Util.UIntsToLong((RegionLocX * (uint) Constants.RegionSize), (RegionLocY * (uint) Constants.RegionSize)); }
|
||||||
}
|
}
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
public string SyncServerAddress
|
public string SyncServerAddress
|
||||||
{
|
{
|
||||||
get { return m_syncServerAddr; }
|
get { return m_syncServerAddr; }
|
||||||
|
@ -726,7 +726,7 @@ namespace OpenSim.Framework
|
||||||
get { return m_quarkLocY; }
|
get { return m_quarkLocY; }
|
||||||
set { m_quarkLocY = value; }
|
set { m_quarkLocY = value; }
|
||||||
}
|
}
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
public void SetEndPoint(string ipaddr, int port)
|
public void SetEndPoint(string ipaddr, int port)
|
||||||
{
|
{
|
||||||
|
@ -883,7 +883,7 @@ namespace OpenSim.Framework
|
||||||
//
|
//
|
||||||
ScopeID = new UUID(config.GetString("ScopeID", UUID.Zero.ToString()));
|
ScopeID = new UUID(config.GetString("ScopeID", UUID.Zero.ToString()));
|
||||||
|
|
||||||
// SYMMETRIC SYNC
|
// DSG SYNC
|
||||||
m_syncServerAddr = config.GetString("SyncServerAddress", String.Empty);
|
m_syncServerAddr = config.GetString("SyncServerAddress", String.Empty);
|
||||||
m_syncServerPort = config.GetInt("SyncServerPort", -1);
|
m_syncServerPort = config.GetInt("SyncServerPort", -1);
|
||||||
//if either IP or port is not configured, we set IP to empty to raise warning later
|
//if either IP or port is not configured, we set IP to empty to raise warning later
|
||||||
|
@ -908,7 +908,7 @@ namespace OpenSim.Framework
|
||||||
m_quarkLocY = Convert.ToUInt32(quarkLocElements[1]);
|
m_quarkLocY = Convert.ToUInt32(quarkLocElements[1]);
|
||||||
|
|
||||||
|
|
||||||
// end of SYMMETRIC SYNC
|
// end of DSG SYNC
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -411,11 +411,11 @@ namespace OpenSim
|
||||||
|
|
||||||
scene.StartTimer();
|
scene.StartTimer();
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
//For INonSharedRegionModule, there is no more PostInitialise(). So we trigger OnPostSceneCreation event here
|
//For INonSharedRegionModule, there is no more PostInitialise(). So we trigger OnPostSceneCreation event here
|
||||||
//to let the Sync modules to do their work once all modules are loaded and scene has interfaces to all of them.
|
//to let the Sync modules to do their work once all modules are loaded and scene has interfaces to all of them.
|
||||||
scene.EventManager.TriggerOnPostSceneCreation(scene);
|
scene.EventManager.TriggerOnPostSceneCreation(scene);
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
return clientServer;
|
return clientServer;
|
||||||
}
|
}
|
||||||
|
|
|
@ -674,7 +674,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||||
|
|
||||||
rootPart.TrimPermissions();
|
rootPart.TrimPermissions();
|
||||||
|
|
||||||
//SYMMETRIC SYNC: move this part to the bottom of this function,
|
//DSG SYNC: move this part to the bottom of this function,
|
||||||
//so that all properties of the object would have been set once
|
//so that all properties of the object would have been set once
|
||||||
//AddNewSceneObject is called.
|
//AddNewSceneObject is called.
|
||||||
if (attachment)
|
if (attachment)
|
||||||
|
|
|
@ -318,7 +318,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
RegionSyncMessage.HandleSuccess(LogHeader(), msg, String.Format("Syncing to region \"{0}\"", m_regionName));
|
RegionSyncMessage.HandleSuccess(LogHeader(), msg, String.Format("Syncing to region \"{0}\"", m_regionName));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//SYMMETRIC SYNC: do not handle terrian and object updates
|
//DSG SYNC: do not handle terrian and object updates
|
||||||
case RegionSyncMessage.MsgType.Terrain:
|
case RegionSyncMessage.MsgType.Terrain:
|
||||||
{
|
{
|
||||||
if(!m_symSync)
|
if(!m_symSync)
|
||||||
|
@ -378,7 +378,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
case RegionSyncMessage.MsgType.NewAvatar:
|
case RegionSyncMessage.MsgType.NewAvatar:
|
||||||
{
|
{
|
||||||
// Get the data from message and error check
|
// Get the data from message and error check
|
||||||
|
@ -854,13 +854,13 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
|
|
||||||
Send(new RegionSyncMessage(RegionSyncMessage.MsgType.RegionName, m_scene.RegionInfo.RegionName));
|
Send(new RegionSyncMessage(RegionSyncMessage.MsgType.RegionName, m_scene.RegionInfo.RegionName));
|
||||||
m_log.WarnFormat("Sending region name: \"{0}\"", m_scene.RegionInfo.RegionName);
|
m_log.WarnFormat("Sending region name: \"{0}\"", m_scene.RegionInfo.RegionName);
|
||||||
//SYMMETRIC SYNC: commenting out terrian and object updates
|
//DSG SYNC: commenting out terrian and object updates
|
||||||
if (!m_symSync)
|
if (!m_symSync)
|
||||||
{
|
{
|
||||||
Send(new RegionSyncMessage(RegionSyncMessage.MsgType.GetTerrain));
|
Send(new RegionSyncMessage(RegionSyncMessage.MsgType.GetTerrain));
|
||||||
Send(new RegionSyncMessage(RegionSyncMessage.MsgType.GetObjects));
|
Send(new RegionSyncMessage(RegionSyncMessage.MsgType.GetObjects));
|
||||||
}
|
}
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
Send(new RegionSyncMessage(RegionSyncMessage.MsgType.GetAvatars));
|
Send(new RegionSyncMessage(RegionSyncMessage.MsgType.GetAvatars));
|
||||||
|
|
||||||
// Register for events which will be forwarded to authoritative scene
|
// Register for events which will be forwarded to authoritative scene
|
||||||
|
@ -910,11 +910,11 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
// Register for interesting client events which will be forwarded to auth sim
|
// Register for interesting client events which will be forwarded to auth sim
|
||||||
// These are the raw packet data blocks from the client, intercepted and sent up to the sim
|
// These are the raw packet data blocks from the client, intercepted and sent up to the sim
|
||||||
client.OnAgentUpdateRaw += HandleAgentUpdateRaw;
|
client.OnAgentUpdateRaw += HandleAgentUpdateRaw;
|
||||||
//SYMMETRIC SYNC: do not subscribe to OnChatFromClientRaw: RegionSyncModule + Scene.EventManager will handle this.
|
//DSG SYNC: do not subscribe to OnChatFromClientRaw: RegionSyncModule + Scene.EventManager will handle this.
|
||||||
//client.OnChatFromClientRaw += HandleChatFromClientRaw;
|
//client.OnChatFromClientRaw += HandleChatFromClientRaw;
|
||||||
client.OnAgentRequestSit += HandleAgentRequestSit;
|
client.OnAgentRequestSit += HandleAgentRequestSit;
|
||||||
client.OnAgentSit += HandleAgentSit;
|
client.OnAgentSit += HandleAgentSit;
|
||||||
//SYMMETRIC SYNC: do not subscribe to OnGrabObject, OnGrabUpdate, and OnDeGrabObject: RegionSyncModule + Scene.EventManager will handle this.
|
//DSG SYNC: do not subscribe to OnGrabObject, OnGrabUpdate, and OnDeGrabObject: RegionSyncModule + Scene.EventManager will handle this.
|
||||||
//client.OnGrabObject += HandleGrabObject;
|
//client.OnGrabObject += HandleGrabObject;
|
||||||
//client.OnGrabUpdate += HandleGrabUpdate;
|
//client.OnGrabUpdate += HandleGrabUpdate;
|
||||||
//client.OnDeGrabObject += HandleDeGrabObject;
|
//client.OnDeGrabObject += HandleDeGrabObject;
|
||||||
|
|
|
@ -202,10 +202,10 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
// *** This is the main receive loop thread for each connected client
|
// *** This is the main receive loop thread for each connected client
|
||||||
private void ReceiveLoop()
|
private void ReceiveLoop()
|
||||||
{
|
{
|
||||||
//SYMMETRIC SYNC: commenting out the code for handling chats
|
//DSG SYNC: commenting out the code for handling chats
|
||||||
// m_scene.EventManager.OnChatFromClient += new EventManager.ChatFromClientEvent(EventManager_OnChatFromClient);
|
// m_scene.EventManager.OnChatFromClient += new EventManager.ChatFromClientEvent(EventManager_OnChatFromClient);
|
||||||
// m_scene.EventManager.OnChatFromWorld += new EventManager.ChatFromWorldEvent(EventManager_OnChatFromClient);
|
// m_scene.EventManager.OnChatFromWorld += new EventManager.ChatFromWorldEvent(EventManager_OnChatFromClient);
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
|
|
||||||
// Reset stats and time
|
// Reset stats and time
|
||||||
|
@ -327,7 +327,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
RegionSyncMessage.HandleSuccess(LogHeader, msg, String.Format("Syncing to region \"{0}\"", m_regionName));
|
RegionSyncMessage.HandleSuccess(LogHeader, msg, String.Format("Syncing to region \"{0}\"", m_regionName));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//SYMMETRIC SYNC: do not handle terrian and object updates
|
//DSG SYNC: do not handle terrian and object updates
|
||||||
case RegionSyncMessage.MsgType.GetTerrain:
|
case RegionSyncMessage.MsgType.GetTerrain:
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -358,7 +358,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
* */
|
* */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
case RegionSyncMessage.MsgType.GetAvatars:
|
case RegionSyncMessage.MsgType.GetAvatars:
|
||||||
{
|
{
|
||||||
m_scene.ForEachScenePresence(delegate(ScenePresence presence)
|
m_scene.ForEachScenePresence(delegate(ScenePresence presence)
|
||||||
|
|
|
@ -151,7 +151,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
//m_scene.EventManager.OnNewPresence += new EventManager.OnNewPresenceDelegate(EventManager_OnNewPresence);
|
//m_scene.EventManager.OnNewPresence += new EventManager.OnNewPresenceDelegate(EventManager_OnNewPresence);
|
||||||
m_scene.EventManager.OnRemovePresence += new EventManager.OnRemovePresenceDelegate(EventManager_OnRemovePresence);
|
m_scene.EventManager.OnRemovePresence += new EventManager.OnRemovePresenceDelegate(EventManager_OnRemovePresence);
|
||||||
|
|
||||||
//SYMMETRIC SYNC: do not handle object updates
|
//DSG SYNC: do not handle object updates
|
||||||
/*
|
/*
|
||||||
if (!m_symsync)
|
if (!m_symsync)
|
||||||
{
|
{
|
||||||
|
@ -162,7 +162,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
m_scene.EventManager.OnOarFileLoaded += new EventManager.OarFileLoaded(EventManager_OnOarFileLoaded);
|
m_scene.EventManager.OnOarFileLoaded += new EventManager.OarFileLoaded(EventManager_OnOarFileLoaded);
|
||||||
}
|
}
|
||||||
* */
|
* */
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
// Start the server and listen for RegionSyncClients
|
// Start the server and listen for RegionSyncClients
|
||||||
m_serveraddr = m_scene.RegionInfo.AvatarSyncServerAddress;
|
m_serveraddr = m_scene.RegionInfo.AvatarSyncServerAddress;
|
||||||
m_serverport = m_scene.RegionInfo.AvatarSyncServerPort;
|
m_serverport = m_scene.RegionInfo.AvatarSyncServerPort;
|
||||||
|
@ -300,7 +300,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
// Sending the message when it's first queued would yield lower latency but much higher load on the simulator
|
// Sending the message when it's first queued would yield lower latency but much higher load on the simulator
|
||||||
// as parts may be updated many many times very quickly. Need to implement a higher resolution send in heartbeat
|
// as parts may be updated many many times very quickly. Need to implement a higher resolution send in heartbeat
|
||||||
|
|
||||||
//SYMMETRIC SYNC: do not handle object updates
|
//DSG SYNC: do not handle object updates
|
||||||
/*
|
/*
|
||||||
if (!m_symsync)
|
if (!m_symsync)
|
||||||
{
|
{
|
||||||
|
@ -317,7 +317,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
* */
|
* */
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
foreach (ScenePresence presence in presenceUpdates)
|
foreach (ScenePresence presence in presenceUpdates)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|
|
@ -1944,6 +1944,10 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
foreach (SceneObjectGroup sog in sogList)
|
foreach (SceneObjectGroup sog in sogList)
|
||||||
{
|
{
|
||||||
m_log.WarnFormat("SyncStateReport -- SOG: name {0}, UUID {1}, position {2}", sog.Name, sog.UUID, sog.AbsolutePosition);
|
m_log.WarnFormat("SyncStateReport -- SOG: name {0}, UUID {1}, position {2}", sog.Name, sog.UUID, sog.AbsolutePosition);
|
||||||
|
foreach (SceneObjectPart part in sog.Parts)
|
||||||
|
{
|
||||||
|
m_log.WarnFormat(" -- part {0}, UUID {1}, LocalID {2}, offset-position {3}", part.Name, part.UUID, part.LocalId, part.OffsetPosition);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_isSyncRelay)
|
if (m_isSyncRelay)
|
||||||
|
@ -2541,6 +2545,8 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -127,11 +127,11 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
|
||||||
m_listenerManager = new ListenerManager(maxlisteners, maxhandles);
|
m_listenerManager = new ListenerManager(maxlisteners, maxhandles);
|
||||||
m_scene.EventManager.OnChatFromClient += DeliverClientMessage;
|
m_scene.EventManager.OnChatFromClient += DeliverClientMessage;
|
||||||
m_scene.EventManager.OnChatBroadcast += DeliverClientMessage;
|
m_scene.EventManager.OnChatBroadcast += DeliverClientMessage;
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
//m_scene.EventManager.OnChatFromWorld += DeliverClientMessage;
|
//m_scene.EventManager.OnChatFromWorld += DeliverClientMessage;
|
||||||
//Kitty: temp debug
|
//Kitty: temp debug
|
||||||
//m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
//m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
//end SYMMETRIC SYNC
|
//end DSG SYNC
|
||||||
m_pendingQ = new Queue();
|
m_pendingQ = new Queue();
|
||||||
m_pending = Queue.Synchronized(m_pendingQ);
|
m_pending = Queue.Synchronized(m_pendingQ);
|
||||||
}
|
}
|
||||||
|
|
|
@ -551,14 +551,14 @@ namespace OpenSim.Region.CoreModules.World.Terrain
|
||||||
m_scene.PhysicsScene.SetTerrain(m_channel.GetFloatsSerialised());
|
m_scene.PhysicsScene.SetTerrain(m_channel.GetFloatsSerialised());
|
||||||
m_scene.SaveTerrain();
|
m_scene.SaveTerrain();
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
//Terrain has been modified, send out sync message if needed
|
//Terrain has been modified, send out sync message if needed
|
||||||
//if (m_scene.RegionSyncModule != null)
|
//if (m_scene.RegionSyncModule != null)
|
||||||
//{
|
//{
|
||||||
//m_log.DebugFormat("EventManager_OnTerrainTick: To call SendTerrainUpdates with TS {0} and actorID {1}", m_lastUpdateTimeStamp, m_lastUpdateActorID);
|
//m_log.DebugFormat("EventManager_OnTerrainTick: To call SendTerrainUpdates with TS {0} and actorID {1}", m_lastUpdateTimeStamp, m_lastUpdateActorID);
|
||||||
//m_scene.RegionSyncModule.SendTerrainUpdates(m_lastUpdateTimeStamp, m_lastUpdateActorID);
|
//m_scene.RegionSyncModule.SendTerrainUpdates(m_lastUpdateTimeStamp, m_lastUpdateActorID);
|
||||||
//}
|
//}
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
// Clients who look at the map will never see changes after they looked at the map, so i've commented this out.
|
// Clients who look at the map will never see changes after they looked at the map, so i've commented this out.
|
||||||
//m_scene.CreateTerrainTexture(true);
|
//m_scene.CreateTerrainTexture(true);
|
||||||
|
@ -600,7 +600,7 @@ namespace OpenSim.Region.CoreModules.World.Terrain
|
||||||
client.OnUnackedTerrain += client_OnUnackedTerrain;
|
client.OnUnackedTerrain += client_OnUnackedTerrain;
|
||||||
}
|
}
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
private long m_lastUpdateTimeStamp = DateTime.Now.Ticks;
|
private long m_lastUpdateTimeStamp = DateTime.Now.Ticks;
|
||||||
public long LastUpdateTimeStamp
|
public long LastUpdateTimeStamp
|
||||||
{
|
{
|
||||||
|
@ -675,7 +675,7 @@ namespace OpenSim.Region.CoreModules.World.Terrain
|
||||||
m_lastUpdateActorID = lastUpdateActorID;
|
m_lastUpdateActorID = lastUpdateActorID;
|
||||||
}
|
}
|
||||||
|
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Checks to see if the terrain has been modified since last check
|
/// Checks to see if the terrain has been modified since last check
|
||||||
|
@ -684,7 +684,7 @@ namespace OpenSim.Region.CoreModules.World.Terrain
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void CheckForTerrainUpdates()
|
private void CheckForTerrainUpdates()
|
||||||
{
|
{
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
m_log.DebugFormat("CheckForTerrainUpdates() called");
|
m_log.DebugFormat("CheckForTerrainUpdates() called");
|
||||||
//Assumption: Thus function is only called when the terrain is updated by the local actor.
|
//Assumption: Thus function is only called when the terrain is updated by the local actor.
|
||||||
// Updating terrain during receiving sync messages from another actor will call CheckForTerrainUpdates.
|
// Updating terrain during receiving sync messages from another actor will call CheckForTerrainUpdates.
|
||||||
|
@ -696,7 +696,7 @@ namespace OpenSim.Region.CoreModules.World.Terrain
|
||||||
//Check if the terrain has been modified and send out sync message if modified.
|
//Check if the terrain has been modified and send out sync message if modified.
|
||||||
CheckForTerrainUpdates(false, currentTimeTick, localActorID);
|
CheckForTerrainUpdates(false, currentTimeTick, localActorID);
|
||||||
|
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
//CheckForTerrainUpdates(false);
|
//CheckForTerrainUpdates(false);
|
||||||
}
|
}
|
||||||
|
@ -710,9 +710,9 @@ namespace OpenSim.Region.CoreModules.World.Terrain
|
||||||
/// <param name="respectEstateSettings">should height map deltas be limited to the estate settings limits</param>
|
/// <param name="respectEstateSettings">should height map deltas be limited to the estate settings limits</param>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
//private void CheckForTerrainUpdates(bool respectEstateSettings)
|
//private void CheckForTerrainUpdates(bool respectEstateSettings)
|
||||||
//SYMMETRIC SYNC: Change the interface, to input the right sync information for the most recent update
|
//DSG SYNC: Change the interface, to input the right sync information for the most recent update
|
||||||
private void CheckForTerrainUpdates(bool respectEstateSettings, long lastUpdateTimeStamp, string lastUpdateActorID)
|
private void CheckForTerrainUpdates(bool respectEstateSettings, long lastUpdateTimeStamp, string lastUpdateActorID)
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
{
|
{
|
||||||
bool shouldTaint = false;
|
bool shouldTaint = false;
|
||||||
float[] serialised = m_channel.GetFloatsSerialised();
|
float[] serialised = m_channel.GetFloatsSerialised();
|
||||||
|
@ -741,14 +741,14 @@ namespace OpenSim.Region.CoreModules.World.Terrain
|
||||||
if (shouldTaint)
|
if (shouldTaint)
|
||||||
{
|
{
|
||||||
m_tainted = true;
|
m_tainted = true;
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
//Terrain has been modified, updated the sync info
|
//Terrain has been modified, updated the sync info
|
||||||
if (m_scene.RegionSyncModule != null)
|
if (m_scene.RegionSyncModule != null)
|
||||||
{
|
{
|
||||||
SyncInfoUpdate(lastUpdateTimeStamp, lastUpdateActorID);
|
SyncInfoUpdate(lastUpdateTimeStamp, lastUpdateActorID);
|
||||||
m_scene.RegionSyncModule.SendTerrainUpdates(lastUpdateTimeStamp, lastUpdateActorID);
|
m_scene.RegionSyncModule.SendTerrainUpdates(lastUpdateTimeStamp, lastUpdateActorID);
|
||||||
}
|
}
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -862,9 +862,9 @@ namespace OpenSim.Region.CoreModules.World.Terrain
|
||||||
m_channel, allowMask, west, south, height, size, seconds);
|
m_channel, allowMask, west, south, height, size, seconds);
|
||||||
|
|
||||||
//CheckForTerrainUpdates(!god); //revert changes outside estate limits
|
//CheckForTerrainUpdates(!god); //revert changes outside estate limits
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
CheckForTerrainUpdates(!god, DateTime.Now.Ticks, m_scene.GetSyncActorID());
|
CheckForTerrainUpdates(!god, DateTime.Now.Ticks, m_scene.GetSyncActorID());
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -906,9 +906,9 @@ namespace OpenSim.Region.CoreModules.World.Terrain
|
||||||
m_channel, fillArea, size);
|
m_channel, fillArea, size);
|
||||||
|
|
||||||
//CheckForTerrainUpdates(!god); //revert changes outside estate limits
|
//CheckForTerrainUpdates(!god); //revert changes outside estate limits
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
CheckForTerrainUpdates(!god, DateTime.Now.Ticks, m_scene.GetSyncActorID());
|
CheckForTerrainUpdates(!god, DateTime.Now.Ticks, m_scene.GetSyncActorID());
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -65,7 +65,7 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||||
|
|
||||||
void UndoTerrain(ITerrainChannel channel);
|
void UndoTerrain(ITerrainChannel channel);
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Invoked by receiving a terrain sync message. First, check if the
|
/// Invoked by receiving a terrain sync message. First, check if the
|
||||||
/// timestamp is more advance than the local copy. If so, update the
|
/// timestamp is more advance than the local copy. If so, update the
|
||||||
|
@ -96,6 +96,6 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||||
/// <param name="lastUpdateTimeStamp"></param>
|
/// <param name="lastUpdateTimeStamp"></param>
|
||||||
/// <param name="lastUpdateActorID"></param>
|
/// <param name="lastUpdateActorID"></param>
|
||||||
void SetSyncInfo(long lastUpdateTimeStamp, string lastUpdateActorID);
|
void SetSyncInfo(long lastUpdateTimeStamp, string lastUpdateActorID);
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ using GridRegion = OpenSim.Services.Interfaces.GridRegion;
|
||||||
|
|
||||||
namespace OpenSim.Region.Framework.Scenes
|
namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
//SYMMETRIC SYNC: Rename the original EventManager as EventManagerBase, and implement a new EventManager that inherits from EventManagerBase
|
//DSG SYNC: Rename the original EventManager as EventManagerBase, and implement a new EventManager that inherits from EventManagerBase
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A wrapper class to implement handle event differently depending on if they are initiated locally or remotelly (i.e. by another actor)
|
/// A wrapper class to implement handle event differently depending on if they are initiated locally or remotelly (i.e. by another actor)
|
||||||
|
@ -1113,7 +1113,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//SYMMETRIC SYNC: overridden at new EventManager class
|
//DSG SYNC: overridden at new EventManager class
|
||||||
//public void TriggerObjectGrab(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
|
//public void TriggerObjectGrab(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
|
||||||
public virtual void TriggerObjectGrab(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
|
public virtual void TriggerObjectGrab(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
|
||||||
{
|
{
|
||||||
|
@ -1136,7 +1136,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//SYMMETRIC SYNC: overridden at new EventManager class
|
//DSG SYNC: overridden at new EventManager class
|
||||||
//public void TriggerObjectGrabbing(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
|
//public void TriggerObjectGrabbing(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
|
||||||
public virtual void TriggerObjectGrabbing(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
|
public virtual void TriggerObjectGrabbing(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
|
||||||
{
|
{
|
||||||
|
@ -1159,7 +1159,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//SYMMETRIC SYNC: overridden at new EventManager class
|
//DSG SYNC: overridden at new EventManager class
|
||||||
//public void TriggerObjectDeGrab(uint localID, uint originalID, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
|
//public void TriggerObjectDeGrab(uint localID, uint originalID, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
|
||||||
public virtual void TriggerObjectDeGrab(uint localID, uint originalID, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
|
public virtual void TriggerObjectDeGrab(uint localID, uint originalID, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
|
||||||
{
|
{
|
||||||
|
@ -1851,7 +1851,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//SYMMETRIC SYNC: the function is overridden in new EventManager
|
//DSG SYNC: the function is overridden in new EventManager
|
||||||
//public void TriggerOnChatFromWorld(Object sender, OSChatMessage chat)
|
//public void TriggerOnChatFromWorld(Object sender, OSChatMessage chat)
|
||||||
public virtual void TriggerOnChatFromWorld(Object sender, OSChatMessage chat)
|
public virtual void TriggerOnChatFromWorld(Object sender, OSChatMessage chat)
|
||||||
{
|
{
|
||||||
|
@ -1874,7 +1874,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//SYMMETRIC SYNC: overiding this in the inherited class
|
//DSG SYNC: overiding this in the inherited class
|
||||||
//public void TriggerOnChatFromClient(Object sender, OSChatMessage chat)
|
//public void TriggerOnChatFromClient(Object sender, OSChatMessage chat)
|
||||||
public virtual void TriggerOnChatFromClient(Object sender, OSChatMessage chat)
|
public virtual void TriggerOnChatFromClient(Object sender, OSChatMessage chat)
|
||||||
{
|
{
|
||||||
|
@ -2550,7 +2550,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
public event PostSceneCreation OnPostSceneCreation;
|
public event PostSceneCreation OnPostSceneCreation;
|
||||||
public delegate void PostSceneCreation(Scene createdScene);
|
public delegate void PostSceneCreation(Scene createdScene);
|
||||||
public void TriggerOnPostSceneCreation(Scene createdScene)
|
public void TriggerOnPostSceneCreation(Scene createdScene)
|
||||||
|
@ -2619,6 +2619,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -251,7 +251,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
AssetService.Store(asset);
|
AssetService.Store(asset);
|
||||||
|
|
||||||
//REGION SYNC: if RegionSyncEnabled, move script related operations to be after update inventory item
|
//REGION SYNC: if RegionSyncEnabled, move script related operations to be after update inventory item
|
||||||
//SYMMETRIC SYNC: commenting out old REGION SYNC code, the RemoveScriptInstance would be handled by ScriptEngineSyncModule
|
//DSG SYNC: commenting out old REGION SYNC code, the RemoveScriptInstance would be handled by ScriptEngineSyncModule
|
||||||
/*
|
/*
|
||||||
if (!RegionSyncEnabled)
|
if (!RegionSyncEnabled)
|
||||||
{
|
{
|
||||||
|
@ -270,7 +270,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
part.GetProperties(remoteClient);
|
part.GetProperties(remoteClient);
|
||||||
|
|
||||||
////REGION SYNC
|
////REGION SYNC
|
||||||
//SYMMETRIC SYNC: commenting out old REGION SYNC code, the RemoveScriptInstance would be handled by ScriptEngineSyncModule
|
//DSG SYNC: commenting out old REGION SYNC code, the RemoveScriptInstance would be handled by ScriptEngineSyncModule
|
||||||
/*
|
/*
|
||||||
if (!RegionSyncEnabled)
|
if (!RegionSyncEnabled)
|
||||||
{
|
{
|
||||||
|
@ -309,7 +309,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
* */
|
* */
|
||||||
|
|
||||||
//SYMMETRIC SYNC: Distributed Scene Graph implementation
|
//DSG SYNC: Distributed Scene Graph implementation
|
||||||
m_log.Debug("Scene.Inventory: to call EventManager.TriggerUpdateScript, agentID: " + remoteClient.AgentId);
|
m_log.Debug("Scene.Inventory: to call EventManager.TriggerUpdateScript, agentID: " + remoteClient.AgentId);
|
||||||
//Trigger OnUpdateScript event.
|
//Trigger OnUpdateScript event.
|
||||||
EventManager.TriggerUpdateScript(remoteClient.AgentId, itemId, primId, isScriptRunning, item.AssetID);
|
EventManager.TriggerUpdateScript(remoteClient.AgentId, itemId, primId, isScriptRunning, item.AssetID);
|
||||||
|
@ -370,7 +370,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region SYMMETRIC SYNC
|
#region DSG SYNC
|
||||||
public void SymSync_OnNewScript(UUID avatarID, UUID itemID, SceneObjectPart part)
|
public void SymSync_OnNewScript(UUID avatarID, UUID itemID, SceneObjectPart part)
|
||||||
{
|
{
|
||||||
TaskInventoryItem item = part.Inventory.GetInventoryItem(itemID);
|
TaskInventoryItem item = part.Inventory.GetInventoryItem(itemID);
|
||||||
|
@ -433,7 +433,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
return errors;
|
return errors;
|
||||||
}
|
}
|
||||||
#endregion //SYMMETRIC SYNC
|
#endregion //DSG SYNC
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1710,7 +1710,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
part.ParentGroup.AddInventoryItem(remoteClient, localID, item, copyID);
|
part.ParentGroup.AddInventoryItem(remoteClient, localID, item, copyID);
|
||||||
part.GetProperties(remoteClient);
|
part.GetProperties(remoteClient);
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
/* Original OpenSim code, commented out
|
/* Original OpenSim code, commented out
|
||||||
// TODO: switch to posting on_rez here when scripts
|
// TODO: switch to posting on_rez here when scripts
|
||||||
// have state in inventory
|
// have state in inventory
|
||||||
|
@ -1737,7 +1737,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
//part.GetProperties(remoteClient);
|
//part.GetProperties(remoteClient);
|
||||||
part.ParentGroup.ResumeScripts();
|
part.ParentGroup.ResumeScripts();
|
||||||
}
|
}
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1797,7 +1797,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
part.Inventory.AddInventoryItem(taskItem, false);
|
part.Inventory.AddInventoryItem(taskItem, false);
|
||||||
part.GetProperties(remoteClient);
|
part.GetProperties(remoteClient);
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
//part.Inventory.CreateScriptInstance(taskItem, 0, false, DefaultScriptEngine, 0);
|
//part.Inventory.CreateScriptInstance(taskItem, 0, false, DefaultScriptEngine, 0);
|
||||||
//part.ParentGroup.ResumeScripts();
|
//part.ParentGroup.ResumeScripts();
|
||||||
if (RegionSyncModule != null)
|
if (RegionSyncModule != null)
|
||||||
|
@ -1815,7 +1815,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
//part.GetProperties(remoteClient);
|
//part.GetProperties(remoteClient);
|
||||||
part.ParentGroup.ResumeScripts();
|
part.ParentGroup.ResumeScripts();
|
||||||
}
|
}
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -634,9 +634,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region SYMMETRIC SYNC
|
#region DSG SYNC
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//KittyL: 12/23/2010. SYMMETRIC SYNC: Implementation for the symmetric synchronization model.
|
//KittyL: 12/23/2010. DSG SYNC: Implementation for the symmetric synchronization model.
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
private IRegionSyncModule m_regionSyncModule = null;
|
private IRegionSyncModule m_regionSyncModule = null;
|
||||||
|
@ -866,7 +866,18 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return m_sceneGraph.UpdateObjectPartBucketProperties(bucketName, partUUID, updatePart, bucketSyncInfo);
|
return m_sceneGraph.UpdateObjectPartBucketProperties(bucketName, partUUID, updatePart, bucketSyncInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion //SYMMETRIC SYNC
|
public bool AddNewSceneObjectByDelink(SceneObjectGroup sceneObject, bool attachToBackup, bool sendClientUpdates)
|
||||||
|
{
|
||||||
|
if (m_sceneGraph.AddNewSceneObjectByDelink(sceneObject, attachToBackup, sendClientUpdates))
|
||||||
|
{
|
||||||
|
EventManager.TriggerObjectAddedToScene(sceneObject);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion //DSG SYNC
|
||||||
|
|
||||||
public ICapabilitiesModule CapsModule
|
public ICapabilitiesModule CapsModule
|
||||||
{
|
{
|
||||||
|
@ -1010,10 +1021,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_physicalPrim = physicalPrim;
|
m_physicalPrim = physicalPrim;
|
||||||
m_seeIntoRegionFromNeighbor = SeeIntoRegionFromNeighbor;
|
m_seeIntoRegionFromNeighbor = SeeIntoRegionFromNeighbor;
|
||||||
|
|
||||||
//SYMMETRIC SYNC: pass Scene reference to EventManager
|
//DSG SYNC: pass Scene reference to EventManager
|
||||||
//m_eventManager = new EventManager();
|
//m_eventManager = new EventManager();
|
||||||
m_eventManager = new EventManager(this);
|
m_eventManager = new EventManager(this);
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
m_permissions = new ScenePermissions(this);
|
m_permissions = new ScenePermissions(this);
|
||||||
|
|
||||||
m_asyncSceneObjectDeleter = new AsyncSceneObjectGroupDeleter(this);
|
m_asyncSceneObjectDeleter = new AsyncSceneObjectGroupDeleter(this);
|
||||||
|
@ -1219,10 +1230,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
m_regInfo = regInfo;
|
m_regInfo = regInfo;
|
||||||
|
|
||||||
//SYMMETRIC SYNC: pass Scene reference to EventManager
|
//DSG SYNC: pass Scene reference to EventManager
|
||||||
//m_eventManager = new EventManager();
|
//m_eventManager = new EventManager();
|
||||||
m_eventManager = new EventManager(this);
|
m_eventManager = new EventManager(this);
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
m_lastUpdate = Util.EnvironmentTickCount();
|
m_lastUpdate = Util.EnvironmentTickCount();
|
||||||
}
|
}
|
||||||
|
@ -1557,13 +1568,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
PhysEngineToSceneConnectorModule = RequestModuleInterface<IPhysEngineToSceneConnectorModule>();
|
PhysEngineToSceneConnectorModule = RequestModuleInterface<IPhysEngineToSceneConnectorModule>();
|
||||||
SceneToPhysEngineSyncServer = RequestModuleInterface<ISceneToPhysEngineServer>();
|
SceneToPhysEngineSyncServer = RequestModuleInterface<ISceneToPhysEngineServer>();
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
//SYMMETRIC SYNC (KittyL: started 12/23/2010)
|
//DSG SYNC (KittyL: started 12/23/2010)
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
m_regionSyncModule = RequestModuleInterface<IRegionSyncModule>();
|
m_regionSyncModule = RequestModuleInterface<IRegionSyncModule>();
|
||||||
m_DSGActorSyncModule = RequestModuleInterface<IDSGActorSyncModule>();
|
m_DSGActorSyncModule = RequestModuleInterface<IDSGActorSyncModule>();
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// Shoving this in here for now, because we have the needed
|
// Shoving this in here for now, because we have the needed
|
||||||
|
@ -1743,7 +1754,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_regionSyncServerModule.SendUpdates();
|
m_regionSyncServerModule.SendUpdates();
|
||||||
}
|
}
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
|
|
||||||
//NOTE: If it is configured as symmetric sync in opensim.ini, the above IsSyncedServer() or IsSyncedClient() should all return false
|
//NOTE: If it is configured as symmetric sync in opensim.ini, the above IsSyncedServer() or IsSyncedClient() should all return false
|
||||||
if (RegionSyncModule != null)
|
if (RegionSyncModule != null)
|
||||||
|
@ -1751,7 +1762,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
//RegionSyncModule.SendSceneUpdates();
|
//RegionSyncModule.SendSceneUpdates();
|
||||||
RegionSyncModule.SyncOutPrimUpdates();
|
RegionSyncModule.SyncOutPrimUpdates();
|
||||||
}
|
}
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
int tmpPhysicsMS2 = Util.EnvironmentTickCount();
|
int tmpPhysicsMS2 = Util.EnvironmentTickCount();
|
||||||
if ((Frame % m_update_physics == 0) && m_physics_enabled && (IsSyncedServer() || IsPhysEngineActor()))
|
if ((Frame % m_update_physics == 0) && m_physics_enabled && (IsSyncedServer() || IsPhysEngineActor()))
|
||||||
|
@ -3228,7 +3239,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
client.OnUpdatePrimFlags += m_sceneGraph.UpdatePrimFlags;
|
client.OnUpdatePrimFlags += m_sceneGraph.UpdatePrimFlags;
|
||||||
client.OnRequestObjectPropertiesFamily += m_sceneGraph.RequestObjectPropertiesFamily;
|
client.OnRequestObjectPropertiesFamily += m_sceneGraph.RequestObjectPropertiesFamily;
|
||||||
client.OnObjectPermissions += HandleObjectPermissionsUpdate;
|
client.OnObjectPermissions += HandleObjectPermissionsUpdate;
|
||||||
//SYMMETRIC SYNC: return the code back to its original OpenSim version
|
//DSG SYNC: return the code back to its original OpenSim version
|
||||||
//if (IsSyncedServer())
|
//if (IsSyncedServer())
|
||||||
//{
|
//{
|
||||||
client.OnGrabObject += ProcessObjectGrab;
|
client.OnGrabObject += ProcessObjectGrab;
|
||||||
|
@ -3728,7 +3739,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
ForEachClient(delegate(IClientAPI client) { client.SendKillObject(m_regionHandle, localID); });
|
ForEachClient(delegate(IClientAPI client) { client.SendKillObject(m_regionHandle, localID); });
|
||||||
|
|
||||||
//SYMMETRIC SYNC: object remove should be handled through RegionSyncModule
|
//DSG SYNC: object remove should be handled through RegionSyncModule
|
||||||
// REGION SYNC
|
// REGION SYNC
|
||||||
/*
|
/*
|
||||||
if( IsSyncedServer() )
|
if( IsSyncedServer() )
|
||||||
|
|
|
@ -47,9 +47,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
public delegate void ObjectDeleteDelegate(EntityBase obj);
|
public delegate void ObjectDeleteDelegate(EntityBase obj);
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
public delegate void ObjectCreateBySyncDelegate(EntityBase obj);
|
public delegate void ObjectCreateBySyncDelegate(EntityBase obj);
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -69,9 +69,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
public event ObjectCreateDelegate OnObjectCreate;
|
public event ObjectCreateDelegate OnObjectCreate;
|
||||||
public event ObjectDeleteDelegate OnObjectRemove;
|
public event ObjectDeleteDelegate OnObjectRemove;
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
public event ObjectCreateBySyncDelegate OnObjectCreateBySync;
|
public event ObjectCreateBySyncDelegate OnObjectCreateBySync;
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -288,7 +288,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
sceneObject.HasGroupChanged = true;
|
sceneObject.HasGroupChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return AddSceneObject(sceneObject, attachToBackup, sendClientUpdates);
|
return AddSceneObject(sceneObject, attachToBackup, sendClientUpdates, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -310,7 +310,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (attachToBackup)
|
if (attachToBackup)
|
||||||
sceneObject.HasGroupChanged = true;
|
sceneObject.HasGroupChanged = true;
|
||||||
|
|
||||||
return AddSceneObject(sceneObject, attachToBackup, sendClientUpdates);
|
return AddSceneObject(sceneObject, attachToBackup, sendClientUpdates, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -344,7 +344,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
sceneObject.Velocity = vel;
|
sceneObject.Velocity = vel;
|
||||||
}
|
}
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
//Moving AddNewSceneObject to the end of this function, so that
|
//Moving AddNewSceneObject to the end of this function, so that
|
||||||
//all object properties are set when AddNewSceneObject is called.
|
//all object properties are set when AddNewSceneObject is called.
|
||||||
AddNewSceneObject(sceneObject, true, false);
|
AddNewSceneObject(sceneObject, true, false);
|
||||||
|
@ -368,7 +368,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// <returns>
|
/// <returns>
|
||||||
/// true if the object was added, false if an object with the same uuid was already in the scene
|
/// true if the object was added, false if an object with the same uuid was already in the scene
|
||||||
/// </returns>
|
/// </returns>
|
||||||
protected bool AddSceneObject(SceneObjectGroup sceneObject, bool attachToBackup, bool sendClientUpdates)
|
protected bool AddSceneObject(SceneObjectGroup sceneObject, bool attachToBackup, bool sendClientUpdates, bool addedByDelink)
|
||||||
{
|
{
|
||||||
if (sceneObject == null || sceneObject.RootPart == null || sceneObject.RootPart.UUID == UUID.Zero)
|
if (sceneObject == null || sceneObject.RootPart == null || sceneObject.RootPart.UUID == UUID.Zero)
|
||||||
return false;
|
return false;
|
||||||
|
@ -376,9 +376,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (Entities.ContainsKey(sceneObject.UUID))
|
if (Entities.ContainsKey(sceneObject.UUID))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// m_log.DebugFormat(
|
// m_log.DebugFormat(
|
||||||
// "[SCENEGRAPH]: Adding scene object {0} {1}, with {2} parts on {3}",
|
// "[SCENEGRAPH]: Adding scene object {0} {1}, with {2} parts on {3}",
|
||||||
// sceneObject.Name, sceneObject.UUID, sceneObject.Parts.Length, m_parentScene.RegionInfo.RegionName);
|
// sceneObject.Name, sceneObject.UUID, sceneObject.Parts.Length, m_parentScene.RegionInfo.RegionName);
|
||||||
|
|
||||||
SceneObjectPart[] children = sceneObject.Parts;
|
SceneObjectPart[] children = sceneObject.Parts;
|
||||||
|
|
||||||
|
@ -429,16 +429,15 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
SceneObjectGroupsByLocalPartID[part.LocalId] = sceneObject;
|
SceneObjectGroupsByLocalPartID[part.LocalId] = sceneObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
//DSG SYNC: sending NewObject event, and sending it before calling ScheduleGroupForFullUpdate
|
|
||||||
if (m_parentScene.RegionSyncModule != null)
|
|
||||||
{
|
|
||||||
//m_parentScene.RegionSyncModule.SendNewObject(sceneObject);
|
|
||||||
m_parentScene.RegionSyncModule.SyncNewObject(sceneObject);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sendClientUpdates)
|
if (sendClientUpdates)
|
||||||
//sceneObject.ScheduleGroupForFullUpdate();
|
//sceneObject.ScheduleGroupForFullUpdate();
|
||||||
sceneObject.ScheduleGroupForFullUpdate(new List<SceneObjectPartSyncProperties>() { SceneObjectPartSyncProperties.None });
|
sceneObject.ScheduleGroupForFullUpdate(null);
|
||||||
|
|
||||||
|
//DSG SYNC: sending NewObject event, and sending it before calling ScheduleGroupForFullUpdate
|
||||||
|
if (m_parentScene.RegionSyncModule != null && !addedByDelink)
|
||||||
|
{
|
||||||
|
m_parentScene.RegionSyncModule.SyncNewObject(sceneObject);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1667,7 +1666,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
List<SceneObjectPart> rootParts = new List<SceneObjectPart>();
|
List<SceneObjectPart> rootParts = new List<SceneObjectPart>();
|
||||||
List<SceneObjectGroup> affectedGroups = new List<SceneObjectGroup>();
|
List<SceneObjectGroup> affectedGroups = new List<SceneObjectGroup>();
|
||||||
|
|
||||||
//SYMMETRIC SYNC, record the new object groups after the delink operation
|
//DSG SYNC, record the new object groups after the delink operation
|
||||||
List<SceneObjectGroup> beforeDelinkGroups = new List<SceneObjectGroup>();
|
List<SceneObjectGroup> beforeDelinkGroups = new List<SceneObjectGroup>();
|
||||||
List<SceneObjectGroup> afterDelinkGroups = new List<SceneObjectGroup>();
|
List<SceneObjectGroup> afterDelinkGroups = new List<SceneObjectGroup>();
|
||||||
|
|
||||||
|
@ -1688,7 +1687,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (!affectedGroups.Contains(group))
|
if (!affectedGroups.Contains(group))
|
||||||
{
|
{
|
||||||
affectedGroups.Add(group);
|
affectedGroups.Add(group);
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
beforeDelinkGroups.Add(group);
|
beforeDelinkGroups.Add(group);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1705,7 +1704,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
// handled further. Do the honors here.
|
// handled further. Do the honors here.
|
||||||
child.ParentGroup.HasGroupChanged = true;
|
child.ParentGroup.HasGroupChanged = true;
|
||||||
|
|
||||||
//SYMMETRIC SYNC, delay ScheduleGroupForFullUpdate till the end of the delink operations.
|
//DSG SYNC, delay ScheduleGroupForFullUpdate till the end of the delink operations.
|
||||||
//child.ParentGroup.ScheduleGroupForFullUpdate();
|
//child.ParentGroup.ScheduleGroupForFullUpdate();
|
||||||
afterDelinkGroups.Add(child.ParentGroup);
|
afterDelinkGroups.Add(child.ParentGroup);
|
||||||
}
|
}
|
||||||
|
@ -1777,7 +1776,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
g.TriggerScriptChangedEvent(Changed.LINK);
|
g.TriggerScriptChangedEvent(Changed.LINK);
|
||||||
g.HasGroupChanged = true; // Persist
|
g.HasGroupChanged = true; // Persist
|
||||||
|
|
||||||
//SYMMETRIC SYNC, delay ScheduleGroupForFullUpdate till the end of the delink operations.
|
//DSG SYNC, delay ScheduleGroupForFullUpdate till the end of the delink operations.
|
||||||
//g.ScheduleGroupForFullUpdate();
|
//g.ScheduleGroupForFullUpdate();
|
||||||
afterDelinkGroups.Add(g);
|
afterDelinkGroups.Add(g);
|
||||||
}
|
}
|
||||||
|
@ -2053,7 +2052,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
#endregion // REGION SYNC
|
#endregion // REGION SYNC
|
||||||
|
|
||||||
#region SYMMETRIC SYNC
|
#region DSG SYNC
|
||||||
|
|
||||||
public Scene.ObjectUpdateResult UpdateObjectBySynchronization(SceneObjectGroup updatedSog)
|
public Scene.ObjectUpdateResult UpdateObjectBySynchronization(SceneObjectGroup updatedSog)
|
||||||
{
|
{
|
||||||
|
@ -2246,7 +2245,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
// Make sure no child prim is set for sale
|
// Make sure no child prim is set for sale
|
||||||
// So that, on delink, no prims are unwittingly
|
// So that, on delink, no prims are unwittingly
|
||||||
// left for sale and sold off
|
// left for sale and sold off
|
||||||
//SYMMETRIC SYNC: need to copy value w/o trigger UpdateBucketSyncInfo
|
//DSG SYNC: need to copy value w/o trigger UpdateBucketSyncInfo
|
||||||
//child.RootPart.ObjectSaleType = 0;
|
//child.RootPart.ObjectSaleType = 0;
|
||||||
//child.RootPart.SalePrice = 10;
|
//child.RootPart.SalePrice = 10;
|
||||||
//child.RootPart.SetObjectSaleType(0);
|
//child.RootPart.SetObjectSaleType(0);
|
||||||
|
@ -2407,6 +2406,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
//No longer calling update prim's properties here, caller will do that
|
||||||
//localAfterGroup.UpdateObjectGroupBySync(incomingAfterDelinkGroupsDictionary[localAfterGroup.UUID]);
|
//localAfterGroup.UpdateObjectGroupBySync(incomingAfterDelinkGroupsDictionary[localAfterGroup.UUID]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2556,6 +2556,17 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return localPart.UpdateBucketProperties(bucketName, updatedPart, bucketSyncInfo);
|
return localPart.UpdateBucketProperties(bucketName, updatedPart, bucketSyncInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion //SYMMETRIC SYNC
|
protected internal bool AddNewSceneObjectByDelink(SceneObjectGroup sceneObject, bool attachToBackup, bool sendClientUpdates)
|
||||||
|
{
|
||||||
|
// Ensure that we persist this new scene object if it's not an
|
||||||
|
// attachment
|
||||||
|
if (attachToBackup)
|
||||||
|
sceneObject.HasGroupChanged = true;
|
||||||
|
|
||||||
|
bool addedByDelink = true;
|
||||||
|
return AddSceneObject(sceneObject, attachToBackup, sendClientUpdates, addedByDelink);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion //DSG SYNC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -498,7 +498,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
public SceneObjectGroup(SceneObjectPart part, bool newGroupBySync)
|
public SceneObjectGroup(SceneObjectPart part, bool newGroupBySync)
|
||||||
{
|
{
|
||||||
if (!newGroupBySync)
|
if (!newGroupBySync)
|
||||||
|
@ -627,7 +627,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
// for the same object with very different properties. The caller must schedule the update.
|
// for the same object with very different properties. The caller must schedule the update.
|
||||||
//ScheduleGroupForFullUpdate();
|
//ScheduleGroupForFullUpdate();
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
if (m_scene.RegionSyncModule != null)
|
if (m_scene.RegionSyncModule != null)
|
||||||
{
|
{
|
||||||
foreach (SceneObjectPart part in Parts)
|
foreach (SceneObjectPart part in Parts)
|
||||||
|
@ -1212,7 +1212,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
SceneObjectPart part = parts[i];
|
SceneObjectPart part = parts[i];
|
||||||
|
|
||||||
//SYMMETRIC SYNC: object remove should be handled through RegionSyncModule
|
//DSG SYNC: object remove should be handled through RegionSyncModule
|
||||||
/*
|
/*
|
||||||
// REGION SYNC
|
// REGION SYNC
|
||||||
if (Scene.IsSyncedServer())
|
if (Scene.IsSyncedServer())
|
||||||
|
@ -1221,7 +1221,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
//return;
|
//return;
|
||||||
}
|
}
|
||||||
* */
|
* */
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
Scene.ForEachScenePresence(delegate(ScenePresence avatar)
|
Scene.ForEachScenePresence(delegate(ScenePresence avatar)
|
||||||
{
|
{
|
||||||
|
@ -1366,13 +1366,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
//if we are doing sync across different sync nodes, and are not told to persist the state, don't do anything (only persistence actor will do it)
|
//if we are doing sync across different sync nodes, and are not told to persist the state, don't do anything (only persistence actor will do it)
|
||||||
if (m_scene.RegionSyncModule != null && !ToPersistObjectState)
|
if (m_scene.RegionSyncModule != null && !ToPersistObjectState)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
// Since this is the top of the section of call stack for backing up a particular scene object, don't let
|
// Since this is the top of the section of call stack for backing up a particular scene object, don't let
|
||||||
// any exception propogate upwards.
|
// any exception propogate upwards.
|
||||||
|
@ -2200,11 +2200,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
//HasGroupChanged = true;
|
//HasGroupChanged = true;
|
||||||
//ScheduleGroupForFullUpdate();
|
//ScheduleGroupForFullUpdate();
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
//The DeleteObject message will be enqueued to be sent out by another thread, and the call will return quickly.
|
//The DeleteObject message will be enqueued to be sent out by another thread, and the call will return quickly.
|
||||||
//if (m_scene.RegionSyncModule != null)
|
//if (m_scene.RegionSyncModule != null)
|
||||||
// m_scene.RegionSyncModule.SendDeleteObject(objectGroup, true);
|
// m_scene.RegionSyncModule.SendDeleteObject(objectGroup, true);
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2307,7 +2307,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
SceneObjectGroup objectGroup = new SceneObjectGroup(linkPart);
|
SceneObjectGroup objectGroup = new SceneObjectGroup(linkPart);
|
||||||
|
|
||||||
m_scene.AddNewSceneObject(objectGroup, true);
|
//m_scene.AddNewSceneObject(objectGroup, true);
|
||||||
|
//DSG SYNC: calling AddNewSceneObjectByDelink, so that later on we know
|
||||||
|
//the "new" object is added by delink operation, no need to send sync
|
||||||
|
//message of NewObject
|
||||||
|
m_scene.AddNewSceneObjectByDelink(objectGroup, true, true);
|
||||||
|
|
||||||
if (sendEvents)
|
if (sendEvents)
|
||||||
linkPart.TriggerScriptChangedEvent(Changed.LINK);
|
linkPart.TriggerScriptChangedEvent(Changed.LINK);
|
||||||
|
@ -3556,7 +3560,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region SYMMETRIC SYNC
|
#region DSG SYNC
|
||||||
|
|
||||||
private bool m_toPersistObjectState = false;
|
private bool m_toPersistObjectState = false;
|
||||||
public bool ToPersistObjectState
|
public bool ToPersistObjectState
|
||||||
|
@ -3779,14 +3783,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
|
|
||||||
//Similar actions with DelinkFromGroup, except that m_scene.AddNewSceneObjectBySync is called
|
//Similar actions with DelinkFromGroup, except that m_scene.AddNewSceneObjectBySync is called
|
||||||
//!!!!!!!!!!!!!!!!!!NOTE!!!!!!!!!!!!!!!
|
|
||||||
//All SOP properties below is set through calling SetXXX(value) instead of by "XXX=value", as such a value is being changed due to sync (
|
|
||||||
//i.e. triggered by remote operation instead of by local operation
|
|
||||||
public SceneObjectGroup DelinkFromGroupBySync(SceneObjectPart delinkPart, bool sendEvents)
|
public SceneObjectGroup DelinkFromGroupBySync(SceneObjectPart delinkPart, bool sendEvents)
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
// "[SCENE OBJECT GROUP]: Delinking part {0}, {1} from group with root part {2}, {3}",
|
"[SCENE OBJECT GROUP]: Delinking part {0}, {1}, {4} from group with root part {2}, {3}",
|
||||||
// linkPart.Name, linkPart.UUID, RootPart.Name, RootPart.UUID);
|
delinkPart.Name, delinkPart.UUID, RootPart.Name, RootPart.UUID, delinkPart.LocalId);
|
||||||
|
|
||||||
SceneObjectPartBase linkPart = (SceneObjectPartBase)delinkPart;
|
SceneObjectPartBase linkPart = (SceneObjectPartBase)delinkPart;
|
||||||
linkPart.ClearUndoState();
|
linkPart.ClearUndoState();
|
||||||
|
@ -3803,9 +3804,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (parts.Length == 1 && RootPart != null)
|
if (parts.Length == 1 && RootPart != null)
|
||||||
{
|
{
|
||||||
// Single prim left
|
// Single prim left
|
||||||
//RootPart.LinkNum = 0;
|
RootPart.LinkNum = 0;
|
||||||
//RootPart.SetProperty("LinkNum", 0);
|
|
||||||
((SceneObjectPartBase)RootPart).LinkNum = 0;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -3815,16 +3814,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (part.LinkNum > linkPart.LinkNum)
|
if (part.LinkNum > linkPart.LinkNum)
|
||||||
{
|
{
|
||||||
part.LinkNum--;
|
part.LinkNum--;
|
||||||
//int linkNum = part.LinkNum - 1;
|
|
||||||
//part.SetProperty("LinkNum", linkNum);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
linkPart.ParentID = 0; //ParentID is a value set only locally and ignored in synchronization, so no need to call SetProperty to set its value
|
linkPart.ParentID = 0; //ParentID is a value set only locally and ignored in synchronization, so no need to set its value
|
||||||
linkPart.LinkNum = 0;
|
linkPart.LinkNum = 0;
|
||||||
//linkPart.SetParentID(0);
|
|
||||||
|
|
||||||
if (linkPart.PhysActor != null)
|
if (linkPart.PhysActor != null)
|
||||||
{
|
{
|
||||||
|
@ -3843,15 +3839,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
linkPart.OffsetPosition = new Vector3(0, 0, 0);
|
linkPart.OffsetPosition = new Vector3(0, 0, 0);
|
||||||
linkPart.RotationOffset = worldRot;
|
linkPart.RotationOffset = worldRot;
|
||||||
|
|
||||||
//linkPart.SetOffsetPosition(new Vector3(axPos.X, axPos.Y, axPos.Z));
|
|
||||||
//linkPart.SetGroupPosition(AbsolutePosition + linkPart.OffsetPosition);
|
|
||||||
//linkPart.SetOffsetPosition(new Vector3(0, 0, 0));
|
|
||||||
//linkPart.SetRotationOffset(worldRot);
|
|
||||||
//linkPart.SetProperty("OffsetPosition", new Vector3(axPos.X, axPos.Y, axPos.Z));
|
|
||||||
//linkPart.SetProperty("GroupPosition", AbsolutePosition + linkPart.OffsetPosition);
|
|
||||||
//linkPart.SetProperty("OffsetPosition", new Vector3(0, 0, 0));
|
|
||||||
//linkPart.SetProperty("RotationOffset", worldRot);
|
|
||||||
|
|
||||||
//SceneObjectGroup objectGroup = new SceneObjectGroup(linkPart);
|
//SceneObjectGroup objectGroup = new SceneObjectGroup(linkPart);
|
||||||
bool newGroupBySync = true;
|
bool newGroupBySync = true;
|
||||||
SceneObjectGroup objectGroup = new SceneObjectGroup(delinkPart, newGroupBySync);
|
SceneObjectGroup objectGroup = new SceneObjectGroup(delinkPart, newGroupBySync);
|
||||||
|
|
|
@ -129,7 +129,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
//public bool AllowedDrop;
|
//public bool AllowedDrop;
|
||||||
private bool m_allowedDrop;
|
private bool m_allowedDrop;
|
||||||
public bool AllowedDrop
|
public bool AllowedDrop
|
||||||
|
@ -2933,7 +2933,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Schedules this prim for a full update
|
/// Schedules this prim for a full update
|
||||||
/// </summary>
|
/// </summary>
|
||||||
//public void ScheduleFullUpdate() :: SYMMETRIC SYNC: changed the interface so that we can identify which property triggers calling this function
|
//public void ScheduleFullUpdate() :: DSG SYNC: changed the interface so that we can identify which property triggers calling this function
|
||||||
public virtual void ScheduleFullUpdate(List<SceneObjectPartSyncProperties> updatedProperties)
|
public virtual void ScheduleFullUpdate(List<SceneObjectPartSyncProperties> updatedProperties)
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat("[SCENE OBJECT PART]: Scheduling full update for {0} {1}", Name, LocalId);
|
// m_log.DebugFormat("[SCENE OBJECT PART]: Scheduling full update for {0} {1}", Name, LocalId);
|
||||||
|
@ -3202,7 +3202,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
ClearUpdateSchedule();
|
ClearUpdateSchedule();
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
//KittyL: 04/06/2011, No longer calling QueueSceneObjectPartForUpdate
|
//KittyL: 04/06/2011, No longer calling QueueSceneObjectPartForUpdate
|
||||||
//from here. Local updates are now recorded by calling IRegionSyncModule.ProcessAndEnqueuePrimUpdatesByLocal().
|
//from here. Local updates are now recorded by calling IRegionSyncModule.ProcessAndEnqueuePrimUpdatesByLocal().
|
||||||
/*
|
/*
|
||||||
|
@ -3211,7 +3211,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_parentGroup.Scene.RegionSyncModule.QueueSceneObjectPartForUpdate((SceneObjectPart)this);
|
m_parentGroup.Scene.RegionSyncModule.QueueSceneObjectPartForUpdate((SceneObjectPart)this);
|
||||||
}
|
}
|
||||||
* */
|
* */
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -4983,7 +4983,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region SYMMETRIC SYNC
|
#region DSG SYNC
|
||||||
|
|
||||||
//Time stamp for the most recent update on this prim. We only have one time-stamp per prim for now.
|
//Time stamp for the most recent update on this prim. We only have one time-stamp per prim for now.
|
||||||
//The goal is to evetually have time-stamp per property bucket for each prim.
|
//The goal is to evetually have time-stamp per property bucket for each prim.
|
||||||
|
@ -4998,7 +4998,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
|
|
||||||
//Information for concurrency control of one bucket of prim proproperties.
|
//Information for concurrency control of one bucket of prim proproperties.
|
||||||
public class BucketSyncInfo
|
public class BucketSyncInfo
|
||||||
|
@ -6142,5 +6142,5 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
}
|
}
|
||||||
|
|
|
@ -545,7 +545,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
HasInventoryChanged = true;
|
HasInventoryChanged = true;
|
||||||
m_part.ParentGroup.HasGroupChanged = true;
|
m_part.ParentGroup.HasGroupChanged = true;
|
||||||
|
|
||||||
//SYMMETRIC SYNC: add ScheduleFullUpdate to enable synchronization across actors
|
//DSG SYNC: add ScheduleFullUpdate to enable synchronization across actors
|
||||||
m_part.ScheduleFullUpdate(new List<SceneObjectPartSyncProperties>(){SceneObjectPartSyncProperties.TaskInventory, SceneObjectPartSyncProperties.InventorySerial});
|
m_part.ScheduleFullUpdate(new List<SceneObjectPartSyncProperties>(){SceneObjectPartSyncProperties.TaskInventory, SceneObjectPartSyncProperties.InventorySerial});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1180,7 +1180,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
#endregion REGION SYNC
|
#endregion REGION SYNC
|
||||||
}
|
}
|
||||||
|
|
||||||
#region SYMMETRIC SYNC
|
#region DSG SYNC
|
||||||
public class SceneObjectPartInventory : SceneObjectPartInventoryBase
|
public class SceneObjectPartInventory : SceneObjectPartInventoryBase
|
||||||
{
|
{
|
||||||
private SceneObjectPart m_part;
|
private SceneObjectPart m_part;
|
||||||
|
|
|
@ -215,7 +215,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||||
|
|
||||||
sceneObject.AddPart(part);
|
sceneObject.AddPart(part);
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
//KittyL: 12/27/2010, added ActorID for symmetric synch model
|
//KittyL: 12/27/2010, added ActorID for symmetric synch model
|
||||||
//part.SetLastUpdateActorID();
|
//part.SetLastUpdateActorID();
|
||||||
|
|
||||||
|
@ -329,7 +329,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||||
m_SOPXmlProcessors.Add("TextureAnimation", ProcessTextureAnimation);
|
m_SOPXmlProcessors.Add("TextureAnimation", ProcessTextureAnimation);
|
||||||
m_SOPXmlProcessors.Add("ParticleSystem", ProcessParticleSystem);
|
m_SOPXmlProcessors.Add("ParticleSystem", ProcessParticleSystem);
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
m_SOPXmlProcessors.Add("LocalFlags", ProcessLocalFlags);
|
m_SOPXmlProcessors.Add("LocalFlags", ProcessLocalFlags);
|
||||||
//m_SOPXmlProcessors.Add("LastUpdateTimeStamp", ProcessUpdateTimeStamp);
|
//m_SOPXmlProcessors.Add("LastUpdateTimeStamp", ProcessUpdateTimeStamp);
|
||||||
//m_SOPXmlProcessors.Add("LastUpdateActorID", ProcessLastUpdateActorID);
|
//m_SOPXmlProcessors.Add("LastUpdateActorID", ProcessLastUpdateActorID);
|
||||||
|
@ -340,7 +340,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||||
m_SOPXmlProcessors.Add("AggregateScriptEvents", ProcessAggregateScriptEvents);
|
m_SOPXmlProcessors.Add("AggregateScriptEvents", ProcessAggregateScriptEvents);
|
||||||
|
|
||||||
m_SOPXmlProcessors.Add("BucketSyncInfoList", ProcessBucketSyncInfo);
|
m_SOPXmlProcessors.Add("BucketSyncInfoList", ProcessBucketSyncInfo);
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -425,7 +425,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||||
}
|
}
|
||||||
|
|
||||||
#region SOPXmlProcessors
|
#region SOPXmlProcessors
|
||||||
//SYMMETRIC SYNC NOTE: -- assignments in de-serialization should directly set the values w/o triggering SceneObjectPart.UpdateBucketSyncInfo;
|
//DSG SYNC NOTE: -- assignments in de-serialization should directly set the values w/o triggering SceneObjectPart.UpdateBucketSyncInfo;
|
||||||
private static void ProcessAllowedDrop(SceneObjectPart obj, XmlTextReader reader)
|
private static void ProcessAllowedDrop(SceneObjectPart obj, XmlTextReader reader)
|
||||||
{
|
{
|
||||||
obj.AllowedDrop = Util.ReadBoolean(reader);
|
obj.AllowedDrop = Util.ReadBoolean(reader);
|
||||||
|
@ -706,7 +706,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||||
obj.ParticleSystem = Convert.FromBase64String(reader.ReadElementContentAsString("ParticleSystem", String.Empty));
|
obj.ParticleSystem = Convert.FromBase64String(reader.ReadElementContentAsString("ParticleSystem", String.Empty));
|
||||||
}
|
}
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
/*
|
/*
|
||||||
private static void ProcessUpdateTimeStamp(SceneObjectPart obj, XmlTextReader reader)
|
private static void ProcessUpdateTimeStamp(SceneObjectPart obj, XmlTextReader reader)
|
||||||
{
|
{
|
||||||
|
@ -799,7 +799,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||||
reader.ReadEndElement(); // BucketSyncInfoList
|
reader.ReadEndElement(); // BucketSyncInfoList
|
||||||
}
|
}
|
||||||
|
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -1271,10 +1271,10 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||||
writer.WriteElementString("GroupMask", sop.GroupMask.ToString());
|
writer.WriteElementString("GroupMask", sop.GroupMask.ToString());
|
||||||
writer.WriteElementString("EveryoneMask", sop.EveryoneMask.ToString());
|
writer.WriteElementString("EveryoneMask", sop.EveryoneMask.ToString());
|
||||||
writer.WriteElementString("NextOwnerMask", sop.NextOwnerMask.ToString());
|
writer.WriteElementString("NextOwnerMask", sop.NextOwnerMask.ToString());
|
||||||
//SYMMETRIC SYNC: also serialize SceneObjectPart:LocalFlags, so that it can be propogated across actors
|
//DSG SYNC: also serialize SceneObjectPart:LocalFlags, so that it can be propogated across actors
|
||||||
WriteFlags(writer, "Flags", sop.Flags.ToString(), options);
|
WriteFlags(writer, "Flags", sop.Flags.ToString(), options);
|
||||||
WriteFlags(writer, "LocalFlags", sop.LocalFlags.ToString(), options);
|
WriteFlags(writer, "LocalFlags", sop.LocalFlags.ToString(), options);
|
||||||
//end SYMMETRIC SYNC
|
//end DSG SYNC
|
||||||
WriteUUID(writer, "CollisionSound", sop.CollisionSound, options);
|
WriteUUID(writer, "CollisionSound", sop.CollisionSound, options);
|
||||||
writer.WriteElementString("CollisionSoundVolume", sop.CollisionSoundVolume.ToString());
|
writer.WriteElementString("CollisionSoundVolume", sop.CollisionSoundVolume.ToString());
|
||||||
if (sop.MediaUrl != null)
|
if (sop.MediaUrl != null)
|
||||||
|
@ -1282,7 +1282,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||||
WriteBytes(writer, "TextureAnimation", sop.TextureAnimation);
|
WriteBytes(writer, "TextureAnimation", sop.TextureAnimation);
|
||||||
WriteBytes(writer, "ParticleSystem", sop.ParticleSystem);
|
WriteBytes(writer, "ParticleSystem", sop.ParticleSystem);
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
//These properties are only meaningful for synchronization purpose. For saving oar files, they are not necessary.
|
//These properties are only meaningful for synchronization purpose. For saving oar files, they are not necessary.
|
||||||
//We may remove these if later we use a different method to encode object properties for synchronization.
|
//We may remove these if later we use a different method to encode object properties for synchronization.
|
||||||
WriteUUID(writer, "AttachedAvatar", sop.AttachedAvatar, options);
|
WriteUUID(writer, "AttachedAvatar", sop.AttachedAvatar, options);
|
||||||
|
@ -1291,12 +1291,12 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||||
//writer.WriteElementString("IsAttachment", sop.IsAttachment.ToString().ToLower()); //IsAttachment is written last, so that on deserialization, it will be deserialized later than other Attachment properties
|
//writer.WriteElementString("IsAttachment", sop.IsAttachment.ToString().ToLower()); //IsAttachment is written last, so that on deserialization, it will be deserialized later than other Attachment properties
|
||||||
WriteFlags(writer, "AggregateScriptEvents", sop.AggregateScriptEvents.ToString(), options);
|
WriteFlags(writer, "AggregateScriptEvents", sop.AggregateScriptEvents.ToString(), options);
|
||||||
WriteBucketSyncInfo(writer, sop.BucketSyncInfoList);
|
WriteBucketSyncInfo(writer, sop.BucketSyncInfoList);
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
writer.WriteEndElement();
|
writer.WriteEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
public static void WriteBucketSyncInfo(XmlTextWriter writer, Dictionary<string, BucketSyncInfo> bucketSyncInfoList)
|
public static void WriteBucketSyncInfo(XmlTextWriter writer, Dictionary<string, BucketSyncInfo> bucketSyncInfoList)
|
||||||
{
|
{
|
||||||
if (bucketSyncInfoList!=null || bucketSyncInfoList.Count > 0) // otherwise skip this
|
if (bucketSyncInfoList!=null || bucketSyncInfoList.Count > 0) // otherwise skip this
|
||||||
|
@ -1318,7 +1318,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
static void WriteUUID(XmlTextWriter writer, string name, UUID id, Dictionary<string, object> options)
|
static void WriteUUID(XmlTextWriter writer, string name, UUID id, Dictionary<string, object> options)
|
||||||
{
|
{
|
||||||
|
|
|
@ -94,7 +94,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (Scale != Vector3.Zero)
|
if (Scale != Vector3.Zero)
|
||||||
part.Resize(Scale);
|
part.Resize(Scale);
|
||||||
//part.ParentGroup.ScheduleGroupForTerseUpdate();
|
//part.ParentGroup.ScheduleGroupForTerseUpdate();
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
List<SceneObjectPartSyncProperties> updatedProperties = new List<SceneObjectPartSyncProperties>();
|
List<SceneObjectPartSyncProperties> updatedProperties = new List<SceneObjectPartSyncProperties>();
|
||||||
updatedProperties.Add(SceneObjectPartSyncProperties.RotationOffset);
|
updatedProperties.Add(SceneObjectPartSyncProperties.RotationOffset);
|
||||||
if (Position != Vector3.Zero)
|
if (Position != Vector3.Zero)
|
||||||
|
@ -110,7 +110,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
part.UpdateRotation(Rotation);
|
part.UpdateRotation(Rotation);
|
||||||
if (Scale != Vector3.Zero)
|
if (Scale != Vector3.Zero)
|
||||||
part.Resize(Scale); //part.ScheduleTerseUpdate();
|
part.Resize(Scale); //part.ScheduleTerseUpdate();
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
List<SceneObjectPartSyncProperties> updatedProperties = new List<SceneObjectPartSyncProperties>();
|
List<SceneObjectPartSyncProperties> updatedProperties = new List<SceneObjectPartSyncProperties>();
|
||||||
updatedProperties.Add(SceneObjectPartSyncProperties.RotationOffset);
|
updatedProperties.Add(SceneObjectPartSyncProperties.RotationOffset);
|
||||||
if (Position != Vector3.Zero)
|
if (Position != Vector3.Zero)
|
||||||
|
@ -138,7 +138,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (Scale != Vector3.Zero)
|
if (Scale != Vector3.Zero)
|
||||||
part.Resize(Scale);
|
part.Resize(Scale);
|
||||||
//part.ParentGroup.ScheduleGroupForTerseUpdate();
|
//part.ParentGroup.ScheduleGroupForTerseUpdate();
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
List<SceneObjectPartSyncProperties> updatedProperties = new List<SceneObjectPartSyncProperties>();
|
List<SceneObjectPartSyncProperties> updatedProperties = new List<SceneObjectPartSyncProperties>();
|
||||||
if (Rotation != Quaternion.Identity)
|
if (Rotation != Quaternion.Identity)
|
||||||
updatedProperties.Add(SceneObjectPartSyncProperties.RotationOffset);
|
updatedProperties.Add(SceneObjectPartSyncProperties.RotationOffset);
|
||||||
|
@ -157,7 +157,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (Scale != Vector3.Zero)
|
if (Scale != Vector3.Zero)
|
||||||
part.Resize(Scale);
|
part.Resize(Scale);
|
||||||
//part.ScheduleTerseUpdate();
|
//part.ScheduleTerseUpdate();
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
List<SceneObjectPartSyncProperties> updatedProperties = new List<SceneObjectPartSyncProperties>();
|
List<SceneObjectPartSyncProperties> updatedProperties = new List<SceneObjectPartSyncProperties>();
|
||||||
if (Rotation != Quaternion.Identity)
|
if (Rotation != Quaternion.Identity)
|
||||||
updatedProperties.Add(SceneObjectPartSyncProperties.RotationOffset);
|
updatedProperties.Add(SceneObjectPartSyncProperties.RotationOffset);
|
||||||
|
|
|
@ -3615,7 +3615,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
parentPrim.RootPart.CreateSelected = true;
|
parentPrim.RootPart.CreateSelected = true;
|
||||||
parentPrim.HasGroupChanged = true;
|
parentPrim.HasGroupChanged = true;
|
||||||
//parentPrim.ScheduleGroupForFullUpdate();
|
//parentPrim.ScheduleGroupForFullUpdate();
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
//Schedule a LinkObject message for synchronization purpose. This will lead to enqueue a LinkObject message in SyncConnector's outgoingQueue,
|
//Schedule a LinkObject message for synchronization purpose. This will lead to enqueue a LinkObject message in SyncConnector's outgoingQueue,
|
||||||
//so should return quickly.
|
//so should return quickly.
|
||||||
if (World.RegionSyncModule != null)
|
if (World.RegionSyncModule != null)
|
||||||
|
@ -3625,7 +3625,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
World.RegionSyncModule.SendLinkObject(parentPrim, parentPrim.RootPart, children);
|
World.RegionSyncModule.SendLinkObject(parentPrim, parentPrim.RootPart, children);
|
||||||
}
|
}
|
||||||
m_host.ScheduleFullUpdate(new List<SceneObjectPartSyncProperties>(){SceneObjectPartSyncProperties.None}); //SendLinkObject above will synchronize the link operation, no need to taint updates here
|
m_host.ScheduleFullUpdate(new List<SceneObjectPartSyncProperties>(){SceneObjectPartSyncProperties.None}); //SendLinkObject above will synchronize the link operation, no need to taint updates here
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
if (client != null)
|
if (client != null)
|
||||||
parentPrim.GetProperties(client);
|
parentPrim.GetProperties(client);
|
||||||
|
@ -3683,11 +3683,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
|
|
||||||
if (linknum == ScriptBaseClass.LINK_ROOT)
|
if (linknum == ScriptBaseClass.LINK_ROOT)
|
||||||
{
|
{
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
List<SceneObjectGroup> beforeDelinkGroups = new List<SceneObjectGroup>();
|
List<SceneObjectGroup> beforeDelinkGroups = new List<SceneObjectGroup>();
|
||||||
beforeDelinkGroups.Add(parentPrim);
|
beforeDelinkGroups.Add(parentPrim);
|
||||||
List<SceneObjectGroup> afterDelinkGroups = new List<SceneObjectGroup>();
|
List<SceneObjectGroup> afterDelinkGroups = new List<SceneObjectGroup>();
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
// Restructuring Multiple Prims.
|
// Restructuring Multiple Prims.
|
||||||
List<SceneObjectPart> parts = new List<SceneObjectPart>(parentPrim.Parts);
|
List<SceneObjectPart> parts = new List<SceneObjectPart>(parentPrim.Parts);
|
||||||
|
@ -3695,19 +3695,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
foreach (SceneObjectPart part in parts)
|
foreach (SceneObjectPart part in parts)
|
||||||
{
|
{
|
||||||
parentPrim.DelinkFromGroup(part.LocalId, true);
|
parentPrim.DelinkFromGroup(part.LocalId, true);
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
afterDelinkGroups.Add(part.ParentGroup);
|
afterDelinkGroups.Add(part.ParentGroup);
|
||||||
}
|
}
|
||||||
parentPrim.HasGroupChanged = true;
|
parentPrim.HasGroupChanged = true;
|
||||||
//parentPrim.ScheduleGroupForFullUpdate();
|
//parentPrim.ScheduleGroupForFullUpdate();
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
//Send out DelinkObject message to other actors to sychronize their object list
|
//Send out DelinkObject message to other actors to sychronize their object list
|
||||||
if (World.RegionSyncModule != null)
|
if (World.RegionSyncModule != null)
|
||||||
{
|
{
|
||||||
World.RegionSyncModule.SendDeLinkObject(parts, beforeDelinkGroups, afterDelinkGroups);
|
World.RegionSyncModule.SendDeLinkObject(parts, beforeDelinkGroups, afterDelinkGroups);
|
||||||
}
|
}
|
||||||
parentPrim.ScheduleGroupForFullUpdate(new List<SceneObjectPartSyncProperties>(){SceneObjectPartSyncProperties.None});
|
parentPrim.ScheduleGroupForFullUpdate(new List<SceneObjectPartSyncProperties>(){SceneObjectPartSyncProperties.None});
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
parentPrim.TriggerScriptChangedEvent(Changed.LINK);
|
parentPrim.TriggerScriptChangedEvent(Changed.LINK);
|
||||||
|
|
||||||
if (parts.Count > 0)
|
if (parts.Count > 0)
|
||||||
|
@ -3721,13 +3721,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
}
|
}
|
||||||
newRoot.ParentGroup.HasGroupChanged = true;
|
newRoot.ParentGroup.HasGroupChanged = true;
|
||||||
//newRoot.ParentGroup.ScheduleGroupForFullUpdate();
|
//newRoot.ParentGroup.ScheduleGroupForFullUpdate();
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
if (World.RegionSyncModule != null)
|
if (World.RegionSyncModule != null)
|
||||||
{
|
{
|
||||||
World.RegionSyncModule.SendLinkObject(newRoot.ParentGroup, newRoot, new List<SceneObjectPart>(newRoot.ParentGroup.Parts));
|
World.RegionSyncModule.SendLinkObject(newRoot.ParentGroup, newRoot, new List<SceneObjectPart>(newRoot.ParentGroup.Parts));
|
||||||
}
|
}
|
||||||
newRoot.ParentGroup.ScheduleGroupForFullUpdate(new List<SceneObjectPartSyncProperties>(){SceneObjectPartSyncProperties.None});
|
newRoot.ParentGroup.ScheduleGroupForFullUpdate(new List<SceneObjectPartSyncProperties>(){SceneObjectPartSyncProperties.None});
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3739,7 +3739,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
parentPrim.DelinkFromGroup(childPrim.LocalId, true);
|
parentPrim.DelinkFromGroup(childPrim.LocalId, true);
|
||||||
parentPrim.HasGroupChanged = true;
|
parentPrim.HasGroupChanged = true;
|
||||||
//parentPrim.ScheduleGroupForFullUpdate();
|
//parentPrim.ScheduleGroupForFullUpdate();
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
//Send out DelinkObject message to other actors to sychronize their object list
|
//Send out DelinkObject message to other actors to sychronize their object list
|
||||||
if (World.RegionSyncModule != null)
|
if (World.RegionSyncModule != null)
|
||||||
{
|
{
|
||||||
|
@ -3749,7 +3749,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
afterDelinkGroups.Add(childPrim.ParentGroup);
|
afterDelinkGroups.Add(childPrim.ParentGroup);
|
||||||
World.RegionSyncModule.SendDeLinkObject(new List<SceneObjectPart>(parentPrim.Parts), beforeDelinkGroups, afterDelinkGroups);
|
World.RegionSyncModule.SendDeLinkObject(new List<SceneObjectPart>(parentPrim.Parts), beforeDelinkGroups, afterDelinkGroups);
|
||||||
}
|
}
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
parentPrim.TriggerScriptChangedEvent(Changed.LINK);
|
parentPrim.TriggerScriptChangedEvent(Changed.LINK);
|
||||||
}
|
}
|
||||||
|
@ -3762,12 +3762,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
if (parentPrim.RootPart.AttachmentPoint != 0)
|
if (parentPrim.RootPart.AttachmentPoint != 0)
|
||||||
return; // Fail silently if attached
|
return; // Fail silently if attached
|
||||||
|
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
List<SceneObjectGroup> beforeDelinkGroups = new List<SceneObjectGroup>();
|
List<SceneObjectGroup> beforeDelinkGroups = new List<SceneObjectGroup>();
|
||||||
beforeDelinkGroups.Add(parentPrim);
|
beforeDelinkGroups.Add(parentPrim);
|
||||||
List<SceneObjectGroup> afterDelinkGroups = new List<SceneObjectGroup>();
|
List<SceneObjectGroup> afterDelinkGroups = new List<SceneObjectGroup>();
|
||||||
SceneObjectPart rootPart = parentPrim.RootPart;
|
SceneObjectPart rootPart = parentPrim.RootPart;
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
|
|
||||||
List<SceneObjectPart> parts = new List<SceneObjectPart>(parentPrim.Parts);
|
List<SceneObjectPart> parts = new List<SceneObjectPart>(parentPrim.Parts);
|
||||||
parts.Remove(parentPrim.RootPart);
|
parts.Remove(parentPrim.RootPart);
|
||||||
|
@ -3776,7 +3776,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
{
|
{
|
||||||
parentPrim.DelinkFromGroup(part.LocalId, true);
|
parentPrim.DelinkFromGroup(part.LocalId, true);
|
||||||
parentPrim.TriggerScriptChangedEvent(Changed.LINK);
|
parentPrim.TriggerScriptChangedEvent(Changed.LINK);
|
||||||
//SYMMETRIC SYNC
|
//DSG SYNC
|
||||||
afterDelinkGroups.Add(part.ParentGroup);
|
afterDelinkGroups.Add(part.ParentGroup);
|
||||||
}
|
}
|
||||||
parentPrim.HasGroupChanged = true;
|
parentPrim.HasGroupChanged = true;
|
||||||
|
@ -3789,7 +3789,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
World.RegionSyncModule.SendDeLinkObject(parts, beforeDelinkGroups, afterDelinkGroups);
|
World.RegionSyncModule.SendDeLinkObject(parts, beforeDelinkGroups, afterDelinkGroups);
|
||||||
}
|
}
|
||||||
parentPrim.ScheduleGroupForFullUpdate(new List<SceneObjectPartSyncProperties>(){SceneObjectPartSyncProperties.None});
|
parentPrim.ScheduleGroupForFullUpdate(new List<SceneObjectPartSyncProperties>(){SceneObjectPartSyncProperties.None});
|
||||||
//end of SYMMETRIC SYNC
|
//end of DSG SYNC
|
||||||
}
|
}
|
||||||
|
|
||||||
public LSL_String llGetLinkKey(int linknum)
|
public LSL_String llGetLinkKey(int linknum)
|
||||||
|
|
Loading…
Reference in New Issue