diff --git a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/PhysEngineToSceneConnector.cs b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/PhysEngineToSceneConnector.cs
index 8631af58f5..7e1d4d00dd 100644
--- a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/PhysEngineToSceneConnector.cs
+++ b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/PhysEngineToSceneConnector.cs
@@ -375,20 +375,24 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
{
uint localID = data["localID"].AsUInteger();
// m_log.DebugFormat("{0}: HandlPhysUpdateAttributes for {1}", LogHeader, localID);
- SceneObjectPart sop = m_validLocalScene.GetSceneObjectPart(localID);
- if (sop != null)
+ PhysicsActor pa = FindPhysicsActor(localID);
+ if (pa != null)
{
- sop.PhysActor.Size = data["size"].AsVector3();
- sop.PhysActor.Position = data["position"].AsVector3();
- sop.PhysActor.Force = data["force"].AsVector3();
- sop.PhysActor.Velocity = data["velocity"].AsVector3();
- sop.PhysActor.Torque = data["torque"].AsVector3();
- sop.PhysActor.Orientation = data["orientantion"].AsQuaternion();
- sop.PhysActor.IsPhysical = data["isPhysical"].AsBoolean(); // receive??
- sop.PhysActor.Flying = data["flying"].AsBoolean(); // receive??
- sop.PhysActor.Kinematic = data["kinematic"].AsBoolean(); // receive??
- sop.PhysActor.Buoyancy = (float)(data["buoyancy"].AsReal());
- sop.PhysActor.Shape = sop.Shape;
+ pa.Size = data["size"].AsVector3();
+ pa.Position = data["position"].AsVector3();
+ pa.Force = data["force"].AsVector3();
+ pa.Velocity = data["velocity"].AsVector3();
+ pa.Torque = data["torque"].AsVector3();
+ pa.Orientation = data["orientantion"].AsQuaternion();
+ pa.IsPhysical = data["isPhysical"].AsBoolean(); // receive??
+ pa.Flying = data["flying"].AsBoolean(); // receive??
+ pa.Kinematic = data["kinematic"].AsBoolean(); // receive??
+ pa.Buoyancy = (float)(data["buoyancy"].AsReal());
+ SceneObjectPart sop = m_validLocalScene.GetSceneObjectPart(localID);
+ if (sop != null)
+ {
+ pa.Shape = sop.Shape;
+ }
}
else
{
@@ -404,9 +408,25 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
return;
}
+ // Find the physics actor whether it is an object or a scene presence
+ private PhysicsActor FindPhysicsActor(uint localID)
+ {
+ SceneObjectPart sop = m_validLocalScene.GetSceneObjectPart(localID);
+ if (sop != null)
+ {
+ return sop.PhysActor;
+ }
+ ScenePresence sp = m_validLocalScene.GetScenePresence(localID);
+ if (sp != null)
+ {
+ return sp.PhysicsActor;
+ }
+ return null;
+ }
+
public void SendPhysUpdateAttributes(PhysicsActor pa)
{
- m_log.DebugFormat("{0}: SendPhysUpdateAttributes for {1}", LogHeader, pa.LocalID);
+ // m_log.DebugFormat("{0}: SendPhysUpdateAttributes for {1}", LogHeader, pa.LocalID);
OSDMap data = new OSDMap(9);
data["localID"] = OSD.FromUInteger(pa.LocalID);
data["size"] = OSD.FromVector3(pa.Size);
diff --git a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/PhysEngineToSceneConnectorModule.cs b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/PhysEngineToSceneConnectorModule.cs
index 2359fdfb6b..498a810934 100644
--- a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/PhysEngineToSceneConnectorModule.cs
+++ b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/PhysEngineToSceneConnectorModule.cs
@@ -133,6 +133,8 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
m_scene.EventManager.OnPluginConsole += EventManager_OnPluginConsole;
InstallInterfaces();
+ SyncStart(null); // fake a 'phys start' to get things going
+
m_log.Warn(LogHeader + " Initialised");
// collect all the scenes for later routing
@@ -198,15 +200,28 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
}
}
- public static bool IsPhysEngineScene
+ bool IPhysEngineToSceneConnectorModule.IsPhysEngineActor()
{
- get { return SceneToPhysEngineSyncServer.IsPhysEngineScene; }
+ return PhysEngineToSceneConnectorModule.IsPhysEngineActorS;
}
- public static bool IsActivePhysEngineScene
+ bool IPhysEngineToSceneConnectorModule.IsPhysEngineScene()
{
- get { return SceneToPhysEngineSyncServer.IsActivePhysEngineScene; }
+ return PhysEngineToSceneConnectorModule.IsPhysEngineSceneS;
}
- public static bool IsPhysEngineActor
+ bool IPhysEngineToSceneConnectorModule.IsActivePhysEngineScene()
+ {
+ return PhysEngineToSceneConnectorModule.IsActivePhysEngineSceneS;
+ }
+
+ public static bool IsPhysEngineSceneS
+ {
+ get { return SceneToPhysEngineSyncServer.IsPhysEngineScene2S(); }
+ }
+ public static bool IsActivePhysEngineSceneS
+ {
+ get { return SceneToPhysEngineSyncServer.IsActivePhysEngineScene2S(); }
+ }
+ public static bool IsPhysEngineActorS
{
get { return (m_activeActors != 0); }
}
@@ -249,7 +264,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
}
else
{
- Console.WriteLine("RouteUpdate: no SOP found");
+ Console.WriteLine("RouteUpdate: no SOP found for {0}", pa.LocalID);
}
return;
}
diff --git a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/RegionSyncClient.cs b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/RegionSyncClient.cs
index d51b6f265e..5688016892 100644
--- a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/RegionSyncClient.cs
+++ b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/RegionSyncClient.cs
@@ -307,6 +307,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
//RegionSyncMessage.HandleSuccess(LogHeader, msg, String.Format("Object \"{0}\" ({1}) ({1}) updated.", sog.Name, sog.UUID.ToString(), sog.LocalId.ToString()));
//else
//RegionSyncMessage.HandleSuccess(LogHeader, msg, String.Format("Object \"{0}\" ({1}) ({1}) added.", sog.Name, sog.UUID.ToString(), sog.LocalId.ToString()));
+
sog.ScheduleGroupForFullUpdate();
return;
}
@@ -351,6 +352,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
UUID agentID = data["agentID"].AsUUID();
string first = data["first"].AsString();
string last = data["last"].AsString();
+ uint localID = data["localID"].AsUInteger();
Vector3 startPos = data["startPos"].AsVector3();
if (agentID == null || agentID == UUID.Zero || first == null || last == null || startPos == null)
{
@@ -384,6 +386,12 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
else
{
sp.IsSyncedAvatar = true;
+ m_log.DebugFormat("{0}: Setting avatar local ID to {1}", LogHeader, localID);
+ sp.LocalId = localID;
+ if (sp.PhysicsActor != null)
+ {
+ sp.PhysicsActor.LocalID = localID;
+ }
}
//RegionSyncMessage.HandlerDebug(LogHeader, msg, String.Format("Added new remote avatar \"{0}\" ({1})", first + " " + last, agentID));
RegionSyncMessage.HandleSuccess(LogHeader, msg, String.Format("Added new remote avatar \"{0}\" ({1})", first + " " + last, agentID));
diff --git a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/RegionSyncClientView.cs b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/RegionSyncClientView.cs
index 07aa077dca..fb690e5ef3 100644
--- a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/RegionSyncClientView.cs
+++ b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/RegionSyncClientView.cs
@@ -331,6 +331,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
// Let the client managers know about this avatar
OSDMap data = new OSDMap(1);
data["agentID"] = OSD.FromUUID(presence.ControllingClient.AgentId);
+ data["localID"] = OSD.FromUInteger(presence.LocalId);
data["first"] = OSD.FromString(presence.ControllingClient.FirstName);
data["last"] = OSD.FromString(presence.ControllingClient.LastName);
data["startPos"] = OSD.FromVector3(presence.ControllingClient.StartPos);
diff --git a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/RegionSyncServerModule.cs b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/RegionSyncServerModule.cs
index ebed0d7bf3..c2268c5d14 100644
--- a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/RegionSyncServerModule.cs
+++ b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/RegionSyncServerModule.cs
@@ -701,6 +701,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
// Let the client managers know that a new agent has connected
OSDMap data = new OSDMap(1);
data["agentID"] = OSD.FromUUID(client.AgentId);
+ data["localID"] = OSD.FromUInteger(m_scene.GetScenePresence(client.AgentId).LocalId);
data["first"] = OSD.FromString(client.FirstName);
data["last"] = OSD.FromString(client.LastName);
data["startPos"] = OSD.FromVector3(client.StartPos);
diff --git a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/SceneToPhysEngineConnector.cs b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/SceneToPhysEngineConnector.cs
index e2772fe776..22b36462b5 100644
--- a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/SceneToPhysEngineConnector.cs
+++ b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/SceneToPhysEngineConnector.cs
@@ -318,20 +318,20 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
try
{
uint localID = data["localID"].AsUInteger();
- m_log.DebugFormat("{0}: received PhysUpdateAttributes for {1}", LogHeader, localID);
- SceneObjectPart sop = m_scene.GetSceneObjectPart(localID);
- if (sop != null)
+ // m_log.DebugFormat("{0}: received PhysUpdateAttributes for {1}", LogHeader, localID);
+ PhysicsActor pa = FindPhysicsActor(localID);
+ if (pa != null)
{
- sop.PhysActor.Size = data["size"].AsVector3();
- sop.PhysActor.Position = data["position"].AsVector3();
- sop.PhysActor.Force = data["force"].AsVector3();
- sop.PhysActor.Velocity = data["velocity"].AsVector3();
- sop.PhysActor.Torque = data["torque"].AsVector3();
- sop.PhysActor.Orientation = data["orientantion"].AsQuaternion();
- sop.PhysActor.IsPhysical = data["isPhysical"].AsBoolean(); // receive??
- sop.PhysActor.Flying = data["flying"].AsBoolean(); // receive??
- sop.PhysActor.Kinematic = data["kinematic"].AsBoolean(); // receive??
- sop.PhysActor.Buoyancy = (float)(data["buoyancy"].AsReal());
+ pa.Size = data["size"].AsVector3();
+ pa.Position = data["position"].AsVector3();
+ pa.Force = data["force"].AsVector3();
+ pa.Velocity = data["velocity"].AsVector3();
+ pa.Torque = data["torque"].AsVector3();
+ pa.Orientation = data["orientantion"].AsQuaternion();
+ pa.IsPhysical = data["isPhysical"].AsBoolean(); // receive??
+ pa.Flying = data["flying"].AsBoolean(); // receive??
+ pa.Kinematic = data["kinematic"].AsBoolean(); // receive??
+ pa.Buoyancy = (float)(data["buoyancy"].AsReal());
}
else
{
@@ -347,6 +347,22 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
return;
}
+ // Find the physics actor whether it is an object or a scene presence
+ private PhysicsActor FindPhysicsActor(uint localID)
+ {
+ SceneObjectPart sop = m_scene.GetSceneObjectPart(localID);
+ if (sop != null)
+ {
+ return sop.PhysActor;
+ }
+ ScenePresence sp = m_scene.GetScenePresence(localID);
+ if (sp != null)
+ {
+ return sp.PhysicsActor;
+ }
+ return null;
+ }
+
public void SendPhysUpdateAttributes(PhysicsActor pa)
{
// m_log.DebugFormat("{0}: sending PhysUpdateAttributes for {1}", LogHeader, pa.LocalID);
diff --git a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/SceneToPhysEngineSyncServer.cs b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/SceneToPhysEngineSyncServer.cs
index 4dc0cc5ed0..7e18befae6 100644
--- a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/SceneToPhysEngineSyncServer.cs
+++ b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/SceneToPhysEngineSyncServer.cs
@@ -182,19 +182,23 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
#endregion
// Check if any of the client views are in a connected state
+ public bool IsPhysEngineScene() { return SceneToPhysEngineSyncServer.IsPhysEngineScene2S(); }
+ public bool IsActivePhysEngineScene() { return SceneToPhysEngineSyncServer.IsActivePhysEngineScene2S(); }
+ public bool IsPhysEngineActor() { return SceneToPhysEngineSyncServer.IsPhysEngineActorS; }
+
public bool Synced
{
get { return (m_physEngineConnectors.Count > 0); }
}
- public static bool IsPhysEngineScene
+ public static bool IsPhysEngineSceneS
{
get { return (SceneToPhysEngineSyncServer.m_syncServerInitialized > 0); }
}
- public static bool IsPhysEngineScene2()
+ public static bool IsPhysEngineScene2S()
{
return (SceneToPhysEngineSyncServer.m_syncServerInitialized > 0);
}
- public static bool IsActivePhysEngineScene
+ public static bool IsActivePhysEngineSceneS
{
get {
System.Console.WriteLine("IsActivePhysEngineScene: si={0} tc={1}",
@@ -204,14 +208,14 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
&& SceneToPhysEngineSyncServer.m_totalConnections > 0);
}
}
- public static bool IsActivePhysEngineScene2()
+ public static bool IsActivePhysEngineScene2S()
{
return (SceneToPhysEngineSyncServer.m_syncServerInitialized > 0
&& SceneToPhysEngineSyncServer.m_totalConnections > 0);
}
- public static bool IsPhysEngineActor
+ public static bool IsPhysEngineActorS
{
- get { return PhysEngineToSceneConnectorModule.IsPhysEngineActor; }
+ get { return PhysEngineToSceneConnectorModule.IsPhysEngineActorS; }
}
///
@@ -238,6 +242,15 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
s = ss;
break;
}
+ else
+ {
+ ScenePresence sp = ss.GetScenePresence(pa.LocalID);
+ if (sp != null)
+ {
+ s = ss;
+ break;
+ }
+ }
}
if (s != null)
{
@@ -252,7 +265,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
}
else
{
- Console.WriteLine("RouteUpdate: no SOP for update");
+ Console.WriteLine("RouteUpdate: no SOP for update of {0}", pa.LocalID);
}
return;
}
diff --git a/OpenSim/Region/Framework/Interfaces/IPhysEngineToSceneConnectorModule.cs b/OpenSim/Region/Framework/Interfaces/IPhysEngineToSceneConnectorModule.cs
index 9757695277..3a8178acf5 100755
--- a/OpenSim/Region/Framework/Interfaces/IPhysEngineToSceneConnectorModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IPhysEngineToSceneConnectorModule.cs
@@ -37,9 +37,9 @@ namespace OpenSim.Region.Framework.Interfaces
//the interface for Scene to sync with Script Engine
public interface IPhysEngineToSceneConnectorModule
{
- // static bool IsPhysEngineScene { get; }
- // static bool IsActivePhysEngineScene { get; }
- // static bool IsPhysEngineActor { get; }
+ bool IsPhysEngineScene();
+ bool IsActivePhysEngineScene();
+ bool IsPhysEngineActor();
bool DebugWithViewer { get; }
void SendUpdate(PhysicsActor pa);
}
diff --git a/OpenSim/Region/Framework/Interfaces/ISceneToPhysEngineServer.cs b/OpenSim/Region/Framework/Interfaces/ISceneToPhysEngineServer.cs
index c5eeba70b4..7eee23c345 100755
--- a/OpenSim/Region/Framework/Interfaces/ISceneToPhysEngineServer.cs
+++ b/OpenSim/Region/Framework/Interfaces/ISceneToPhysEngineServer.cs
@@ -37,9 +37,9 @@ namespace OpenSim.Region.Framework.Interfaces
//the interface for Scene to sync with Script Engine
public interface ISceneToPhysEngineServer
{
- // static bool IsPhysEngineScene { get; }
- // static bool IsActivePhysEngineScene { get; }
- // static bool IsPhysEngineActor { get; }
+ bool IsPhysEngineScene();
+ bool IsActivePhysEngineScene();
+ bool IsPhysEngineActor();
void SendUpdate(PhysicsActor pa);
}
}
\ No newline at end of file
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 69bf1ca305..851cf1ebae 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -427,6 +427,20 @@ namespace OpenSim.Region.Framework.Scenes
set { m_sceneToPhysEngineSyncServer = value; }
}
+ // depending on what mode we're in, the different modules are available
+ protected bool IsPhysEngineActor()
+ {
+ if (PhysEngineToSceneConnectorModule != null)
+ {
+ return this.PhysEngineToSceneConnectorModule.IsPhysEngineActor();
+ }
+ if (SceneToPhysEngineSyncServer != null)
+ {
+ return this.SceneToPhysEngineSyncServer.IsPhysEngineActor();
+ }
+ return false;
+ }
+
///////////////////////////////////////////////////////////////////////////////////////////////
//This function should only be called by an actor who's local Scene is just a cache of the authorative Scene.
@@ -1670,7 +1684,7 @@ namespace OpenSim.Region.Framework.Scenes
int tmpPhysicsMS2 = Util.EnvironmentTickCount();
// Do not simulate physics locally if this is a synced client
- if (!IsSyncedClient())
+ if (!IsSyncedClient() || this.IsPhysEngineActor())
{
if ((m_frame % m_update_physics == 0) && m_physics_enabled)
m_sceneGraph.UpdatePreparePhysics();
@@ -1678,7 +1692,7 @@ namespace OpenSim.Region.Framework.Scenes
physicsMS2 = Util.EnvironmentTickCountSubtract(tmpPhysicsMS2);
// Do not simulate physics locally if this is a synced client
- if (!IsSyncedClient())
+ if (!IsSyncedClient() || this.IsPhysEngineActor())
{
if (m_frame % m_update_entitymovement == 0)
m_sceneGraph.UpdateScenePresenceMovement();
@@ -1686,7 +1700,7 @@ namespace OpenSim.Region.Framework.Scenes
int tmpPhysicsMS = Util.EnvironmentTickCount();
// Do not simulate physics locally if this is a synced client
- if (!IsSyncedClient())
+ if (!IsSyncedClient() || this.IsPhysEngineActor())
{
if (m_frame % m_update_physics == 0)
{
diff --git a/OpenSim/Region/Physics/Manager/PhysicsActor.cs b/OpenSim/Region/Physics/Manager/PhysicsActor.cs
index 3e1ef943a6..f7c1bf0879 100644
--- a/OpenSim/Region/Physics/Manager/PhysicsActor.cs
+++ b/OpenSim/Region/Physics/Manager/PhysicsActor.cs
@@ -121,6 +121,7 @@ namespace OpenSim.Region.Physics.Manager
///
public struct PhysActorLastValues
{
+ public uint updateTime;
public uint localID;
public Vector3 size;
public Vector3 position;
@@ -176,7 +177,11 @@ namespace OpenSim.Region.Physics.Manager
public abstract PrimitiveBaseShape Shape { set; }
// RA: used to be abstract but changed to allow 'get' without changing all the phys engines
- public virtual uint LocalID { set { return; } get { return 0; } }
+ uint m_baseLocalID;
+ public virtual uint LocalID {
+ set { m_baseLocalID = value; }
+ get { return m_baseLocalID; }
+ }
public PhysActorLastValues lastValues;
public abstract bool Grabbed { set; }
diff --git a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
index a4222fe599..5ae9f0b76e 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
@@ -205,7 +205,7 @@ namespace OpenSim.Region.Physics.OdePlugin
public override void RequestPhysicsterseUpdate()
{
- if (PhysEngineToSceneConnectorModule.IsPhysEngineActor)
+ if (PhysEngineToSceneConnectorModule.IsPhysEngineActorS)
{
m_log.DebugFormat("[ODE CHARACTER]: Sending terse update for {0}", LocalID);
PhysEngineToSceneConnectorModule.RouteUpdate(this);
@@ -234,6 +234,7 @@ namespace OpenSim.Region.Physics.OdePlugin
public override uint LocalID
{
set { m_localID = value; }
+ get { return m_localID; }
}
public override bool Grabbed
@@ -1153,7 +1154,7 @@ namespace OpenSim.Region.Physics.OdePlugin
if (!m_lastUpdateSent)
{
m_lastUpdateSent = true;
- //base.RequestPhysicsterseUpdate();
+ // base.RequestPhysicsterseUpdate();
}
}
@@ -1191,6 +1192,11 @@ namespace OpenSim.Region.Physics.OdePlugin
m_hackSentFall = false;
}
}
+ if (!m_lastUpdateSent)
+ {
+ m_log.DebugFormat("[ODE CHARACTER] UpdatePositionAndVelocity");
+ this.RequestPhysicsterseUpdate();
+ }
}
///
@@ -1357,7 +1363,8 @@ namespace OpenSim.Region.Physics.OdePlugin
_position.Z = m_taintPosition.Z;
}
}
-
+ Console.WriteLine("ODECharacter: ProcessTaints: doing update");
+ this.RequestPhysicsterseUpdate();
}
internal void AddCollisionFrameTime(int p)
diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
index b44418f8e1..87a2589481 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
@@ -256,9 +256,10 @@ namespace OpenSim.Region.Physics.OdePlugin
public override void RequestPhysicsterseUpdate()
{
- if (PhysEngineToSceneConnectorModule.IsPhysEngineActor)
+ if (PhysEngineToSceneConnectorModule.IsPhysEngineActorS)
{
- PhysEngineToSceneConnectorModule.RouteUpdate(this);
+ if (this.lastValues.Changed(this))
+ PhysEngineToSceneConnectorModule.RouteUpdate(this);
}
else
{
@@ -283,6 +284,7 @@ namespace OpenSim.Region.Physics.OdePlugin
set {
//m_log.Info("[PHYSICS]: Setting TrackerID: " + value);
m_localID = value; }
+ get { return m_localID; }
}
public override bool Grabbed
@@ -2655,7 +2657,7 @@ Console.WriteLine(" JointCreateFixed");
_position = l_position;
//_parent_scene.remActivePrim(this);
if (_parent == null)
- RequestPhysicsterseUpdate();
+ this.RequestPhysicsterseUpdate();
return;
}
else
@@ -2690,7 +2692,7 @@ Console.WriteLine(" JointCreateFixed");
m_rotationalVelocity.Z = 0;
if (_parent == null)
- RequestPhysicsterseUpdate();
+ this.RequestPhysicsterseUpdate();
m_throttleUpdates = false;
throttleCounter = 0;
@@ -2743,7 +2745,7 @@ Console.WriteLine(" JointCreateFixed");
if (_parent == null)
{
- RequestPhysicsterseUpdate();
+ this.RequestPhysicsterseUpdate();
}
m_lastUpdateSent = true;
@@ -2755,7 +2757,7 @@ Console.WriteLine(" JointCreateFixed");
{
if (_parent == null)
{
- RequestPhysicsterseUpdate();
+ this.RequestPhysicsterseUpdate();
}
}
@@ -2790,7 +2792,7 @@ Console.WriteLine(" JointCreateFixed");
{
if (_parent == null)
{
- RequestPhysicsterseUpdate();
+ this.RequestPhysicsterseUpdate();
}
}
else
diff --git a/OpenSim/Region/Physics/PEPlugin/PEPrim.cs b/OpenSim/Region/Physics/PEPlugin/PEPrim.cs
index 0402602673..8eb23d6667 100755
--- a/OpenSim/Region/Physics/PEPlugin/PEPrim.cs
+++ b/OpenSim/Region/Physics/PEPlugin/PEPrim.cs
@@ -127,7 +127,7 @@ public sealed class PEPrim : PhysicsActor
public override Vector3 Position {
get { return _position; }
set { _position = value;
- m_log.Debug("[RPE] PEPrim set Position");
+ // m_log.Debug("[RPE] PEPrim set Position");
Prop.Set(_localID, PropType.Position, _position);
}
}
@@ -137,7 +137,7 @@ public sealed class PEPrim : PhysicsActor
public override Vector3 Force {
get { return _force; }
set { _force = value;
- m_log.Debug("[RPE] PEPrim set Force");
+ // m_log.Debug("[RPE] PEPrim set Force");
Prop.Set(_localID, PropType.Force, _force);
}
}
diff --git a/OpenSim/Region/Physics/PEPlugin/PEScene.cs b/OpenSim/Region/Physics/PEPlugin/PEScene.cs
index 6d176b7f50..d5197a0a24 100755
--- a/OpenSim/Region/Physics/PEPlugin/PEScene.cs
+++ b/OpenSim/Region/Physics/PEPlugin/PEScene.cs
@@ -101,9 +101,9 @@ public class PEScene : PhysicsScene
public override float Simulate(float timeStep)
{
// if we are a physics engine server, send update information
- if (SceneToPhysEngineSyncServer.IsPhysEngineScene2())
+ if (SceneToPhysEngineSyncServer.IsPhysEngineScene2S())
{
- if (SceneToPhysEngineSyncServer.IsActivePhysEngineScene2())
+ if (SceneToPhysEngineSyncServer.IsActivePhysEngineScene2S())
{
// m_log.DebugFormat("[RPE]: Simulate. p={0}, a={1}", m_prims.Count, m_avatars.Count);
foreach (PEPrim prim in m_prims)
@@ -115,8 +115,11 @@ public class PEScene : PhysicsScene
}
foreach (PECharacter actor in m_avatars)
{
- m_log.DebugFormat("[RPE]: Simulate. p={0}, a={1}", m_prims.Count, m_avatars.Count);
- SceneToPhysEngineSyncServer.RouteUpdate(actor);
+ // m_log.DebugFormat("[RPE]: Simulate. p={0}, a={1}", m_prims.Count, m_avatars.Count);
+ if (actor.lastValues.Changed(actor))
+ {
+ SceneToPhysEngineSyncServer.RouteUpdate(actor);
+ }
}
}
return 60f;
diff --git a/bin/OpenSim.32BitLaunch.exe b/bin/OpenSim.32BitLaunch.exe
index e0c3144fa3..cc73c8bc98 100755
Binary files a/bin/OpenSim.32BitLaunch.exe and b/bin/OpenSim.32BitLaunch.exe differ
diff --git a/bin/OpenSim.32BitLaunch.pdb b/bin/OpenSim.32BitLaunch.pdb
deleted file mode 100644
index 5083dd5df5..0000000000
Binary files a/bin/OpenSim.32BitLaunch.pdb and /dev/null differ