aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
diff options
context:
space:
mode:
authorMW2007-08-23 17:21:08 +0000
committerMW2007-08-23 17:21:08 +0000
commit0d5311e49bf5700efcf779bfa4bc83a00585c424 (patch)
tree168ea226f01a7e486f4dd6f288ef00afdd67ff68 /OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
parentgrouping of functions to make the overall logic easier to grasp for people, (diff)
downloadopensim-SC-0d5311e49bf5700efcf779bfa4bc83a00585c424.zip
opensim-SC-0d5311e49bf5700efcf779bfa4bc83a00585c424.tar.gz
opensim-SC-0d5311e49bf5700efcf779bfa4bc83a00585c424.tar.bz2
opensim-SC-0d5311e49bf5700efcf779bfa4bc83a00585c424.tar.xz
Added RemovePrim method to the physics plugins interface.
Implemented that method in ODE plugin. Hooked it up so when deleting/taking prims into your inventory they will be removed from physics engine. Enabled the other physics hook ups in Scene.cs (and also added registering prims with physics plugin when they are rezzed from Inventory.) So now to get the avatar to prim collision testing working, just change to use the ODE plugin (in the OpenSim.ini file, physics = OpenDynamicsEngine). Remember though ODE only really works (without problems) when running with a single region.
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/Scene.Inventory.cs')
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.Inventory.cs14
1 files changed, 14 insertions, 0 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
index 9cbd65b..83cd83c 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
@@ -8,6 +8,7 @@ using OpenSim.Framework.Types;
8using OpenSim.Framework.Communications.Caches; 8using OpenSim.Framework.Communications.Caches;
9using OpenSim.Framework.Data; 9using OpenSim.Framework.Data;
10using OpenSim.Framework.Utilities; 10using OpenSim.Framework.Utilities;
11using OpenSim.Physics.Manager;
11 12
12namespace OpenSim.Region.Environment.Scenes 13namespace OpenSim.Region.Environment.Scenes
13{ 14{
@@ -354,6 +355,12 @@ namespace OpenSim.Region.Environment.Scenes
354 remoteClient.SendInventoryItemUpdate(item); 355 remoteClient.SendInventoryItemUpdate(item);
355 } 356 }
356 357
358 SceneObjectPart rootPart = ((SceneObjectGroup)selectedEnt).GetChildPart(((SceneObjectGroup)selectedEnt).UUID);
359 if (rootPart.PhysActor != null)
360 {
361 this.phyScene.RemovePrim(rootPart.PhysActor);
362 }
363
357 storageManager.DataStore.RemoveObject(((SceneObjectGroup)selectedEnt).UUID, m_regInfo.SimUUID); 364 storageManager.DataStore.RemoveObject(((SceneObjectGroup)selectedEnt).UUID, m_regInfo.SimUUID);
358 ((SceneObjectGroup)selectedEnt).DeleteGroup(); 365 ((SceneObjectGroup)selectedEnt).DeleteGroup();
359 366
@@ -361,6 +368,7 @@ namespace OpenSim.Region.Environment.Scenes
361 { 368 {
362 Entities.Remove(((SceneObjectGroup)selectedEnt).UUID); 369 Entities.Remove(((SceneObjectGroup)selectedEnt).UUID);
363 } 370 }
371 ((SceneObjectGroup)selectedEnt).DeleteParts();
364 } 372 }
365 } 373 }
366 } 374 }
@@ -405,6 +413,12 @@ namespace OpenSim.Region.Environment.Scenes
405 SceneObjectGroup group = new SceneObjectGroup(this, this.m_regionHandle, xmlData); 413 SceneObjectGroup group = new SceneObjectGroup(this, this.m_regionHandle, xmlData);
406 this.AddEntity(group); 414 this.AddEntity(group);
407 group.AbsolutePosition = pos; 415 group.AbsolutePosition = pos;
416 SceneObjectPart rootPart = group.GetChildPart(group.UUID);
417 rootPart.PhysActor = phyScene.AddPrim(
418 new PhysicsVector(rootPart.AbsolutePosition.X, rootPart.AbsolutePosition.Y, rootPart.AbsolutePosition.Z),
419 new PhysicsVector(rootPart.Scale.X, rootPart.Scale.Y, rootPart.Scale.Z),
420 new Axiom.Math.Quaternion(rootPart.RotationOffset.W, rootPart.RotationOffset.X,
421 rootPart.RotationOffset.Y, rootPart.RotationOffset.Z));
408 } 422 }
409 423
410 424