diff options
author | Melanie | 2012-11-04 22:37:28 +0000 |
---|---|---|
committer | Melanie | 2012-11-04 22:37:28 +0000 |
commit | dd416298f1da71b801c789367a4408f5c2728df1 (patch) | |
tree | 9aa8ed8419dd536fe2f326755ad3468289818ffc /OpenSim/Region/Physics | |
parent | Merge branch 'master' into careminster (diff) | |
parent | Add a method to query all registered script constants to allow non-XEngine (diff) | |
download | opensim-SC-dd416298f1da71b801c789367a4408f5c2728df1.zip opensim-SC-dd416298f1da71b801c789367a4408f5c2728df1.tar.gz opensim-SC-dd416298f1da71b801c789367a4408f5c2728df1.tar.bz2 opensim-SC-dd416298f1da71b801c789367a4408f5c2728df1.tar.xz |
Merge branch 'avination' into careminster
Conflicts:
OpenSim/Region/Framework/Scenes/Scene.cs
Diffstat (limited to '')
4 files changed, 36 insertions, 33 deletions
diff --git a/OpenSim/Region/Physics/UbitMeshing/Meshmerizer.cs b/OpenSim/Region/Physics/UbitMeshing/Meshmerizer.cs index 29fdda4..6e1a105 100644 --- a/OpenSim/Region/Physics/UbitMeshing/Meshmerizer.cs +++ b/OpenSim/Region/Physics/UbitMeshing/Meshmerizer.cs | |||
@@ -1057,25 +1057,22 @@ namespace OpenSim.Region.Physics.Meshing | |||
1057 | mesh.RefCount++; | 1057 | mesh.RefCount++; |
1058 | return mesh; | 1058 | return mesh; |
1059 | } | 1059 | } |
1060 | } | ||
1061 | 1060 | ||
1062 | // try to find a identical mesh on meshs recently released | 1061 | // try to find a identical mesh on meshs recently released |
1063 | lock (m_uniqueReleasedMeshes) | 1062 | lock (m_uniqueReleasedMeshes) |
1064 | { | ||
1065 | m_uniqueReleasedMeshes.TryGetValue(key, out mesh); | ||
1066 | if (mesh != null) | ||
1067 | { | 1063 | { |
1068 | m_uniqueReleasedMeshes.Remove(key); | 1064 | m_uniqueReleasedMeshes.TryGetValue(key, out mesh); |
1069 | lock (m_uniqueMeshes) | 1065 | if (mesh != null) |
1070 | { | 1066 | { |
1067 | m_uniqueReleasedMeshes.Remove(key); | ||
1071 | try | 1068 | try |
1072 | { | 1069 | { |
1073 | m_uniqueMeshes.Add(key, mesh); | 1070 | m_uniqueMeshes.Add(key, mesh); |
1074 | } | 1071 | } |
1075 | catch { } | 1072 | catch { } |
1073 | mesh.RefCount = 1; | ||
1074 | return mesh; | ||
1076 | } | 1075 | } |
1077 | mesh.RefCount = 1; | ||
1078 | return mesh; | ||
1079 | } | 1076 | } |
1080 | } | 1077 | } |
1081 | return null; | 1078 | return null; |
@@ -1108,25 +1105,22 @@ namespace OpenSim.Region.Physics.Meshing | |||
1108 | mesh.RefCount++; | 1105 | mesh.RefCount++; |
1109 | return mesh; | 1106 | return mesh; |
1110 | } | 1107 | } |
1111 | } | ||
1112 | 1108 | ||
1113 | // try to find a identical mesh on meshs recently released | 1109 | // try to find a identical mesh on meshs recently released |
1114 | lock (m_uniqueReleasedMeshes) | 1110 | lock (m_uniqueReleasedMeshes) |
1115 | { | ||
1116 | m_uniqueReleasedMeshes.TryGetValue(key, out mesh); | ||
1117 | if (mesh != null) | ||
1118 | { | 1111 | { |
1119 | m_uniqueReleasedMeshes.Remove(key); | 1112 | m_uniqueReleasedMeshes.TryGetValue(key, out mesh); |
1120 | lock (m_uniqueMeshes) | 1113 | if (mesh != null) |
1121 | { | 1114 | { |
1115 | m_uniqueReleasedMeshes.Remove(key); | ||
1122 | try | 1116 | try |
1123 | { | 1117 | { |
1124 | m_uniqueMeshes.Add(key, mesh); | 1118 | m_uniqueMeshes.Add(key, mesh); |
1125 | } | 1119 | } |
1126 | catch { } | 1120 | catch { } |
1121 | mesh.RefCount = 1; | ||
1122 | return mesh; | ||
1127 | } | 1123 | } |
1128 | mesh.RefCount = 1; | ||
1129 | return mesh; | ||
1130 | } | 1124 | } |
1131 | } | 1125 | } |
1132 | 1126 | ||
diff --git a/OpenSim/Region/Physics/UbitOdePlugin/ODEMeshWorker.cs b/OpenSim/Region/Physics/UbitOdePlugin/ODEMeshWorker.cs index 73dd2fd..5030cec 100644 --- a/OpenSim/Region/Physics/UbitOdePlugin/ODEMeshWorker.cs +++ b/OpenSim/Region/Physics/UbitOdePlugin/ODEMeshWorker.cs | |||
@@ -914,8 +914,9 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
914 | if (repData.pbs.SculptTexture != repData.assetID) | 914 | if (repData.pbs.SculptTexture != repData.assetID) |
915 | return; | 915 | return; |
916 | 916 | ||
917 | repData.pbs.SculptData = new byte[asset.Data.Length]; | 917 | // repData.pbs.SculptData = new byte[asset.Data.Length]; |
918 | asset.Data.CopyTo(repData.pbs.SculptData,0); | 918 | // asset.Data.CopyTo(repData.pbs.SculptData,0); |
919 | repData.pbs.SculptData = asset.Data; | ||
919 | repData.meshState = MeshState.AssetOK; | 920 | repData.meshState = MeshState.AssetOK; |
920 | m_worker.AssetLoaded(repData); | 921 | m_worker.AssetLoaded(repData); |
921 | } | 922 | } |
diff --git a/OpenSim/Region/Physics/UbitOdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/UbitOdePlugin/ODEPrim.cs index ce67cc4..76e42d4 100644 --- a/OpenSim/Region/Physics/UbitOdePlugin/ODEPrim.cs +++ b/OpenSim/Region/Physics/UbitOdePlugin/ODEPrim.cs | |||
@@ -1108,6 +1108,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1108 | ODEPhysRepData repData = _parent_scene.m_meshWorker.NewActorPhysRep(this, _pbs, _size, m_shapetype); | 1108 | ODEPhysRepData repData = _parent_scene.m_meshWorker.NewActorPhysRep(this, _pbs, _size, m_shapetype); |
1109 | 1109 | ||
1110 | primVolume = repData.volume; | 1110 | primVolume = repData.volume; |
1111 | m_OBB = repData.OBB; | ||
1112 | m_OBBOffset = repData.OBBOffset; | ||
1111 | 1113 | ||
1112 | UpdatePrimBodyData(); | 1114 | UpdatePrimBodyData(); |
1113 | } | 1115 | } |
diff --git a/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs b/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs index b98f177..54bc29f 100644 --- a/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs +++ b/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs | |||
@@ -1689,11 +1689,10 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1689 | /// <returns></returns> | 1689 | /// <returns></returns> |
1690 | public override float Simulate(float timeStep) | 1690 | public override float Simulate(float timeStep) |
1691 | { | 1691 | { |
1692 | |||
1693 | DateTime now = DateTime.UtcNow; | 1692 | DateTime now = DateTime.UtcNow; |
1694 | TimeSpan timedif = now - m_lastframe; | 1693 | TimeSpan timedif = now - m_lastframe; |
1695 | m_lastframe = now; | ||
1696 | timeStep = (float)timedif.TotalSeconds; | 1694 | timeStep = (float)timedif.TotalSeconds; |
1695 | m_lastframe = now; | ||
1697 | 1696 | ||
1698 | // acumulate time so we can reduce error | 1697 | // acumulate time so we can reduce error |
1699 | step_time += timeStep; | 1698 | step_time += timeStep; |
@@ -1704,6 +1703,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1704 | if (framecount < 0) | 1703 | if (framecount < 0) |
1705 | framecount = 0; | 1704 | framecount = 0; |
1706 | 1705 | ||
1706 | |||
1707 | framecount++; | 1707 | framecount++; |
1708 | 1708 | ||
1709 | int curphysiteractions; | 1709 | int curphysiteractions; |
@@ -1714,9 +1714,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1714 | else | 1714 | else |
1715 | curphysiteractions = m_physicsiterations; | 1715 | curphysiteractions = m_physicsiterations; |
1716 | 1716 | ||
1717 | int nodeframes = 0; | ||
1718 | |||
1719 | // checkThread(); | 1717 | // checkThread(); |
1718 | int nodeframes = 0; | ||
1720 | 1719 | ||
1721 | lock (SimulationLock) | 1720 | lock (SimulationLock) |
1722 | lock(OdeLock) | 1721 | lock(OdeLock) |
@@ -1733,7 +1732,11 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1733 | 1732 | ||
1734 | d.WorldSetQuickStepNumIterations(world, curphysiteractions); | 1733 | d.WorldSetQuickStepNumIterations(world, curphysiteractions); |
1735 | 1734 | ||
1736 | while (step_time > HalfOdeStep && nodeframes < 10) //limit number of steps so we don't say here for ever | 1735 | int loopstartMS = Util.EnvironmentTickCount(); |
1736 | int looptimeMS = 0; | ||
1737 | |||
1738 | |||
1739 | while (step_time > HalfOdeStep) | ||
1737 | { | 1740 | { |
1738 | try | 1741 | try |
1739 | { | 1742 | { |
@@ -1742,9 +1745,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1742 | 1745 | ||
1743 | if (ChangesQueue.Count > 0) | 1746 | if (ChangesQueue.Count > 0) |
1744 | { | 1747 | { |
1745 | int ttmpstart = Util.EnvironmentTickCount(); | 1748 | int changestartMS = Util.EnvironmentTickCount(); |
1746 | int ttmp; | 1749 | int ttmp; |
1747 | |||
1748 | while (ChangesQueue.Dequeue(out item)) | 1750 | while (ChangesQueue.Dequeue(out item)) |
1749 | { | 1751 | { |
1750 | if (item.actor != null) | 1752 | if (item.actor != null) |
@@ -1762,7 +1764,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1762 | item.actor.Name, item.what.ToString()); | 1764 | item.actor.Name, item.what.ToString()); |
1763 | } | 1765 | } |
1764 | } | 1766 | } |
1765 | ttmp = Util.EnvironmentTickCountSubtract(ttmpstart); | 1767 | ttmp = Util.EnvironmentTickCountSubtract(changestartMS); |
1766 | if (ttmp > 20) | 1768 | if (ttmp > 20) |
1767 | break; | 1769 | break; |
1768 | } | 1770 | } |
@@ -1873,9 +1875,12 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1873 | // ode.dunlock(world); | 1875 | // ode.dunlock(world); |
1874 | } | 1876 | } |
1875 | 1877 | ||
1876 | |||
1877 | step_time -= ODE_STEPSIZE; | 1878 | step_time -= ODE_STEPSIZE; |
1878 | nodeframes++; | 1879 | nodeframes++; |
1880 | |||
1881 | looptimeMS = Util.EnvironmentTickCountSubtract(loopstartMS); | ||
1882 | if (looptimeMS > 100) | ||
1883 | break; | ||
1879 | } | 1884 | } |
1880 | 1885 | ||
1881 | lock (_badCharacter) | 1886 | lock (_badCharacter) |
@@ -1963,7 +1968,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1963 | 1968 | ||
1964 | // think time dilation as to do with dinamic step size that we dont' have | 1969 | // think time dilation as to do with dinamic step size that we dont' have |
1965 | // even so tell something to world | 1970 | // even so tell something to world |
1966 | if (nodeframes < 10) // we did the requested loops | 1971 | if (looptimeMS < 100) // we did the requested loops |
1967 | m_timeDilation = 1.0f; | 1972 | m_timeDilation = 1.0f; |
1968 | else if (step_time > 0) | 1973 | else if (step_time > 0) |
1969 | { | 1974 | { |
@@ -1972,6 +1977,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1972 | m_timeDilation = 1; | 1977 | m_timeDilation = 1; |
1973 | if (step_time > m_SkipFramesAtms) | 1978 | if (step_time > m_SkipFramesAtms) |
1974 | step_time = 0; | 1979 | step_time = 0; |
1980 | m_lastframe = DateTime.UtcNow; // skip also the time lost | ||
1975 | } | 1981 | } |
1976 | } | 1982 | } |
1977 | 1983 | ||
@@ -2344,7 +2350,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
2344 | } | 2350 | } |
2345 | } | 2351 | } |
2346 | } | 2352 | } |
2347 | IntPtr HeightmapData = d.GeomHeightfieldDataCreate(); | 2353 | IntPtr HeightmapData = d.GeomUbitTerrainDataCreate(); |
2348 | 2354 | ||
2349 | const int wrap = 0; | 2355 | const int wrap = 0; |
2350 | float thickness = hfmin; | 2356 | float thickness = hfmin; |