aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorUbitUmarov2012-04-16 19:44:02 +0100
committerUbitUmarov2012-04-16 19:44:02 +0100
commit6480b72eda967d6166cb8a64c5bca20c7841358c (patch)
tree0be0758a12851ad26f7b2ddd55eb24314470055a
parentchODE: if character velocity > 50m/s apply breaks. In free fall this will giv... (diff)
downloadopensim-SC-6480b72eda967d6166cb8a64c5bca20c7841358c.zip
opensim-SC-6480b72eda967d6166cb8a64c5bca20c7841358c.tar.gz
opensim-SC-6480b72eda967d6166cb8a64c5bca20c7841358c.tar.bz2
opensim-SC-6480b72eda967d6166cb8a64c5bca20c7841358c.tar.xz
ubitODE: - fix remove characters from default raycasts filters as older code (or camera is very odd) - Slow down avatar if velocity is higher than 50m/s as in chODE
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Physics/UbitOdePlugin/ODECharacter.cs8
-rw-r--r--OpenSim/Region/Physics/UbitOdePlugin/ODERayCastRequestManager.cs16
2 files changed, 16 insertions, 8 deletions
diff --git a/OpenSim/Region/Physics/UbitOdePlugin/ODECharacter.cs b/OpenSim/Region/Physics/UbitOdePlugin/ODECharacter.cs
index b9bb06e..3185aad 100644
--- a/OpenSim/Region/Physics/UbitOdePlugin/ODECharacter.cs
+++ b/OpenSim/Region/Physics/UbitOdePlugin/ODECharacter.cs
@@ -990,6 +990,14 @@ namespace OpenSim.Region.Physics.OdePlugin
990 // end add Kitto Flora 990 // end add Kitto Flora
991 } 991 }
992 992
993 if (vel.X * vel.X + vel.Y * vel.Y + vel.Z * vel.Z > 2500.0f) // 50m/s apply breaks
994 {
995 float breakfactor = 0.16f * m_mass; // will give aprox 60m/s terminal velocity at free fall
996 vec.X -= breakfactor * vel.X;
997 vec.Y -= breakfactor * vel.Y;
998 vec.Z -= breakfactor * vel.Z;
999 }
1000
993 if (vec.IsFinite()) 1001 if (vec.IsFinite())
994 { 1002 {
995 if (vec.X != 0 || vec.Y !=0 || vec.Z !=0) 1003 if (vec.X != 0 || vec.Y !=0 || vec.Z !=0)
diff --git a/OpenSim/Region/Physics/UbitOdePlugin/ODERayCastRequestManager.cs b/OpenSim/Region/Physics/UbitOdePlugin/ODERayCastRequestManager.cs
index e66580d..5122ebf 100644
--- a/OpenSim/Region/Physics/UbitOdePlugin/ODERayCastRequestManager.cs
+++ b/OpenSim/Region/Physics/UbitOdePlugin/ODERayCastRequestManager.cs
@@ -94,7 +94,7 @@ namespace OpenSim.Region.Physics.OdePlugin
94 req.length = length; 94 req.length = length;
95 req.Normal = direction; 95 req.Normal = direction;
96 req.Origin = position; 96 req.Origin = position;
97 req.filter = RayFilterFlags.AllButLand; 97 req.filter = RayFilterFlags.AllPrims;
98 98
99 m_PendingRequests.Enqueue(req); 99 m_PendingRequests.Enqueue(req);
100 } 100 }
@@ -115,7 +115,7 @@ namespace OpenSim.Region.Physics.OdePlugin
115 req.Normal = direction; 115 req.Normal = direction;
116 req.Origin = position; 116 req.Origin = position;
117 req.Count = DefaultMaxCount; 117 req.Count = DefaultMaxCount;
118 req.filter = RayFilterFlags.AllButLand; 118 req.filter = RayFilterFlags.AllPrims;
119 119
120 m_PendingRequests.Enqueue(req); 120 m_PendingRequests.Enqueue(req);
121 } 121 }
@@ -129,7 +129,7 @@ namespace OpenSim.Region.Physics.OdePlugin
129 req.length = length; 129 req.length = length;
130 req.Normal = direction; 130 req.Normal = direction;
131 req.Origin = position; 131 req.Origin = position;
132 req.filter = RayFilterFlags.AllButLand; 132 req.filter = RayFilterFlags.AllPrims;
133 133
134 m_PendingRequests.Enqueue(req); 134 m_PendingRequests.Enqueue(req);
135 } 135 }
@@ -143,7 +143,7 @@ namespace OpenSim.Region.Physics.OdePlugin
143 req.Normal = direction; 143 req.Normal = direction;
144 req.Origin = position; 144 req.Origin = position;
145 req.Count = DefaultMaxCount; 145 req.Count = DefaultMaxCount;
146 req.filter = RayFilterFlags.AllButLand; 146 req.filter = RayFilterFlags.AllPrims;
147 147
148 m_PendingRequests.Enqueue(req); 148 m_PendingRequests.Enqueue(req);
149 } 149 }
@@ -165,7 +165,7 @@ namespace OpenSim.Region.Physics.OdePlugin
165 req.Normal = direction; 165 req.Normal = direction;
166 req.Origin = position; 166 req.Origin = position;
167 req.Count = count; 167 req.Count = count;
168 req.filter = RayFilterFlags.AllButLand; 168 req.filter = RayFilterFlags.AllPrims;
169 169
170 m_PendingRequests.Enqueue(req); 170 m_PendingRequests.Enqueue(req);
171 } 171 }
@@ -194,7 +194,7 @@ namespace OpenSim.Region.Physics.OdePlugin
194 req.Normal = direction; 194 req.Normal = direction;
195 req.Origin = position; 195 req.Origin = position;
196 req.Count = count; 196 req.Count = count;
197 req.filter = RayFilterFlags.AllButLand; 197 req.filter = RayFilterFlags.AllPrims;
198 198
199 m_PendingRequests.Enqueue(req); 199 m_PendingRequests.Enqueue(req);
200 } 200 }
@@ -208,7 +208,7 @@ namespace OpenSim.Region.Physics.OdePlugin
208 req.Normal = direction; 208 req.Normal = direction;
209 req.Origin = position; 209 req.Origin = position;
210 req.Count = count; 210 req.Count = count;
211 req.filter = RayFilterFlags.AllButLand; 211 req.filter = RayFilterFlags.AllPrims;
212 212
213 m_PendingRequests.Enqueue(req); 213 m_PendingRequests.Enqueue(req);
214 } 214 }
@@ -222,7 +222,7 @@ namespace OpenSim.Region.Physics.OdePlugin
222 req.Normal = direction; 222 req.Normal = direction;
223 req.Origin = position; 223 req.Origin = position;
224 req.Count = count; 224 req.Count = count;
225 req.filter = RayFilterFlags.AllButLand; 225 req.filter = RayFilterFlags.AllPrims;
226 226
227 m_PendingRequests.Enqueue(req); 227 m_PendingRequests.Enqueue(req);
228 } 228 }