diff options
author | Teravus Ovares | 2007-12-27 03:25:00 +0000 |
---|---|---|
committer | Teravus Ovares | 2007-12-27 03:25:00 +0000 |
commit | 87d55443d3fd3cc86dce0b8efe05a8c304f7d6c8 (patch) | |
tree | 69599226423b5a4620ab4308b3e0088328894bde /OpenSim/Region/ClientStack | |
parent | Prim inventory persistence phase 1: Creation of preliminary table in sqlite. (diff) | |
download | opensim-SC-87d55443d3fd3cc86dce0b8efe05a8c304f7d6c8.zip opensim-SC-87d55443d3fd3cc86dce0b8efe05a8c304f7d6c8.tar.gz opensim-SC-87d55443d3fd3cc86dce0b8efe05a8c304f7d6c8.tar.bz2 opensim-SC-87d55443d3fd3cc86dce0b8efe05a8c304f7d6c8.tar.xz |
* Added slightly better object sit handling
* Added sit handling for sit targets
* Implemented llSitTarget()
* Implemented llAvatarOnSitTarget()
* Sit targets do not persist sim restart.
Diffstat (limited to 'OpenSim/Region/ClientStack')
-rw-r--r-- | OpenSim/Region/ClientStack/ClientView.cs | 182 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/PacketServer.cs | 4 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/UDPServer.cs | 12 |
3 files changed, 104 insertions, 94 deletions
diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs index 823214a..45806ff 100644 --- a/OpenSim/Region/ClientStack/ClientView.cs +++ b/OpenSim/Region/ClientStack/ClientView.cs | |||
@@ -1999,118 +1999,128 @@ namespace OpenSim.Region.ClientStack | |||
1999 | { | 1999 | { |
2000 | // Can't act on Null Data | 2000 | // Can't act on Null Data |
2001 | if (multipleupdate.ObjectData[i].Data != null) | 2001 | if (multipleupdate.ObjectData[i].Data != null) |
2002 | { | 2002 | { |
2003 | if (tScene.PermissionsMngr.CanEditObjectPosition(simClient.AgentId, tScene.GetSceneObjectPart(multipleupdate.ObjectData[i].ObjectLocalID).UUID)) | 2003 | LLUUID editobj = tScene.GetSceneObjectPart(multipleupdate.ObjectData[i].ObjectLocalID).UUID; |
2004 | if (editobj != null) | ||
2004 | { | 2005 | { |
2005 | #region position | 2006 | if (tScene.PermissionsMngr.CanEditObjectPosition(simClient.AgentId, editobj)) |
2006 | |||
2007 | if (multipleupdate.ObjectData[i].Type == 9) //change position | ||
2008 | { | 2007 | { |
2009 | if (OnUpdatePrimGroupPosition != null) | 2008 | #region position |
2009 | |||
2010 | if (multipleupdate.ObjectData[i].Type == 9) //change position | ||
2010 | { | 2011 | { |
2011 | LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); | 2012 | if (OnUpdatePrimGroupPosition != null) |
2012 | OnUpdatePrimGroupPosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this); | 2013 | { |
2014 | LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); | ||
2015 | OnUpdatePrimGroupPosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this); | ||
2016 | } | ||
2013 | } | 2017 | } |
2014 | } | 2018 | else if (multipleupdate.ObjectData[i].Type == 1) //single item of group change position |
2015 | else if (multipleupdate.ObjectData[i].Type == 1) //single item of group change position | ||
2016 | { | ||
2017 | if (OnUpdatePrimSinglePosition != null) | ||
2018 | { | 2019 | { |
2019 | LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); | 2020 | if (OnUpdatePrimSinglePosition != null) |
2020 | // System.Console.WriteLine("new movement position is " + pos.X + " , " + pos.Y + " , " + pos.Z); | 2021 | { |
2021 | OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this); | 2022 | LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); |
2023 | // System.Console.WriteLine("new movement position is " + pos.X + " , " + pos.Y + " , " + pos.Z); | ||
2024 | OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this); | ||
2025 | } | ||
2022 | } | 2026 | } |
2023 | } | 2027 | #endregion position |
2024 | #endregion position | 2028 | #region rotation |
2025 | #region rotation | ||
2026 | 2029 | ||
2027 | else if (multipleupdate.ObjectData[i].Type == 2) // single item of group rotation from tab | 2030 | else if (multipleupdate.ObjectData[i].Type == 2) // single item of group rotation from tab |
2028 | { | ||
2029 | if (OnUpdatePrimSingleRotation != null) | ||
2030 | { | 2031 | { |
2031 | LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 0, true); | 2032 | if (OnUpdatePrimSingleRotation != null) |
2032 | //System.Console.WriteLine("new tab rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); | 2033 | { |
2033 | OnUpdatePrimSingleRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this); | 2034 | LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 0, true); |
2035 | //System.Console.WriteLine("new tab rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); | ||
2036 | OnUpdatePrimSingleRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this); | ||
2037 | } | ||
2034 | } | 2038 | } |
2035 | } | 2039 | else if (multipleupdate.ObjectData[i].Type == 3) // single item of group rotation from mouse |
2036 | else if (multipleupdate.ObjectData[i].Type == 3) // single item of group rotation from mouse | ||
2037 | { | ||
2038 | if (OnUpdatePrimSingleRotation != null) | ||
2039 | { | 2040 | { |
2040 | LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 12, true); | 2041 | if (OnUpdatePrimSingleRotation != null) |
2041 | //System.Console.WriteLine("new mouse rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); | 2042 | { |
2042 | OnUpdatePrimSingleRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this); | 2043 | LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 12, true); |
2044 | //System.Console.WriteLine("new mouse rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); | ||
2045 | OnUpdatePrimSingleRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this); | ||
2046 | } | ||
2043 | } | 2047 | } |
2044 | } | 2048 | else if (multipleupdate.ObjectData[i].Type == 10) //group rotation from object tab |
2045 | else if (multipleupdate.ObjectData[i].Type == 10) //group rotation from object tab | ||
2046 | { | ||
2047 | if (OnUpdatePrimGroupRotation != null) | ||
2048 | { | 2049 | { |
2049 | LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 0, true); | 2050 | if (OnUpdatePrimGroupRotation != null) |
2050 | // Console.WriteLine("new rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); | 2051 | { |
2051 | OnUpdatePrimGroupRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this); | 2052 | LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 0, true); |
2053 | // Console.WriteLine("new rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); | ||
2054 | OnUpdatePrimGroupRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this); | ||
2055 | } | ||
2052 | } | 2056 | } |
2053 | } | 2057 | else if (multipleupdate.ObjectData[i].Type == 11) //group rotation from mouse |
2054 | else if (multipleupdate.ObjectData[i].Type == 11) //group rotation from mouse | ||
2055 | { | ||
2056 | if (OnUpdatePrimGroupMouseRotation != null) | ||
2057 | { | 2058 | { |
2058 | LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); | 2059 | if (OnUpdatePrimGroupMouseRotation != null) |
2059 | LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 12, true); | 2060 | { |
2060 | //Console.WriteLine("new rotation position is " + pos.X + " , " + pos.Y + " , " + pos.Z); | 2061 | LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); |
2061 | // Console.WriteLine("new rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); | 2062 | LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 12, true); |
2062 | OnUpdatePrimGroupMouseRotation(multipleupdate.ObjectData[i].ObjectLocalID, pos, rot, this); | 2063 | //Console.WriteLine("new rotation position is " + pos.X + " , " + pos.Y + " , " + pos.Z); |
2064 | // Console.WriteLine("new rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); | ||
2065 | OnUpdatePrimGroupMouseRotation(multipleupdate.ObjectData[i].ObjectLocalID, pos, rot, this); | ||
2066 | } | ||
2063 | } | 2067 | } |
2064 | } | 2068 | #endregion |
2065 | #endregion | 2069 | #region scale |
2066 | #region scale | ||
2067 | 2070 | ||
2068 | else if (multipleupdate.ObjectData[i].Type == 13) //group scale from object tab | 2071 | else if (multipleupdate.ObjectData[i].Type == 13) //group scale from object tab |
2069 | { | ||
2070 | if (OnUpdatePrimScale != null) | ||
2071 | { | 2072 | { |
2072 | LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12); | 2073 | if (OnUpdatePrimScale != null) |
2073 | //Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z); | 2074 | { |
2074 | OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this); | 2075 | LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12); |
2075 | 2076 | //Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z); | |
2076 | // Change the position based on scale (for bug number 246) | 2077 | OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this); |
2077 | LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); | 2078 | |
2078 | // System.Console.WriteLine("new movement position is " + pos.X + " , " + pos.Y + " , " + pos.Z); | 2079 | // Change the position based on scale (for bug number 246) |
2079 | OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this); | 2080 | LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); |
2081 | // System.Console.WriteLine("new movement position is " + pos.X + " , " + pos.Y + " , " + pos.Z); | ||
2082 | OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this); | ||
2083 | } | ||
2080 | } | 2084 | } |
2081 | } | 2085 | else if (multipleupdate.ObjectData[i].Type == 29) //group scale from mouse |
2082 | else if (multipleupdate.ObjectData[i].Type == 29) //group scale from mouse | ||
2083 | { | ||
2084 | if (OnUpdatePrimScale != null) | ||
2085 | { | 2086 | { |
2086 | LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12); | 2087 | if (OnUpdatePrimScale != null) |
2087 | // Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z ); | 2088 | { |
2088 | OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this); | 2089 | LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12); |
2089 | LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); | 2090 | // Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z ); |
2090 | OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this); | 2091 | OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this); |
2092 | LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); | ||
2093 | OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this); | ||
2094 | } | ||
2091 | } | 2095 | } |
2092 | } | 2096 | else if (multipleupdate.ObjectData[i].Type == 5) //single prim scale from object tab |
2093 | else if (multipleupdate.ObjectData[i].Type == 5) //single prim scale from object tab | ||
2094 | { | ||
2095 | if (OnUpdatePrimScale != null) | ||
2096 | { | 2097 | { |
2097 | LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12); | 2098 | if (OnUpdatePrimScale != null) |
2098 | // Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z); | 2099 | { |
2099 | OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this); | 2100 | LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12); |
2101 | // Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z); | ||
2102 | OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this); | ||
2103 | } | ||
2100 | } | 2104 | } |
2101 | } | 2105 | else if (multipleupdate.ObjectData[i].Type == 21) //single prim scale from mouse |
2102 | else if (multipleupdate.ObjectData[i].Type == 21) //single prim scale from mouse | ||
2103 | { | ||
2104 | if (OnUpdatePrimScale != null) | ||
2105 | { | 2106 | { |
2106 | LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12); | 2107 | if (OnUpdatePrimScale != null) |
2107 | // Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z); | 2108 | { |
2108 | OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this); | 2109 | LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12); |
2110 | // Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z); | ||
2111 | OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this); | ||
2112 | } | ||
2109 | } | 2113 | } |
2110 | } | ||
2111 | 2114 | ||
2112 | #endregion | 2115 | #endregion |
2116 | } | ||
2117 | } // editobj != null; | ||
2118 | else | ||
2119 | { | ||
2120 | // It's a ghost! tell the client to delete it from view. | ||
2121 | simClient.SendKillObject(this.Scene.RegionInfo.RegionHandle, multipleupdate.ObjectData[i].ObjectLocalID); | ||
2113 | } | 2122 | } |
2123 | |||
2114 | } | 2124 | } |
2115 | } | 2125 | } |
2116 | return true; | 2126 | return true; |
diff --git a/OpenSim/Region/ClientStack/PacketServer.cs b/OpenSim/Region/ClientStack/PacketServer.cs index a4c18d0..a232db8 100644 --- a/OpenSim/Region/ClientStack/PacketServer.cs +++ b/OpenSim/Region/ClientStack/PacketServer.cs | |||
@@ -123,9 +123,9 @@ namespace OpenSim.Region.ClientStack | |||
123 | /// <param name="circuitcode"></param> | 123 | /// <param name="circuitcode"></param> |
124 | public virtual void CloseCircuit(uint circuitcode) | 124 | public virtual void CloseCircuit(uint circuitcode) |
125 | { | 125 | { |
126 | OpenSim.Framework.Console.MainLog.Instance.Debug("PACKETSERVER", "Removing Circuit Code"); | 126 | |
127 | m_networkHandler.RemoveClientCircuit(circuitcode); | 127 | m_networkHandler.RemoveClientCircuit(circuitcode); |
128 | OpenSim.Framework.Console.MainLog.Instance.Debug("PACKETSERVER", "Removed Circuit Code"); | 128 | |
129 | //m_scene.ClientManager.CloseAllAgents(circuitcode); | 129 | //m_scene.ClientManager.CloseAllAgents(circuitcode); |
130 | } | 130 | } |
131 | 131 | ||
diff --git a/OpenSim/Region/ClientStack/UDPServer.cs b/OpenSim/Region/ClientStack/UDPServer.cs index a8a1ff6..47e0b3c 100644 --- a/OpenSim/Region/ClientStack/UDPServer.cs +++ b/OpenSim/Region/ClientStack/UDPServer.cs | |||
@@ -326,9 +326,9 @@ namespace OpenSim.Region.ClientStack | |||
326 | uint circuit; | 326 | uint circuit; |
327 | if (clientCircuits.TryGetValue(sender, out circuit)) | 327 | if (clientCircuits.TryGetValue(sender, out circuit)) |
328 | { | 328 | { |
329 | MainLog.Instance.Debug("UDPSERVER", "CloseEndPoint:ClosingCircuit"); | 329 | |
330 | m_packetServer.CloseCircuit(circuit); | 330 | m_packetServer.CloseCircuit(circuit); |
331 | MainLog.Instance.Debug("UDPSERVER", "CloseEndPoint:ClosedCircuit"); | 331 | |
332 | } | 332 | } |
333 | } | 333 | } |
334 | 334 | ||
@@ -381,13 +381,13 @@ namespace OpenSim.Region.ClientStack | |||
381 | EndPoint sendto = null; | 381 | EndPoint sendto = null; |
382 | if (clientCircuits_reverse.TryGetValue(circuitcode, out sendto)) | 382 | if (clientCircuits_reverse.TryGetValue(circuitcode, out sendto)) |
383 | { | 383 | { |
384 | MainLog.Instance.Debug("UDPSERVER", "RemovingClientCircuit"); | 384 | |
385 | clientCircuits.Remove(sendto); | 385 | clientCircuits.Remove(sendto); |
386 | MainLog.Instance.Debug("UDPSERVER", "Removed Client Circuit"); | 386 | |
387 | 387 | ||
388 | MainLog.Instance.Debug("UDPSERVER", "Removing Reverse ClientCircuit"); | 388 | |
389 | clientCircuits_reverse.Remove(circuitcode); | 389 | clientCircuits_reverse.Remove(circuitcode); |
390 | MainLog.Instance.Debug("UDPSERVER", "Removed Reverse ClientCircuit"); | 390 | |
391 | } | 391 | } |
392 | } | 392 | } |
393 | } | 393 | } |