Added implementation of GeneralBucketUpdateProcessor and PhysicsBucketUpdateProcessor
parent
f47c301a56
commit
63e35d53f7
|
@ -5324,16 +5324,115 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
private void GeneralBucketUpdateProcessor(SceneObjectPart updatedPart, string bucketName)
|
private void GeneralBucketUpdateProcessor(SceneObjectPart updatedPart, string bucketName)
|
||||||
{
|
{
|
||||||
|
//If needed, we could define new set functions for these properties, and cast this SOP to SOPBase to
|
||||||
|
//invoke the set functions in SOPBase
|
||||||
|
//SceneObjectPartBase localPart = (SceneObjectPartBase)this;
|
||||||
|
SceneObjectPart localPart = this;
|
||||||
|
bool collisionSoundUpdated = false;
|
||||||
|
|
||||||
lock (m_bucketUpdateLocks[bucketName])
|
lock (m_bucketUpdateLocks[bucketName])
|
||||||
{
|
{
|
||||||
|
//See SceneObjectSerializer for the properties that are included in a serialized SceneObjectPart.
|
||||||
|
localPart.AllowedDrop = updatedPart.AllowedDrop;
|
||||||
|
localPart.CreatorID = updatedPart.CreatorID;
|
||||||
|
localPart.CreatorData = updatedPart.CreatorData;
|
||||||
|
localPart.FolderID = updatedPart.FolderID;
|
||||||
|
localPart.InventorySerial = updatedPart.InventorySerial;
|
||||||
|
localPart.TaskInventory = updatedPart.TaskInventory;
|
||||||
|
//Following two properties, UUID and LocalId, shall not be updated.
|
||||||
|
//localPart.UUID
|
||||||
|
//localPart.LocalId
|
||||||
|
localPart.Name = updatedPart.Name;
|
||||||
|
localPart.Material = updatedPart.Material;
|
||||||
|
localPart.PassTouches = updatedPart.PassTouches;
|
||||||
|
//RegionHandle shall not be copied, since updatedSog is sent by a different actor, which has a different local region
|
||||||
|
//localPart.RegionHandle
|
||||||
|
localPart.ScriptAccessPin = updatedPart.ScriptAccessPin;
|
||||||
|
|
||||||
|
localPart.Description = updatedPart.Description;
|
||||||
|
localPart.Color = updatedPart.Color;
|
||||||
|
localPart.Text = updatedPart.Text;
|
||||||
|
localPart.SitName = updatedPart.SitName;
|
||||||
|
localPart.TouchName = updatedPart.TouchName;
|
||||||
|
localPart.LinkNum = updatedPart.LinkNum;
|
||||||
|
localPart.ClickAction = updatedPart.ClickAction;
|
||||||
|
localPart.Shape = updatedPart.Shape;
|
||||||
|
localPart.Scale = updatedPart.Scale;
|
||||||
|
localPart.UpdateFlag = updatedPart.UpdateFlag;
|
||||||
|
localPart.SitTargetOrientation = updatedPart.SitTargetOrientation;
|
||||||
|
localPart.SitTargetPosition = updatedPart.SitTargetPosition;
|
||||||
|
localPart.SitTargetPositionLL = updatedPart.SitTargetPositionLL;
|
||||||
|
localPart.SitTargetOrientationLL = updatedPart.SitTargetOrientationLL;
|
||||||
|
//ParentID should still point to the rootpart in the local sog, do not update. If the root part changed, we will update it in SceneObjectGroup.UpdateObjectProperties()
|
||||||
|
//localPart.ParentID;
|
||||||
|
localPart.CreationDate = updatedPart.CreationDate;
|
||||||
|
localPart.Category = updatedPart.Category;
|
||||||
|
localPart.SalePrice = updatedPart.SalePrice;
|
||||||
|
localPart.ObjectSaleType = updatedPart.ObjectSaleType;
|
||||||
|
localPart.OwnershipCost = updatedPart.OwnershipCost;
|
||||||
|
localPart.GroupID = updatedPart.GroupID;
|
||||||
|
localPart.OwnerID = updatedPart.OwnerID;
|
||||||
|
localPart.LastOwnerID = updatedPart.LastOwnerID;
|
||||||
|
localPart.BaseMask = updatedPart.BaseMask;
|
||||||
|
localPart.OwnerMask = updatedPart.OwnerMask;
|
||||||
|
localPart.GroupMask = updatedPart.GroupMask;
|
||||||
|
localPart.EveryoneMask = updatedPart.EveryoneMask;
|
||||||
|
localPart.NextOwnerMask = updatedPart.NextOwnerMask;
|
||||||
|
localPart.Flags = updatedPart.Flags;
|
||||||
|
|
||||||
|
//We will update CollisionSound with special care so that it does not lead to ScheduleFullUpdate of this part, to make the actor think it just made an update and
|
||||||
|
//need to propogate that update to other actors.
|
||||||
|
//localPart.CollisionSound = updatedPart.CollisionSound;
|
||||||
|
collisionSoundUpdated = UpdateCollisionSound(updatedPart.CollisionSound);
|
||||||
|
|
||||||
|
localPart.CollisionSoundVolume = updatedPart.CollisionSoundVolume;
|
||||||
|
localPart.MediaUrl = updatedPart.MediaUrl;
|
||||||
|
localPart.TextureAnimation = updatedPart.TextureAnimation;
|
||||||
|
localPart.ParticleSystem = updatedPart.ParticleSystem;
|
||||||
|
|
||||||
|
m_bucketSyncInfoList[bucketName].LastUpdateTimeStamp = updatedPart.BucketSyncInfoList[bucketName].LastUpdateTimeStamp;
|
||||||
|
m_bucketSyncInfoList[bucketName].LastUpdateActorID = updatedPart.BucketSyncInfoList[bucketName].LastUpdateActorID;
|
||||||
|
|
||||||
|
if (collisionSoundUpdated)
|
||||||
|
{
|
||||||
|
//If the local actor is Script Engine, it will catch this evnet and trigger aggregateScriptEvents()
|
||||||
|
m_parentGroup.Scene.EventManager.TriggerAggregateScriptEvents(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PhysicsBucketUpdateProcessor(SceneObjectPart updatedPart, string bucketName)
|
private void PhysicsBucketUpdateProcessor(SceneObjectPart updatedPart, string bucketName)
|
||||||
{
|
{
|
||||||
|
//If needed, we could define new set functions for these properties, and cast this SOP to SOPBase to
|
||||||
|
//invoke the set functions in SOPBase
|
||||||
|
//SceneObjectPartBase localPart = (SceneObjectPartBase)this;
|
||||||
|
SceneObjectPart localPart = this;
|
||||||
|
|
||||||
lock (m_bucketUpdateLocks[bucketName])
|
lock (m_bucketUpdateLocks[bucketName])
|
||||||
{
|
{
|
||||||
|
localPart.GroupPosition = updatedPart.GroupPosition;
|
||||||
|
localPart.OffsetPosition = updatedPart.OffsetPosition;
|
||||||
|
localPart.Scale = updatedPart.Scale;
|
||||||
|
localPart.Velocity = updatedPart.Velocity;
|
||||||
|
localPart.AngularVelocity = updatedPart.AngularVelocity;
|
||||||
|
localPart.RotationOffset = updatedPart.RotationOffset;
|
||||||
|
//properties in Physics bucket whose update processors are in PhysicsActor
|
||||||
|
/*
|
||||||
|
"Position":
|
||||||
|
"Size":
|
||||||
|
"Force":
|
||||||
|
"RotationalVelocity":
|
||||||
|
"PA_Acceleration":
|
||||||
|
"Torque":
|
||||||
|
"Orientation":
|
||||||
|
"IsPhysical":
|
||||||
|
"Flying":
|
||||||
|
"Buoyancy":
|
||||||
|
* */
|
||||||
|
|
||||||
|
m_bucketSyncInfoList[bucketName].LastUpdateTimeStamp = updatedPart.BucketSyncInfoList[bucketName].LastUpdateTimeStamp;
|
||||||
|
m_bucketSyncInfoList[bucketName].LastUpdateActorID = updatedPart.BucketSyncInfoList[bucketName].LastUpdateActorID;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue