diff options
author | UbitUmarov | 2015-10-22 18:03:49 +0100 |
---|---|---|
committer | UbitUmarov | 2015-10-22 18:03:49 +0100 |
commit | 8ed17f745d0aa29cdd8a1a0485416c42f610cef6 (patch) | |
tree | b7f945e9af9a77d5f598d4c689278e57d970e6ea /OpenSim/Region/PhysicsModules | |
parent | Make physics engines finish internal representation of loaded prims before st... (diff) | |
download | opensim-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.cs | 40 |
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> |