Merge branch 'dev' into dsg
commit
7127910b3d
|
@ -391,6 +391,8 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
data["partCount"] = OSD.FromInteger(children.Count);
|
data["partCount"] = OSD.FromInteger(children.Count);
|
||||||
data["actorID"] = OSD.FromString(m_actorID);
|
data["actorID"] = OSD.FromString(m_actorID);
|
||||||
int partNum = 0;
|
int partNum = 0;
|
||||||
|
|
||||||
|
string debugString = "";
|
||||||
foreach (SceneObjectPart part in children)
|
foreach (SceneObjectPart part in children)
|
||||||
{
|
{
|
||||||
string partTempID = "part" + partNum;
|
string partTempID = "part" + partNum;
|
||||||
|
@ -398,8 +400,11 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
partNum++;
|
partNum++;
|
||||||
|
|
||||||
//m_log.DebugFormat("{0}: SendLinkObject to link {1},{2} with {3}, {4}", part.Name, part.UUID, root.Name, root.UUID);
|
//m_log.DebugFormat("{0}: SendLinkObject to link {1},{2} with {3}, {4}", part.Name, part.UUID, root.Name, root.UUID);
|
||||||
|
debugString += part.UUID + ", ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_log.DebugFormat("SyncLinkObject: SendLinkObject to link parts {0} with {1}, {2}", debugString, root.Name, root.UUID);
|
||||||
|
|
||||||
SymmetricSyncMessage rsm = new SymmetricSyncMessage(SymmetricSyncMessage.MsgType.LinkObject, OSDParser.SerializeJsonString(data));
|
SymmetricSyncMessage rsm = new SymmetricSyncMessage(SymmetricSyncMessage.MsgType.LinkObject, OSDParser.SerializeJsonString(data));
|
||||||
SendSpecialObjectUpdateToRelevantSyncConnectors(m_actorID, linkedGroup, rsm);
|
SendSpecialObjectUpdateToRelevantSyncConnectors(m_actorID, linkedGroup, rsm);
|
||||||
//SendSceneEventToRelevantSyncConnectors(m_actorID, rsm, linkedGroup);
|
//SendSceneEventToRelevantSyncConnectors(m_actorID, rsm, linkedGroup);
|
||||||
|
@ -1102,7 +1107,8 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
m_log.WarnFormat("SyncStateReport {0} -- Object count: {1}, Prim Count {2} ", m_scene.RegionInfo.RegionName, sogList.Count, primCount);
|
m_log.WarnFormat("SyncStateReport {0} -- Object count: {1}, Prim Count {2} ", m_scene.RegionInfo.RegionName, sogList.Count, primCount);
|
||||||
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("\n\n SyncStateReport -- SOG: name {0}, UUID {1}, position {2}", sog.Name, sog.UUID, sog.AbsolutePosition);
|
||||||
|
|
||||||
foreach (SceneObjectPart part in sog.Parts)
|
foreach (SceneObjectPart part in sog.Parts)
|
||||||
{
|
{
|
||||||
Vector3 pos = Vector3.Zero;
|
Vector3 pos = Vector3.Zero;
|
||||||
|
@ -1110,7 +1116,11 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
{
|
{
|
||||||
pos = part.PhysActor.Position;
|
pos = part.PhysActor.Position;
|
||||||
}
|
}
|
||||||
string debugMsg = "Part " + part.Name + "," + part.UUID+", LocalID "+part.LocalId;
|
string debugMsg = "\nPart " + part.Name + "," + part.UUID+", LocalID "+part.LocalId + "ProfileShape "+part.Shape.ProfileShape;
|
||||||
|
if (part.TaskInventory.Count > 0)
|
||||||
|
{
|
||||||
|
debugMsg += ", has " + part.TaskInventory.Count + " inventory items";
|
||||||
|
}
|
||||||
if (part.ParentGroup.RootPart.UUID == part.UUID)
|
if (part.ParentGroup.RootPart.UUID == part.UUID)
|
||||||
{
|
{
|
||||||
debugMsg += ", RootPart, ";
|
debugMsg += ", RootPart, ";
|
||||||
|
@ -1137,8 +1147,9 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
{
|
{
|
||||||
debugMsg += ", attached avatar's localID = "+sp.LocalId;
|
debugMsg += ", attached avatar's localID = "+sp.LocalId;
|
||||||
}
|
}
|
||||||
m_log.WarnFormat(debugMsg);
|
|
||||||
}
|
}
|
||||||
|
m_log.WarnFormat(debugMsg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1185,7 +1196,14 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
estimateBytes += 4; //propertySyncInfo.LastUpdateSource, enum
|
estimateBytes += 4; //propertySyncInfo.LastUpdateSource, enum
|
||||||
estimateBytes += propertySyncInfo.LastUpdateSyncID.Length;
|
estimateBytes += propertySyncInfo.LastUpdateSyncID.Length;
|
||||||
|
|
||||||
if (valPair.Key == SceneObjectPartSyncProperties.Shape || valPair.Key == SceneObjectPartSyncProperties.TaskInventory)
|
if (valPair.Key == SceneObjectPartSyncProperties.Shape)
|
||||||
|
{
|
||||||
|
//The value is only a reference to SOP.Shape, shouldn't use too many bytes in memory
|
||||||
|
|
||||||
|
//estimateBytes += propertySyncInfo.LastUpdateValue
|
||||||
|
estimateBytes += ((String)propertySyncInfo.LastUpdateValueHash).Length;
|
||||||
|
}
|
||||||
|
else if (valPair.Key == SceneObjectPartSyncProperties.TaskInventory)
|
||||||
{
|
{
|
||||||
estimateBytes += ((String)propertySyncInfo.LastUpdateValue).Length;
|
estimateBytes += ((String)propertySyncInfo.LastUpdateValue).Length;
|
||||||
estimateBytes += ((String)propertySyncInfo.LastUpdateValueHash).Length;
|
estimateBytes += ((String)propertySyncInfo.LastUpdateValueHash).Length;
|
||||||
|
@ -1551,6 +1569,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool connected = false;
|
||||||
foreach (RegionSyncListenerInfo remoteListener in m_remoteSyncListeners)
|
foreach (RegionSyncListenerInfo remoteListener in m_remoteSyncListeners)
|
||||||
{
|
{
|
||||||
SyncConnector syncConnector = new SyncConnector(m_syncConnectorNum++, remoteListener, this);
|
SyncConnector syncConnector = new SyncConnector(m_syncConnectorNum++, remoteListener, this);
|
||||||
|
@ -1559,10 +1578,11 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
syncConnector.StartCommThreads();
|
syncConnector.StartCommThreads();
|
||||||
AddSyncConnector(syncConnector);
|
AddSyncConnector(syncConnector);
|
||||||
m_synced = true;
|
m_synced = true;
|
||||||
|
connected = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return connected;
|
||||||
}
|
}
|
||||||
|
|
||||||
//To be called when a SyncConnector needs to be created by that the local listener receives a connection request
|
//To be called when a SyncConnector needs to be created by that the local listener receives a connection request
|
||||||
|
@ -1848,14 +1868,24 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
primUUID = data["primUUID"].AsUUID();
|
primUUID = data["primUUID"].AsUUID();
|
||||||
SceneObjectPart sop = m_scene.GetSceneObjectPart(primUUID);
|
SceneObjectPart sop = m_scene.GetSceneObjectPart(primUUID);
|
||||||
|
|
||||||
|
propertiesSyncInfo = m_primSyncInfoManager.DecodePrimProperties(data);
|
||||||
|
|
||||||
if (sop == null || sop.ParentGroup.IsDeleted)
|
if (sop == null || sop.ParentGroup.IsDeleted)
|
||||||
{
|
{
|
||||||
m_log.WarnFormat("{0}: HandleUpdatedPrimProperties -- prim {1} no longer in local SceneGraph. SOP == NULL? ({2}), Sender is {3}",
|
bool shape = false;
|
||||||
LogHeader, primUUID, sop == null, senderActorID);
|
foreach (PropertySyncInfo p in propertiesSyncInfo)
|
||||||
|
{
|
||||||
|
// pString += p.Property.ToString() + " ";
|
||||||
|
if (p.Property == SceneObjectPartSyncProperties.Shape){
|
||||||
|
shape = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m_log.WarnFormat("{0}: HandleUpdatedPrimProperties -- prim {1} not in local SceneGraph. SOP == NULL? ({2}), Sender is {3}, property == Shape? {4}",
|
||||||
|
LogHeader, primUUID, sop == null, senderActorID, shape);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
propertiesSyncInfo = m_primSyncInfoManager.DecodePrimProperties(data);
|
//propertiesSyncInfo = m_primSyncInfoManager.DecodePrimProperties(data);
|
||||||
|
|
||||||
if (propertiesSyncInfo.Count>0)
|
if (propertiesSyncInfo.Count>0)
|
||||||
{
|
{
|
||||||
|
@ -1867,14 +1897,14 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
pString += p.Property.ToString() + " ";
|
pString += p.Property.ToString() + " ";
|
||||||
if (p.Property == SceneObjectPartSyncProperties.Shape)
|
if (p.Property == SceneObjectPartSyncProperties.Shape)
|
||||||
{
|
{
|
||||||
PrimitiveBaseShape shape = PropertySerializer.DeSerializeShape((String)p.LastUpdateValue);
|
//PrimitiveBaseShape shape = PropertySerializer.DeSerializeShape((String)p.LastUpdateValue);
|
||||||
|
PrimitiveBaseShape shape = (PrimitiveBaseShape)p.LastUpdateValue;
|
||||||
m_log.DebugFormat("Shape to be changed on SOP {0}, {1} to ProfileShape {2}", sop.Name, sop.UUID, shape.ProfileShape);
|
m_log.DebugFormat("Shape to be changed on SOP {0}, {1} to ProfileShape {2}", sop.Name, sop.UUID, shape.ProfileShape);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
* */
|
||||||
|
|
||||||
m_log.DebugFormat("ms {0}: HandleUpdatedPrimProperties, for prim {1},{2} with updated properties -- {3}", DateTime.Now.Millisecond, sop.Name, sop.UUID, pString);
|
//m_log.DebugFormat("ms {0}: HandleUpdatedPrimProperties, for prim {1},{2} with updated properties -- {3}", DateTime.Now.Millisecond, sop.Name, sop.UUID, pString);
|
||||||
|
|
||||||
* */
|
|
||||||
|
|
||||||
List<SceneObjectPartSyncProperties> propertiesUpdated = m_primSyncInfoManager.UpdatePrimSyncInfoBySync(sop, propertiesSyncInfo);
|
List<SceneObjectPartSyncProperties> propertiesUpdated = m_primSyncInfoManager.UpdatePrimSyncInfoBySync(sop, propertiesSyncInfo);
|
||||||
|
|
||||||
|
@ -1884,14 +1914,18 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("AggregateScriptEvents updated: " + sop.AggregateScriptEvents);
|
m_log.DebugFormat("AggregateScriptEvents updated: " + sop.AggregateScriptEvents);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (propertiesUpdated.Contains(SceneObjectPartSyncProperties.Shape))
|
if (propertiesUpdated.Contains(SceneObjectPartSyncProperties.Shape))
|
||||||
{
|
{
|
||||||
String hashedShape = Util.Md5Hash((PropertySerializer.SerializeShape(sop)));
|
string sopHashedShape = PropertySerializer.GetPropertyHashValue(PropertySerializer.SerializeShape(sop));
|
||||||
m_log.DebugFormat("HandleUpdatedPrimProperties -- SOP {0},{1}, Shape updated, ProfileShape {2}, hashed value in SOP:{3}, in PrinSyncInfoManager: {4}",
|
m_log.DebugFormat("HandleUpdatedPrimProperties -- SOP {0},{1}, Shape updated, ProfileShape {2}, hashed value for SOP.Shape:{3}, hashed value in PrinSyncInfoManager: {4}",
|
||||||
sop.Name, sop.UUID, sop.Shape.ProfileShape, hashedShape, m_primSyncInfoManager.GetPrimSyncInfo(sop.UUID).PropertiesSyncInfo[SceneObjectPartSyncProperties.Shape].LastUpdateValueHash);
|
sop.Name, sop.UUID, sop.Shape.ProfileShape, sopHashedShape,
|
||||||
|
m_primSyncInfoManager.GetPrimSyncInfo(sop.UUID).PropertiesSyncInfo[SceneObjectPartSyncProperties.Shape].LastUpdateValueHash);
|
||||||
}
|
}
|
||||||
* */
|
* */
|
||||||
|
|
||||||
|
|
||||||
if (propertiesUpdated.Count > 0)
|
if (propertiesUpdated.Count > 0)
|
||||||
{
|
{
|
||||||
//Enqueue the updated SOP and its properties for sync
|
//Enqueue the updated SOP and its properties for sync
|
||||||
|
@ -2223,7 +2257,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
//break;
|
//break;
|
||||||
case SymmetricSyncMessage.MsgType.ChatBroadcast:
|
case SymmetricSyncMessage.MsgType.ChatBroadcast:
|
||||||
//HandleRemoteEvent_OnChatBroadcast(init_actorID, evSeqNum, data);
|
//HandleRemoteEvent_OnChatBroadcast(init_actorID, evSeqNum, data);
|
||||||
HandleRemoveEvent_OnChatEvents(msg.Type, init_actorID, evSeqNum, data);
|
HandleRemoteEvent_OnChatEvents(msg.Type, init_actorID, evSeqNum, data);
|
||||||
break;
|
break;
|
||||||
case SymmetricSyncMessage.MsgType.ObjectGrab:
|
case SymmetricSyncMessage.MsgType.ObjectGrab:
|
||||||
HandleRemoteEvent_OnObjectGrab(init_actorID, evSeqNum, data);
|
HandleRemoteEvent_OnObjectGrab(init_actorID, evSeqNum, data);
|
||||||
|
@ -2335,7 +2369,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
/// <param name="actorID"></param>
|
/// <param name="actorID"></param>
|
||||||
/// <param name="evSeqNum"></param>
|
/// <param name="evSeqNum"></param>
|
||||||
/// <param name="data">The args of the event</param>
|
/// <param name="data">The args of the event</param>
|
||||||
private void HandleRemoveEvent_OnChatEvents(SymmetricSyncMessage.MsgType msgType, string actorID, ulong evSeqNum, OSDMap data)
|
private void HandleRemoteEvent_OnChatEvents(SymmetricSyncMessage.MsgType msgType, string actorID, ulong evSeqNum, OSDMap data)
|
||||||
{
|
{
|
||||||
OSChatMessage args = new OSChatMessage();
|
OSChatMessage args = new OSChatMessage();
|
||||||
args.Channel = data["channel"].AsInteger();
|
args.Channel = data["channel"].AsInteger();
|
||||||
|
@ -3367,8 +3401,8 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
HashSet<SceneObjectPartSyncProperties> updatedProperties = updatedPrimProperties.Value;
|
HashSet<SceneObjectPartSyncProperties> updatedProperties = updatedPrimProperties.Value;
|
||||||
|
|
||||||
//Sync the SOP data and cached property values in PrimSyncInfoManager again
|
//Sync the SOP data and cached property values in PrimSyncInfoManager again
|
||||||
HashSet<SceneObjectPartSyncProperties> propertiesWithSyncInfoUpdated = m_primSyncInfoManager.UpdatePrimSyncInfoByLocal(sop, new List<SceneObjectPartSyncProperties>(updatedProperties));
|
//HashSet<SceneObjectPartSyncProperties> propertiesWithSyncInfoUpdated = m_primSyncInfoManager.UpdatePrimSyncInfoByLocal(sop, new List<SceneObjectPartSyncProperties>(updatedProperties));
|
||||||
updatedProperties.UnionWith(propertiesWithSyncInfoUpdated);
|
//updatedProperties.UnionWith(propertiesWithSyncInfoUpdated);
|
||||||
SendPrimPropertyUpdates(sop, updatedProperties);
|
SendPrimPropertyUpdates(sop, updatedProperties);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3385,7 +3419,17 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
|
|
||||||
private void SendPrimPropertyUpdates(SceneObjectPart sop, HashSet<SceneObjectPartSyncProperties> updatedProperties)
|
private void SendPrimPropertyUpdates(SceneObjectPart sop, HashSet<SceneObjectPartSyncProperties> updatedProperties)
|
||||||
{
|
{
|
||||||
OSDMap syncData = m_primSyncInfoManager.EncodePrimProperties(sop, updatedProperties);
|
OSDMap syncData;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
syncData = m_primSyncInfoManager.EncodePrimProperties(sop, updatedProperties);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
m_log.ErrorFormat("Error in EncodePrimProperties for SOP {0}, {1}, ErrorMessage -- {2}", sop.Name, sop.UUID, e.Message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (syncData.Count > 0)
|
if (syncData.Count > 0)
|
||||||
{
|
{
|
||||||
|
@ -3409,6 +3453,14 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("SendPrimPropertyUpdates -- prim {0}: Position: {1} ", sop.Name, sop.PhysActor.Position);
|
m_log.DebugFormat("SendPrimPropertyUpdates -- prim {0}: Position: {1} ", sop.Name, sop.PhysActor.Position);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (updatedProperties.Contains(SceneObjectPartSyncProperties.Shape))
|
||||||
|
{
|
||||||
|
String hashedShape = Util.Md5Hash((PropertySerializer.SerializeShape(sop)));
|
||||||
|
m_log.DebugFormat("SendPrimPropertyUpdates -- SOP {0},{1}, Shape updated, ProfileShape {2}, hashed value in SOP:{3}, in PrinSyncInfoManager: {4}",
|
||||||
|
sop.Name, sop.UUID, sop.Shape.ProfileShape, hashedShape, m_primSyncInfoManager.GetPrimSyncInfo(sop.UUID).PropertiesSyncInfo[SceneObjectPartSyncProperties.Shape].LastUpdateValueHash);
|
||||||
|
}
|
||||||
* */
|
* */
|
||||||
|
|
||||||
SymmetricSyncMessage syncMsg = new SymmetricSyncMessage(SymmetricSyncMessage.MsgType.UpdatedPrimProperties, OSDParser.SerializeJsonString(syncData));
|
SymmetricSyncMessage syncMsg = new SymmetricSyncMessage(SymmetricSyncMessage.MsgType.UpdatedPrimProperties, OSDParser.SerializeJsonString(syncData));
|
||||||
|
@ -3488,7 +3540,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
}
|
}
|
||||||
|
|
||||||
//DSG DEBUG
|
//DSG DEBUG
|
||||||
//m_log.DebugFormat("calling AddNewSceneObjectByDecoding for SOG {0}, {1}", group.Name, group.UUID);
|
m_log.DebugFormat("calling AddNewSceneObjectByDecoding for SOG {0}, {1}", group.Name, group.UUID);
|
||||||
|
|
||||||
//Add the list of PrimSyncInfo to PrimSyncInfoManager's record.
|
//Add the list of PrimSyncInfo to PrimSyncInfoManager's record.
|
||||||
m_primSyncInfoManager.InsertMultiPrimSyncInfo(primsSyncInfo);
|
m_primSyncInfoManager.InsertMultiPrimSyncInfo(primsSyncInfo);
|
||||||
|
@ -3796,8 +3848,11 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
switch (m_property)
|
switch (m_property)
|
||||||
{
|
{
|
||||||
case SceneObjectPartSyncProperties.Shape:
|
case SceneObjectPartSyncProperties.Shape:
|
||||||
|
string shapeString = PropertySerializer.SerializeShape((PrimitiveBaseShape)pSyncInfo.LastUpdateValue);
|
||||||
|
m_lastUpdateValueHash = PropertySerializer.GetPropertyHashValue(shapeString);
|
||||||
|
break;
|
||||||
case SceneObjectPartSyncProperties.TaskInventory:
|
case SceneObjectPartSyncProperties.TaskInventory:
|
||||||
m_lastUpdateValueHash = GetPropertyHashValue((string)pSyncInfo.LastUpdateValue);
|
m_lastUpdateValueHash = PropertySerializer.GetPropertyHashValue((string)pSyncInfo.LastUpdateValue);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3813,8 +3868,11 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
switch (property)
|
switch (property)
|
||||||
{
|
{
|
||||||
case SceneObjectPartSyncProperties.Shape:
|
case SceneObjectPartSyncProperties.Shape:
|
||||||
|
string shapeString = PropertySerializer.SerializeShape((PrimitiveBaseShape)initValue);
|
||||||
|
m_lastUpdateValueHash = PropertySerializer.GetPropertyHashValue(shapeString);
|
||||||
|
break;
|
||||||
case SceneObjectPartSyncProperties.TaskInventory:
|
case SceneObjectPartSyncProperties.TaskInventory:
|
||||||
m_lastUpdateValueHash = GetPropertyHashValue((string)initValue);
|
m_lastUpdateValueHash = PropertySerializer.GetPropertyHashValue((string)initValue);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3918,13 +3976,17 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
switch (m_property)
|
switch (m_property)
|
||||||
{
|
{
|
||||||
case SceneObjectPartSyncProperties.Shape:
|
case SceneObjectPartSyncProperties.Shape:
|
||||||
|
string shapeString = PropertySerializer.SerializeShape((PrimitiveBaseShape)m_lastUpdateValue);
|
||||||
|
m_lastUpdateValueHash = PropertySerializer.GetPropertyHashValue(shapeString);
|
||||||
|
break;
|
||||||
case SceneObjectPartSyncProperties.TaskInventory:
|
case SceneObjectPartSyncProperties.TaskInventory:
|
||||||
m_lastUpdateValueHash = GetPropertyHashValue((string)m_lastUpdateValue);
|
m_lastUpdateValueHash = PropertySerializer.GetPropertyHashValue((string)m_lastUpdateValue);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public bool IsHashValueEqual(string hashValue)
|
public bool IsHashValueEqual(string hashValue)
|
||||||
{
|
{
|
||||||
return m_lastUpdateValueHash.Equals(hashValue);
|
return m_lastUpdateValueHash.Equals(hashValue);
|
||||||
|
@ -3943,201 +4005,207 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
public OSDMap ToOSDMap()
|
public OSDMap ToOSDMap()
|
||||||
{
|
{
|
||||||
OSDMap propertyData = new OSDMap();
|
OSDMap propertyData = new OSDMap();
|
||||||
propertyData["LastUpdateTimeStamp"] = LastUpdateTimeStamp;
|
lock (m_syncInfoLock)
|
||||||
propertyData["LastUpdateSyncID"] = LastUpdateSyncID;
|
|
||||||
|
|
||||||
switch (m_property)
|
|
||||||
{
|
{
|
||||||
///////////////////////////////////////
|
propertyData["LastUpdateTimeStamp"] = LastUpdateTimeStamp;
|
||||||
//SOP properties with complex structure
|
propertyData["LastUpdateSyncID"] = LastUpdateSyncID;
|
||||||
///////////////////////////////////////
|
|
||||||
case SceneObjectPartSyncProperties.Shape:
|
|
||||||
case SceneObjectPartSyncProperties.TaskInventory:
|
|
||||||
propertyData["Value"] = OSD.FromString((string)LastUpdateValue);
|
|
||||||
break;
|
|
||||||
|
|
||||||
////////////////////////////
|
switch (m_property)
|
||||||
//SOP properties, enum types
|
{
|
||||||
////////////////////////////
|
///////////////////////////////////////
|
||||||
case SceneObjectPartSyncProperties.AggregateScriptEvents:
|
//SOP properties with complex structure
|
||||||
propertyData["Value"] = OSD.FromInteger((int)((scriptEvents)LastUpdateValue));
|
///////////////////////////////////////
|
||||||
break;
|
case SceneObjectPartSyncProperties.Shape:
|
||||||
case SceneObjectPartSyncProperties.Flags:
|
string shapeString = PropertySerializer.SerializeShape((PrimitiveBaseShape)LastUpdateValue);
|
||||||
case SceneObjectPartSyncProperties.LocalFlags:
|
propertyData["Value"] = OSD.FromString(shapeString);
|
||||||
propertyData["Value"] = OSD.FromInteger((int)((PrimFlags)LastUpdateValue));
|
break;
|
||||||
break;
|
case SceneObjectPartSyncProperties.TaskInventory:
|
||||||
////////////////////////////
|
propertyData["Value"] = OSD.FromString((string)LastUpdateValue);
|
||||||
//SOP properties, bool types
|
break;
|
||||||
////////////////////////////
|
|
||||||
case SceneObjectPartSyncProperties.AllowedDrop:
|
|
||||||
case SceneObjectPartSyncProperties.IsAttachment:
|
|
||||||
case SceneObjectPartSyncProperties.PassTouches:
|
|
||||||
case SceneObjectPartSyncProperties.VolumeDetectActive:
|
|
||||||
propertyData["Value"] = OSD.FromBoolean((bool)LastUpdateValue);
|
|
||||||
break;
|
|
||||||
|
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
//SOP properties, Vector3 types
|
//SOP properties, enum types
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
case SceneObjectPartSyncProperties.AngularVelocity:
|
case SceneObjectPartSyncProperties.AggregateScriptEvents:
|
||||||
case SceneObjectPartSyncProperties.AttachedPos:
|
propertyData["Value"] = OSD.FromInteger((int)((scriptEvents)LastUpdateValue));
|
||||||
case SceneObjectPartSyncProperties.GroupPosition:
|
break;
|
||||||
case SceneObjectPartSyncProperties.OffsetPosition:
|
case SceneObjectPartSyncProperties.Flags:
|
||||||
case SceneObjectPartSyncProperties.Scale:
|
case SceneObjectPartSyncProperties.LocalFlags:
|
||||||
case SceneObjectPartSyncProperties.SitTargetPosition:
|
propertyData["Value"] = OSD.FromInteger((int)((PrimFlags)LastUpdateValue));
|
||||||
case SceneObjectPartSyncProperties.SitTargetPositionLL:
|
break;
|
||||||
case SceneObjectPartSyncProperties.SOP_Acceleration:
|
////////////////////////////
|
||||||
case SceneObjectPartSyncProperties.Velocity:
|
//SOP properties, bool types
|
||||||
propertyData["Value"] = OSD.FromVector3((Vector3)LastUpdateValue);
|
////////////////////////////
|
||||||
break;
|
case SceneObjectPartSyncProperties.AllowedDrop:
|
||||||
|
case SceneObjectPartSyncProperties.IsAttachment:
|
||||||
|
case SceneObjectPartSyncProperties.PassTouches:
|
||||||
|
case SceneObjectPartSyncProperties.VolumeDetectActive:
|
||||||
|
propertyData["Value"] = OSD.FromBoolean((bool)LastUpdateValue);
|
||||||
|
break;
|
||||||
|
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
//SOP properties, UUID types
|
//SOP properties, Vector3 types
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
case SceneObjectPartSyncProperties.AttachedAvatar:
|
case SceneObjectPartSyncProperties.AngularVelocity:
|
||||||
case SceneObjectPartSyncProperties.CollisionSound:
|
case SceneObjectPartSyncProperties.AttachedPos:
|
||||||
case SceneObjectPartSyncProperties.CreatorID:
|
case SceneObjectPartSyncProperties.GroupPosition:
|
||||||
case SceneObjectPartSyncProperties.FolderID:
|
case SceneObjectPartSyncProperties.OffsetPosition:
|
||||||
case SceneObjectPartSyncProperties.GroupID:
|
case SceneObjectPartSyncProperties.Scale:
|
||||||
case SceneObjectPartSyncProperties.LastOwnerID:
|
case SceneObjectPartSyncProperties.SitTargetPosition:
|
||||||
case SceneObjectPartSyncProperties.OwnerID:
|
case SceneObjectPartSyncProperties.SitTargetPositionLL:
|
||||||
case SceneObjectPartSyncProperties.Sound:
|
case SceneObjectPartSyncProperties.SOP_Acceleration:
|
||||||
propertyData["Value"] = OSD.FromUUID((UUID)LastUpdateValue);
|
case SceneObjectPartSyncProperties.Velocity:
|
||||||
break;
|
propertyData["Value"] = OSD.FromVector3((Vector3)LastUpdateValue);
|
||||||
|
break;
|
||||||
|
|
||||||
//case SceneObjectPartProperties.AttachedPos:
|
////////////////////////////
|
||||||
////////////////////////////
|
//SOP properties, UUID types
|
||||||
//SOP properties, uint types
|
////////////////////////////
|
||||||
////////////////////////////
|
case SceneObjectPartSyncProperties.AttachedAvatar:
|
||||||
case SceneObjectPartSyncProperties.AttachmentPoint:
|
case SceneObjectPartSyncProperties.CollisionSound:
|
||||||
case SceneObjectPartSyncProperties.BaseMask:
|
case SceneObjectPartSyncProperties.CreatorID:
|
||||||
case SceneObjectPartSyncProperties.Category:
|
case SceneObjectPartSyncProperties.FolderID:
|
||||||
case SceneObjectPartSyncProperties.EveryoneMask:
|
case SceneObjectPartSyncProperties.GroupID:
|
||||||
case SceneObjectPartSyncProperties.GroupMask:
|
case SceneObjectPartSyncProperties.LastOwnerID:
|
||||||
case SceneObjectPartSyncProperties.InventorySerial:
|
case SceneObjectPartSyncProperties.OwnerID:
|
||||||
case SceneObjectPartSyncProperties.NextOwnerMask:
|
case SceneObjectPartSyncProperties.Sound:
|
||||||
case SceneObjectPartSyncProperties.OwnerMask:
|
propertyData["Value"] = OSD.FromUUID((UUID)LastUpdateValue);
|
||||||
propertyData["Value"] = OSD.FromUInteger((uint)LastUpdateValue);
|
break;
|
||||||
break;
|
|
||||||
|
|
||||||
//case SceneObjectPartProperties.BaseMask:
|
//case SceneObjectPartProperties.AttachedPos:
|
||||||
//case SceneObjectPartProperties.Category:
|
////////////////////////////
|
||||||
|
//SOP properties, uint types
|
||||||
|
////////////////////////////
|
||||||
|
case SceneObjectPartSyncProperties.AttachmentPoint:
|
||||||
|
case SceneObjectPartSyncProperties.BaseMask:
|
||||||
|
case SceneObjectPartSyncProperties.Category:
|
||||||
|
case SceneObjectPartSyncProperties.EveryoneMask:
|
||||||
|
case SceneObjectPartSyncProperties.GroupMask:
|
||||||
|
case SceneObjectPartSyncProperties.InventorySerial:
|
||||||
|
case SceneObjectPartSyncProperties.NextOwnerMask:
|
||||||
|
case SceneObjectPartSyncProperties.OwnerMask:
|
||||||
|
propertyData["Value"] = OSD.FromUInteger((uint)LastUpdateValue);
|
||||||
|
break;
|
||||||
|
|
||||||
////////////////////////////
|
//case SceneObjectPartProperties.BaseMask:
|
||||||
//SOP properties, byte types
|
//case SceneObjectPartProperties.Category:
|
||||||
////////////////////////////
|
|
||||||
case SceneObjectPartSyncProperties.ClickAction:
|
|
||||||
case SceneObjectPartSyncProperties.Material:
|
|
||||||
case SceneObjectPartSyncProperties.ObjectSaleType:
|
|
||||||
case SceneObjectPartSyncProperties.UpdateFlag:
|
|
||||||
propertyData["Value"] = OSD.FromInteger((byte)LastUpdateValue);
|
|
||||||
break;
|
|
||||||
//case SceneObjectPartProperties.CollisionSound:
|
|
||||||
|
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
//SOP properties, float types
|
//SOP properties, byte types
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
case SceneObjectPartSyncProperties.CollisionSoundVolume:
|
case SceneObjectPartSyncProperties.ClickAction:
|
||||||
propertyData["Value"] = OSD.FromReal((float)LastUpdateValue);
|
case SceneObjectPartSyncProperties.Material:
|
||||||
break;
|
case SceneObjectPartSyncProperties.ObjectSaleType:
|
||||||
|
case SceneObjectPartSyncProperties.UpdateFlag:
|
||||||
|
propertyData["Value"] = OSD.FromInteger((byte)LastUpdateValue);
|
||||||
|
break;
|
||||||
|
//case SceneObjectPartProperties.CollisionSound:
|
||||||
|
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
//SOP properties, Color(struct type)
|
//SOP properties, float types
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
case SceneObjectPartSyncProperties.Color:
|
case SceneObjectPartSyncProperties.CollisionSoundVolume:
|
||||||
propertyData["Value"] = OSD.FromString(PropertySerializer.SerializeColor((System.Drawing.Color)LastUpdateValue));
|
propertyData["Value"] = OSD.FromReal((float)LastUpdateValue);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
//SOP properties, int types
|
//SOP properties, Color(struct type)
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
case SceneObjectPartSyncProperties.CreationDate:
|
case SceneObjectPartSyncProperties.Color:
|
||||||
case SceneObjectPartSyncProperties.LinkNum:
|
propertyData["Value"] = OSD.FromString(PropertySerializer.SerializeColor((System.Drawing.Color)LastUpdateValue));
|
||||||
case SceneObjectPartSyncProperties.OwnershipCost:
|
break;
|
||||||
case SceneObjectPartSyncProperties.SalePrice:
|
|
||||||
case SceneObjectPartSyncProperties.ScriptAccessPin:
|
|
||||||
propertyData["Value"] = OSD.FromInteger((int)LastUpdateValue);
|
|
||||||
break;
|
|
||||||
|
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
//SOP properties, string types
|
//SOP properties, int types
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
case SceneObjectPartSyncProperties.CreatorData:
|
case SceneObjectPartSyncProperties.CreationDate:
|
||||||
case SceneObjectPartSyncProperties.Description:
|
case SceneObjectPartSyncProperties.LinkNum:
|
||||||
case SceneObjectPartSyncProperties.MediaUrl:
|
case SceneObjectPartSyncProperties.OwnershipCost:
|
||||||
case SceneObjectPartSyncProperties.Name:
|
case SceneObjectPartSyncProperties.SalePrice:
|
||||||
case SceneObjectPartSyncProperties.SitName:
|
case SceneObjectPartSyncProperties.ScriptAccessPin:
|
||||||
case SceneObjectPartSyncProperties.Text:
|
propertyData["Value"] = OSD.FromInteger((int)LastUpdateValue);
|
||||||
case SceneObjectPartSyncProperties.TouchName:
|
break;
|
||||||
propertyData["Value"] = OSD.FromString((string)LastUpdateValue);
|
|
||||||
break;
|
|
||||||
////////////////////////////
|
|
||||||
//SOP properties, byte[] types
|
|
||||||
////////////////////////////
|
|
||||||
case SceneObjectPartSyncProperties.ParticleSystem:
|
|
||||||
case SceneObjectPartSyncProperties.TextureAnimation:
|
|
||||||
propertyData["Value"] = OSD.FromBinary((byte[])LastUpdateValue);
|
|
||||||
break;
|
|
||||||
|
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
//SOP properties, Quaternion types
|
//SOP properties, string types
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
case SceneObjectPartSyncProperties.RotationOffset:
|
case SceneObjectPartSyncProperties.CreatorData:
|
||||||
case SceneObjectPartSyncProperties.SitTargetOrientation:
|
case SceneObjectPartSyncProperties.Description:
|
||||||
case SceneObjectPartSyncProperties.SitTargetOrientationLL:
|
case SceneObjectPartSyncProperties.MediaUrl:
|
||||||
propertyData["Value"] = OSD.FromQuaternion((Quaternion)LastUpdateValue);
|
case SceneObjectPartSyncProperties.Name:
|
||||||
break;
|
case SceneObjectPartSyncProperties.SitName:
|
||||||
|
case SceneObjectPartSyncProperties.Text:
|
||||||
|
case SceneObjectPartSyncProperties.TouchName:
|
||||||
|
propertyData["Value"] = OSD.FromString((string)LastUpdateValue);
|
||||||
|
break;
|
||||||
|
////////////////////////////
|
||||||
|
//SOP properties, byte[] types
|
||||||
|
////////////////////////////
|
||||||
|
case SceneObjectPartSyncProperties.ParticleSystem:
|
||||||
|
case SceneObjectPartSyncProperties.TextureAnimation:
|
||||||
|
propertyData["Value"] = OSD.FromBinary((byte[])LastUpdateValue);
|
||||||
|
break;
|
||||||
|
|
||||||
////////////////////////////////////
|
////////////////////////////
|
||||||
//PhysActor properties, float type
|
//SOP properties, Quaternion types
|
||||||
////////////////////////////////////
|
////////////////////////////
|
||||||
case SceneObjectPartSyncProperties.Buoyancy:
|
case SceneObjectPartSyncProperties.RotationOffset:
|
||||||
propertyData["Value"] = OSD.FromReal((float)LastUpdateValue);
|
case SceneObjectPartSyncProperties.SitTargetOrientation:
|
||||||
break;
|
case SceneObjectPartSyncProperties.SitTargetOrientationLL:
|
||||||
|
propertyData["Value"] = OSD.FromQuaternion((Quaternion)LastUpdateValue);
|
||||||
|
break;
|
||||||
|
|
||||||
////////////////////////////////////
|
////////////////////////////////////
|
||||||
//PhysActor properties, bool type
|
//PhysActor properties, float type
|
||||||
////////////////////////////////////
|
////////////////////////////////////
|
||||||
case SceneObjectPartSyncProperties.Flying:
|
case SceneObjectPartSyncProperties.Buoyancy:
|
||||||
case SceneObjectPartSyncProperties.IsColliding:
|
propertyData["Value"] = OSD.FromReal((float)LastUpdateValue);
|
||||||
case SceneObjectPartSyncProperties.CollidingGround:
|
break;
|
||||||
case SceneObjectPartSyncProperties.IsPhysical:
|
|
||||||
case SceneObjectPartSyncProperties.Kinematic:
|
|
||||||
propertyData["Value"] = OSD.FromBoolean((bool)LastUpdateValue);
|
|
||||||
break;
|
|
||||||
|
|
||||||
////////////////////////////////////
|
////////////////////////////////////
|
||||||
//PhysActor properties, Vector3 type
|
//PhysActor properties, bool type
|
||||||
////////////////////////////////////
|
////////////////////////////////////
|
||||||
case SceneObjectPartSyncProperties.Force:
|
case SceneObjectPartSyncProperties.Flying:
|
||||||
case SceneObjectPartSyncProperties.PA_Acceleration:
|
case SceneObjectPartSyncProperties.IsColliding:
|
||||||
case SceneObjectPartSyncProperties.Position:
|
case SceneObjectPartSyncProperties.CollidingGround:
|
||||||
case SceneObjectPartSyncProperties.RotationalVelocity:
|
case SceneObjectPartSyncProperties.IsPhysical:
|
||||||
case SceneObjectPartSyncProperties.Size:
|
case SceneObjectPartSyncProperties.Kinematic:
|
||||||
case SceneObjectPartSyncProperties.Torque:
|
propertyData["Value"] = OSD.FromBoolean((bool)LastUpdateValue);
|
||||||
propertyData["Value"] = OSD.FromVector3((Vector3)LastUpdateValue);
|
break;
|
||||||
break;
|
|
||||||
|
|
||||||
////////////////////////////////////
|
////////////////////////////////////
|
||||||
//PhysActor properties, Quaternion type
|
//PhysActor properties, Vector3 type
|
||||||
////////////////////////////////////
|
////////////////////////////////////
|
||||||
case SceneObjectPartSyncProperties.Orientation:
|
case SceneObjectPartSyncProperties.Force:
|
||||||
propertyData["Value"] = OSD.FromQuaternion((Quaternion)LastUpdateValue);
|
case SceneObjectPartSyncProperties.PA_Acceleration:
|
||||||
break;
|
case SceneObjectPartSyncProperties.Position:
|
||||||
|
case SceneObjectPartSyncProperties.RotationalVelocity:
|
||||||
|
case SceneObjectPartSyncProperties.Size:
|
||||||
|
case SceneObjectPartSyncProperties.Torque:
|
||||||
|
propertyData["Value"] = OSD.FromVector3((Vector3)LastUpdateValue);
|
||||||
|
break;
|
||||||
|
|
||||||
///////////////////////
|
////////////////////////////////////
|
||||||
//SOG properties
|
//PhysActor properties, Quaternion type
|
||||||
///////////////////////
|
////////////////////////////////////
|
||||||
case SceneObjectPartSyncProperties.AbsolutePosition:
|
case SceneObjectPartSyncProperties.Orientation:
|
||||||
propertyData["Value"] = OSD.FromVector3((Vector3)LastUpdateValue);
|
propertyData["Value"] = OSD.FromQuaternion((Quaternion)LastUpdateValue);
|
||||||
break;
|
break;
|
||||||
case SceneObjectPartSyncProperties.IsSelected:
|
|
||||||
propertyData["Value"] = OSD.FromBoolean((bool)LastUpdateValue);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
///////////////////////
|
||||||
DebugLog.WarnFormat("PrimSynInfo.PropertyToOSD -- no handler for property {0} ", m_property);
|
//SOG properties
|
||||||
break;
|
///////////////////////
|
||||||
|
case SceneObjectPartSyncProperties.AbsolutePosition:
|
||||||
|
propertyData["Value"] = OSD.FromVector3((Vector3)LastUpdateValue);
|
||||||
|
break;
|
||||||
|
case SceneObjectPartSyncProperties.IsSelected:
|
||||||
|
propertyData["Value"] = OSD.FromBoolean((bool)LastUpdateValue);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
DebugLog.WarnFormat("PrimSynInfo.PropertyToOSD -- no handler for property {0} ", m_property);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return propertyData;
|
return propertyData;
|
||||||
}
|
}
|
||||||
|
@ -4178,9 +4246,14 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
//SOP properties with complex structure
|
//SOP properties with complex structure
|
||||||
///////////////////////////////////////
|
///////////////////////////////////////
|
||||||
case SceneObjectPartSyncProperties.Shape:
|
case SceneObjectPartSyncProperties.Shape:
|
||||||
|
string shapeString = propertyData["Value"].AsString();
|
||||||
|
PrimitiveBaseShape shape = PropertySerializer.DeSerializeShape(shapeString);
|
||||||
|
m_lastUpdateValue = (Object)shape;
|
||||||
|
m_lastUpdateValueHash = PropertySerializer.GetPropertyHashValue(shapeString);
|
||||||
|
break;
|
||||||
case SceneObjectPartSyncProperties.TaskInventory:
|
case SceneObjectPartSyncProperties.TaskInventory:
|
||||||
m_lastUpdateValue = (Object)propertyData["Value"].AsString();
|
m_lastUpdateValue = (Object)propertyData["Value"].AsString();
|
||||||
m_lastUpdateValueHash = Util.Md5Hash((string)m_lastUpdateValue);
|
m_lastUpdateValueHash = PropertySerializer.GetPropertyHashValue((string)m_lastUpdateValue);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
|
@ -4393,17 +4466,15 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GetPropertyHashValue(string initValue)
|
|
||||||
{
|
|
||||||
return Util.Md5Hash(initValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class PropertySerializer
|
public class PropertySerializer
|
||||||
{
|
{
|
||||||
//TO BE TESTED
|
//TO BE TESTED
|
||||||
|
public static string GetPropertyHashValue(string initValue)
|
||||||
|
{
|
||||||
|
return Util.Md5Hash(initValue);
|
||||||
|
}
|
||||||
|
|
||||||
public static string SerializeShape(SceneObjectPart part)
|
public static string SerializeShape(SceneObjectPart part)
|
||||||
{
|
{
|
||||||
|
@ -4419,6 +4490,20 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
return serializedShape;
|
return serializedShape;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string SerializeShape(PrimitiveBaseShape shape)
|
||||||
|
{
|
||||||
|
string serializedShape;
|
||||||
|
using (StringWriter sw = new StringWriter())
|
||||||
|
{
|
||||||
|
using (XmlTextWriter writer = new XmlTextWriter(sw))
|
||||||
|
{
|
||||||
|
SceneObjectSerializer.WriteShape(writer, shape, new Dictionary<string, object>());
|
||||||
|
}
|
||||||
|
serializedShape = sw.ToString();
|
||||||
|
}
|
||||||
|
return serializedShape;
|
||||||
|
}
|
||||||
|
|
||||||
public static PrimitiveBaseShape DeSerializeShape(string shapeString)
|
public static PrimitiveBaseShape DeSerializeShape(string shapeString)
|
||||||
{
|
{
|
||||||
if (shapeString == null || shapeString == String.Empty || shapeString == "")
|
if (shapeString == null || shapeString == String.Empty || shapeString == "")
|
||||||
|
@ -4955,7 +5040,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
{
|
{
|
||||||
case SceneObjectPartSyncProperties.Shape:
|
case SceneObjectPartSyncProperties.Shape:
|
||||||
string primShapeString = PropertySerializer.SerializeShape(part);
|
string primShapeString = PropertySerializer.SerializeShape(part);
|
||||||
string primShapeStringHash = Util.Md5Hash(primShapeString);
|
string primShapeStringHash = PropertySerializer.GetPropertyHashValue(primShapeString);
|
||||||
|
|
||||||
if (!m_propertiesSyncInfo[property].IsHashValueEqual(primShapeStringHash))
|
if (!m_propertiesSyncInfo[property].IsHashValueEqual(primShapeStringHash))
|
||||||
{
|
{
|
||||||
|
@ -4964,7 +5049,8 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
//value by copying that from PrimSyncInfoManager
|
//value by copying that from PrimSyncInfoManager
|
||||||
if (lastUpdateTS > m_propertiesSyncInfo[property].LastUpdateTimeStamp)
|
if (lastUpdateTS > m_propertiesSyncInfo[property].LastUpdateTimeStamp)
|
||||||
{
|
{
|
||||||
UpdatePropertyWithHashByLocal(property, lastUpdateTS, syncID, (Object)primShapeString, primShapeStringHash);
|
//UpdatePropertyWithHashByLocal(property, lastUpdateTS, syncID, (Object)primShapeString, primShapeStringHash);
|
||||||
|
UpdatePropertyWithHashByLocal(property, lastUpdateTS, syncID, part.Shape, primShapeStringHash);
|
||||||
|
|
||||||
//DSG DEBUG
|
//DSG DEBUG
|
||||||
//DebugLog.DebugFormat("CompareHashedValue_UpdateByLocal - Shape of {0}, {1} updated to ProfileShape {2}: SOP hashed shape: {3}, cached hash {4}",
|
//DebugLog.DebugFormat("CompareHashedValue_UpdateByLocal - Shape of {0}, {1} updated to ProfileShape {2}: SOP hashed shape: {3}, cached hash {4}",
|
||||||
|
@ -6129,7 +6215,8 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
switch (property)
|
switch (property)
|
||||||
{
|
{
|
||||||
case SceneObjectPartSyncProperties.Shape:
|
case SceneObjectPartSyncProperties.Shape:
|
||||||
return (Object)PropertySerializer.SerializeShape(part);
|
//return (Object)PropertySerializer.SerializeShape(part);
|
||||||
|
return (Object)part.Shape;
|
||||||
case SceneObjectPartSyncProperties.TaskInventory:
|
case SceneObjectPartSyncProperties.TaskInventory:
|
||||||
return (Object)PropertySerializer.SerializeTaskInventory(part);
|
return (Object)PropertySerializer.SerializeTaskInventory(part);
|
||||||
|
|
||||||
|
@ -6350,7 +6437,8 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
switch (property)
|
switch (property)
|
||||||
{
|
{
|
||||||
case SceneObjectPartSyncProperties.Shape:
|
case SceneObjectPartSyncProperties.Shape:
|
||||||
PrimitiveBaseShape shapeVal = PropertySerializer.DeSerializeShape((string)pSyncInfo.LastUpdateValue);
|
//PrimitiveBaseShape shapeVal = PropertySerializer.DeSerializeShape((string)pSyncInfo.LastUpdateValue);
|
||||||
|
PrimitiveBaseShape shapeVal = (PrimitiveBaseShape)pSyncInfo.LastUpdateValue;
|
||||||
if (shapeVal != null)
|
if (shapeVal != null)
|
||||||
{
|
{
|
||||||
part.Shape = shapeVal;
|
part.Shape = shapeVal;
|
||||||
|
@ -7077,18 +7165,23 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
{
|
{
|
||||||
lock (m_primsInSyncLock)
|
lock (m_primsInSyncLock)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (m_primsInSync.ContainsKey(primUUID))
|
if (m_primsInSync.ContainsKey(primUUID))
|
||||||
{
|
{
|
||||||
m_primsInSync[primUUID] = primSyncInfo;
|
m_primsInSync[primUUID] = primSyncInfo;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
//copy the items from the old list and insert the new record
|
//copy the items from the old list and insert the new record
|
||||||
Dictionary<UUID, PrimSyncInfo> newPrimsInSync = new Dictionary<UUID, PrimSyncInfo>(m_primsInSync);
|
Dictionary<UUID, PrimSyncInfo> newPrimsInSync = new Dictionary<UUID, PrimSyncInfo>(m_primsInSync);
|
||||||
newPrimsInSync.Add(primUUID, primSyncInfo);
|
newPrimsInSync.Add(primUUID, primSyncInfo);
|
||||||
|
|
||||||
//replace the old list
|
//replace the old list
|
||||||
m_primsInSync = newPrimsInSync;
|
m_primsInSync = newPrimsInSync;
|
||||||
|
* */
|
||||||
|
|
||||||
|
m_primsInSync.Add(primUUID, primSyncInfo);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -7113,10 +7206,13 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
m_primsInSync[part.UUID] = primSyncInfo;
|
m_primsInSync[part.UUID] = primSyncInfo;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
Dictionary<UUID, PrimSyncInfo> newPrimsInSync = new Dictionary<UUID, PrimSyncInfo>(m_primsInSync);
|
Dictionary<UUID, PrimSyncInfo> newPrimsInSync = new Dictionary<UUID, PrimSyncInfo>(m_primsInSync);
|
||||||
newPrimsInSync.Add(part.UUID, primSyncInfo);
|
newPrimsInSync.Add(part.UUID, primSyncInfo);
|
||||||
|
|
||||||
m_primsInSync = newPrimsInSync;
|
m_primsInSync = newPrimsInSync;
|
||||||
|
* */
|
||||||
|
m_primsInSync.Add(part.UUID, primSyncInfo);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -7126,6 +7222,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
lock (m_primsInSyncLock)
|
lock (m_primsInSyncLock)
|
||||||
{
|
{
|
||||||
//copy the old list, update the copied list
|
//copy the old list, update the copied list
|
||||||
|
/*
|
||||||
Dictionary<UUID, PrimSyncInfo> newPrimsInSync = new Dictionary<UUID, PrimSyncInfo>(m_primsInSync);
|
Dictionary<UUID, PrimSyncInfo> newPrimsInSync = new Dictionary<UUID, PrimSyncInfo>(m_primsInSync);
|
||||||
foreach (KeyValuePair<UUID, PrimSyncInfo> valPair in multiPrimsSyncInfo)
|
foreach (KeyValuePair<UUID, PrimSyncInfo> valPair in multiPrimsSyncInfo)
|
||||||
{
|
{
|
||||||
|
@ -7141,6 +7238,19 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
|
|
||||||
//replace the old list
|
//replace the old list
|
||||||
m_primsInSync = newPrimsInSync;
|
m_primsInSync = newPrimsInSync;
|
||||||
|
* */
|
||||||
|
|
||||||
|
foreach (KeyValuePair<UUID, PrimSyncInfo> valPair in multiPrimsSyncInfo)
|
||||||
|
{
|
||||||
|
UUID primUUID = valPair.Key;
|
||||||
|
PrimSyncInfo primSyncInfo = valPair.Value;
|
||||||
|
if (m_primsInSync.ContainsKey(primUUID))
|
||||||
|
{
|
||||||
|
m_primsInSync[primUUID] = primSyncInfo;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
m_primsInSync.Add(primUUID, primSyncInfo);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7152,22 +7262,27 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
}
|
}
|
||||||
lock (m_primsInSyncLock)
|
lock (m_primsInSyncLock)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
Dictionary<UUID, PrimSyncInfo> newPrimsInSync = new Dictionary<UUID, PrimSyncInfo>(m_primsInSync);
|
Dictionary<UUID, PrimSyncInfo> newPrimsInSync = new Dictionary<UUID, PrimSyncInfo>(m_primsInSync);
|
||||||
newPrimsInSync.Remove(part.UUID);
|
newPrimsInSync.Remove(part.UUID);
|
||||||
|
|
||||||
m_primsInSync = newPrimsInSync;
|
m_primsInSync = newPrimsInSync;
|
||||||
|
* */
|
||||||
|
m_primsInSync.Remove(part.UUID);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PrimSyncInfo GetPrimSyncInfo(UUID primUUID)
|
public PrimSyncInfo GetPrimSyncInfo(UUID primUUID)
|
||||||
{
|
{
|
||||||
if (m_primsInSync.ContainsKey(primUUID))
|
lock (m_primsInSyncLock)
|
||||||
{
|
{
|
||||||
return m_primsInSync[primUUID];
|
if (m_primsInSync.ContainsKey(primUUID))
|
||||||
|
{
|
||||||
|
return m_primsInSync[primUUID];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
return null;
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool SetSOPPhyscActorProperties(SceneObjectPart part)
|
public bool SetSOPPhyscActorProperties(SceneObjectPart part)
|
||||||
|
|
|
@ -1390,6 +1390,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
_position.Z = m_taintPosition.Z;
|
_position.Z = m_taintPosition.Z;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ChangingActorID = RegionSyncServerModule.ActorID;
|
||||||
this.RequestPhysicsterseUpdate();
|
this.RequestPhysicsterseUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -595,7 +595,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
SceneObjectPart part = m_Scene.GetSceneObjectPart(localID);
|
SceneObjectPart part = m_Scene.GetSceneObjectPart(localID);
|
||||||
if (part == null)
|
if (part == null)
|
||||||
{
|
{
|
||||||
m_log.Error("[Script] SceneObjectPart unavailable. Script NOT started.");
|
m_log.Error("[Script] SceneObjectPart unavailable. Script NOT started."+" localID = "+localID);
|
||||||
m_ScriptErrorMessage += "SceneObjectPart unavailable. Script NOT started.\n";
|
m_ScriptErrorMessage += "SceneObjectPart unavailable. Script NOT started.\n";
|
||||||
m_ScriptFailCount++;
|
m_ScriptFailCount++;
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in New Issue