From a21112cceedfc93840b935feae4ad8725c4afb48 Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Tue, 25 Mar 2008 03:36:31 +0000 Subject: * Adds llMoveToTarget and llStopMoveToTarget support to the ODEPlugin. * It doesn't generate at_target events, because they don't exist yet in the script engine. * The Tau is different, however, compatible with scripts I tested. * Not perfect... but pretty good. --- .../Region/Environment/Scenes/SceneObjectGroup.cs | 21 +++++++++++++++++++++ .../Region/Environment/Scenes/SceneObjectPart.cs | 18 ++++++++++++++++++ 2 files changed, 39 insertions(+) (limited to 'OpenSim/Region/Environment') diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 2875874..2f2a1be 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs @@ -694,6 +694,25 @@ namespace OpenSim.Region.Environment.Scenes } } + public void moveToTarget(LLVector3 target, float tau) + { + SceneObjectPart rootpart = m_rootPart; + if (rootpart != null) + { + rootpart.PhysActor.PIDTarget = new PhysicsVector(target.X, target.Y, target.Z); + rootpart.PhysActor.PIDTau = tau; + rootpart.PhysActor.PIDActive = true; + } + } + public void stopMoveToTarget() + { + SceneObjectPart rootpart = m_rootPart; + if (rootpart != null) + { + rootpart.PhysActor.PIDActive = false; + } + } + public void SetRootPartOwner(SceneObjectPart part, LLUUID cAgentID, LLUUID cGroupID) { part.LastOwnerID = part.OwnerID; @@ -2019,5 +2038,7 @@ namespace OpenSim.Region.Environment.Scenes } } } + + } } diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index 48177dc..cbefc19 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs @@ -586,6 +586,24 @@ namespace OpenSim.Region.Environment.Scenes } } + public void MoveToTarget(LLVector3 target, float tau) + { + if (tau > 0) + { + m_parentGroup.moveToTarget(target, tau); + } + else + { + StopMoveToTarget(); + } + + } + + public void StopMoveToTarget() + { + m_parentGroup.stopMoveToTarget(); + } + public void TriggerScriptChangedEvent(Changed val) { if (m_parentGroup != null) -- cgit v1.1