Merge branch 'ubitwork' into avination

avinationmerge
Melanie 2012-11-01 22:25:29 +01:00
commit cbe43c15ec
5 changed files with 33 additions and 14 deletions

View File

@ -2458,6 +2458,7 @@ namespace OpenSim.Region.Framework.Scenes
{ {
foreach (Action<Scene> d in handler.GetInvocationList()) foreach (Action<Scene> d in handler.GetInvocationList())
{ {
m_log.InfoFormat("[EVENT MANAGER]: TriggerSceneShuttingDown invoque {0}", d.Method.Name.ToString());
try try
{ {
d(s); d(s);
@ -2470,6 +2471,7 @@ namespace OpenSim.Region.Framework.Scenes
} }
} }
} }
m_log.Info("[EVENT MANAGER]: TriggerSceneShuttingDown done");
} }
public void TriggerOnRegionStarted(Scene scene) public void TriggerOnRegionStarted(Scene scene)

View File

@ -1255,9 +1255,11 @@ namespace OpenSim.Region.Framework.Scenes
// Stop all client threads. // Stop all client threads.
ForEachScenePresence(delegate(ScenePresence avatar) { avatar.ControllingClient.Close(); }); ForEachScenePresence(delegate(ScenePresence avatar) { avatar.ControllingClient.Close(); });
m_log.Debug("[SCENE]: Persisting changed objects"); m_log.Debug("[SCENE]: TriggerSceneShuttingDown");
EventManager.TriggerSceneShuttingDown(this); EventManager.TriggerSceneShuttingDown(this);
m_log.Debug("[SCENE]: Persisting changed objects");
EntityBase[] entities = GetEntities(); EntityBase[] entities = GetEntities();
foreach (EntityBase entity in entities) foreach (EntityBase entity in entities)
{ {
@ -1267,10 +1269,12 @@ namespace OpenSim.Region.Framework.Scenes
} }
} }
m_log.Debug("[SCENE]: Graph close");
m_sceneGraph.Close(); m_sceneGraph.Close();
if (PhysicsScene != null) if (PhysicsScene != null)
{ {
m_log.Debug("[SCENE]: Dispose Physics");
PhysicsScene phys = PhysicsScene; PhysicsScene phys = PhysicsScene;
// remove the physics engine from both Scene and SceneGraph // remove the physics engine from both Scene and SceneGraph
PhysicsScene = null; PhysicsScene = null;
@ -1282,6 +1286,7 @@ namespace OpenSim.Region.Framework.Scenes
m_log.WarnFormat("[SCENE]: Deregister from grid failed for region {0}", Name); m_log.WarnFormat("[SCENE]: Deregister from grid failed for region {0}", Name);
// call the base class Close method. // call the base class Close method.
m_log.Debug("[SCENE]: Base close");
base.Close(); base.Close();
} }
@ -1317,6 +1322,9 @@ namespace OpenSim.Region.Framework.Scenes
} }
// m_lastUpdate = Util.EnvironmentTickCount(); // m_lastUpdate = Util.EnvironmentTickCount();
// m_sceneGraph.PreparePhysicsSimulation();
m_heartbeatThread m_heartbeatThread
= Watchdog.StartThread( = Watchdog.StartThread(
Heartbeat, string.Format("Heartbeat ({0})", RegionInfo.RegionName), ThreadPriority.Normal, false, false); Heartbeat, string.Format("Heartbeat ({0})", RegionInfo.RegionName), ThreadPriority.Normal, false, false);

View File

@ -914,8 +914,9 @@ namespace OpenSim.Region.Physics.OdePlugin
if (repData.pbs.SculptTexture != repData.assetID) if (repData.pbs.SculptTexture != repData.assetID)
return; return;
repData.pbs.SculptData = new byte[asset.Data.Length]; // repData.pbs.SculptData = new byte[asset.Data.Length];
asset.Data.CopyTo(repData.pbs.SculptData,0); // asset.Data.CopyTo(repData.pbs.SculptData,0);
repData.pbs.SculptData = asset.Data;
repData.meshState = MeshState.AssetOK; repData.meshState = MeshState.AssetOK;
m_worker.AssetLoaded(repData); m_worker.AssetLoaded(repData);
} }

View File

@ -1108,6 +1108,8 @@ namespace OpenSim.Region.Physics.OdePlugin
ODEPhysRepData repData = _parent_scene.m_meshWorker.NewActorPhysRep(this, _pbs, _size, m_shapetype); ODEPhysRepData repData = _parent_scene.m_meshWorker.NewActorPhysRep(this, _pbs, _size, m_shapetype);
primVolume = repData.volume; primVolume = repData.volume;
m_OBB = repData.OBB;
m_OBBOffset = repData.OBBOffset;
UpdatePrimBodyData(); UpdatePrimBodyData();
} }

View File

@ -1689,11 +1689,10 @@ namespace OpenSim.Region.Physics.OdePlugin
/// <returns></returns> /// <returns></returns>
public override float Simulate(float timeStep) public override float Simulate(float timeStep)
{ {
DateTime now = DateTime.UtcNow; DateTime now = DateTime.UtcNow;
TimeSpan timedif = now - m_lastframe; TimeSpan timedif = now - m_lastframe;
m_lastframe = now;
timeStep = (float)timedif.TotalSeconds; timeStep = (float)timedif.TotalSeconds;
m_lastframe = now;
// acumulate time so we can reduce error // acumulate time so we can reduce error
step_time += timeStep; step_time += timeStep;
@ -1704,6 +1703,7 @@ namespace OpenSim.Region.Physics.OdePlugin
if (framecount < 0) if (framecount < 0)
framecount = 0; framecount = 0;
framecount++; framecount++;
int curphysiteractions; int curphysiteractions;
@ -1714,9 +1714,8 @@ namespace OpenSim.Region.Physics.OdePlugin
else else
curphysiteractions = m_physicsiterations; curphysiteractions = m_physicsiterations;
int nodeframes = 0;
// checkThread(); // checkThread();
int nodeframes = 0;
lock (SimulationLock) lock (SimulationLock)
lock(OdeLock) lock(OdeLock)
@ -1733,7 +1732,11 @@ namespace OpenSim.Region.Physics.OdePlugin
d.WorldSetQuickStepNumIterations(world, curphysiteractions); d.WorldSetQuickStepNumIterations(world, curphysiteractions);
while (step_time > HalfOdeStep && nodeframes < 10) //limit number of steps so we don't say here for ever int loopstartMS = Util.EnvironmentTickCount();
int looptimeMS = 0;
while (step_time > HalfOdeStep)
{ {
try try
{ {
@ -1742,9 +1745,8 @@ namespace OpenSim.Region.Physics.OdePlugin
if (ChangesQueue.Count > 0) if (ChangesQueue.Count > 0)
{ {
int ttmpstart = Util.EnvironmentTickCount(); int changestartMS = Util.EnvironmentTickCount();
int ttmp; int ttmp;
while (ChangesQueue.Dequeue(out item)) while (ChangesQueue.Dequeue(out item))
{ {
if (item.actor != null) if (item.actor != null)
@ -1762,7 +1764,7 @@ namespace OpenSim.Region.Physics.OdePlugin
item.actor.Name, item.what.ToString()); item.actor.Name, item.what.ToString());
} }
} }
ttmp = Util.EnvironmentTickCountSubtract(ttmpstart); ttmp = Util.EnvironmentTickCountSubtract(changestartMS);
if (ttmp > 20) if (ttmp > 20)
break; break;
} }
@ -1873,9 +1875,12 @@ namespace OpenSim.Region.Physics.OdePlugin
// ode.dunlock(world); // ode.dunlock(world);
} }
step_time -= ODE_STEPSIZE; step_time -= ODE_STEPSIZE;
nodeframes++; nodeframes++;
looptimeMS = Util.EnvironmentTickCountSubtract(loopstartMS);
if (looptimeMS > 100)
break;
} }
lock (_badCharacter) lock (_badCharacter)
@ -1963,7 +1968,7 @@ namespace OpenSim.Region.Physics.OdePlugin
// think time dilation as to do with dinamic step size that we dont' have // think time dilation as to do with dinamic step size that we dont' have
// even so tell something to world // even so tell something to world
if (nodeframes < 10) // we did the requested loops if (looptimeMS < 100) // we did the requested loops
m_timeDilation = 1.0f; m_timeDilation = 1.0f;
else if (step_time > 0) else if (step_time > 0)
{ {
@ -1972,6 +1977,7 @@ namespace OpenSim.Region.Physics.OdePlugin
m_timeDilation = 1; m_timeDilation = 1;
if (step_time > m_SkipFramesAtms) if (step_time > m_SkipFramesAtms)
step_time = 0; step_time = 0;
m_lastframe = DateTime.UtcNow; // skip also the time lost
} }
} }
@ -2344,7 +2350,7 @@ namespace OpenSim.Region.Physics.OdePlugin
} }
} }
} }
IntPtr HeightmapData = d.GeomHeightfieldDataCreate(); IntPtr HeightmapData = d.GeomUbitTerrainDataCreate();
const int wrap = 0; const int wrap = 0;
float thickness = hfmin; float thickness = hfmin;