Merge branch 'master' of ssh://opensimulator.org/var/git/opensim into x-opensim

0.6.8-post-fixes
dr scofield (aka dirk husemann) 2009-10-01 09:48:02 +02:00
commit 9dcf7da42a
233 changed files with 973 additions and 1011 deletions

View File

@ -69,7 +69,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
private string m_name = "RemoteAdminPlugin"; private string m_name = "RemoteAdminPlugin";
private string m_version = "0.0"; private string m_version = "0.0";
//AnakinLohner 0.6.5-post-fixes
//guard for XmlRpc-related methods //guard for XmlRpc-related methods
private void FailIfRemoteAdminDisabled(string requestName) private void FailIfRemoteAdminDisabled(string requestName)
{ {
@ -469,7 +468,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
m_log.Info("[RADMIN]: CreateRegion: new request"); m_log.Info("[RADMIN]: CreateRegion: new request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("CreateRegion"); FailIfRemoteAdminDisabled("CreateRegion");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
@ -477,7 +475,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
lock (rslock) lock (rslock)
{ {
int m_regionLimit = m_config.GetInt("region_limit", 0); int m_regionLimit = m_config.GetInt("region_limit", 0);
bool m_enableVoiceForNewRegions = m_config.GetBoolean("create_region_enable_voice", false); bool m_enableVoiceForNewRegions = m_config.GetBoolean("create_region_enable_voice", false);
bool m_publicAccess = m_config.GetBoolean("create_region_public", true); bool m_publicAccess = m_config.GetBoolean("create_region_public", true);
@ -561,7 +558,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
scene.RegionInfo.RegionName, scene.RegionInfo.RegionID, scene.RegionInfo.RegionName, scene.RegionInfo.RegionID,
scene.RegionInfo.RegionLocX, scene.RegionInfo.RegionLocY)); scene.RegionInfo.RegionLocX, scene.RegionInfo.RegionLocY));
region.ExternalHostName = (string) requestData["external_address"]; region.ExternalHostName = (string) requestData["external_address"];
string masterFirst = (string) requestData["region_master_first"]; string masterFirst = (string) requestData["region_master_first"];
@ -989,7 +985,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
m_log.Info("[RADMIN]: CreateUser: new request"); m_log.Info("[RADMIN]: CreateUser: new request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("CreateUser"); FailIfRemoteAdminDisabled("CreateUser");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
@ -1101,7 +1096,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
m_log.Info("[RADMIN]: UserExists: new request"); m_log.Info("[RADMIN]: UserExists: new request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("UserExists"); FailIfRemoteAdminDisabled("UserExists");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
@ -1134,7 +1128,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
responseData["lastlogin"] = userInfo.UserProfile.LastLogin; responseData["lastlogin"] = userInfo.UserProfile.LastLogin;
} }
response.Value = responseData; response.Value = responseData;
} }
catch (Exception e) catch (Exception e)
@ -1308,7 +1301,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
m_log.Info("[RADMIN]: UpdateUserAccount: request complete"); m_log.Info("[RADMIN]: UpdateUserAccount: request complete");
return response; return response;
} }
/// <summary> /// <summary>
@ -1321,7 +1313,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
private void updateUserAppearance(Hashtable responseData, Hashtable requestData, UUID userid) private void updateUserAppearance(Hashtable responseData, Hashtable requestData, UUID userid)
{ {
m_log.DebugFormat("[RADMIN] updateUserAppearance"); m_log.DebugFormat("[RADMIN] updateUserAppearance");
string dmale = m_config.GetString("default_male", "Default Male"); string dmale = m_config.GetString("default_male", "Default Male");
@ -1402,7 +1393,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
private void establishAppearance(UUID dest, UUID srca) private void establishAppearance(UUID dest, UUID srca)
{ {
m_log.DebugFormat("[RADMIN] Initializing inventory for {0} from {1}", dest, srca); m_log.DebugFormat("[RADMIN] Initializing inventory for {0} from {1}", dest, srca);
AvatarAppearance ava = m_app.CommunicationsManager.AvatarService.GetUserAppearance(srca); AvatarAppearance ava = m_app.CommunicationsManager.AvatarService.GetUserAppearance(srca);
@ -1423,7 +1413,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
try try
{ {
Dictionary<UUID,UUID> imap = new Dictionary<UUID,UUID>(); Dictionary<UUID,UUID> imap = new Dictionary<UUID,UUID>();
iserv.GetUserInventory(dest, dic.callback); iserv.GetUserInventory(dest, dic.callback);
@ -1434,7 +1423,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
if (sic.OK && dic.OK) if (sic.OK && dic.OK)
{ {
InventoryFolderImpl efolder; InventoryFolderImpl efolder;
InventoryFolderImpl srcf = sic.root.FindFolderForType(5); InventoryFolderImpl srcf = sic.root.FindFolderForType(5);
InventoryFolderImpl dstf = dic.root.FindFolderForType(5); InventoryFolderImpl dstf = dic.root.FindFolderForType(5);
@ -1494,7 +1482,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
ava.SetWearable(i, dw); ava.SetWearable(i, dw);
} }
} }
} }
else else
{ {
@ -1502,7 +1489,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
} }
m_app.CommunicationsManager.AvatarService.UpdateUserAppearance(dest, ava); m_app.CommunicationsManager.AvatarService.UpdateUserAppearance(dest, ava);
} }
catch (Exception e) catch (Exception e)
{ {
@ -1512,7 +1498,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
} }
return; return;
} }
///<summary> ///<summary>
@ -1527,7 +1512,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
private bool createDefaultAvatars() private bool createDefaultAvatars()
{ {
// Only load once // Only load once
if (daload) if (daload)
@ -1543,10 +1527,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
try try
{ {
string dafn = null; string dafn = null;
//AnakinLohner 0.6.5-post-fixes
//m_config may be null if RemoteAdmin configuration secition is missing or disabled in OpenSim.ini //m_config may be null if RemoteAdmin configuration secition is missing or disabled in OpenSim.ini
if (m_config != null) if (m_config != null)
{ {
@ -1555,7 +1537,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
if (File.Exists(dafn)) if (File.Exists(dafn))
{ {
XmlDocument doc = new XmlDocument(); XmlDocument doc = new XmlDocument();
string name = "*unknown*"; string name = "*unknown*";
string email = "anon@anon"; string email = "anon@anon";
@ -1670,7 +1651,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
if (uic.OK) if (uic.OK)
try try
{ {
m_log.DebugFormat("[RADMIN] {0} folders, {1} items in inventory", m_log.DebugFormat("[RADMIN] {0} folders, {1} items in inventory",
uic.folders.Count, uic.items.Count); uic.folders.Count, uic.items.Count);
@ -1699,7 +1679,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
foreach (XmlElement outfit in outfits) foreach (XmlElement outfit in outfits)
{ {
m_log.DebugFormat("[RADMIN] Loading outfit {0} for {1}", m_log.DebugFormat("[RADMIN] Loading outfit {0} for {1}",
GetStringAttribute(outfit,"name","?"), GetStringAttribute(avatar,"name","?")); GetStringAttribute(outfit,"name","?"), GetStringAttribute(avatar,"name","?"));
@ -1820,7 +1799,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
} }
return true; return true;
} }
/// <summary> /// <summary>
@ -1859,7 +1837,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
m_log.Info("[RADMIN]: Received Load OAR Administrator Request"); m_log.Info("[RADMIN]: Received Load OAR Administrator Request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("Load OAR"); FailIfRemoteAdminDisabled("Load OAR");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
@ -1962,7 +1939,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
m_log.Info("[RADMIN]: Received Save OAR Administrator Request"); m_log.Info("[RADMIN]: Received Save OAR Administrator Request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("Save OAR"); FailIfRemoteAdminDisabled("Save OAR");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
@ -2003,7 +1979,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
IRegionArchiverModule archiver = scene.RequestModuleInterface<IRegionArchiverModule>(); IRegionArchiverModule archiver = scene.RequestModuleInterface<IRegionArchiverModule>();
if (archiver != null) if (archiver != null)
{ {
scene.EventManager.OnOarFileSaved += RemoteAdminOarSaveCompleted; scene.EventManager.OnOarFileSaved += RemoteAdminOarSaveCompleted;
@ -2014,11 +1989,9 @@ namespace OpenSim.ApplicationPlugins.RemoteController
else else
throw new Exception("Archiver module not present for scene"); throw new Exception("Archiver module not present for scene");
responseData["saved"] = true; responseData["saved"] = true;
response.Value = responseData; response.Value = responseData;
} }
catch (Exception e) catch (Exception e)
{ {
@ -2045,7 +2018,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
m_log.Info("[RADMIN]: Received Load XML Administrator Request"); m_log.Info("[RADMIN]: Received Load XML Administrator Request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("Load XML"); FailIfRemoteAdminDisabled("Load XML");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
@ -2129,12 +2101,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController
} }
} }
public XmlRpcResponse XmlRpcSaveXMLMethod(XmlRpcRequest request, IPEndPoint remoteClient) public XmlRpcResponse XmlRpcSaveXMLMethod(XmlRpcRequest request, IPEndPoint remoteClient)
{ {
m_log.Info("[RADMIN]: Received Save XML Administrator Request"); m_log.Info("[RADMIN]: Received Save XML Administrator Request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("Save XML"); FailIfRemoteAdminDisabled("Save XML");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
@ -2220,7 +2190,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
m_log.Info("[RADMIN]: Received Query XML Administrator Request"); m_log.Info("[RADMIN]: Received Query XML Administrator Request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("Query XML"); FailIfRemoteAdminDisabled("Query XML");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
@ -2255,9 +2224,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
else throw new Exception("neither region_name nor region_uuid given"); else throw new Exception("neither region_name nor region_uuid given");
Scene s = m_app.SceneManager.CurrentScene; Scene s = m_app.SceneManager.CurrentScene;
int health = s.GetHealth(); int health = s.GetHealth();
responseData["health"] = health; responseData["health"] = health;
response.Value = responseData; response.Value = responseData;
@ -2280,7 +2247,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
m_log.Info("[RADMIN]: Received Command XML Administrator Request"); m_log.Info("[RADMIN]: Received Command XML Administrator Request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("Command XML"); FailIfRemoteAdminDisabled("Command XML");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
@ -2320,10 +2286,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
public XmlRpcResponse XmlRpcAccessListClear(XmlRpcRequest request, IPEndPoint remoteClient) public XmlRpcResponse XmlRpcAccessListClear(XmlRpcRequest request, IPEndPoint remoteClient)
{ {
m_log.Info("[RADMIN]: Received Access List Clear Request"); m_log.Info("[RADMIN]: Received Access List Clear Request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("Access List Clear"); FailIfRemoteAdminDisabled("Access List Clear");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
@ -2360,7 +2324,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
s.RegionInfo.EstateSettings.EstateAccess = new UUID[]{}; s.RegionInfo.EstateSettings.EstateAccess = new UUID[]{};
if (s.RegionInfo.Persistent) if (s.RegionInfo.Persistent)
s.RegionInfo.EstateSettings.Save(); s.RegionInfo.EstateSettings.Save();
} }
catch (Exception e) catch (Exception e)
{ {
@ -2368,7 +2331,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
responseData["success"] = false; responseData["success"] = false;
responseData["error"] = e.Message; responseData["error"] = e.Message;
} }
finally finally
{ {
@ -2381,10 +2343,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
public XmlRpcResponse XmlRpcAccessListAdd(XmlRpcRequest request, IPEndPoint remoteClient) public XmlRpcResponse XmlRpcAccessListAdd(XmlRpcRequest request, IPEndPoint remoteClient)
{ {
m_log.Info("[RADMIN]: Received Access List Add Request"); m_log.Info("[RADMIN]: Received Access List Add Request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("Access List Add"); FailIfRemoteAdminDisabled("Access List Add");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
@ -2450,7 +2410,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
} }
responseData["added"] = addk; responseData["added"] = addk;
} }
catch (Exception e) catch (Exception e)
{ {
@ -2458,7 +2417,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
responseData["success"] = false; responseData["success"] = false;
responseData["error"] = e.Message; responseData["error"] = e.Message;
} }
finally finally
{ {
@ -2471,10 +2429,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
public XmlRpcResponse XmlRpcAccessListRemove(XmlRpcRequest request, IPEndPoint remoteClient) public XmlRpcResponse XmlRpcAccessListRemove(XmlRpcRequest request, IPEndPoint remoteClient)
{ {
m_log.Info("[RADMIN]: Received Access List Remove Request"); m_log.Info("[RADMIN]: Received Access List Remove Request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("Access List Remove"); FailIfRemoteAdminDisabled("Access List Remove");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
@ -2539,7 +2495,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
} }
responseData["removed"] = remk; responseData["removed"] = remk;
} }
catch (Exception e) catch (Exception e)
{ {
@ -2547,7 +2502,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
responseData["success"] = false; responseData["success"] = false;
responseData["error"] = e.Message; responseData["error"] = e.Message;
} }
finally finally
{ {
@ -2560,10 +2514,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
public XmlRpcResponse XmlRpcAccessListList(XmlRpcRequest request, IPEndPoint remoteClient) public XmlRpcResponse XmlRpcAccessListList(XmlRpcRequest request, IPEndPoint remoteClient)
{ {
m_log.Info("[RADMIN]: Received Access List List Request"); m_log.Info("[RADMIN]: Received Access List List Request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("Access List List"); FailIfRemoteAdminDisabled("Access List List");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
@ -2610,7 +2562,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
} }
responseData["users"] = users; responseData["users"] = users;
} }
catch (Exception e) catch (Exception e)
{ {
@ -2618,7 +2569,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
responseData["success"] = false; responseData["success"] = false;
responseData["error"] = e.Message; responseData["error"] = e.Message;
} }
finally finally
{ {
@ -2695,12 +2645,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController
public void Dispose() public void Dispose()
{ {
} }
} }
class UICallback class UICallback
{ {
private Object uilock = new Object(); private Object uilock = new Object();
internal InventoryFolderImpl root = null; internal InventoryFolderImpl root = null;
internal List<InventoryFolderImpl> folders; internal List<InventoryFolderImpl> folders;
@ -2720,7 +2668,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
public void GetInventory() public void GetInventory()
{ {
Dictionary<UUID, InventoryFolderImpl> fmap = new Dictionary<UUID, InventoryFolderImpl>(); Dictionary<UUID, InventoryFolderImpl> fmap = new Dictionary<UUID, InventoryFolderImpl>();
if (OK == false) if (OK == false)
@ -2774,8 +2721,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
fmap[item.Folder].Items.Add(item.ID, item); fmap[item.Folder].Items.Add(item.ID, item);
} }
} }
} }
} }

View File

@ -68,7 +68,7 @@ namespace OpenSim.Region.Examples.SimpleModule
public override void UpdateMovement() public override void UpdateMovement()
{ {
UpdateGroupRotation(GroupRotation * m_rotationDirection); UpdateGroupRotation(Rotation * m_rotationDirection);
base.UpdateMovement(); base.UpdateMovement();
} }

View File

@ -94,7 +94,7 @@ namespace OpenSim.Region.Framework.Scenes
set { m_velocity = value; } set { m_velocity = value; }
} }
protected Quaternion m_rotation = new Quaternion(0f, 0f, 1f, 0f); protected Quaternion m_rotation;
public virtual Quaternion Rotation public virtual Quaternion Rotation
{ {
@ -102,6 +102,14 @@ namespace OpenSim.Region.Framework.Scenes
set { m_rotation = value; } set { m_rotation = value; }
} }
protected Vector3 m_scale;
public virtual Vector3 Scale
{
get { return m_scale; }
set { m_scale = value; }
}
protected uint m_localId; protected uint m_localId;
public virtual uint LocalId public virtual uint LocalId
@ -115,13 +123,9 @@ namespace OpenSim.Region.Framework.Scenes
/// </summary> /// </summary>
public EntityBase() public EntityBase()
{ {
m_uuid = UUID.Zero; m_rotation = Quaternion.Identity;
m_scale = Vector3.One;
m_pos = Vector3.Zero;
m_velocity = Vector3.Zero;
Rotation = Quaternion.Identity;
m_name = "(basic entity)"; m_name = "(basic entity)";
m_rotationalvelocity = Vector3.Zero;
} }
/// <summary> /// <summary>

View File

@ -2305,8 +2305,8 @@ namespace OpenSim.Region.Framework.Scenes
"to avatar {0} at position {1}", "to avatar {0} at position {1}",
sp.UUID.ToString(), grp.AbsolutePosition); sp.UUID.ToString(), grp.AbsolutePosition);
AttachObject(sp.ControllingClient, AttachObject(sp.ControllingClient,
grp.LocalId, (uint)0, grp.LocalId, 0,
grp.GroupRotation, grp.Rotation,
grp.AbsolutePosition, false); grp.AbsolutePosition, false);
RootPrim.RemFlag(PrimFlags.TemporaryOnRez); RootPrim.RemFlag(PrimFlags.TemporaryOnRez);
grp.SendGroupFullUpdate(); grp.SendGroupFullUpdate();

View File

@ -204,9 +204,22 @@ namespace OpenSim.Region.Framework.Scenes
get { return m_parts.Count; } get { return m_parts.Count; }
} }
public Quaternion GroupRotation public override Quaternion Rotation
{ {
get { return m_rootPart.RotationOffset; } get { return m_rootPart.RotationOffset; }
set { m_rootPart.RotationOffset = value; }
}
public override Vector3 Scale
{
get { return m_rootPart.Scale; }
set { m_rootPart.Scale = value; }
}
public override Vector3 Velocity
{
get { return m_rootPart.Velocity; }
set { m_rootPart.Velocity = value; }
} }
public UUID GroupID public UUID GroupID
@ -528,7 +541,7 @@ namespace OpenSim.Region.Framework.Scenes
// Temporary commented to stop compiler warning // Temporary commented to stop compiler warning
//Vector3 partPosition = //Vector3 partPosition =
// new Vector3(part.AbsolutePosition.X, part.AbsolutePosition.Y, part.AbsolutePosition.Z); // new Vector3(part.AbsolutePosition.X, part.AbsolutePosition.Y, part.AbsolutePosition.Z);
Quaternion parentrotation = GroupRotation; Quaternion parentrotation = Rotation;
// Telling the prim to raytrace. // Telling the prim to raytrace.
//EntityIntersection inter = part.TestIntersection(hRay, parentrotation); //EntityIntersection inter = part.TestIntersection(hRay, parentrotation);
@ -1871,14 +1884,17 @@ namespace OpenSim.Region.Framework.Scenes
checkAtTargets(); checkAtTargets();
if (UsePhysics && ((Math.Abs(lastPhysGroupRot.W - GroupRotation.W) > 0.1) Quaternion rot = Rotation;
|| (Math.Abs(lastPhysGroupRot.X - GroupRotation.X) > 0.1)
|| (Math.Abs(lastPhysGroupRot.Y - GroupRotation.Y) > 0.1) if (UsePhysics &&
|| (Math.Abs(lastPhysGroupRot.Z - GroupRotation.Z) > 0.1))) ((Math.Abs(lastPhysGroupRot.W - rot.W) > 0.1f)
|| (Math.Abs(lastPhysGroupRot.X - rot.X) > 0.1f)
|| (Math.Abs(lastPhysGroupRot.Y - rot.Y) > 0.1f)
|| (Math.Abs(lastPhysGroupRot.Z - rot.Z) > 0.1f)))
{ {
m_rootPart.UpdateFlag = 1; m_rootPart.UpdateFlag = 1;
lastPhysGroupRot = GroupRotation; lastPhysGroupRot = rot;
} }
foreach (SceneObjectPart part in m_parts.Values) foreach (SceneObjectPart part in m_parts.Values)

View File

@ -38,7 +38,7 @@ namespace OpenSim.Region.Framework.Scenes.Types
{ {
private Queue<SceneObjectPart> m_queue; private Queue<SceneObjectPart> m_queue;
private List<UUID> m_ids; private Dictionary<UUID, bool> m_ids;
private object m_syncObject = new object(); private object m_syncObject = new object();
@ -50,7 +50,7 @@ namespace OpenSim.Region.Framework.Scenes.Types
public UpdateQueue() public UpdateQueue()
{ {
m_queue = new Queue<SceneObjectPart>(); m_queue = new Queue<SceneObjectPart>();
m_ids = new List<UUID>(); m_ids = new Dictionary<UUID, bool>();
} }
public void Clear() public void Clear()
@ -66,9 +66,8 @@ namespace OpenSim.Region.Framework.Scenes.Types
{ {
lock (m_syncObject) lock (m_syncObject)
{ {
if (!m_ids.Contains(part.UUID)) if (!m_ids.ContainsKey(part.UUID)) {
{ m_ids.Add(part.UUID, true);
m_ids.Add(part.UUID);
m_queue.Enqueue(part); m_queue.Enqueue(part);
} }
} }

View File

@ -2007,10 +2007,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
q = avatar.Rotation; // Currently infrequently updated so may be inaccurate q = avatar.Rotation; // Currently infrequently updated so may be inaccurate
} }
else else
q = part.ParentGroup.GroupRotation; // Likely never get here but just in case q = part.ParentGroup.Rotation; // Likely never get here but just in case
} }
else else
q = part.ParentGroup.GroupRotation; // just the group rotation q = part.ParentGroup.Rotation; // just the group rotation
return new LSL_Rotation(q.X, q.Y, q.Z, q.W); return new LSL_Rotation(q.X, q.Y, q.Z, q.W);
} }
q = part.GetWorldRotation(); q = part.GetWorldRotation();
@ -7181,10 +7181,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
else else
q = avatar.Rotation; // Currently infrequently updated so may be inaccurate q = avatar.Rotation; // Currently infrequently updated so may be inaccurate
else else
q = m_host.ParentGroup.GroupRotation; // Likely never get here but just in case q = m_host.ParentGroup.Rotation; // Likely never get here but just in case
} }
else else
q = m_host.ParentGroup.GroupRotation; // just the group rotation q = m_host.ParentGroup.Rotation; // just the group rotation
return new LSL_Rotation(q.X, q.Y, q.Z, q.W); return new LSL_Rotation(q.X, q.Y, q.Z, q.W);
} }

View File

@ -218,16 +218,14 @@ namespace OpenSim.Region.ScriptEngine.Shared
} }
} }
Position = new LSL_Types.Vector3(part.AbsolutePosition.X, Vector3 absPos = part.AbsolutePosition;
part.AbsolutePosition.Y, Position = new LSL_Types.Vector3(absPos.X, absPos.Y, absPos.Z);
part.AbsolutePosition.Z);
Quaternion wr = part.ParentGroup.GroupRotation; Quaternion wr = part.ParentGroup.Rotation;
Rotation = new LSL_Types.Quaternion(wr.X, wr.Y, wr.Z, wr.W); Rotation = new LSL_Types.Quaternion(wr.X, wr.Y, wr.Z, wr.W);
Velocity = new LSL_Types.Vector3(part.Velocity.X, Vector3 vel = part.Velocity;
part.Velocity.Y, Velocity = new LSL_Types.Vector3(vel.X, vel.Y, vel.Z);
part.Velocity.Z);
} }
} }