aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-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