aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorTeravus Ovares2009-07-22 04:04:30 +0000
committerTeravus Ovares2009-07-22 04:04:30 +0000
commit9f4b8260c2d72bb4773f18b946efe8d7560418ef (patch)
treef09adb80c7234a3ae7bbe084909666aa07225b43
parentThank you, MarcelEdward, for a patch to add paying group join fees. (diff)
downloadopensim-SC-9f4b8260c2d72bb4773f18b946efe8d7560418ef.zip
opensim-SC-9f4b8260c2d72bb4773f18b946efe8d7560418ef.tar.gz
opensim-SC-9f4b8260c2d72bb4773f18b946efe8d7560418ef.tar.bz2
opensim-SC-9f4b8260c2d72bb4773f18b946efe8d7560418ef.tar.xz
* Exclude heightfield geom from the raycast test.
* Fixes mantis #3922
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODERayCastRequestManager.cs69
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OdePlugin.cs2
2 files changed, 70 insertions, 1 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/ODERayCastRequestManager.cs b/OpenSim/Region/Physics/OdePlugin/ODERayCastRequestManager.cs
index 3a4bb02..18e5ec5 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODERayCastRequestManager.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODERayCastRequestManager.cs
@@ -171,6 +171,75 @@ namespace OpenSim.Region.Physics.OdePlugin
171 // This is the standard Near. Uses space AABBs to speed up detection. 171 // This is the standard Near. Uses space AABBs to speed up detection.
172 private void near(IntPtr space, IntPtr g1, IntPtr g2) 172 private void near(IntPtr space, IntPtr g1, IntPtr g2)
173 { 173 {
174
175 //Don't test against heightfield Geom, or you'll be sorry!
176
177 /*
178 terminate called after throwing an instance of 'std::bad_alloc'
179 what(): std::bad_alloc
180 Stacktrace:
181
182 at (wrapper managed-to-native) Ode.NET.d.Collide (intptr,intptr,int,Ode.NET.d/ContactGeom[],int) <0x00004>
183 at (wrapper managed-to-native) Ode.NET.d.Collide (intptr,intptr,int,Ode.NET.d/ContactGeom[],int) <0xffffffff>
184 at OpenSim.Region.Physics.OdePlugin.ODERayCastRequestManager.near (intptr,intptr,intptr) <0x00280>
185 at (wrapper native-to-managed) OpenSim.Region.Physics.OdePlugin.ODERayCastRequestManager.near (intptr,intptr,intptr) <0xfff
186 fffff>
187 at (wrapper managed-to-native) Ode.NET.d.SpaceCollide2 (intptr,intptr,intptr,Ode.NET.d/NearCallback) <0x00004>
188 at (wrapper managed-to-native) Ode.NET.d.SpaceCollide2 (intptr,intptr,intptr,Ode.NET.d/NearCallback) <0xffffffff>
189 at OpenSim.Region.Physics.OdePlugin.ODERayCastRequestManager.RayCast (OpenSim.Region.Physics.OdePlugin.ODERayCastRequest) <
190 0x00114>
191 at OpenSim.Region.Physics.OdePlugin.ODERayCastRequestManager.ProcessQueuedRequests () <0x000eb>
192 at OpenSim.Region.Physics.OdePlugin.OdeScene.Simulate (single) <0x017e6>
193 at OpenSim.Region.Framework.Scenes.SceneGraph.UpdatePhysics (double) <0x00042>
194 at OpenSim.Region.Framework.Scenes.Scene.Update () <0x0039e>
195 at OpenSim.Region.Framework.Scenes.Scene.Heartbeat (object) <0x00019>
196 at (wrapper runtime-invoke) object.runtime_invoke_void__this___object (object,intptr,intptr,intptr) <0xffffffff>
197
198 Native stacktrace:
199
200 mono [0x80d2a42]
201 [0xb7f5840c]
202 /lib/i686/cmov/libc.so.6(abort+0x188) [0xb7d1a018]
203 /usr/lib/libstdc++.so.6(_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x158) [0xb45fc988]
204 /usr/lib/libstdc++.so.6 [0xb45fa865]
205 /usr/lib/libstdc++.so.6 [0xb45fa8a2]
206 /usr/lib/libstdc++.so.6 [0xb45fa9da]
207 /usr/lib/libstdc++.so.6(_Znwj+0x83) [0xb45fb033]
208 /usr/lib/libstdc++.so.6(_Znaj+0x1d) [0xb45fb11d]
209 libode.so(_ZN13dxHeightfield23dCollideHeightfieldZoneEiiiiP6dxGeomiiP12dContactGeomi+0xd04) [0xb46678e4]
210 libode.so(_Z19dCollideHeightfieldP6dxGeomS0_iP12dContactGeomi+0x54b) [0xb466832b]
211 libode.so(dCollide+0x102) [0xb46571b2]
212 [0x95cfdec9]
213 [0x8ea07fe1]
214 [0xab260146]
215 libode.so [0xb465a5c4]
216 libode.so(_ZN11dxHashSpace8collide2EPvP6dxGeomPFvS0_S2_S2_E+0x75) [0xb465bcf5]
217 libode.so(dSpaceCollide2+0x177) [0xb465ac67]
218 [0x95cf978e]
219 [0x8ea07945]
220 [0x95cf2bbc]
221 [0xab2787e7]
222 [0xab419fb3]
223 [0xab416657]
224 [0xab415bda]
225 [0xb609b08e]
226 mono(mono_runtime_delegate_invoke+0x34) [0x8192534]
227 mono [0x81a2f0f]
228 mono [0x81d28b6]
229 mono [0x81ea2c6]
230 /lib/i686/cmov/libpthread.so.0 [0xb7e744c0]
231 /lib/i686/cmov/libc.so.6(clone+0x5e) [0xb7dcd6de]
232 */
233
234 // Exclude heightfield geom
235 if (g1 == m_scene.LandGeom)
236 return;
237 if (g2 == m_scene.LandGeom)
238 return;
239
240
241
242
174 // Raytest against AABBs of spaces first, then dig into the spaces it hits for actual geoms. 243 // Raytest against AABBs of spaces first, then dig into the spaces it hits for actual geoms.
175 if (d.GeomIsSpace(g1) || d.GeomIsSpace(g2)) 244 if (d.GeomIsSpace(g1) || d.GeomIsSpace(g2))
176 { 245 {
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
index 607dcb2..63b56f4 100644
--- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
+++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
@@ -177,7 +177,7 @@ namespace OpenSim.Region.Physics.OdePlugin
177 //private int m_returncollisions = 10; 177 //private int m_returncollisions = 10;
178 178
179 private readonly IntPtr contactgroup; 179 private readonly IntPtr contactgroup;
180 private IntPtr LandGeom; 180 internal IntPtr LandGeom;
181 181
182 private IntPtr WaterGeom; 182 private IntPtr WaterGeom;
183 183