diff options
author | Teravus Ovares | 2009-07-22 04:04:30 +0000 |
---|---|---|
committer | Teravus Ovares | 2009-07-22 04:04:30 +0000 |
commit | 9f4b8260c2d72bb4773f18b946efe8d7560418ef (patch) | |
tree | f09adb80c7234a3ae7bbe084909666aa07225b43 /OpenSim/Region/Physics/OdePlugin | |
parent | Thank you, MarcelEdward, for a patch to add paying group join fees. (diff) | |
download | opensim-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
Diffstat (limited to 'OpenSim/Region/Physics/OdePlugin')
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/ODERayCastRequestManager.cs | 69 | ||||
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | 2 |
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 | ||