From 8428b25939d39711e732eeb3928e8a8e64aad8a9 Mon Sep 17 00:00:00 2001
From: KittoFlora
Date: Mon, 26 Oct 2009 00:10:23 +0100
Subject: Add llRotLookat pt1.
---
.../Region/Framework/Scenes/SceneObjectGroup.cs | 39 ++++++++++++++++++++++
OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 12 +++++++
2 files changed, 51 insertions(+)
(limited to 'OpenSim/Region/Framework')
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 69b3ded..fff807a 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -1727,6 +1727,45 @@ namespace OpenSim.Region.Framework.Scenes
}
}
+ public void rotLookAt(Quaternion target, float strength, float damping)
+ {
+ SceneObjectPart rootpart = m_rootPart;
+ if (rootpart != null)
+ {
+ if (IsAttachment)
+ {
+ /*
+ ScenePresence avatar = m_scene.GetScenePresence(rootpart.AttachedAvatar);
+ if (avatar != null)
+ {
+ Rotate the Av?
+ } */
+ }
+ else
+ {
+ if (rootpart.PhysActor != null)
+ {
+ rootpart.PhysActor.APIDTarget = new Quaternion(target.X, target.Y, target.Z, target.W);
+ rootpart.PhysActor.APIDStrength = strength;
+ rootpart.PhysActor.APIDDamping = damping;
+ rootpart.PhysActor.APIDActive = true;
+ }
+ }
+ }
+ }
+ public void stopLookAt()
+ {
+ SceneObjectPart rootpart = m_rootPart;
+ if (rootpart != null)
+ {
+ if (rootpart.PhysActor != null)
+ {
+ rootpart.PhysActor.APIDActive = false;
+ }
+ }
+
+ }
+
///
/// Uses a PID to attempt to clamp the object on the Z axis at the given height over tau seconds.
///
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 32171a0..5f46f6f 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -2187,6 +2187,11 @@ if (m_shape != null) {
ParentGroup.HasGroupChanged = true;
ScheduleFullUpdate();
}
+
+ public void RotLookAt(Quaternion target, float strength, float damping)
+ {
+ m_parentGroup.rotLookAt(target, strength, damping);
+ }
///
/// Schedules this prim for a full update
@@ -2662,6 +2667,13 @@ if (m_shape != null) {
SetText(text);
}
+ public void StopLookAt()
+ {
+ m_parentGroup.stopLookAt();
+
+ m_parentGroup.ScheduleGroupForTerseUpdate();
+ }
+
public void StopMoveToTarget()
{
m_parentGroup.stopMoveToTarget();
--
cgit v1.1