From 83d67391f15962e45c1d1173439fa8d28de0628a Mon Sep 17 00:00:00 2001 From: Robert Adams Date: Wed, 18 May 2011 08:30:59 -0700 Subject: [PATCH] Fix physical actor update by passing additional attributes when physics terse update happens --- .../RegionSyncModule/PhysEngineToSceneConnector.cs | 2 +- .../RegionSyncModule/SceneToPhysEngineConnector.cs | 6 +++--- OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 7 ++++++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/PhysEngineToSceneConnector.cs b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/PhysEngineToSceneConnector.cs index d4919cdab3..6bb3e3187d 100644 --- a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/PhysEngineToSceneConnector.cs +++ b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/PhysEngineToSceneConnector.cs @@ -342,7 +342,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule { UUID uuid = data["uuid"].AsUUID(); string actorID = data["actorID"].AsString(); - m_log.DebugFormat("{0}: HandlPhysUpdateAttributes for {1}", LogHeader, uuid); + // m_log.DebugFormat("{0}: HandlPhysUpdateAttributes for {1}", LogHeader, uuid); PhysicsActor pa = FindPhysicsActor(uuid); if (pa != null) { diff --git a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/SceneToPhysEngineConnector.cs b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/SceneToPhysEngineConnector.cs index e7115aaa28..2e0b19b737 100644 --- a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/SceneToPhysEngineConnector.cs +++ b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/SceneToPhysEngineConnector.cs @@ -373,7 +373,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule pa.Kinematic = data["kinematic"].AsBoolean(); // receive?? pa.Buoyancy = (float)(data["buoyancy"].AsReal()); pa.CollidingGround = data["isCollidingGround"].AsBoolean(); - pa.IsColliding = data["isCollidingGround"].AsBoolean(); + pa.IsColliding = data["isColliding"].AsBoolean(); pa.ChangingActorID = actorID; pa.RequestPhysicsterseUpdate(); // tell the system the values have changed @@ -431,8 +431,8 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule data["isPhysical"] = OSD.FromBoolean(pa.IsPhysical); data["flying"] = OSD.FromBoolean(pa.Flying); data["buoyancy"] = OSD.FromReal(pa.Buoyancy); - // data["isColliding"] = OSD.FromBoolean(pa.IsColliding); - // data["isCollidingGround"] = OSD.FromBoolean(pa.CollidingGround); + data["isColliding"] = OSD.FromBoolean(pa.IsColliding); + data["isCollidingGround"] = OSD.FromBoolean(pa.CollidingGround); RegionSyncMessage rsm = new RegionSyncMessage(RegionSyncMessage.MsgType.PhysUpdateAttributes, OSDParser.SerializeJsonString(data)); diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index a0c1b1d8f5..4651f47993 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -2794,7 +2794,12 @@ namespace OpenSim.Region.Framework.Scenes //m_parentGroup.RootPart.m_groupPosition = newpos; } //ScheduleTerseUpdate(); - ScheduleTerseUpdate(new List(){SceneObjectPartSyncProperties.Position}); + ScheduleTerseUpdate(new List(){ + SceneObjectPartSyncProperties.Position, + SceneObjectPartSyncProperties.Orientation, + SceneObjectPartSyncProperties.Velocity, + SceneObjectPartSyncProperties.RotationalVelocity + }); //SendTerseUpdateToAllClients(); }