aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/PhysicsModules
diff options
context:
space:
mode:
authorUbitUmarov2015-10-22 18:03:49 +0100
committerUbitUmarov2015-10-22 18:03:49 +0100
commit8ed17f745d0aa29cdd8a1a0485416c42f610cef6 (patch)
treeb7f945e9af9a77d5f598d4c689278e57d970e6ea /OpenSim/Region/PhysicsModules
parentMake physics engines finish internal representation of loaded prims before st... (diff)
downloadopensim-SC-8ed17f745d0aa29cdd8a1a0485416c42f610cef6.zip
opensim-SC-8ed17f745d0aa29cdd8a1a0485416c42f610cef6.tar.gz
opensim-SC-8ed17f745d0aa29cdd8a1a0485416c42f610cef6.tar.bz2
opensim-SC-8ed17f745d0aa29cdd8a1a0485416c42f610cef6.tar.xz
let ode also finish internal representation of prim actors, before simulation
Diffstat (limited to 'OpenSim/Region/PhysicsModules')
-rw-r--r--OpenSim/Region/PhysicsModules/Ode/OdeScene.cs40
1 files changed, 40 insertions, 0 deletions
diff --git a/OpenSim/Region/PhysicsModules/Ode/OdeScene.cs b/OpenSim/Region/PhysicsModules/Ode/OdeScene.cs
index 86ec817..4e95b7a 100644
--- a/OpenSim/Region/PhysicsModules/Ode/OdeScene.cs
+++ b/OpenSim/Region/PhysicsModules/Ode/OdeScene.cs
@@ -2919,6 +2919,46 @@ namespace OpenSim.Region.PhysicsModule.ODE
2919 } 2919 }
2920 } 2920 }
2921 2921
2922 // does all pending changes generated during region load process
2923 public override void ProcessPreSimulation()
2924 {
2925 lock (OdeLock)
2926 {
2927 if (world == IntPtr.Zero)
2928 {
2929 _taintedPrims.Clear();;
2930 return;
2931 }
2932
2933 int donechanges = 0;
2934 if (_taintedPrims.Count > 0)
2935 {
2936 m_log.InfoFormat("[Ode] start processing pending actor operations");
2937 int tstart = Util.EnvironmentTickCount();
2938
2939 lock (_taintedPrims)
2940 {
2941 foreach (OdePrim prim in _taintedPrims)
2942 {
2943 if (prim.m_taintremove)
2944 RemovePrimThreadLocked(prim);
2945 else
2946 prim.ProcessTaints();
2947
2948 prim.m_collisionscore = 0;
2949 donechanges++;
2950 }
2951 _taintedPrims.Clear();
2952 }
2953
2954 int time = Util.EnvironmentTickCountSubtract(tstart);
2955 m_log.InfoFormat("[Ode] finished {0} operations in {1}ms", donechanges, time);
2956 }
2957 m_log.InfoFormat("[Ode] {0} prim actors loaded",_prims.Count);
2958 }
2959 }
2960
2961
2922 /// <summary> 2962 /// <summary>
2923 /// This is our main simulate loop 2963 /// This is our main simulate loop
2924 /// </summary> 2964 /// </summary>