aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs4
-rw-r--r--OpenSim/Client/MXP/ClientStack/MXPClientView.cs36
-rw-r--r--OpenSim/Client/Sirikata/ClientStack/SirikataClientView.cs65
-rw-r--r--OpenSim/Client/Sirikata/Protocol/MessageHeader.pbj.cs27
-rw-r--r--OpenSim/Client/Sirikata/Protocol/PBJ.cs29
-rw-r--r--OpenSim/Client/Sirikata/Protocol/Persistence.pbj.cs45
-rw-r--r--OpenSim/Client/Sirikata/Protocol/Physics.pbj.cs27
-rw-r--r--OpenSim/Client/Sirikata/Protocol/Sirikata.pbj.cs29
-rw-r--r--OpenSim/Client/Sirikata/Protocol/Subscription.pbj.cs27
-rw-r--r--OpenSim/Client/Sirikata/Protocol/Test.pbj.cs33
-rw-r--r--OpenSim/Client/Sirikata/Protocol/Time.pbj.cs27
-rw-r--r--OpenSim/Client/Sirikata/SirikataModule.cs4
-rw-r--r--OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs36
-rw-r--r--OpenSim/Data/IXInventoryData.cs84
-rw-r--r--OpenSim/Data/MySQL/MySQLGenericTableHandler.cs5
-rw-r--r--OpenSim/Data/MySQL/MySQLInventoryData.cs8
-rw-r--r--OpenSim/Data/MySQL/MySQLXInventoryData.cs156
-rw-r--r--OpenSim/Data/Tests/BasicRegionTest.cs1
-rw-r--r--OpenSim/Framework/IClientAPI.cs2
-rw-r--r--OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs2
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs12
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs4
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs6
-rw-r--r--OpenSim/Region/CoreModules/Framework/EventQueue/EventQueueHelper.cs10
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs2
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs2
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs4
-rw-r--r--OpenSim/Region/CoreModules/World/Land/LandChannel.cs2
-rw-r--r--OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs2
-rw-r--r--OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs36
-rw-r--r--OpenSim/Region/Framework/Interfaces/ILandChannel.cs2
-rw-r--r--OpenSim/Region/Framework/Interfaces/IRegionArchiverModule.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs7
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs10
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs42
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/SimStatsReporter.cs22
-rw-r--r--OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs36
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs4
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs10
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/Minimodule/World.cs4
-rw-r--r--OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs36
-rw-r--r--OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsActor.cs8
-rw-r--r--OpenSim/Region/Physics/BulletDotNETPlugin/BulletDotNETCharacter.cs8
-rw-r--r--OpenSim/Region/Physics/Manager/PhysicsActor.cs2
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODEDynamics.cs440
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODEPrim.cs562
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODERayCastRequestManager.cs2
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OdePlugin.cs20
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs7
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs158
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs2
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs46
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs12
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Runtime/ScriptBase.cs4
-rw-r--r--OpenSim/Region/ScriptEngine/XEngine/XEngine.cs2
-rw-r--r--OpenSim/Services/Interfaces/IInventoryService.cs2
-rw-r--r--OpenSim/Services/InventoryService/InventoryService.cs13
-rw-r--r--OpenSim/Services/InventoryService/XInventoryService.cs508
-rw-r--r--OpenSim/Tests/Common/Mock/TestClient.cs36
62 files changed, 1878 insertions, 862 deletions
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
index adf7967..9400788 100644
--- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
+++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
@@ -322,8 +322,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
322 if (Uri.TryCreate(file, UriKind.RelativeOrAbsolute, out result)) 322 if (Uri.TryCreate(file, UriKind.RelativeOrAbsolute, out result))
323 { 323 {
324 // the url is valid 324 // the url is valid
325 string fileType = file.Substring(file.LastIndexOf('/') + 1); 325 string fileType = file.Substring(file.LastIndexOf('/') + 1);
326 terrainModule.LoadFromStream(fileType, result); 326 terrainModule.LoadFromStream(fileType, result);
327 } 327 }
328 } 328 }
329 else 329 else
diff --git a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs
index b3582e9..dbb9611 100644
--- a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs
+++ b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs
@@ -757,24 +757,24 @@ namespace OpenSim.Client.MXP.ClientStack
757 public event MuteListRequest OnMuteListRequest; 757 public event MuteListRequest OnMuteListRequest;
758 public event AvatarInterestUpdate OnAvatarInterestUpdate; 758 public event AvatarInterestUpdate OnAvatarInterestUpdate;
759 public event FindAgentUpdate OnFindAgentEvent; 759 public event FindAgentUpdate OnFindAgentEvent;
760 public event TrackAgentUpdate OnTrackAgentEvent; 760 public event TrackAgentUpdate OnTrackAgentEvent;
761 public event NewUserReport OnUserReportEvent; 761 public event NewUserReport OnUserReportEvent;
762 public event SaveStateHandler OnSaveStateEvent; 762 public event SaveStateHandler OnSaveStateEvent;
763 public event GroupAccountSummaryRequest OnGroupAccountSummaryRequest; 763 public event GroupAccountSummaryRequest OnGroupAccountSummaryRequest;
764 public event GroupAccountDetailsRequest OnGroupAccountDetailsRequest; 764 public event GroupAccountDetailsRequest OnGroupAccountDetailsRequest;
765 public event GroupAccountTransactionsRequest OnGroupAccountTransactionsRequest; 765 public event GroupAccountTransactionsRequest OnGroupAccountTransactionsRequest;
766 public event FreezeUserUpdate OnParcelFreezeUserEvent; 766 public event FreezeUserUpdate OnParcelFreezeUserEvent;
767 public event EjectUserUpdate OnParcelEjectUserEvent; 767 public event EjectUserUpdate OnParcelEjectUserEvent;
768 public event ParcelBuyPass OnParcelBuyPass; 768 public event ParcelBuyPass OnParcelBuyPass;
769 public event ParcelGodMark OnParcelGodMark; 769 public event ParcelGodMark OnParcelGodMark;
770 public event GroupActiveProposalsRequest OnGroupActiveProposalsRequest; 770 public event GroupActiveProposalsRequest OnGroupActiveProposalsRequest;
771 public event GroupVoteHistoryRequest OnGroupVoteHistoryRequest; 771 public event GroupVoteHistoryRequest OnGroupVoteHistoryRequest;
772 public event SimWideDeletesDelegate OnSimWideDeletes; 772 public event SimWideDeletesDelegate OnSimWideDeletes;
773 public event SendPostcard OnSendPostcard; 773 public event SendPostcard OnSendPostcard;
774 public event MuteListEntryUpdate OnUpdateMuteListEntryEvent; 774 public event MuteListEntryUpdate OnUpdateMuteListEntryEvent;
775 public event MuteListEntryRemove OnRemoveMuteListEntryEvent; 775 public event MuteListEntryRemove OnRemoveMuteListEntryEvent;
776 public event GodlikeMessage onGodlikeMessageEvent; 776 public event GodlikeMessage onGodlikeMessageEvent;
777 public event GodUpdateRegionInfoUpdate OnGodUpdateRegionInfoUpdateEvent; 777 public event GodUpdateRegionInfoUpdate OnGodUpdateRegionInfoUpdateEvent;
778 778
779 public event PlacesQuery OnPlacesQuery; 779 public event PlacesQuery OnPlacesQuery;
780 780
diff --git a/OpenSim/Client/Sirikata/ClientStack/SirikataClientView.cs b/OpenSim/Client/Sirikata/ClientStack/SirikataClientView.cs
index 75b2347..66c0eb2 100644
--- a/OpenSim/Client/Sirikata/ClientStack/SirikataClientView.cs
+++ b/OpenSim/Client/Sirikata/ClientStack/SirikataClientView.cs
@@ -1,4 +1,31 @@
1using System; 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
2using System.Collections.Generic; 29using System.Collections.Generic;
3using System.Net; 30using System.Net;
4using System.Net.Sockets; 31using System.Net.Sockets;
@@ -375,24 +402,24 @@ namespace OpenSim.Client.Sirikata.ClientStack
375 public event MuteListRequest OnMuteListRequest; 402 public event MuteListRequest OnMuteListRequest;
376 public event PlacesQuery OnPlacesQuery; 403 public event PlacesQuery OnPlacesQuery;
377 public event FindAgentUpdate OnFindAgentEvent; 404 public event FindAgentUpdate OnFindAgentEvent;
378 public event TrackAgentUpdate OnTrackAgentEvent; 405 public event TrackAgentUpdate OnTrackAgentEvent;
379 public event NewUserReport OnUserReportEvent; 406 public event NewUserReport OnUserReportEvent;
380 public event SaveStateHandler OnSaveStateEvent; 407 public event SaveStateHandler OnSaveStateEvent;
381 public event GroupAccountSummaryRequest OnGroupAccountSummaryRequest; 408 public event GroupAccountSummaryRequest OnGroupAccountSummaryRequest;
382 public event GroupAccountDetailsRequest OnGroupAccountDetailsRequest; 409 public event GroupAccountDetailsRequest OnGroupAccountDetailsRequest;
383 public event GroupAccountTransactionsRequest OnGroupAccountTransactionsRequest; 410 public event GroupAccountTransactionsRequest OnGroupAccountTransactionsRequest;
384 public event FreezeUserUpdate OnParcelFreezeUserEvent; 411 public event FreezeUserUpdate OnParcelFreezeUserEvent;
385 public event EjectUserUpdate OnParcelEjectUserEvent; 412 public event EjectUserUpdate OnParcelEjectUserEvent;
386 public event ParcelBuyPass OnParcelBuyPass; 413 public event ParcelBuyPass OnParcelBuyPass;
387 public event ParcelGodMark OnParcelGodMark; 414 public event ParcelGodMark OnParcelGodMark;
388 public event GroupActiveProposalsRequest OnGroupActiveProposalsRequest; 415 public event GroupActiveProposalsRequest OnGroupActiveProposalsRequest;
389 public event GroupVoteHistoryRequest OnGroupVoteHistoryRequest; 416 public event GroupVoteHistoryRequest OnGroupVoteHistoryRequest;
390 public event SimWideDeletesDelegate OnSimWideDeletes; 417 public event SimWideDeletesDelegate OnSimWideDeletes;
391 public event SendPostcard OnSendPostcard; 418 public event SendPostcard OnSendPostcard;
392 public event MuteListEntryUpdate OnUpdateMuteListEntryEvent; 419 public event MuteListEntryUpdate OnUpdateMuteListEntryEvent;
393 public event MuteListEntryRemove OnRemoveMuteListEntryEvent; 420 public event MuteListEntryRemove OnRemoveMuteListEntryEvent;
394 public event GodlikeMessage onGodlikeMessageEvent; 421 public event GodlikeMessage onGodlikeMessageEvent;
395 public event GodUpdateRegionInfoUpdate OnGodUpdateRegionInfoUpdateEvent; 422 public event GodUpdateRegionInfoUpdate OnGodUpdateRegionInfoUpdateEvent;
396 public void SetDebugPacketLevel(int newDebug) 423 public void SetDebugPacketLevel(int newDebug)
397 { 424 {
398 throw new System.NotImplementedException(); 425 throw new System.NotImplementedException();
diff --git a/OpenSim/Client/Sirikata/Protocol/MessageHeader.pbj.cs b/OpenSim/Client/Sirikata/Protocol/MessageHeader.pbj.cs
index eadb43b..fb4963f 100644
--- a/OpenSim/Client/Sirikata/Protocol/MessageHeader.pbj.cs
+++ b/OpenSim/Client/Sirikata/Protocol/MessageHeader.pbj.cs
@@ -1,3 +1,30 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
1using pbd = global::Google.ProtocolBuffers.Descriptors; 28using pbd = global::Google.ProtocolBuffers.Descriptors;
2using pb = global::Google.ProtocolBuffers; 29using pb = global::Google.ProtocolBuffers;
3namespace Sirikata.Protocol { 30namespace Sirikata.Protocol {
diff --git a/OpenSim/Client/Sirikata/Protocol/PBJ.cs b/OpenSim/Client/Sirikata/Protocol/PBJ.cs
index 46888b5..9b1951a 100644
--- a/OpenSim/Client/Sirikata/Protocol/PBJ.cs
+++ b/OpenSim/Client/Sirikata/Protocol/PBJ.cs
@@ -1,4 +1,31 @@
1using System; 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
2namespace PBJ 29namespace PBJ
3{ 30{
4 31
diff --git a/OpenSim/Client/Sirikata/Protocol/Persistence.pbj.cs b/OpenSim/Client/Sirikata/Protocol/Persistence.pbj.cs
index 54ca1f4..196b0b9 100644
--- a/OpenSim/Client/Sirikata/Protocol/Persistence.pbj.cs
+++ b/OpenSim/Client/Sirikata/Protocol/Persistence.pbj.cs
@@ -1,3 +1,30 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
1using pbd = global::Google.ProtocolBuffers.Descriptors; 28using pbd = global::Google.ProtocolBuffers.Descriptors;
2using pb = global::Google.ProtocolBuffers; 29using pb = global::Google.ProtocolBuffers;
3namespace Sirikata.Persistence.Protocol { 30namespace Sirikata.Persistence.Protocol {
@@ -812,7 +839,7 @@ namespace Sirikata.Persistence.Protocol {
812 public StorageElement Reads(int index) { 839 public StorageElement Reads(int index) {
813 return new StorageElement(super.GetReads(index)); 840 return new StorageElement(super.GetReads(index));
814 } 841 }
815 public Builder AddReads(StorageElement value ) { 842 public Builder AddReads(StorageElement value) {
816 super.AddReads(value._PBJSuper); 843 super.AddReads(value._PBJSuper);
817 return this; 844 return this;
818 } 845 }
@@ -919,7 +946,7 @@ namespace Sirikata.Persistence.Protocol {
919 public StorageElement Reads(int index) { 946 public StorageElement Reads(int index) {
920 return new StorageElement(super.GetReads(index)); 947 return new StorageElement(super.GetReads(index));
921 } 948 }
922 public Builder AddReads(StorageElement value ) { 949 public Builder AddReads(StorageElement value) {
923 super.AddReads(value._PBJSuper); 950 super.AddReads(value._PBJSuper);
924 return this; 951 return this;
925 } 952 }
@@ -1026,7 +1053,7 @@ namespace Sirikata.Persistence.Protocol {
1026 public StorageElement Writes(int index) { 1053 public StorageElement Writes(int index) {
1027 return new StorageElement(super.GetWrites(index)); 1054 return new StorageElement(super.GetWrites(index));
1028 } 1055 }
1029 public Builder AddWrites(StorageElement value ) { 1056 public Builder AddWrites(StorageElement value) {
1030 super.AddWrites(value._PBJSuper); 1057 super.AddWrites(value._PBJSuper);
1031 return this; 1058 return this;
1032 } 1059 }
@@ -1155,7 +1182,7 @@ namespace Sirikata.Persistence.Protocol {
1155 public StorageElement Reads(int index) { 1182 public StorageElement Reads(int index) {
1156 return new StorageElement(super.GetReads(index)); 1183 return new StorageElement(super.GetReads(index));
1157 } 1184 }
1158 public Builder AddReads(StorageElement value ) { 1185 public Builder AddReads(StorageElement value) {
1159 super.AddReads(value._PBJSuper); 1186 super.AddReads(value._PBJSuper);
1160 return this; 1187 return this;
1161 } 1188 }
@@ -1170,7 +1197,7 @@ namespace Sirikata.Persistence.Protocol {
1170 public StorageElement Writes(int index) { 1197 public StorageElement Writes(int index) {
1171 return new StorageElement(super.GetWrites(index)); 1198 return new StorageElement(super.GetWrites(index));
1172 } 1199 }
1173 public Builder AddWrites(StorageElement value ) { 1200 public Builder AddWrites(StorageElement value) {
1174 super.AddWrites(value._PBJSuper); 1201 super.AddWrites(value._PBJSuper);
1175 return this; 1202 return this;
1176 } 1203 }
@@ -1322,7 +1349,7 @@ namespace Sirikata.Persistence.Protocol {
1322 public StorageElement Reads(int index) { 1349 public StorageElement Reads(int index) {
1323 return new StorageElement(super.GetReads(index)); 1350 return new StorageElement(super.GetReads(index));
1324 } 1351 }
1325 public Builder AddReads(StorageElement value ) { 1352 public Builder AddReads(StorageElement value) {
1326 super.AddReads(value._PBJSuper); 1353 super.AddReads(value._PBJSuper);
1327 return this; 1354 return this;
1328 } 1355 }
@@ -1337,7 +1364,7 @@ namespace Sirikata.Persistence.Protocol {
1337 public StorageElement Writes(int index) { 1364 public StorageElement Writes(int index) {
1338 return new StorageElement(super.GetWrites(index)); 1365 return new StorageElement(super.GetWrites(index));
1339 } 1366 }
1340 public Builder AddWrites(StorageElement value ) { 1367 public Builder AddWrites(StorageElement value) {
1341 super.AddWrites(value._PBJSuper); 1368 super.AddWrites(value._PBJSuper);
1342 return this; 1369 return this;
1343 } 1370 }
@@ -1352,7 +1379,7 @@ namespace Sirikata.Persistence.Protocol {
1352 public CompareElement Compares(int index) { 1379 public CompareElement Compares(int index) {
1353 return new CompareElement(super.GetCompares(index)); 1380 return new CompareElement(super.GetCompares(index));
1354 } 1381 }
1355 public Builder AddCompares(CompareElement value ) { 1382 public Builder AddCompares(CompareElement value) {
1356 super.AddCompares(value._PBJSuper); 1383 super.AddCompares(value._PBJSuper);
1357 return this; 1384 return this;
1358 } 1385 }
@@ -1493,7 +1520,7 @@ namespace Sirikata.Persistence.Protocol {
1493 public StorageElement Reads(int index) { 1520 public StorageElement Reads(int index) {
1494 return new StorageElement(super.GetReads(index)); 1521 return new StorageElement(super.GetReads(index));
1495 } 1522 }
1496 public Builder AddReads(StorageElement value ) { 1523 public Builder AddReads(StorageElement value) {
1497 super.AddReads(value._PBJSuper); 1524 super.AddReads(value._PBJSuper);
1498 return this; 1525 return this;
1499 } 1526 }
diff --git a/OpenSim/Client/Sirikata/Protocol/Physics.pbj.cs b/OpenSim/Client/Sirikata/Protocol/Physics.pbj.cs
index decd204..9fb5a28 100644
--- a/OpenSim/Client/Sirikata/Protocol/Physics.pbj.cs
+++ b/OpenSim/Client/Sirikata/Protocol/Physics.pbj.cs
@@ -1,3 +1,30 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
1using pbd = global::Google.ProtocolBuffers.Descriptors; 28using pbd = global::Google.ProtocolBuffers.Descriptors;
2using pb = global::Google.ProtocolBuffers; 29using pb = global::Google.ProtocolBuffers;
3namespace Sirikata.Physics.Protocol { 30namespace Sirikata.Physics.Protocol {
diff --git a/OpenSim/Client/Sirikata/Protocol/Sirikata.pbj.cs b/OpenSim/Client/Sirikata/Protocol/Sirikata.pbj.cs
index 9c0e3e7..fcf0152 100644
--- a/OpenSim/Client/Sirikata/Protocol/Sirikata.pbj.cs
+++ b/OpenSim/Client/Sirikata/Protocol/Sirikata.pbj.cs
@@ -1,3 +1,30 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
1using pbd = global::Google.ProtocolBuffers.Descriptors; 28using pbd = global::Google.ProtocolBuffers.Descriptors;
2using pb = global::Google.ProtocolBuffers; 29using pb = global::Google.ProtocolBuffers;
3namespace Sirikata.Protocol { 30namespace Sirikata.Protocol {
@@ -3809,7 +3836,7 @@ namespace Sirikata.Protocol {
3809 public ConnectToSpace SpaceProperties(int index) { 3836 public ConnectToSpace SpaceProperties(int index) {
3810 return new ConnectToSpace(super.GetSpaceProperties(index)); 3837 return new ConnectToSpace(super.GetSpaceProperties(index));
3811 } 3838 }
3812 public Builder AddSpaceProperties(ConnectToSpace value ) { 3839 public Builder AddSpaceProperties(ConnectToSpace value) {
3813 super.AddSpaceProperties(value._PBJSuper); 3840 super.AddSpaceProperties(value._PBJSuper);
3814 return this; 3841 return this;
3815 } 3842 }
diff --git a/OpenSim/Client/Sirikata/Protocol/Subscription.pbj.cs b/OpenSim/Client/Sirikata/Protocol/Subscription.pbj.cs
index ca6c7e8..c8c2fbf 100644
--- a/OpenSim/Client/Sirikata/Protocol/Subscription.pbj.cs
+++ b/OpenSim/Client/Sirikata/Protocol/Subscription.pbj.cs
@@ -1,3 +1,30 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
1using pbd = global::Google.ProtocolBuffers.Descriptors; 28using pbd = global::Google.ProtocolBuffers.Descriptors;
2using pb = global::Google.ProtocolBuffers; 29using pb = global::Google.ProtocolBuffers;
3namespace Sirikata.Subscription.Protocol { 30namespace Sirikata.Subscription.Protocol {
diff --git a/OpenSim/Client/Sirikata/Protocol/Test.pbj.cs b/OpenSim/Client/Sirikata/Protocol/Test.pbj.cs
index c753c36..bcd02fa 100644
--- a/OpenSim/Client/Sirikata/Protocol/Test.pbj.cs
+++ b/OpenSim/Client/Sirikata/Protocol/Test.pbj.cs
@@ -1,3 +1,30 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
1using pbd = global::Google.ProtocolBuffers.Descriptors; 28using pbd = global::Google.ProtocolBuffers.Descriptors;
2using pb = global::Google.ProtocolBuffers; 29using pb = global::Google.ProtocolBuffers;
3namespace Sirikata.PB { 30namespace Sirikata.PB {
@@ -407,7 +434,7 @@ namespace Sirikata.PB {
407 public Types.SubMessage Submessers(int index) { 434 public Types.SubMessage Submessers(int index) {
408 return new Types.SubMessage(super.GetSubmessers(index)); 435 return new Types.SubMessage(super.GetSubmessers(index));
409 } 436 }
410 public Builder AddSubmessers(Types.SubMessage value ) { 437 public Builder AddSubmessers(Types.SubMessage value) {
411 super.AddSubmessers(value._PBJSuper); 438 super.AddSubmessers(value._PBJSuper);
412 return this; 439 return this;
413 } 440 }
@@ -1651,7 +1678,7 @@ namespace Sirikata.PB {
1651 public Types.SubMessage Submessers(int index) { 1678 public Types.SubMessage Submessers(int index) {
1652 return new Types.SubMessage(super.GetSubmessers(index)); 1679 return new Types.SubMessage(super.GetSubmessers(index));
1653 } 1680 }
1654 public Builder AddSubmessers(Types.SubMessage value ) { 1681 public Builder AddSubmessers(Types.SubMessage value) {
1655 super.AddSubmessers(value._PBJSuper); 1682 super.AddSubmessers(value._PBJSuper);
1656 return this; 1683 return this;
1657 } 1684 }
@@ -1709,7 +1736,7 @@ namespace Sirikata.PB {
1709 public ExternalMessage Extmessers(int index) { 1736 public ExternalMessage Extmessers(int index) {
1710 return new ExternalMessage(super.GetExtmessers(index)); 1737 return new ExternalMessage(super.GetExtmessers(index));
1711 } 1738 }
1712 public Builder AddExtmessers(ExternalMessage value ) { 1739 public Builder AddExtmessers(ExternalMessage value) {
1713 super.AddExtmessers(value._PBJSuper); 1740 super.AddExtmessers(value._PBJSuper);
1714 return this; 1741 return this;
1715 } 1742 }
diff --git a/OpenSim/Client/Sirikata/Protocol/Time.pbj.cs b/OpenSim/Client/Sirikata/Protocol/Time.pbj.cs
index c3e9e73..15b4ae7 100644
--- a/OpenSim/Client/Sirikata/Protocol/Time.pbj.cs
+++ b/OpenSim/Client/Sirikata/Protocol/Time.pbj.cs
@@ -1,3 +1,30 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
1using pbd = global::Google.ProtocolBuffers.Descriptors; 28using pbd = global::Google.ProtocolBuffers.Descriptors;
2using pb = global::Google.ProtocolBuffers; 29using pb = global::Google.ProtocolBuffers;
3namespace Sirikata.Network.Protocol { 30namespace Sirikata.Network.Protocol {
diff --git a/OpenSim/Client/Sirikata/SirikataModule.cs b/OpenSim/Client/Sirikata/SirikataModule.cs
index cbb6c23..01dc9d7 100644
--- a/OpenSim/Client/Sirikata/SirikataModule.cs
+++ b/OpenSim/Client/Sirikata/SirikataModule.cs
@@ -93,7 +93,7 @@ namespace OpenSim.Client.Sirikata
93 93
94 public void PostInitialise() 94 public void PostInitialise()
95 { 95 {
96 if(!m_enabled) 96 if (!m_enabled)
97 return; 97 return;
98 98
99 m_listener = new TcpListener(IPAddress.Any, 5943); 99 m_listener = new TcpListener(IPAddress.Any, 5943);
@@ -102,7 +102,7 @@ namespace OpenSim.Client.Sirikata
102 102
103 private void ListenLoop() 103 private void ListenLoop()
104 { 104 {
105 while(m_running) 105 while (m_running)
106 { 106 {
107 m_listener.BeginAcceptTcpClient(AcceptSocket, m_listener); 107 m_listener.BeginAcceptTcpClient(AcceptSocket, m_listener);
108 } 108 }
diff --git a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs
index 029e23f..6f6d231 100644
--- a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs
+++ b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs
@@ -406,24 +406,24 @@ namespace OpenSim.Client.VWoHTTP.ClientStack
406 public event AvatarInterestUpdate OnAvatarInterestUpdate = delegate { }; 406 public event AvatarInterestUpdate OnAvatarInterestUpdate = delegate { };
407 public event PlacesQuery OnPlacesQuery = delegate { }; 407 public event PlacesQuery OnPlacesQuery = delegate { };
408 public event FindAgentUpdate OnFindAgentEvent = delegate { }; 408 public event FindAgentUpdate OnFindAgentEvent = delegate { };
409 public event TrackAgentUpdate OnTrackAgentEvent = delegate { }; 409 public event TrackAgentUpdate OnTrackAgentEvent = delegate { };
410 public event NewUserReport OnUserReportEvent = delegate { }; 410 public event NewUserReport OnUserReportEvent = delegate { };
411 public event SaveStateHandler OnSaveStateEvent = delegate { }; 411 public event SaveStateHandler OnSaveStateEvent = delegate { };
412 public event GroupAccountSummaryRequest OnGroupAccountSummaryRequest = delegate { }; 412 public event GroupAccountSummaryRequest OnGroupAccountSummaryRequest = delegate { };
413 public event GroupAccountDetailsRequest OnGroupAccountDetailsRequest = delegate { }; 413 public event GroupAccountDetailsRequest OnGroupAccountDetailsRequest = delegate { };
414 public event GroupAccountTransactionsRequest OnGroupAccountTransactionsRequest = delegate { }; 414 public event GroupAccountTransactionsRequest OnGroupAccountTransactionsRequest = delegate { };
415 public event FreezeUserUpdate OnParcelFreezeUserEvent = delegate { }; 415 public event FreezeUserUpdate OnParcelFreezeUserEvent = delegate { };
416 public event EjectUserUpdate OnParcelEjectUserEvent = delegate { }; 416 public event EjectUserUpdate OnParcelEjectUserEvent = delegate { };
417 public event ParcelBuyPass OnParcelBuyPass = delegate { }; 417 public event ParcelBuyPass OnParcelBuyPass = delegate { };
418 public event ParcelGodMark OnParcelGodMark = delegate { }; 418 public event ParcelGodMark OnParcelGodMark = delegate { };
419 public event GroupActiveProposalsRequest OnGroupActiveProposalsRequest = delegate { }; 419 public event GroupActiveProposalsRequest OnGroupActiveProposalsRequest = delegate { };
420 public event GroupVoteHistoryRequest OnGroupVoteHistoryRequest = delegate { }; 420 public event GroupVoteHistoryRequest OnGroupVoteHistoryRequest = delegate { };
421 public event SimWideDeletesDelegate OnSimWideDeletes = delegate { }; 421 public event SimWideDeletesDelegate OnSimWideDeletes = delegate { };
422 public event SendPostcard OnSendPostcard = delegate { }; 422 public event SendPostcard OnSendPostcard = delegate { };
423 public event MuteListEntryUpdate OnUpdateMuteListEntryEvent = delegate { }; 423 public event MuteListEntryUpdate OnUpdateMuteListEntryEvent = delegate { };
424 public event MuteListEntryRemove OnRemoveMuteListEntryEvent = delegate { }; 424 public event MuteListEntryRemove OnRemoveMuteListEntryEvent = delegate { };
425 public event GodlikeMessage onGodlikeMessageEvent = delegate { }; 425 public event GodlikeMessage onGodlikeMessageEvent = delegate { };
426 public event GodUpdateRegionInfoUpdate OnGodUpdateRegionInfoUpdateEvent = delegate { }; 426 public event GodUpdateRegionInfoUpdate OnGodUpdateRegionInfoUpdateEvent = delegate { };
427 427
428 428
429 429
diff --git a/OpenSim/Data/IXInventoryData.cs b/OpenSim/Data/IXInventoryData.cs
new file mode 100644
index 0000000..cd9273e
--- /dev/null
+++ b/OpenSim/Data/IXInventoryData.cs
@@ -0,0 +1,84 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Collections.Generic;
30using OpenMetaverse;
31using OpenSim.Framework;
32
33namespace OpenSim.Data
34{
35 public class XInventoryFolder
36 {
37 public string folderName;
38 public int type;
39 public int version;
40 public UUID folderID;
41 public UUID agentID;
42 public UUID parentFolderID;
43 }
44
45 public class XInventoryItem
46 {
47 public UUID assetID;
48 public int assetType;
49 public string inventoryName;
50 public string inventoryDescription;
51 public int inventoryNextPermissions;
52 public int inventoryCurrentPermissions;
53 public int invType;
54 public UUID creatorID;
55 public int inventoryBasePermissions;
56 public int inventoryEveryOnePermissions;
57 public int salePrice;
58 public int saleType;
59 public int creationDate;
60 public UUID groupID;
61 public bool groupOwned;
62 public int flags;
63 public UUID inventoryID;
64 public UUID avatarID;
65 public UUID parentFolderID;
66 public int inventoryGroupPermissions;
67 }
68
69 public interface IXInventoryData
70 {
71 XInventoryFolder[] GetFolders(string[] fields, string[] vals);
72 XInventoryItem[] GetItems(string[] fields, string[] vals);
73
74 bool StoreFolder(XInventoryFolder folder);
75 bool StoreItem(XInventoryItem item);
76
77 bool DeleteFolders(string field, string val);
78 bool DeleteItems(string field, string val);
79
80 bool MoveItem(string id, string newParent);
81 XInventoryItem[] GetActiveGestures(UUID principalID);
82 int GetAssetPermissions(UUID principalID, UUID assetID);
83 }
84}
diff --git a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs
index 1a97fee..2269d20 100644
--- a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs
+++ b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs
@@ -153,6 +153,11 @@ namespace OpenSim.Data.MySQL
153 UUID.TryParse(reader[name].ToString(), out uuid); 153 UUID.TryParse(reader[name].ToString(), out uuid);
154 m_Fields[name].SetValue(row, uuid); 154 m_Fields[name].SetValue(row, uuid);
155 } 155 }
156 else if (m_Fields[name].GetValue(row) is int)
157 {
158 int v = Convert.ToInt32(reader[name]);
159 m_Fields[name].SetValue(row, v);
160 }
156 else 161 else
157 { 162 {
158 m_Fields[name].SetValue(row, reader[name]); 163 m_Fields[name].SetValue(row, reader[name]);
diff --git a/OpenSim/Data/MySQL/MySQLInventoryData.cs b/OpenSim/Data/MySQL/MySQLInventoryData.cs
index d560c5f..f566fde 100644
--- a/OpenSim/Data/MySQL/MySQLInventoryData.cs
+++ b/OpenSim/Data/MySQL/MySQLInventoryData.cs
@@ -91,7 +91,7 @@ namespace OpenSim.Data.MySQL
91 rollbackStore = GridDataMySqlFile.ParseFileReadValue("rollback") == "true"; 91 rollbackStore = GridDataMySqlFile.ParseFileReadValue("rollback") == "true";
92 opengridmode = GridDataMySqlFile.ParseFileReadValue("opengridmode") == "true"; 92 opengridmode = GridDataMySqlFile.ParseFileReadValue("opengridmode") == "true";
93 93
94 if(rollbackStore) 94 if (rollbackStore)
95 m_log.Warn("[MysqlInventory] Enabling rollback mode in: " + rollbackDir); 95 m_log.Warn("[MysqlInventory] Enabling rollback mode in: " + rollbackDir);
96 96
97 database = 97 database =
@@ -264,7 +264,7 @@ namespace OpenSim.Data.MySQL
264 { 264 {
265 database.Reconnect(); 265 database.Reconnect();
266 m_log.Error(e.ToString()); 266 m_log.Error(e.ToString());
267 return null; 267 throw;
268 } 268 }
269 } 269 }
270 270
@@ -552,7 +552,7 @@ namespace OpenSim.Data.MySQL
552 552
553 private void StoreRollbackItem(UUID ItemID) 553 private void StoreRollbackItem(UUID ItemID)
554 { 554 {
555 if(rollbackStore == true) 555 if (rollbackStore == true)
556 { 556 {
557 string todaysPath = RollbackGetTodaysPath(); 557 string todaysPath = RollbackGetTodaysPath();
558 558
@@ -1008,7 +1008,7 @@ namespace OpenSim.Data.MySQL
1008 StoreRollbackFolder(f.ID); 1008 StoreRollbackFolder(f.ID);
1009 deleteOneFolder(f.ID); 1009 deleteOneFolder(f.ID);
1010 1010
1011 if(rollbackStore) 1011 if (rollbackStore)
1012 { 1012 {
1013 foreach (InventoryItemBase itemBase in getInventoryInFolder(f.ID)) 1013 foreach (InventoryItemBase itemBase in getInventoryInFolder(f.ID))
1014 { 1014 {
diff --git a/OpenSim/Data/MySQL/MySQLXInventoryData.cs b/OpenSim/Data/MySQL/MySQLXInventoryData.cs
new file mode 100644
index 0000000..0eebc9c
--- /dev/null
+++ b/OpenSim/Data/MySQL/MySQLXInventoryData.cs
@@ -0,0 +1,156 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Data;
30using System.Reflection;
31using System.Collections.Generic;
32using log4net;
33using MySql.Data.MySqlClient;
34using OpenMetaverse;
35using OpenSim.Framework;
36
37namespace OpenSim.Data.MySQL
38{
39 /// <summary>
40 /// A MySQL Interface for the Asset Server
41 /// </summary>
42 public class MySQLXInventoryData : IXInventoryData
43 {
44 private static readonly ILog m_log = LogManager.GetLogger(
45 MethodBase.GetCurrentMethod().DeclaringType);
46
47 private MySQLGenericTableHandler<XInventoryFolder> m_Folders;
48 private MySqlItemHandler m_Items;
49
50 public MySQLXInventoryData(string conn, string realm)
51 {
52 m_Folders = new MySQLGenericTableHandler<XInventoryFolder>(
53 conn, "inventoryfolders", "InventoryStore");
54 m_Items = new MySqlItemHandler(
55 conn, "inventoryitems", String.Empty);
56 }
57
58 public XInventoryFolder[] GetFolders(string[] fields, string[] vals)
59 {
60 return m_Folders.Get(fields, vals);
61 }
62
63 public XInventoryItem[] GetItems(string[] fields, string[] vals)
64 {
65 return m_Items.Get(fields, vals);
66 }
67
68 public bool StoreFolder(XInventoryFolder folder)
69 {
70 return m_Folders.Store(folder);
71 }
72
73 public bool StoreItem(XInventoryItem item)
74 {
75 return m_Items.Store(item);
76 }
77
78 public bool DeleteFolders(string field, string val)
79 {
80 return m_Folders.Delete(field, val);
81 }
82
83 public bool DeleteItems(string field, string val)
84 {
85 return m_Items.Delete(field, val);
86 }
87
88 public bool MoveItem(string id, string newParent)
89 {
90 return m_Items.MoveItem(id, newParent);
91 }
92
93 public XInventoryItem[] GetActiveGestures(UUID principalID)
94 {
95 return m_Items.GetActiveGestures(principalID);
96 }
97
98 public int GetAssetPermissions(UUID principalID, UUID assetID)
99 {
100 return m_Items.GetAssetPermissions(principalID, assetID);
101 }
102 }
103
104 public class MySqlItemHandler : MySQLGenericTableHandler<XInventoryItem>
105 {
106 public MySqlItemHandler(string c, string t, string m) :
107 base(c, t, m)
108 {
109 }
110
111 public bool MoveItem(string id, string newParent)
112 {
113 MySqlCommand cmd = new MySqlCommand();
114
115 cmd.CommandText = String.Format("update {0} set parentFolderID = ?ParentFolderID where inventoryID = ?InventoryID", m_Realm);
116 cmd.Parameters.AddWithValue("?ParentFolderID", newParent);
117 cmd.Parameters.AddWithValue("?InventoryID", id);
118
119 return ExecuteNonQuery(cmd) == 0 ? false : true;
120 }
121
122 public XInventoryItem[] GetActiveGestures(UUID principalID)
123 {
124 MySqlCommand cmd = new MySqlCommand();
125 cmd.CommandText = String.Format("select * from inventoryitems where avatarId = ?uuid and assetType = ?type and flags = 1", m_Realm);
126
127 cmd.Parameters.AddWithValue("?uuid", principalID.ToString());
128 cmd.Parameters.AddWithValue("?type", (int)AssetType.Gesture);
129
130 return DoQuery(cmd);
131 }
132
133 public int GetAssetPermissions(UUID principalID, UUID assetID)
134 {
135 MySqlCommand cmd = new MySqlCommand();
136
137 cmd.CommandText = String.Format("select bit_or(inventoryCurrentPermissions) as inventoryCurrentPermissions from inventoryitems where avatarID = ?PrincipalID and assetID = ?AssetID group by assetID", m_Realm);
138 cmd.Parameters.AddWithValue("?PrincipalID", principalID.ToString());
139 cmd.Parameters.AddWithValue("?AssetID", assetID.ToString());
140
141 IDataReader reader = ExecuteReader(cmd);
142
143 int perms = 0;
144
145 if (reader.Read())
146 {
147 perms = Convert.ToInt32(reader["inventoryCurrentPermissions"]);
148 }
149
150 reader.Close();
151 CloseReaderCommand(cmd);
152
153 return perms;
154 }
155 }
156}
diff --git a/OpenSim/Data/Tests/BasicRegionTest.cs b/OpenSim/Data/Tests/BasicRegionTest.cs
index f76962c..676c6ba 100644
--- a/OpenSim/Data/Tests/BasicRegionTest.cs
+++ b/OpenSim/Data/Tests/BasicRegionTest.cs
@@ -577,6 +577,7 @@ namespace OpenSim.Data.Tests
577 .IgnoreProperty(x=>x.RegionUUID) 577 .IgnoreProperty(x=>x.RegionUUID)
578 .IgnoreProperty(x=>x.Scene) 578 .IgnoreProperty(x=>x.Scene)
579 .IgnoreProperty(x=>x.Children) 579 .IgnoreProperty(x=>x.Children)
580 .IgnoreProperty(x=>x.PassCollision)
580 .IgnoreProperty(x=>x.RootPart)); 581 .IgnoreProperty(x=>x.RootPart));
581 } 582 }
582 583
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs
index 9f2a0ae..60c1ac7 100644
--- a/OpenSim/Framework/IClientAPI.cs
+++ b/OpenSim/Framework/IClientAPI.cs
@@ -1075,7 +1075,7 @@ namespace OpenSim.Framework
1075 event SaveStateHandler OnSaveStateEvent; 1075 event SaveStateHandler OnSaveStateEvent;
1076 event GroupAccountSummaryRequest OnGroupAccountSummaryRequest; 1076 event GroupAccountSummaryRequest OnGroupAccountSummaryRequest;
1077 event GroupAccountDetailsRequest OnGroupAccountDetailsRequest; 1077 event GroupAccountDetailsRequest OnGroupAccountDetailsRequest;
1078 event GroupAccountTransactionsRequest OnGroupAccountTransactionsRequest; 1078 event GroupAccountTransactionsRequest OnGroupAccountTransactionsRequest;
1079 event FreezeUserUpdate OnParcelFreezeUserEvent; 1079 event FreezeUserUpdate OnParcelFreezeUserEvent;
1080 event EjectUserUpdate OnParcelEjectUserEvent; 1080 event EjectUserUpdate OnParcelEjectUserEvent;
1081 event ParcelBuyPass OnParcelBuyPass; 1081 event ParcelBuyPass OnParcelBuyPass;
diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
index 857c584..214f936 100644
--- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
+++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
@@ -741,7 +741,7 @@ namespace OpenSim.Framework.Servers.HttpServer
741 xmlRpcResponse = new XmlRpcResponse(); 741 xmlRpcResponse = new XmlRpcResponse();
742 742
743 // Code probably set in accordance with http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php 743 // Code probably set in accordance with http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php
744 xmlRpcResponse.SetFault(-32603, errorMessage); 744 xmlRpcResponse.SetFault(-32603, errorMessage);
745 } 745 }
746 746
747 // if the method wasn't found, we can't determine KeepAlive state anyway, so lets do it only here 747 // if the method wasn't found, we can't determine KeepAlive state anyway, so lets do it only here
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 25026a6..3a802df 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -304,7 +304,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
304 public event SaveStateHandler OnSaveStateEvent; 304 public event SaveStateHandler OnSaveStateEvent;
305 public event GroupAccountSummaryRequest OnGroupAccountSummaryRequest; 305 public event GroupAccountSummaryRequest OnGroupAccountSummaryRequest;
306 public event GroupAccountDetailsRequest OnGroupAccountDetailsRequest; 306 public event GroupAccountDetailsRequest OnGroupAccountDetailsRequest;
307 public event GroupAccountTransactionsRequest OnGroupAccountTransactionsRequest; 307 public event GroupAccountTransactionsRequest OnGroupAccountTransactionsRequest;
308 public event FreezeUserUpdate OnParcelFreezeUserEvent; 308 public event FreezeUserUpdate OnParcelFreezeUserEvent;
309 public event EjectUserUpdate OnParcelEjectUserEvent; 309 public event EjectUserUpdate OnParcelEjectUserEvent;
310 public event ParcelBuyPass OnParcelBuyPass; 310 public event ParcelBuyPass OnParcelBuyPass;
@@ -828,7 +828,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
828 828
829 public void SendGroupActiveProposals(IClientAPI sender,UUID agentID, UUID sessionID, UUID groupID, UUID transactionID, Dictionary<int, string> VoteID, Dictionary<int, string> VoteInitiator, Dictionary<int, string> Majority, Dictionary<int, string> Quorum, Dictionary<int, string> TerseDateID, Dictionary<int, string> StartDateTime, Dictionary<int, string> EndDateTime, Dictionary<int, string> ProposalText) 829 public void SendGroupActiveProposals(IClientAPI sender,UUID agentID, UUID sessionID, UUID groupID, UUID transactionID, Dictionary<int, string> VoteID, Dictionary<int, string> VoteInitiator, Dictionary<int, string> Majority, Dictionary<int, string> Quorum, Dictionary<int, string> TerseDateID, Dictionary<int, string> StartDateTime, Dictionary<int, string> EndDateTime, Dictionary<int, string> ProposalText)
830 { 830 {
831 foreach(KeyValuePair<int, string> Blank in VoteID) 831 foreach (KeyValuePair<int, string> Blank in VoteID)
832 { 832 {
833 GroupActiveProposalItemReplyPacket GAPIRP = new GroupActiveProposalItemReplyPacket(); 833 GroupActiveProposalItemReplyPacket GAPIRP = new GroupActiveProposalItemReplyPacket();
834 834
@@ -851,7 +851,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
851 GAPIRP.ProposalData[0] = ProposalData; 851 GAPIRP.ProposalData[0] = ProposalData;
852 OutPacket(GAPIRP, ThrottleOutPacketType.Task); 852 OutPacket(GAPIRP, ThrottleOutPacketType.Task);
853 } 853 }
854 if(VoteID.Count == 0) 854 if (VoteID.Count == 0)
855 { 855 {
856 GroupActiveProposalItemReplyPacket GAPIRP = new GroupActiveProposalItemReplyPacket(); 856 GroupActiveProposalItemReplyPacket GAPIRP = new GroupActiveProposalItemReplyPacket();
857 857
@@ -878,7 +878,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
878 878
879 public void SendGroupVoteHistory(IClientAPI sender,UUID agentID, UUID sessionID, UUID groupID, UUID transactionID, Dictionary<int, string> VoteID, Dictionary<int, string> VoteInitiator, Dictionary<int, string> Majority, Dictionary<int, string> Quorum, Dictionary<int, string> TerseDateID, Dictionary<int, string> StartDateTime, Dictionary<int, string> EndDateTime, Dictionary<int, string> VoteType, Dictionary<int, string> VoteResult, Dictionary<int, string> ProposalText) 879 public void SendGroupVoteHistory(IClientAPI sender,UUID agentID, UUID sessionID, UUID groupID, UUID transactionID, Dictionary<int, string> VoteID, Dictionary<int, string> VoteInitiator, Dictionary<int, string> Majority, Dictionary<int, string> Quorum, Dictionary<int, string> TerseDateID, Dictionary<int, string> StartDateTime, Dictionary<int, string> EndDateTime, Dictionary<int, string> VoteType, Dictionary<int, string> VoteResult, Dictionary<int, string> ProposalText)
880 { 880 {
881 foreach(KeyValuePair<int, string> Blank in VoteID) 881 foreach (KeyValuePair<int, string> Blank in VoteID)
882 { 882 {
883 GroupVoteHistoryItemReplyPacket GVHIRP = new GroupVoteHistoryItemReplyPacket(); 883 GroupVoteHistoryItemReplyPacket GVHIRP = new GroupVoteHistoryItemReplyPacket();
884 884
@@ -904,7 +904,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
904 GVHIRP.VoteItem[0] = VoteItem; 904 GVHIRP.VoteItem[0] = VoteItem;
905 OutPacket(GVHIRP, ThrottleOutPacketType.Task); 905 OutPacket(GVHIRP, ThrottleOutPacketType.Task);
906 } 906 }
907 if(VoteID.Count == 0) 907 if (VoteID.Count == 0)
908 { 908 {
909 GroupVoteHistoryItemReplyPacket GVHIRP = new GroupVoteHistoryItemReplyPacket(); 909 GroupVoteHistoryItemReplyPacket GVHIRP = new GroupVoteHistoryItemReplyPacket();
910 910
@@ -5915,7 +5915,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5915 5915
5916 if (avSetStartLocationRequestPacket.AgentData.AgentID == AgentId && avSetStartLocationRequestPacket.AgentData.SessionID == SessionId) 5916 if (avSetStartLocationRequestPacket.AgentData.AgentID == AgentId && avSetStartLocationRequestPacket.AgentData.SessionID == SessionId)
5917 { 5917 {
5918 // Linden Client limitation.. 5918 // Linden Client limitation..
5919 if (avSetStartLocationRequestPacket.StartLocationData.LocationPos.X == 255.5f 5919 if (avSetStartLocationRequestPacket.StartLocationData.LocationPos.X == 255.5f
5920 || avSetStartLocationRequestPacket.StartLocationData.LocationPos.Y == 255.5f) 5920 || avSetStartLocationRequestPacket.StartLocationData.LocationPos.Y == 255.5f)
5921 { 5921 {
diff --git a/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs b/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs
index 7e1bed5..50171a3 100644
--- a/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs
@@ -118,7 +118,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Gods
118 118
119 m_scene.ForEachClient( 119 m_scene.ForEachClient(
120 delegate(IClientAPI controller) 120 delegate(IClientAPI controller)
121 { 121 {
122 if (controller.AgentId != godID) 122 if (controller.AgentId != godID)
123 controller.Kick(reasonStr); 123 controller.Kick(reasonStr);
124 } 124 }
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
index 0ced2f9..160a9bd 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
@@ -359,12 +359,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
359 359
360 UUID ospResolvedId = OspResolver.ResolveOspa(item.CreatorId, m_scene.CommsManager); 360 UUID ospResolvedId = OspResolver.ResolveOspa(item.CreatorId, m_scene.CommsManager);
361 if (UUID.Zero != ospResolvedId) 361 if (UUID.Zero != ospResolvedId)
362 { 362 {
363 item.CreatorIdAsUuid = ospResolvedId; 363 item.CreatorIdAsUuid = ospResolvedId;
364 364
365 // XXX: For now, don't preserve the OSPA in the creator id (which actually gets persisted to the 365 // XXX: For now, don't preserve the OSPA in the creator id (which actually gets persisted to the
366 // database). Instead, replace with the UUID that we found. 366 // database). Instead, replace with the UUID that we found.
367 item.CreatorId = ospResolvedId.ToString(); 367 item.CreatorId = ospResolvedId.ToString();
368 } 368 }
369 else 369 else
370 { 370 {
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
index c85d974..98b686e 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
@@ -117,12 +117,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
117 } 117 }
118 118
119 protected void ReceivedAllAssets(ICollection<UUID> assetsFoundUuids, ICollection<UUID> assetsNotFoundUuids) 119 protected void ReceivedAllAssets(ICollection<UUID> assetsFoundUuids, ICollection<UUID> assetsNotFoundUuids)
120 { 120 {
121 Exception reportedException = null; 121 Exception reportedException = null;
122 bool succeeded = true; 122 bool succeeded = true;
123 123
124 try 124 try
125 { 125 {
126 // We're almost done. Just need to write out the control file now 126 // We're almost done. Just need to write out the control file now
127 m_archiveWriter.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, Create0p1ControlFile()); 127 m_archiveWriter.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, Create0p1ControlFile());
128 m_log.InfoFormat("[ARCHIVER]: Added control file to archive."); 128 m_log.InfoFormat("[ARCHIVER]: Added control file to archive.");
@@ -269,7 +269,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
269 m_module.TriggerInventoryArchiveSaved( 269 m_module.TriggerInventoryArchiveSaved(
270 m_id, false, m_userInfo, m_invPath, m_saveStream, 270 m_id, false, m_userInfo, m_invPath, m_saveStream,
271 new Exception(errorMessage)); 271 new Exception(errorMessage));
272 return; 272 return;
273 } 273 }
274 274
275 m_archiveWriter = new TarArchiveWriter(m_saveStream); 275 m_archiveWriter = new TarArchiveWriter(m_saveStream);
diff --git a/OpenSim/Region/CoreModules/Framework/EventQueue/EventQueueHelper.cs b/OpenSim/Region/CoreModules/Framework/EventQueue/EventQueueHelper.cs
index 67fc8e6..efa60bb 100644
--- a/OpenSim/Region/CoreModules/Framework/EventQueue/EventQueueHelper.cs
+++ b/OpenSim/Region/CoreModules/Framework/EventQueue/EventQueueHelper.cs
@@ -484,11 +484,11 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
484 QueryDataMap.Add("GlobalZ", OSD.FromInteger((int)groupDataBlock.GlobalZ)); 484 QueryDataMap.Add("GlobalZ", OSD.FromInteger((int)groupDataBlock.GlobalZ));
485 QueryDataMap.Add("Name", OSD.FromBinary(groupDataBlock.Name)); 485 QueryDataMap.Add("Name", OSD.FromBinary(groupDataBlock.Name));
486 QueryDataMap.Add("OwnerID", OSD.FromUUID(groupDataBlock.OwnerID)); 486 QueryDataMap.Add("OwnerID", OSD.FromUUID(groupDataBlock.OwnerID));
487 QueryDataMap.Add("SimName", OSD.FromBinary(groupDataBlock.SimName)); 487 QueryDataMap.Add("SimName", OSD.FromBinary(groupDataBlock.SimName));
488 QueryDataMap.Add("SnapShotID", OSD.FromUUID(groupDataBlock.SnapshotID)); 488 QueryDataMap.Add("SnapShotID", OSD.FromUUID(groupDataBlock.SnapshotID));
489 QueryDataMap.Add("ProductSku", OSD.FromInteger(0)); 489 QueryDataMap.Add("ProductSku", OSD.FromInteger(0));
490 QueryDataMap.Add("Price", OSD.FromInteger(groupDataBlock.Price)); 490 QueryDataMap.Add("Price", OSD.FromInteger(groupDataBlock.Price));
491 491
492 QueryData.Add(QueryDataMap); 492 QueryData.Add(QueryDataMap);
493 } 493 }
494 body.Add("QueryData", QueryData); 494 body.Add("QueryData", QueryData);
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
index af72968..52add23 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
@@ -104,7 +104,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
104 List<string> serialisedParcels = new List<string>(); 104 List<string> serialisedParcels = new List<string>();
105 string filePath = "NONE"; 105 string filePath = "NONE";
106 106
107 TarArchiveReader archive = new TarArchiveReader(m_loadStream); 107 TarArchiveReader archive = new TarArchiveReader(m_loadStream);
108 byte[] data; 108 byte[] data;
109 TarArchiveReader.TarEntryType entryType; 109 TarArchiveReader.TarEntryType entryType;
110 110
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs
index 75c4557..9fc6ec4 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs
@@ -91,7 +91,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
91 91
92 m_log.InfoFormat("[ARCHIVER]: Finished writing out OAR for {0}", m_scene.RegionInfo.RegionName); 92 m_log.InfoFormat("[ARCHIVER]: Finished writing out OAR for {0}", m_scene.RegionInfo.RegionName);
93 93
94 m_scene.EventManager.TriggerOarFileSaved(m_requestId, String.Empty); 94 m_scene.EventManager.TriggerOarFileSaved(m_requestId, String.Empty);
95 } 95 }
96 96
97 protected internal void Save(ICollection<UUID> assetsFoundUuids, ICollection<UUID> assetsNotFoundUuids) 97 protected internal void Save(ICollection<UUID> assetsFoundUuids, ICollection<UUID> assetsNotFoundUuids)
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs
index 27763bb..fc8d4e1 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs
@@ -50,7 +50,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
50 /// <value> 50 /// <value>
51 /// The file used to load and save an opensimulator archive if no filename has been specified 51 /// The file used to load and save an opensimulator archive if no filename has been specified
52 /// </value> 52 /// </value>
53 protected const string DEFAULT_OAR_BACKUP_FILENAME = "region.oar"; 53 protected const string DEFAULT_OAR_BACKUP_FILENAME = "region.oar";
54 54
55 public string Name 55 public string Name
56 { 56 {
@@ -111,7 +111,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
111 { 111 {
112 DearchiveRegion(DEFAULT_OAR_BACKUP_FILENAME, mergeOar, Guid.Empty); 112 DearchiveRegion(DEFAULT_OAR_BACKUP_FILENAME, mergeOar, Guid.Empty);
113 } 113 }
114 } 114 }
115 115
116 /// <summary> 116 /// <summary>
117 /// Save a region to a file, including all the assets needed to restore it. 117 /// Save a region to a file, including all the assets needed to restore it.
diff --git a/OpenSim/Region/CoreModules/World/Land/LandChannel.cs b/OpenSim/Region/CoreModules/World/Land/LandChannel.cs
index 81024db..1fbc733 100644
--- a/OpenSim/Region/CoreModules/World/Land/LandChannel.cs
+++ b/OpenSim/Region/CoreModules/World/Land/LandChannel.cs
@@ -105,7 +105,7 @@ namespace OpenSim.Region.CoreModules.World.Land
105 ILandObject obj = new LandObject(UUID.Zero, false, m_scene); 105 ILandObject obj = new LandObject(UUID.Zero, false, m_scene);
106 obj.LandData.Name = "NO LAND"; 106 obj.LandData.Name = "NO LAND";
107 return obj; 107 return obj;
108 } 108 }
109 109
110 public List<ILandObject> AllParcels() 110 public List<ILandObject> AllParcels()
111 { 111 {
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
index 9a2ef50..9b39b09 100644
--- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
@@ -627,7 +627,7 @@ namespace OpenSim.Region.CoreModules.World.Land
627 return null; 627 return null;
628 } 628 }
629 } 629 }
630 } 630 }
631 631
632 #endregion 632 #endregion
633 633
diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
index 91c0a53..ae3dc2e 100644
--- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
+++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
@@ -817,7 +817,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions
817 } 817 }
818 818
819 protected bool GenericParcelOwnerPermission(UUID user, ILandObject parcel, ulong groupPowers) 819 protected bool GenericParcelOwnerPermission(UUID user, ILandObject parcel, ulong groupPowers)
820 { 820 {
821 if (parcel.LandData.OwnerID == user) 821 if (parcel.LandData.OwnerID == user)
822 { 822 {
823 // Returning immediately so that group deeded objects on group deeded land don't trigger a NRE on 823 // Returning immediately so that group deeded objects on group deeded land don't trigger a NRE on
diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs
index 086103b..27fad61 100644
--- a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs
+++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs
@@ -275,24 +275,24 @@ namespace OpenSim.Region.Examples.SimpleModule
275 public event PlacesQuery OnPlacesQuery; 275 public event PlacesQuery OnPlacesQuery;
276 276
277 public event FindAgentUpdate OnFindAgentEvent; 277 public event FindAgentUpdate OnFindAgentEvent;
278 public event TrackAgentUpdate OnTrackAgentEvent; 278 public event TrackAgentUpdate OnTrackAgentEvent;
279 public event NewUserReport OnUserReportEvent; 279 public event NewUserReport OnUserReportEvent;
280 public event SaveStateHandler OnSaveStateEvent; 280 public event SaveStateHandler OnSaveStateEvent;
281 public event GroupAccountSummaryRequest OnGroupAccountSummaryRequest; 281 public event GroupAccountSummaryRequest OnGroupAccountSummaryRequest;
282 public event GroupAccountDetailsRequest OnGroupAccountDetailsRequest; 282 public event GroupAccountDetailsRequest OnGroupAccountDetailsRequest;
283 public event GroupAccountTransactionsRequest OnGroupAccountTransactionsRequest; 283 public event GroupAccountTransactionsRequest OnGroupAccountTransactionsRequest;
284 public event FreezeUserUpdate OnParcelFreezeUserEvent; 284 public event FreezeUserUpdate OnParcelFreezeUserEvent;
285 public event EjectUserUpdate OnParcelEjectUserEvent; 285 public event EjectUserUpdate OnParcelEjectUserEvent;
286 public event ParcelBuyPass OnParcelBuyPass; 286 public event ParcelBuyPass OnParcelBuyPass;
287 public event ParcelGodMark OnParcelGodMark; 287 public event ParcelGodMark OnParcelGodMark;
288 public event GroupActiveProposalsRequest OnGroupActiveProposalsRequest; 288 public event GroupActiveProposalsRequest OnGroupActiveProposalsRequest;
289 public event GroupVoteHistoryRequest OnGroupVoteHistoryRequest; 289 public event GroupVoteHistoryRequest OnGroupVoteHistoryRequest;
290 public event SimWideDeletesDelegate OnSimWideDeletes; 290 public event SimWideDeletesDelegate OnSimWideDeletes;
291 public event SendPostcard OnSendPostcard; 291 public event SendPostcard OnSendPostcard;
292 public event MuteListEntryUpdate OnUpdateMuteListEntryEvent; 292 public event MuteListEntryUpdate OnUpdateMuteListEntryEvent;
293 public event MuteListEntryRemove OnRemoveMuteListEntryEvent; 293 public event MuteListEntryRemove OnRemoveMuteListEntryEvent;
294 public event GodlikeMessage onGodlikeMessageEvent; 294 public event GodlikeMessage onGodlikeMessageEvent;
295 public event GodUpdateRegionInfoUpdate OnGodUpdateRegionInfoUpdateEvent; 295 public event GodUpdateRegionInfoUpdate OnGodUpdateRegionInfoUpdateEvent;
296 296
297#pragma warning restore 67 297#pragma warning restore 67
298 298
diff --git a/OpenSim/Region/Framework/Interfaces/ILandChannel.cs b/OpenSim/Region/Framework/Interfaces/ILandChannel.cs
index 6fe6118..f71e31d 100644
--- a/OpenSim/Region/Framework/Interfaces/ILandChannel.cs
+++ b/OpenSim/Region/Framework/Interfaces/ILandChannel.cs
@@ -60,7 +60,7 @@ namespace OpenSim.Region.Framework.Interfaces
60 /// </summary> 60 /// </summary>
61 /// <param name="position"></param> 61 /// <param name="position"></param>
62 /// <returns></returns> 62 /// <returns></returns>
63 List<ILandObject> ParcelsNearPoint(Vector3 position); 63 List<ILandObject> ParcelsNearPoint(Vector3 position);
64 64
65 /// <summary> 65 /// <summary>
66 /// Get the parcel given the land's local id. 66 /// Get the parcel given the land's local id.
diff --git a/OpenSim/Region/Framework/Interfaces/IRegionArchiverModule.cs b/OpenSim/Region/Framework/Interfaces/IRegionArchiverModule.cs
index 1a8babc..991d60c 100644
--- a/OpenSim/Region/Framework/Interfaces/IRegionArchiverModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IRegionArchiverModule.cs
@@ -34,7 +34,7 @@ namespace OpenSim.Region.Framework.Interfaces
34 /// Interface to region archive functionality 34 /// Interface to region archive functionality
35 /// </summary> 35 /// </summary>
36 public interface IRegionArchiverModule 36 public interface IRegionArchiverModule
37 { 37 {
38 void HandleLoadOarConsoleCommand(string module, string[] cmdparams); 38 void HandleLoadOarConsoleCommand(string module, string[] cmdparams);
39 void HandleSaveOarConsoleCommand(string module, string[] cmdparams); 39 void HandleSaveOarConsoleCommand(string module, string[] cmdparams);
40 40
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index f322af3..a14c853 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -2054,6 +2054,13 @@ namespace OpenSim.Region.Framework.Scenes
2054 group.Children.Count, remoteClient.AgentId, pos) 2054 group.Children.Count, remoteClient.AgentId, pos)
2055 && !attachment) 2055 && !attachment)
2056 { 2056 {
2057 // The client operates in no fail mode. It will
2058 // have already removed the item from the folder
2059 // if it's no copy.
2060 // Put it back if it's not an attachment
2061 //
2062 if (((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) && (!attachment))
2063 remoteClient.SendBulkUpdateInventory(item);
2057 return null; 2064 return null;
2058 } 2065 }
2059 2066
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index ae189b5..20c0622 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -400,11 +400,11 @@ namespace OpenSim.Region.Framework.Scenes
400 { 400 {
401 get { return StatsReporter.getLastReportedSimFPS(); } 401 get { return StatsReporter.getLastReportedSimFPS(); }
402 } 402 }
403 403
404 public float[] SimulatorStats 404 public float[] SimulatorStats
405 { 405 {
406 get { return StatsReporter.getLastReportedSimStats(); } 406 get { return StatsReporter.getLastReportedSimStats(); }
407 } 407 }
408 408
409 public string DefaultScriptEngine 409 public string DefaultScriptEngine
410 { 410 {
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index b50def3..22a8ca1 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -1893,11 +1893,11 @@ namespace OpenSim.Region.Framework.Scenes
1893 string data = ""; 1893 string data = "";
1894 if (obj != null) 1894 if (obj != null)
1895 { 1895 {
1896 if(m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name)) 1896 if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name))
1897 { 1897 {
1898 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); 1898 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
1899 //If it is 1, it is to accept ONLY collisions from this object 1899 //If it is 1, it is to accept ONLY collisions from this object
1900 if(found) 1900 if (found)
1901 { 1901 {
1902 DetectedObject detobj = new DetectedObject(); 1902 DetectedObject detobj = new DetectedObject();
1903 detobj.keyUUID = obj.UUID; 1903 detobj.keyUUID = obj.UUID;
@@ -1919,7 +1919,7 @@ namespace OpenSim.Region.Framework.Scenes
1919 { 1919 {
1920 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); 1920 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
1921 //If it is 1, it is to accept ONLY collisions from this object, so this other object will not work 1921 //If it is 1, it is to accept ONLY collisions from this object, so this other object will not work
1922 if(found) 1922 if (found)
1923 { 1923 {
1924 DetectedObject detobj = new DetectedObject(); 1924 DetectedObject detobj = new DetectedObject();
1925 detobj.keyUUID = obj.UUID; 1925 detobj.keyUUID = obj.UUID;
@@ -1944,11 +1944,11 @@ namespace OpenSim.Region.Framework.Scenes
1944 1944
1945 if (av.LocalId == localId) 1945 if (av.LocalId == localId)
1946 { 1946 {
1947 if(m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name)) 1947 if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name))
1948 { 1948 {
1949 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); 1949 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
1950 //If it is 1, it is to accept ONLY collisions from this avatar 1950 //If it is 1, it is to accept ONLY collisions from this avatar
1951 if(found) 1951 if (found)
1952 { 1952 {
1953 DetectedObject detobj = new DetectedObject(); 1953 DetectedObject detobj = new DetectedObject();
1954 detobj.keyUUID = av.UUID; 1954 detobj.keyUUID = av.UUID;
@@ -1970,7 +1970,7 @@ namespace OpenSim.Region.Framework.Scenes
1970 { 1970 {
1971 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); 1971 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
1972 //If it is 1, it is to accept ONLY collisions from this avatar, so this other avatar will not work 1972 //If it is 1, it is to accept ONLY collisions from this avatar, so this other avatar will not work
1973 if(found) 1973 if (found)
1974 { 1974 {
1975 DetectedObject detobj = new DetectedObject(); 1975 DetectedObject detobj = new DetectedObject();
1976 detobj.keyUUID = av.UUID; 1976 detobj.keyUUID = av.UUID;
@@ -1998,7 +1998,7 @@ namespace OpenSim.Region.Framework.Scenes
1998 1998
1999 if (m_parentGroup.Scene == null) 1999 if (m_parentGroup.Scene == null)
2000 return; 2000 return;
2001 if(m_parentGroup.PassCollision == true) 2001 if (m_parentGroup.PassCollision == true)
2002 { 2002 {
2003 //TODO: Add pass to root prim! 2003 //TODO: Add pass to root prim!
2004 } 2004 }
@@ -2029,11 +2029,11 @@ namespace OpenSim.Region.Framework.Scenes
2029 string data = ""; 2029 string data = "";
2030 if (obj != null) 2030 if (obj != null)
2031 { 2031 {
2032 if(m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name)) 2032 if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name))
2033 { 2033 {
2034 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); 2034 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
2035 //If it is 1, it is to accept ONLY collisions from this object 2035 //If it is 1, it is to accept ONLY collisions from this object
2036 if(found) 2036 if (found)
2037 { 2037 {
2038 DetectedObject detobj = new DetectedObject(); 2038 DetectedObject detobj = new DetectedObject();
2039 detobj.keyUUID = obj.UUID; 2039 detobj.keyUUID = obj.UUID;
@@ -2055,7 +2055,7 @@ namespace OpenSim.Region.Framework.Scenes
2055 { 2055 {
2056 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); 2056 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
2057 //If it is 1, it is to accept ONLY collisions from this object, so this other object will not work 2057 //If it is 1, it is to accept ONLY collisions from this object, so this other object will not work
2058 if(found) 2058 if (found)
2059 { 2059 {
2060 DetectedObject detobj = new DetectedObject(); 2060 DetectedObject detobj = new DetectedObject();
2061 detobj.keyUUID = obj.UUID; 2061 detobj.keyUUID = obj.UUID;
@@ -2080,11 +2080,11 @@ namespace OpenSim.Region.Framework.Scenes
2080 2080
2081 if (av.LocalId == localId) 2081 if (av.LocalId == localId)
2082 { 2082 {
2083 if(m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name)) 2083 if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name))
2084 { 2084 {
2085 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); 2085 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
2086 //If it is 1, it is to accept ONLY collisions from this avatar 2086 //If it is 1, it is to accept ONLY collisions from this avatar
2087 if(found) 2087 if (found)
2088 { 2088 {
2089 DetectedObject detobj = new DetectedObject(); 2089 DetectedObject detobj = new DetectedObject();
2090 detobj.keyUUID = av.UUID; 2090 detobj.keyUUID = av.UUID;
@@ -2106,7 +2106,7 @@ namespace OpenSim.Region.Framework.Scenes
2106 { 2106 {
2107 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); 2107 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
2108 //If it is 1, it is to accept ONLY collisions from this avatar, so this other avatar will not work 2108 //If it is 1, it is to accept ONLY collisions from this avatar, so this other avatar will not work
2109 if(found) 2109 if (found)
2110 { 2110 {
2111 DetectedObject detobj = new DetectedObject(); 2111 DetectedObject detobj = new DetectedObject();
2112 detobj.keyUUID = av.UUID; 2112 detobj.keyUUID = av.UUID;
@@ -2160,11 +2160,11 @@ namespace OpenSim.Region.Framework.Scenes
2160 string data = ""; 2160 string data = "";
2161 if (obj != null) 2161 if (obj != null)
2162 { 2162 {
2163 if(m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name)) 2163 if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name))
2164 { 2164 {
2165 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); 2165 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
2166 //If it is 1, it is to accept ONLY collisions from this object 2166 //If it is 1, it is to accept ONLY collisions from this object
2167 if(found) 2167 if (found)
2168 { 2168 {
2169 DetectedObject detobj = new DetectedObject(); 2169 DetectedObject detobj = new DetectedObject();
2170 detobj.keyUUID = obj.UUID; 2170 detobj.keyUUID = obj.UUID;
@@ -2186,7 +2186,7 @@ namespace OpenSim.Region.Framework.Scenes
2186 { 2186 {
2187 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); 2187 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
2188 //If it is 1, it is to accept ONLY collisions from this object, so this other object will not work 2188 //If it is 1, it is to accept ONLY collisions from this object, so this other object will not work
2189 if(found) 2189 if (found)
2190 { 2190 {
2191 DetectedObject detobj = new DetectedObject(); 2191 DetectedObject detobj = new DetectedObject();
2192 detobj.keyUUID = obj.UUID; 2192 detobj.keyUUID = obj.UUID;
@@ -2211,11 +2211,11 @@ namespace OpenSim.Region.Framework.Scenes
2211 2211
2212 if (av.LocalId == localId) 2212 if (av.LocalId == localId)
2213 { 2213 {
2214 if(m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name)) 2214 if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name))
2215 { 2215 {
2216 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); 2216 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
2217 //If it is 1, it is to accept ONLY collisions from this avatar 2217 //If it is 1, it is to accept ONLY collisions from this avatar
2218 if(found) 2218 if (found)
2219 { 2219 {
2220 DetectedObject detobj = new DetectedObject(); 2220 DetectedObject detobj = new DetectedObject();
2221 detobj.keyUUID = av.UUID; 2221 detobj.keyUUID = av.UUID;
@@ -2237,7 +2237,7 @@ namespace OpenSim.Region.Framework.Scenes
2237 { 2237 {
2238 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); 2238 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
2239 //If it is 1, it is to accept ONLY collisions from this avatar, so this other avatar will not work 2239 //If it is 1, it is to accept ONLY collisions from this avatar, so this other avatar will not work
2240 if(found) 2240 if (found)
2241 { 2241 {
2242 DetectedObject detobj = new DetectedObject(); 2242 DetectedObject detobj = new DetectedObject();
2243 detobj.keyUUID = av.UUID; 2243 detobj.keyUUID = av.UUID;
@@ -2881,8 +2881,8 @@ namespace OpenSim.Region.Framework.Scenes
2881 { 2881 {
2882 m_parentGroup.stopLookAt(); 2882 m_parentGroup.stopLookAt();
2883 2883
2884 m_parentGroup.ScheduleGroupForTerseUpdate(); 2884 m_parentGroup.ScheduleGroupForTerseUpdate();
2885 } 2885 }
2886 2886
2887 /// <summary> 2887 /// <summary>
2888 /// Set the text displayed for this part. 2888 /// Set the text displayed for this part.
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 277081a..8545425 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -1851,7 +1851,7 @@ namespace OpenSim.Region.Framework.Scenes
1851 if (collisionPoint.ApproxEquals(m_requestedSitOffset + part.AbsolutePosition, 0.2f)) 1851 if (collisionPoint.ApproxEquals(m_requestedSitOffset + part.AbsolutePosition, 0.2f))
1852 { 1852 {
1853 SitRaycastFindEdge(collisionPoint, normal); 1853 SitRaycastFindEdge(collisionPoint, normal);
1854 m_log.DebugFormat("[SIT]: Raycast Avatar Position succeeded at point: {0}, normal:{1}", collisionPoint, normal ); 1854 m_log.DebugFormat("[SIT]: Raycast Avatar Position succeeded at point: {0}, normal:{1}", collisionPoint, normal);
1855 } 1855 }
1856 else 1856 else
1857 { 1857 {
diff --git a/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs b/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs
index e368c2a..fd23294 100644
--- a/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs
+++ b/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs
@@ -82,7 +82,7 @@ namespace OpenSim.Region.Framework.Scenes
82 private int m_fps = 0; 82 private int m_fps = 0;
83 // saved last reported value so there is something available for llGetRegionFPS 83 // saved last reported value so there is something available for llGetRegionFPS
84 private float lastReportedSimFPS = 0; 84 private float lastReportedSimFPS = 0;
85 private float[] lastReportedSimStats = new float[21]; 85 private float[] lastReportedSimStats = new float[21];
86 private float m_pfps = 0; 86 private float m_pfps = 0;
87 private int m_agentUpdates = 0; 87 private int m_agentUpdates = 0;
88 88
@@ -263,11 +263,11 @@ namespace OpenSim.Region.Framework.Scenes
263 263
264 sb[20].StatID = (uint)Stats.ScriptLinesPerSecond; 264 sb[20].StatID = (uint)Stats.ScriptLinesPerSecond;
265 sb[20].StatValue = m_scriptLinesPerSecond / statsUpdateFactor; 265 sb[20].StatValue = m_scriptLinesPerSecond / statsUpdateFactor;
266 266
267 for (int i = 0; i < 21; i++) 267 for (int i = 0; i < 21; i++)
268 { 268 {
269 lastReportedSimStats[i] = sb[i].StatValue; 269 lastReportedSimStats[i] = sb[i].StatValue;
270 } 270 }
271 271
272 SimStats simStats 272 SimStats simStats
273 = new SimStats( 273 = new SimStats(
@@ -447,11 +447,11 @@ namespace OpenSim.Region.Framework.Scenes
447 { 447 {
448 return lastReportedSimFPS; 448 return lastReportedSimFPS;
449 } 449 }
450 450
451 public float[] getLastReportedSimStats() 451 public float[] getLastReportedSimStats()
452 { 452 {
453 return lastReportedSimStats; 453 return lastReportedSimStats;
454 } 454 }
455 455
456 public void AddPacketsStats(int inPackets, int outPackets, int unAckedBytes) 456 public void AddPacketsStats(int inPackets, int outPackets, int unAckedBytes)
457 { 457 {
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
index 6c2b94a..5d97a12 100644
--- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
@@ -837,24 +837,24 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
837 public event AvatarInterestUpdate OnAvatarInterestUpdate; 837 public event AvatarInterestUpdate OnAvatarInterestUpdate;
838 public event PlacesQuery OnPlacesQuery; 838 public event PlacesQuery OnPlacesQuery;
839 public event FindAgentUpdate OnFindAgentEvent; 839 public event FindAgentUpdate OnFindAgentEvent;
840 public event TrackAgentUpdate OnTrackAgentEvent; 840 public event TrackAgentUpdate OnTrackAgentEvent;
841 public event NewUserReport OnUserReportEvent; 841 public event NewUserReport OnUserReportEvent;
842 public event SaveStateHandler OnSaveStateEvent; 842 public event SaveStateHandler OnSaveStateEvent;
843 public event GroupAccountSummaryRequest OnGroupAccountSummaryRequest; 843 public event GroupAccountSummaryRequest OnGroupAccountSummaryRequest;
844 public event GroupAccountDetailsRequest OnGroupAccountDetailsRequest; 844 public event GroupAccountDetailsRequest OnGroupAccountDetailsRequest;
845 public event GroupAccountTransactionsRequest OnGroupAccountTransactionsRequest; 845 public event GroupAccountTransactionsRequest OnGroupAccountTransactionsRequest;
846 public event FreezeUserUpdate OnParcelFreezeUserEvent; 846 public event FreezeUserUpdate OnParcelFreezeUserEvent;
847 public event EjectUserUpdate OnParcelEjectUserEvent; 847 public event EjectUserUpdate OnParcelEjectUserEvent;
848 public event ParcelBuyPass OnParcelBuyPass; 848 public event ParcelBuyPass OnParcelBuyPass;
849 public event ParcelGodMark OnParcelGodMark; 849 public event ParcelGodMark OnParcelGodMark;
850 public event GroupActiveProposalsRequest OnGroupActiveProposalsRequest; 850 public event GroupActiveProposalsRequest OnGroupActiveProposalsRequest;
851 public event GroupVoteHistoryRequest OnGroupVoteHistoryRequest; 851 public event GroupVoteHistoryRequest OnGroupVoteHistoryRequest;
852 public event SimWideDeletesDelegate OnSimWideDeletes; 852 public event SimWideDeletesDelegate OnSimWideDeletes;
853 public event SendPostcard OnSendPostcard; 853 public event SendPostcard OnSendPostcard;
854 public event MuteListEntryUpdate OnUpdateMuteListEntryEvent; 854 public event MuteListEntryUpdate OnUpdateMuteListEntryEvent;
855 public event MuteListEntryRemove OnRemoveMuteListEntryEvent; 855 public event MuteListEntryRemove OnRemoveMuteListEntryEvent;
856 public event GodlikeMessage onGodlikeMessageEvent; 856 public event GodlikeMessage onGodlikeMessageEvent;
857 public event GodUpdateRegionInfoUpdate OnGodUpdateRegionInfoUpdateEvent; 857 public event GodUpdateRegionInfoUpdate OnGodUpdateRegionInfoUpdateEvent;
858 858
859#pragma warning restore 67 859#pragma warning restore 67
860 860
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs
index 9d64667..30580e7 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs
@@ -179,8 +179,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
179 /// </summary> 179 /// </summary>
180 /// <param name="msg">The message to send to the user</param> 180 /// <param name="msg">The message to send to the user</param>
181 void Say(string msg); 181 void Say(string msg);
182 182
183 void Say(string msg,int channel); 183 void Say(string msg,int channel);
184 184
185 //// <value> 185 //// <value>
186 /// Grants access to the objects inventory 186 /// Grants access to the objects inventory
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs
index 9596d13..31f28e0 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs
@@ -264,7 +264,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
264 if (CanEdit()) 264 if (CanEdit())
265 { 265 {
266 GetSOP().SitTargetPosition = value; 266 GetSOP().SitTargetPosition = value;
267 } 267 }
268 } 268 }
269 } 269 }
270 270
@@ -276,7 +276,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
276 if (CanEdit()) 276 if (CanEdit())
277 { 277 {
278 GetSOP().SitName = value; 278 GetSOP().SitName = value;
279 } 279 }
280 } 280 }
281 } 281 }
282 282
@@ -288,7 +288,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
288 if (CanEdit()) 288 if (CanEdit())
289 { 289 {
290 GetSOP().TouchName = value; 290 GetSOP().TouchName = value;
291 } 291 }
292 } 292 }
293 } 293 }
294 294
@@ -384,7 +384,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
384 m_rootScene.SimChat(msg, ChatTypeEnum.Say, sop.AbsolutePosition, sop.Name, sop.UUID, false); 384 m_rootScene.SimChat(msg, ChatTypeEnum.Say, sop.AbsolutePosition, sop.Name, sop.UUID, false);
385 } 385 }
386 386
387 public void Say(string msg,int channel) 387 public void Say(string msg,int channel)
388 { 388 {
389 if (!CanEdit()) 389 if (!CanEdit())
390 return; 390 return;
@@ -392,7 +392,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
392 SceneObjectPart sop = GetSOP(); 392 SceneObjectPart sop = GetSOP();
393 m_rootScene.SimChat(Utils.StringToBytes(msg), ChatTypeEnum.Say,channel, sop.AbsolutePosition, sop.Name, sop.UUID, false); 393 m_rootScene.SimChat(Utils.StringToBytes(msg), ChatTypeEnum.Say,channel, sop.AbsolutePosition, sop.Name, sop.UUID, false);
394 } 394 }
395 395
396 #endregion 396 #endregion
397 397
398 398
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/World.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/World.cs
index 82020cb..c7cd37b 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/World.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/World.cs
@@ -149,7 +149,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
149 e.Sender = new SOPObject(m_internalScene, ((SceneObjectPart) chat.SenderObject).LocalId, m_security); 149 e.Sender = new SOPObject(m_internalScene, ((SceneObjectPart) chat.SenderObject).LocalId, m_security);
150 e.Text = chat.Message; 150 e.Text = chat.Message;
151 e.Channel = chat.Channel; 151 e.Channel = chat.Channel;
152 152
153 _OnChat(this, e); 153 _OnChat(this, e);
154 return; 154 return;
155 } 155 }
@@ -160,7 +160,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
160 e.Sender = new SPAvatar(m_internalScene, chat.SenderUUID, m_security); 160 e.Sender = new SPAvatar(m_internalScene, chat.SenderUUID, m_security);
161 e.Text = chat.Message; 161 e.Text = chat.Message;
162 e.Channel = chat.Channel; 162 e.Channel = chat.Channel;
163 163
164 _OnChat(this, e); 164 _OnChat(this, e);
165 return; 165 return;
166 } 166 }
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
index da7f018..e3392c8 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
@@ -381,24 +381,24 @@ namespace OpenSim.Region.OptionalModules.World.NPC
381 public event PlacesQuery OnPlacesQuery; 381 public event PlacesQuery OnPlacesQuery;
382 382
383 public event FindAgentUpdate OnFindAgentEvent; 383 public event FindAgentUpdate OnFindAgentEvent;
384 public event TrackAgentUpdate OnTrackAgentEvent; 384 public event TrackAgentUpdate OnTrackAgentEvent;
385 public event NewUserReport OnUserReportEvent; 385 public event NewUserReport OnUserReportEvent;
386 public event SaveStateHandler OnSaveStateEvent; 386 public event SaveStateHandler OnSaveStateEvent;
387 public event GroupAccountSummaryRequest OnGroupAccountSummaryRequest; 387 public event GroupAccountSummaryRequest OnGroupAccountSummaryRequest;
388 public event GroupAccountDetailsRequest OnGroupAccountDetailsRequest; 388 public event GroupAccountDetailsRequest OnGroupAccountDetailsRequest;
389 public event GroupAccountTransactionsRequest OnGroupAccountTransactionsRequest; 389 public event GroupAccountTransactionsRequest OnGroupAccountTransactionsRequest;
390 public event FreezeUserUpdate OnParcelFreezeUserEvent; 390 public event FreezeUserUpdate OnParcelFreezeUserEvent;
391 public event EjectUserUpdate OnParcelEjectUserEvent; 391 public event EjectUserUpdate OnParcelEjectUserEvent;
392 public event ParcelBuyPass OnParcelBuyPass; 392 public event ParcelBuyPass OnParcelBuyPass;
393 public event ParcelGodMark OnParcelGodMark; 393 public event ParcelGodMark OnParcelGodMark;
394 public event GroupActiveProposalsRequest OnGroupActiveProposalsRequest; 394 public event GroupActiveProposalsRequest OnGroupActiveProposalsRequest;
395 public event GroupVoteHistoryRequest OnGroupVoteHistoryRequest; 395 public event GroupVoteHistoryRequest OnGroupVoteHistoryRequest;
396 public event SimWideDeletesDelegate OnSimWideDeletes; 396 public event SimWideDeletesDelegate OnSimWideDeletes;
397 public event SendPostcard OnSendPostcard; 397 public event SendPostcard OnSendPostcard;
398 public event MuteListEntryUpdate OnUpdateMuteListEntryEvent; 398 public event MuteListEntryUpdate OnUpdateMuteListEntryEvent;
399 public event MuteListEntryRemove OnRemoveMuteListEntryEvent; 399 public event MuteListEntryRemove OnRemoveMuteListEntryEvent;
400 public event GodlikeMessage onGodlikeMessageEvent; 400 public event GodlikeMessage onGodlikeMessageEvent;
401 public event GodUpdateRegionInfoUpdate OnGodUpdateRegionInfoUpdateEvent; 401 public event GodUpdateRegionInfoUpdate OnGodUpdateRegionInfoUpdateEvent;
402 402
403#pragma warning restore 67 403#pragma warning restore 67
404 404
diff --git a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsActor.cs b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsActor.cs
index f411dd7..31366db 100644
--- a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsActor.cs
+++ b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsActor.cs
@@ -305,22 +305,22 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin
305 305
306 public override Quaternion APIDTarget 306 public override Quaternion APIDTarget
307 { 307 {
308 set { return; } 308 set { return; }
309 } 309 }
310 310
311 public override bool APIDActive 311 public override bool APIDActive
312 { 312 {
313 set { return; } 313 set { return; }
314 } 314 }
315 315
316 public override float APIDStrength 316 public override float APIDStrength
317 { 317 {
318 set { return; } 318 set { return; }
319 } 319 }
320 320
321 public override float APIDDamping 321 public override float APIDDamping
322 { 322 {
323 set { return; } 323 set { return; }
324 } 324 }
325 325
326 public override void SubscribeEvents(int ms) 326 public override void SubscribeEvents(int ms)
diff --git a/OpenSim/Region/Physics/BulletDotNETPlugin/BulletDotNETCharacter.cs b/OpenSim/Region/Physics/BulletDotNETPlugin/BulletDotNETCharacter.cs
index 02328b5..97eb6a2 100644
--- a/OpenSim/Region/Physics/BulletDotNETPlugin/BulletDotNETCharacter.cs
+++ b/OpenSim/Region/Physics/BulletDotNETPlugin/BulletDotNETCharacter.cs
@@ -623,22 +623,22 @@ namespace OpenSim.Region.Physics.BulletDotNETPlugin
623 623
624 public override Quaternion APIDTarget 624 public override Quaternion APIDTarget
625 { 625 {
626 set { return; } 626 set { return; }
627 } 627 }
628 628
629 public override bool APIDActive 629 public override bool APIDActive
630 { 630 {
631 set { return; } 631 set { return; }
632 } 632 }
633 633
634 public override float APIDStrength 634 public override float APIDStrength
635 { 635 {
636 set { return; } 636 set { return; }
637 } 637 }
638 638
639 public override float APIDDamping 639 public override float APIDDamping
640 { 640 {
641 set { return; } 641 set { return; }
642 } 642 }
643 643
644 /// <summary> 644 /// <summary>
diff --git a/OpenSim/Region/Physics/Manager/PhysicsActor.cs b/OpenSim/Region/Physics/Manager/PhysicsActor.cs
index 10b153d..9c192ed 100644
--- a/OpenSim/Region/Physics/Manager/PhysicsActor.cs
+++ b/OpenSim/Region/Physics/Manager/PhysicsActor.cs
@@ -243,7 +243,7 @@ namespace OpenSim.Region.Physics.Manager
243 public abstract PIDHoverType PIDHoverType { set;} 243 public abstract PIDHoverType PIDHoverType { set;}
244 public abstract float PIDHoverTau { set;} 244 public abstract float PIDHoverTau { set;}
245 245
246 // For RotLookAt 246 // For RotLookAt
247 public abstract Quaternion APIDTarget { set;} 247 public abstract Quaternion APIDTarget { set;}
248 public abstract bool APIDActive { set;} 248 public abstract bool APIDActive { set;}
249 public abstract float APIDStrength { set;} 249 public abstract float APIDStrength { set;}
diff --git a/OpenSim/Region/Physics/OdePlugin/ODEDynamics.cs b/OpenSim/Region/Physics/OdePlugin/ODEDynamics.cs
index 39cdc0f..008070b 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODEDynamics.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODEDynamics.cs
@@ -32,11 +32,11 @@
32 * ODEDynamics.cs contains methods dealing with Prim Physical motion 32 * ODEDynamics.cs contains methods dealing with Prim Physical motion
33 * (dynamics) and the associated settings. Old Linear and angular 33 * (dynamics) and the associated settings. Old Linear and angular
34 * motors for dynamic motion have been replace with MoveLinear() 34 * motors for dynamic motion have been replace with MoveLinear()
35 * and MoveAngular(); 'Physical' is used only to switch ODE dynamic 35 * and MoveAngular(); 'Physical' is used only to switch ODE dynamic
36 * simualtion on/off; VEHICAL_TYPE_NONE/VEHICAL_TYPE_<other> is to 36 * simualtion on/off; VEHICAL_TYPE_NONE/VEHICAL_TYPE_<other> is to
37 * switch between 'VEHICLE' parameter use and general dynamics 37 * switch between 'VEHICLE' parameter use and general dynamics
38 * settings use. 38 * settings use.
39 */ 39 */
40 40
41using System; 41using System;
42using System.Collections.Generic; 42using System.Collections.Generic;
@@ -53,7 +53,7 @@ namespace OpenSim.Region.Physics.OdePlugin
53 public class ODEDynamics 53 public class ODEDynamics
54 { 54 {
55 public Vehicle Type 55 public Vehicle Type
56 { 56 {
57 get { return m_type; } 57 get { return m_type; }
58 } 58 }
59 59
@@ -62,14 +62,14 @@ namespace OpenSim.Region.Physics.OdePlugin
62 get { return m_body; } 62 get { return m_body; }
63 } 63 }
64 64
65 private int frcount = 0; // Used to limit dynamics debug output to 65 private int frcount = 0; // Used to limit dynamics debug output to
66 // every 100th frame 66 // every 100th frame
67 67
68 // private OdeScene m_parentScene = null; 68 // private OdeScene m_parentScene = null;
69 private IntPtr m_body = IntPtr.Zero; 69 private IntPtr m_body = IntPtr.Zero;
70// private IntPtr m_jointGroup = IntPtr.Zero; 70// private IntPtr m_jointGroup = IntPtr.Zero;
71// private IntPtr m_aMotor = IntPtr.Zero; 71// private IntPtr m_aMotor = IntPtr.Zero;
72 72
73 73
74 // Vehicle properties 74 // Vehicle properties
75 private Vehicle m_type = Vehicle.TYPE_NONE; // If a 'VEHICLE', and what kind 75 private Vehicle m_type = Vehicle.TYPE_NONE; // If a 'VEHICLE', and what kind
@@ -82,7 +82,7 @@ namespace OpenSim.Region.Physics.OdePlugin
82 // HOVER_UP_ONLY 82 // HOVER_UP_ONLY
83 // LIMIT_MOTOR_UP 83 // LIMIT_MOTOR_UP
84 // LIMIT_ROLL_ONLY 84 // LIMIT_ROLL_ONLY
85 85
86 // Linear properties 86 // Linear properties
87 private Vector3 m_linearMotorDirection = Vector3.Zero; // velocity requested by LSL, decayed by time 87 private Vector3 m_linearMotorDirection = Vector3.Zero; // velocity requested by LSL, decayed by time
88 private Vector3 m_linearMotorDirectionLASTSET = Vector3.Zero; // velocity requested by LSL 88 private Vector3 m_linearMotorDirectionLASTSET = Vector3.Zero; // velocity requested by LSL
@@ -91,47 +91,43 @@ namespace OpenSim.Region.Physics.OdePlugin
91 private float m_linearMotorDecayTimescale = 0; 91 private float m_linearMotorDecayTimescale = 0;
92 private float m_linearMotorTimescale = 0; 92 private float m_linearMotorTimescale = 0;
93 private Vector3 m_lastLinearVelocityVector = Vector3.Zero; 93 private Vector3 m_lastLinearVelocityVector = Vector3.Zero;
94 // private bool m_LinearMotorSetLastFrame = false; 94 // private bool m_LinearMotorSetLastFrame = false;
95 // private Vector3 m_linearMotorOffset = Vector3.Zero; 95 // private Vector3 m_linearMotorOffset = Vector3.Zero;
96 96
97 //Angular properties 97 //Angular properties
98 private Vector3 m_angularMotorDirection = Vector3.Zero; // angular velocity requested by LSL motor 98 private Vector3 m_angularMotorDirection = Vector3.Zero; // angular velocity requested by LSL motor
99 private int m_angularMotorApply = 0; // application frame counter 99 private int m_angularMotorApply = 0; // application frame counter
100 private Vector3 m_angularMotorVelocity = Vector3.Zero; // current angular motor velocity 100 private Vector3 m_angularMotorVelocity = Vector3.Zero; // current angular motor velocity
101 private float m_angularMotorTimescale = 0; // motor angular velocity ramp up rate 101 private float m_angularMotorTimescale = 0; // motor angular velocity ramp up rate
102 private float m_angularMotorDecayTimescale = 0; // motor angular velocity decay rate 102 private float m_angularMotorDecayTimescale = 0; // motor angular velocity decay rate
103 private Vector3 m_angularFrictionTimescale = Vector3.Zero; // body angular velocity decay rate 103 private Vector3 m_angularFrictionTimescale = Vector3.Zero; // body angular velocity decay rate
104 private Vector3 m_lastAngularVelocity = Vector3.Zero; // what was last applied to body 104 private Vector3 m_lastAngularVelocity = Vector3.Zero; // what was last applied to body
105 // private Vector3 m_lastVertAttractor = Vector3.Zero; // what VA was last applied to body 105 // private Vector3 m_lastVertAttractor = Vector3.Zero; // what VA was last applied to body
106 106
107 //Deflection properties 107 //Deflection properties
108 // private float m_angularDeflectionEfficiency = 0; 108 // private float m_angularDeflectionEfficiency = 0;
109 // private float m_angularDeflectionTimescale = 0; 109 // private float m_angularDeflectionTimescale = 0;
110 // private float m_linearDeflectionEfficiency = 0; 110 // private float m_linearDeflectionEfficiency = 0;
111 // private float m_linearDeflectionTimescale = 0; 111 // private float m_linearDeflectionTimescale = 0;
112 112
113 //Banking properties 113 //Banking properties
114 // private float m_bankingEfficiency = 0; 114 // private float m_bankingEfficiency = 0;
115 // private float m_bankingMix = 0; 115 // private float m_bankingMix = 0;
116 // private float m_bankingTimescale = 0; 116 // private float m_bankingTimescale = 0;
117 117
118 //Hover and Buoyancy properties 118 //Hover and Buoyancy properties
119 private float m_VhoverHeight = 0f; 119 private float m_VhoverHeight = 0f;
120// private float m_VhoverEfficiency = 0f; 120// private float m_VhoverEfficiency = 0f;
121 private float m_VhoverTimescale = 0f; 121 private float m_VhoverTimescale = 0f;
122 private float m_VhoverTargetHeight = -1.0f; // if <0 then no hover, else its the current target height 122 private float m_VhoverTargetHeight = -1.0f; // if <0 then no hover, else its the current target height
123 private float m_VehicleBuoyancy = 0f; //KF: m_VehicleBuoyancy is set by VEHICLE_BUOYANCY for a vehicle. 123 private float m_VehicleBuoyancy = 0f; //KF: m_VehicleBuoyancy is set by VEHICLE_BUOYANCY for a vehicle.
124 // Modifies gravity. Slider between -1 (double-gravity) and 1 (full anti-gravity) 124 // Modifies gravity. Slider between -1 (double-gravity) and 1 (full anti-gravity)
125 // KF: So far I have found no good method to combine a script-requested .Z velocity and gravity. 125 // KF: So far I have found no good method to combine a script-requested .Z velocity and gravity.
126 // Therefore only m_VehicleBuoyancy=1 (0g) will use the script-requested .Z velocity. 126 // Therefore only m_VehicleBuoyancy=1 (0g) will use the script-requested .Z velocity.
127 127
128 //Attractor properties 128 //Attractor properties
129 private float m_verticalAttractionEfficiency = 1.0f; // damped 129 private float m_verticalAttractionEfficiency = 1.0f; // damped
130 private float m_verticalAttractionTimescale = 500f; // Timescale > 300 means no vert attractor. 130 private float m_verticalAttractionTimescale = 500f; // Timescale > 300 means no vert attractor.
131
132
133
134
135 131
136 internal void ProcessFloatVehicleParam(Vehicle pParam, float pValue) 132 internal void ProcessFloatVehicleParam(Vehicle pParam, float pValue)
137 { 133 {
@@ -166,13 +162,13 @@ namespace OpenSim.Region.Physics.OdePlugin
166 // m_bankingTimescale = pValue; 162 // m_bankingTimescale = pValue;
167 break; 163 break;
168 case Vehicle.BUOYANCY: 164 case Vehicle.BUOYANCY:
169 if (pValue < -1f) pValue = -1f; 165 if (pValue < -1f) pValue = -1f;
170 if (pValue > 1f) pValue = 1f; 166 if (pValue > 1f) pValue = 1f;
171 m_VehicleBuoyancy = pValue; 167 m_VehicleBuoyancy = pValue;
172 break; 168 break;
173// case Vehicle.HOVER_EFFICIENCY: 169// case Vehicle.HOVER_EFFICIENCY:
174// if (pValue < 0f) pValue = 0f; 170// if (pValue < 0f) pValue = 0f;
175// if (pValue > 1f) pValue = 1f; 171// if (pValue > 1f) pValue = 1f;
176// m_VhoverEfficiency = pValue; 172// m_VhoverEfficiency = pValue;
177// break; 173// break;
178 case Vehicle.HOVER_HEIGHT: 174 case Vehicle.HOVER_HEIGHT:
@@ -199,7 +195,7 @@ namespace OpenSim.Region.Physics.OdePlugin
199 m_linearMotorTimescale = pValue; 195 m_linearMotorTimescale = pValue;
200 break; 196 break;
201 case Vehicle.VERTICAL_ATTRACTION_EFFICIENCY: 197 case Vehicle.VERTICAL_ATTRACTION_EFFICIENCY:
202 if (pValue < 0.1f) pValue = 0.1f; // Less goes unstable 198 if (pValue < 0.1f) pValue = 0.1f; // Less goes unstable
203 if (pValue > 1.0f) pValue = 1.0f; 199 if (pValue > 1.0f) pValue = 1.0f;
204 m_verticalAttractionEfficiency = pValue; 200 m_verticalAttractionEfficiency = pValue;
205 break; 201 break;
@@ -207,8 +203,8 @@ namespace OpenSim.Region.Physics.OdePlugin
207 if (pValue < 0.01f) pValue = 0.01f; 203 if (pValue < 0.01f) pValue = 0.01f;
208 m_verticalAttractionTimescale = pValue; 204 m_verticalAttractionTimescale = pValue;
209 break; 205 break;
210 206
211 // These are vector properties but the engine lets you use a single float value to 207 // These are vector properties but the engine lets you use a single float value to
212 // set all of the components to the same value 208 // set all of the components to the same value
213 case Vehicle.ANGULAR_FRICTION_TIMESCALE: 209 case Vehicle.ANGULAR_FRICTION_TIMESCALE:
214 m_angularFrictionTimescale = new Vector3(pValue, pValue, pValue); 210 m_angularFrictionTimescale = new Vector3(pValue, pValue, pValue);
@@ -229,7 +225,6 @@ namespace OpenSim.Region.Physics.OdePlugin
229 break; 225 break;
230 226
231 } 227 }
232
233 }//end ProcessFloatVehicleParam 228 }//end ProcessFloatVehicleParam
234 229
235 internal void ProcessVectorVehicleParam(Vehicle pParam, Vector3 pValue) 230 internal void ProcessVectorVehicleParam(Vehicle pParam, Vector3 pValue)
@@ -242,12 +237,12 @@ namespace OpenSim.Region.Physics.OdePlugin
242 case Vehicle.ANGULAR_MOTOR_DIRECTION: 237 case Vehicle.ANGULAR_MOTOR_DIRECTION:
243 m_angularMotorDirection = new Vector3(pValue.X, pValue.Y, pValue.Z); 238 m_angularMotorDirection = new Vector3(pValue.X, pValue.Y, pValue.Z);
244 // Limit requested angular speed to 2 rps= 4 pi rads/sec 239 // Limit requested angular speed to 2 rps= 4 pi rads/sec
245 if(m_angularMotorDirection.X > 12.56f) m_angularMotorDirection.X = 12.56f; 240 if (m_angularMotorDirection.X > 12.56f) m_angularMotorDirection.X = 12.56f;
246 if(m_angularMotorDirection.X < - 12.56f) m_angularMotorDirection.X = - 12.56f; 241 if (m_angularMotorDirection.X < - 12.56f) m_angularMotorDirection.X = - 12.56f;
247 if(m_angularMotorDirection.Y > 12.56f) m_angularMotorDirection.Y = 12.56f; 242 if (m_angularMotorDirection.Y > 12.56f) m_angularMotorDirection.Y = 12.56f;
248 if(m_angularMotorDirection.Y < - 12.56f) m_angularMotorDirection.Y = - 12.56f; 243 if (m_angularMotorDirection.Y < - 12.56f) m_angularMotorDirection.Y = - 12.56f;
249 if(m_angularMotorDirection.Z > 12.56f) m_angularMotorDirection.Z = 12.56f; 244 if (m_angularMotorDirection.Z > 12.56f) m_angularMotorDirection.Z = 12.56f;
250 if(m_angularMotorDirection.Z < - 12.56f) m_angularMotorDirection.Z = - 12.56f; 245 if (m_angularMotorDirection.Z < - 12.56f) m_angularMotorDirection.Z = - 12.56f;
251 m_angularMotorApply = 10; 246 m_angularMotorApply = 10;
252 break; 247 break;
253 case Vehicle.LINEAR_FRICTION_TIMESCALE: 248 case Vehicle.LINEAR_FRICTION_TIMESCALE:
@@ -261,7 +256,6 @@ namespace OpenSim.Region.Physics.OdePlugin
261 // m_linearMotorOffset = new Vector3(pValue.X, pValue.Y, pValue.Z); 256 // m_linearMotorOffset = new Vector3(pValue.X, pValue.Y, pValue.Z);
262 break; 257 break;
263 } 258 }
264
265 }//end ProcessVectorVehicleParam 259 }//end ProcessVectorVehicleParam
266 260
267 internal void ProcessRotationVehicleParam(Vehicle pParam, Quaternion pValue) 261 internal void ProcessRotationVehicleParam(Vehicle pParam, Quaternion pValue)
@@ -272,12 +266,11 @@ namespace OpenSim.Region.Physics.OdePlugin
272 // m_referenceFrame = pValue; 266 // m_referenceFrame = pValue;
273 break; 267 break;
274 } 268 }
275
276 }//end ProcessRotationVehicleParam 269 }//end ProcessRotationVehicleParam
277 270
278 internal void ProcessTypeChange(Vehicle pType) 271 internal void ProcessTypeChange(Vehicle pType)
279 { 272 {
280 // Set Defaults For Type 273 // Set Defaults For Type
281 m_type = pType; 274 m_type = pType;
282 switch (pType) 275 switch (pType)
283 { 276 {
@@ -357,8 +350,8 @@ namespace OpenSim.Region.Physics.OdePlugin
357 // m_bankingMix = 0.8f; 350 // m_bankingMix = 0.8f;
358 // m_bankingTimescale = 1; 351 // m_bankingTimescale = 1;
359 // m_referenceFrame = Quaternion.Identity; 352 // m_referenceFrame = Quaternion.Identity;
360 m_flags &= ~(VehicleFlag.HOVER_TERRAIN_ONLY | VehicleFlag.LIMIT_ROLL_ONLY | 353 m_flags &= ~(VehicleFlag.HOVER_TERRAIN_ONLY | VehicleFlag.LIMIT_ROLL_ONLY |
361 VehicleFlag.HOVER_GLOBAL_HEIGHT | VehicleFlag.HOVER_UP_ONLY); 354 VehicleFlag.HOVER_GLOBAL_HEIGHT | VehicleFlag.HOVER_UP_ONLY);
362 m_flags |= (VehicleFlag.NO_DEFLECTION_UP | VehicleFlag.HOVER_WATER_ONLY | 355 m_flags |= (VehicleFlag.NO_DEFLECTION_UP | VehicleFlag.HOVER_WATER_ONLY |
363 VehicleFlag.LIMIT_MOTOR_UP); 356 VehicleFlag.LIMIT_MOTOR_UP);
364 break; 357 break;
@@ -432,24 +425,25 @@ namespace OpenSim.Region.Physics.OdePlugin
432 { 425 {
433 if (m_body == IntPtr.Zero || m_type == Vehicle.TYPE_NONE) 426 if (m_body == IntPtr.Zero || m_type == Vehicle.TYPE_NONE)
434 return; 427 return;
435 frcount++; // used to limit debug comment output 428 frcount++; // used to limit debug comment output
436 if (frcount > 100) 429 if (frcount > 100)
437 frcount = 0; 430 frcount = 0;
438 431
439 MoveLinear(pTimestep, pParentScene); 432 MoveLinear(pTimestep, pParentScene);
440 MoveAngular(pTimestep); 433 MoveAngular(pTimestep);
441 }// end Step 434 }// end Step
442 435
443 private void MoveLinear(float pTimestep, OdeScene _pParentScene) 436 private void MoveLinear(float pTimestep, OdeScene _pParentScene)
444 { 437 {
445 if (!m_linearMotorDirection.ApproxEquals(Vector3.Zero, 0.01f)) // requested m_linearMotorDirection is significant 438 if (!m_linearMotorDirection.ApproxEquals(Vector3.Zero, 0.01f)) // requested m_linearMotorDirection is significant
446 { 439 {
447 if(!d.BodyIsEnabled (Body)) d.BodyEnable (Body); 440 if (!d.BodyIsEnabled(Body))
441 d.BodyEnable(Body);
448 442
449 // add drive to body 443 // add drive to body
450 Vector3 addAmount = m_linearMotorDirection/(m_linearMotorTimescale/pTimestep); 444 Vector3 addAmount = m_linearMotorDirection/(m_linearMotorTimescale/pTimestep);
451 m_lastLinearVelocityVector += (addAmount*10); // lastLinearVelocityVector is the current body velocity vector? 445 m_lastLinearVelocityVector += (addAmount*10); // lastLinearVelocityVector is the current body velocity vector?
452 446
453 // This will work temporarily, but we really need to compare speed on an axis 447 // This will work temporarily, but we really need to compare speed on an axis
454 // KF: Limit body velocity to applied velocity? 448 // KF: Limit body velocity to applied velocity?
455 if (Math.Abs(m_lastLinearVelocityVector.X) > Math.Abs(m_linearMotorDirectionLASTSET.X)) 449 if (Math.Abs(m_lastLinearVelocityVector.X) > Math.Abs(m_linearMotorDirectionLASTSET.X))
@@ -458,7 +452,7 @@ namespace OpenSim.Region.Physics.OdePlugin
458 m_lastLinearVelocityVector.Y = m_linearMotorDirectionLASTSET.Y; 452 m_lastLinearVelocityVector.Y = m_linearMotorDirectionLASTSET.Y;
459 if (Math.Abs(m_lastLinearVelocityVector.Z) > Math.Abs(m_linearMotorDirectionLASTSET.Z)) 453 if (Math.Abs(m_lastLinearVelocityVector.Z) > Math.Abs(m_linearMotorDirectionLASTSET.Z))
460 m_lastLinearVelocityVector.Z = m_linearMotorDirectionLASTSET.Z; 454 m_lastLinearVelocityVector.Z = m_linearMotorDirectionLASTSET.Z;
461 455
462 // decay applied velocity 456 // decay applied velocity
463 Vector3 decayfraction = ((Vector3.One/(m_linearMotorDecayTimescale/pTimestep))); 457 Vector3 decayfraction = ((Vector3.One/(m_linearMotorDecayTimescale/pTimestep)));
464 //Console.WriteLine("decay: " + decayfraction); 458 //Console.WriteLine("decay: " + decayfraction);
@@ -466,194 +460,192 @@ namespace OpenSim.Region.Physics.OdePlugin
466 //Console.WriteLine("actual: " + m_linearMotorDirection); 460 //Console.WriteLine("actual: " + m_linearMotorDirection);
467 } 461 }
468 else 462 else
469 { // requested is not significant 463 { // requested is not significant
470 // if what remains of applied is small, zero it. 464 // if what remains of applied is small, zero it.
471 if (m_lastLinearVelocityVector.ApproxEquals(Vector3.Zero, 0.01f)) 465 if (m_lastLinearVelocityVector.ApproxEquals(Vector3.Zero, 0.01f))
472 m_lastLinearVelocityVector = Vector3.Zero; 466 m_lastLinearVelocityVector = Vector3.Zero;
473 } 467 }
474 468
475 469 // convert requested object velocity to world-referenced vector
476 // convert requested object velocity to world-referenced vector
477 m_dir = m_lastLinearVelocityVector; 470 m_dir = m_lastLinearVelocityVector;
478 d.Quaternion rot = d.BodyGetQuaternion(Body); 471 d.Quaternion rot = d.BodyGetQuaternion(Body);
479 Quaternion rotq = new Quaternion(rot.X, rot.Y, rot.Z, rot.W); // rotq = rotation of object 472 Quaternion rotq = new Quaternion(rot.X, rot.Y, rot.Z, rot.W); // rotq = rotation of object
480 m_dir *= rotq; // apply obj rotation to velocity vector 473 m_dir *= rotq; // apply obj rotation to velocity vector
481 474
482 // add Gravity andBuoyancy 475 // add Gravity andBuoyancy
483 // KF: So far I have found no good method to combine a script-requested 476 // KF: So far I have found no good method to combine a script-requested
484 // .Z velocity and gravity. Therefore only 0g will used script-requested 477 // .Z velocity and gravity. Therefore only 0g will used script-requested
485 // .Z velocity. >0g (m_VehicleBuoyancy < 1) will used modified gravity only. 478 // .Z velocity. >0g (m_VehicleBuoyancy < 1) will used modified gravity only.
486 Vector3 grav = Vector3.Zero; 479 Vector3 grav = Vector3.Zero;
487 if(m_VehicleBuoyancy < 1.0f) 480 if (m_VehicleBuoyancy < 1.0f)
488 { 481 {
489 // There is some gravity, make a gravity force vector 482 // There is some gravity, make a gravity force vector
490 // that is applied after object velocity. 483 // that is applied after object velocity.
491 d.Mass objMass; 484 d.Mass objMass;
492 d.BodyGetMass(Body, out objMass); 485 d.BodyGetMass(Body, out objMass);
493 // m_VehicleBuoyancy: -1=2g; 0=1g; 1=0g; 486 // m_VehicleBuoyancy: -1=2g; 0=1g; 1=0g;
494 grav.Z = _pParentScene.gravityz * objMass.mass * (1f - m_VehicleBuoyancy); 487 grav.Z = _pParentScene.gravityz * objMass.mass * (1f - m_VehicleBuoyancy);
495 // Preserve the current Z velocity 488 // Preserve the current Z velocity
496 d.Vector3 vel_now = d.BodyGetLinearVel(Body); 489 d.Vector3 vel_now = d.BodyGetLinearVel(Body);
497 m_dir.Z = vel_now.Z; // Preserve the accumulated falling velocity 490 m_dir.Z = vel_now.Z; // Preserve the accumulated falling velocity
498 } // else its 1.0, no gravity. 491 } // else its 1.0, no gravity.
499 492
500 // Check if hovering 493 // Check if hovering
501 if( (m_flags & (VehicleFlag.HOVER_WATER_ONLY | VehicleFlag.HOVER_TERRAIN_ONLY | VehicleFlag.HOVER_GLOBAL_HEIGHT)) != 0) 494 if ((m_flags & (VehicleFlag.HOVER_WATER_ONLY | VehicleFlag.HOVER_TERRAIN_ONLY | VehicleFlag.HOVER_GLOBAL_HEIGHT)) != 0)
502 { 495 {
503 // We should hover, get the target height 496 // We should hover, get the target height
504 d.Vector3 pos = d.BodyGetPosition(Body); 497 d.Vector3 pos = d.BodyGetPosition(Body);
505 if((m_flags & VehicleFlag.HOVER_WATER_ONLY) == VehicleFlag.HOVER_WATER_ONLY) 498 if ((m_flags & VehicleFlag.HOVER_WATER_ONLY) == VehicleFlag.HOVER_WATER_ONLY)
506 { 499 {
507 m_VhoverTargetHeight = _pParentScene.GetWaterLevel() + m_VhoverHeight; 500 m_VhoverTargetHeight = _pParentScene.GetWaterLevel() + m_VhoverHeight;
508 } 501 }
509 else if((m_flags & VehicleFlag.HOVER_TERRAIN_ONLY) == VehicleFlag.HOVER_TERRAIN_ONLY) 502 else if ((m_flags & VehicleFlag.HOVER_TERRAIN_ONLY) == VehicleFlag.HOVER_TERRAIN_ONLY)
510 { 503 {
511 m_VhoverTargetHeight = _pParentScene.GetTerrainHeightAtXY(pos.X, pos.Y) + m_VhoverHeight; 504 m_VhoverTargetHeight = _pParentScene.GetTerrainHeightAtXY(pos.X, pos.Y) + m_VhoverHeight;
512 } 505 }
513 else if((m_flags & VehicleFlag.HOVER_GLOBAL_HEIGHT) == VehicleFlag.HOVER_GLOBAL_HEIGHT) 506 else if ((m_flags & VehicleFlag.HOVER_GLOBAL_HEIGHT) == VehicleFlag.HOVER_GLOBAL_HEIGHT)
514 { 507 {
515 m_VhoverTargetHeight = m_VhoverHeight; 508 m_VhoverTargetHeight = m_VhoverHeight;
516 } 509 }
517 510
518 if((m_flags & VehicleFlag.HOVER_UP_ONLY) == VehicleFlag.HOVER_UP_ONLY) 511 if ((m_flags & VehicleFlag.HOVER_UP_ONLY) == VehicleFlag.HOVER_UP_ONLY)
519 { 512 {
520 // If body is aready heigher, use its height as target height 513 // If body is aready heigher, use its height as target height
521 if(pos.Z > m_VhoverTargetHeight) m_VhoverTargetHeight = pos.Z; 514 if (pos.Z > m_VhoverTargetHeight) m_VhoverTargetHeight = pos.Z;
522 } 515 }
523 516
524// m_VhoverEfficiency = 0f; // 0=boucy, 1=Crit.damped 517// m_VhoverEfficiency = 0f; // 0=boucy, 1=Crit.damped
525// m_VhoverTimescale = 0f; // time to acheive height 518// m_VhoverTimescale = 0f; // time to acheive height
526// pTimestep is time since last frame,in secs 519// pTimestep is time since last frame,in secs
527 float herr0 = pos.Z - m_VhoverTargetHeight; 520 float herr0 = pos.Z - m_VhoverTargetHeight;
528 // Replace Vertical speed with correction figure if significant 521 // Replace Vertical speed with correction figure if significant
529 if(Math.Abs(herr0) > 0.01f ) 522 if (Math.Abs(herr0) > 0.01f)
530 { 523 {
531 d.Mass objMass; 524 d.Mass objMass;
532 d.BodyGetMass(Body, out objMass); 525 d.BodyGetMass(Body, out objMass);
533 m_dir.Z = - ( (herr0 * pTimestep * 50.0f) / m_VhoverTimescale); 526 m_dir.Z = - ((herr0 * pTimestep * 50.0f) / m_VhoverTimescale);
534 //KF: m_VhoverEfficiency is not yet implemented 527 //KF: m_VhoverEfficiency is not yet implemented
535 } 528 }
536 else 529 else
537 { 530 {
538 m_dir.Z = 0f; 531 m_dir.Z = 0f;
539 } 532 }
540 } 533 }
541 534
542 // Apply velocity 535 // Apply velocity
543 d.BodySetLinearVel(Body, m_dir.X, m_dir.Y, m_dir.Z); 536 d.BodySetLinearVel(Body, m_dir.X, m_dir.Y, m_dir.Z);
544 // apply gravity force 537 // apply gravity force
545 d.BodyAddForce(Body, grav.X, grav.Y, grav.Z); 538 d.BodyAddForce(Body, grav.X, grav.Y, grav.Z);
546 539
547 540
548 // apply friction 541 // apply friction
549 Vector3 decayamount = Vector3.One / (m_linearFrictionTimescale / pTimestep); 542 Vector3 decayamount = Vector3.One / (m_linearFrictionTimescale / pTimestep);
550 m_lastLinearVelocityVector -= m_lastLinearVelocityVector * decayamount; 543 m_lastLinearVelocityVector -= m_lastLinearVelocityVector * decayamount;
551 } // end MoveLinear() 544 } // end MoveLinear()
552 545
553 private void MoveAngular(float pTimestep) 546 private void MoveAngular(float pTimestep)
554 { 547 {
555 /* 548 /*
556 private Vector3 m_angularMotorDirection = Vector3.Zero; // angular velocity requested by LSL motor 549 private Vector3 m_angularMotorDirection = Vector3.Zero; // angular velocity requested by LSL motor
557 private int m_angularMotorApply = 0; // application frame counter 550 private int m_angularMotorApply = 0; // application frame counter
558 private float m_angularMotorVelocity = 0; // current angular motor velocity (ramps up and down) 551 private float m_angularMotorVelocity = 0; // current angular motor velocity (ramps up and down)
559 private float m_angularMotorTimescale = 0; // motor angular velocity ramp up rate 552 private float m_angularMotorTimescale = 0; // motor angular velocity ramp up rate
560 private float m_angularMotorDecayTimescale = 0; // motor angular velocity decay rate 553 private float m_angularMotorDecayTimescale = 0; // motor angular velocity decay rate
561 private Vector3 m_angularFrictionTimescale = Vector3.Zero; // body angular velocity decay rate 554 private Vector3 m_angularFrictionTimescale = Vector3.Zero; // body angular velocity decay rate
562 private Vector3 m_lastAngularVelocity = Vector3.Zero; // what was last applied to body 555 private Vector3 m_lastAngularVelocity = Vector3.Zero; // what was last applied to body
563 */ 556 */
564 557
565 // Get what the body is doing, this includes 'external' influences 558 // Get what the body is doing, this includes 'external' influences
566 d.Vector3 angularVelocity = d.BodyGetAngularVel(Body); 559 d.Vector3 angularVelocity = d.BodyGetAngularVel(Body);
567 // Vector3 angularVelocity = Vector3.Zero; 560 // Vector3 angularVelocity = Vector3.Zero;
568 561
569 if (m_angularMotorApply > 0) 562 if (m_angularMotorApply > 0)
570 { 563 {
571 // ramp up to new value 564 // ramp up to new value
572 // current velocity += error / ( time to get there / step interval ) 565 // current velocity += error / (time to get there / step interval)
573 // requested speed - last motor speed 566 // requested speed - last motor speed
574 m_angularMotorVelocity.X += (m_angularMotorDirection.X - m_angularMotorVelocity.X) / (m_angularMotorTimescale / pTimestep); 567 m_angularMotorVelocity.X += (m_angularMotorDirection.X - m_angularMotorVelocity.X) / (m_angularMotorTimescale / pTimestep);
575 m_angularMotorVelocity.Y += (m_angularMotorDirection.Y - m_angularMotorVelocity.Y) / (m_angularMotorTimescale / pTimestep); 568 m_angularMotorVelocity.Y += (m_angularMotorDirection.Y - m_angularMotorVelocity.Y) / (m_angularMotorTimescale / pTimestep);
576 m_angularMotorVelocity.Z += (m_angularMotorDirection.Z - m_angularMotorVelocity.Z) / (m_angularMotorTimescale / pTimestep); 569 m_angularMotorVelocity.Z += (m_angularMotorDirection.Z - m_angularMotorVelocity.Z) / (m_angularMotorTimescale / pTimestep);
577 570
578 m_angularMotorApply--; // This is done so that if script request rate is less than phys frame rate the expected 571 m_angularMotorApply--; // This is done so that if script request rate is less than phys frame rate the expected
579 // velocity may still be acheived. 572 // velocity may still be acheived.
580 } 573 }
581 else 574 else
582 { 575 {
583 // no motor recently applied, keep the body velocity 576 // no motor recently applied, keep the body velocity
584 /* m_angularMotorVelocity.X = angularVelocity.X; 577 /* m_angularMotorVelocity.X = angularVelocity.X;
585 m_angularMotorVelocity.Y = angularVelocity.Y; 578 m_angularMotorVelocity.Y = angularVelocity.Y;
586 m_angularMotorVelocity.Z = angularVelocity.Z; */ 579 m_angularMotorVelocity.Z = angularVelocity.Z; */
587 580
588 // and decay the velocity 581 // and decay the velocity
589 m_angularMotorVelocity -= m_angularMotorVelocity / (m_angularMotorDecayTimescale / pTimestep); 582 m_angularMotorVelocity -= m_angularMotorVelocity / (m_angularMotorDecayTimescale / pTimestep);
590 } // end motor section 583 } // end motor section
591
592 584
593 // Vertical attractor section 585 // Vertical attractor section
594 Vector3 vertattr = Vector3.Zero; 586 Vector3 vertattr = Vector3.Zero;
595 587
596 if(m_verticalAttractionTimescale < 300) 588 if (m_verticalAttractionTimescale < 300)
597 {
598 float VAservo = 0.2f / (m_verticalAttractionTimescale * pTimestep);
599 // get present body rotation
600 d.Quaternion rot = d.BodyGetQuaternion(Body);
601 Quaternion rotq = new Quaternion(rot.X, rot.Y, rot.Z, rot.W);
602 // make a vector pointing up
603 Vector3 verterr = Vector3.Zero;
604 verterr.Z = 1.0f;
605 // rotate it to Body Angle
606 verterr = verterr * rotq;
607 // verterr.X and .Y are the World error ammounts. They are 0 when there is no error (Vehicle Body is 'vertical'), and .Z will be 1.
608 // As the body leans to its side |.X| will increase to 1 and .Z fall to 0. As body inverts |.X| will fall and .Z will go
609 // negative. Similar for tilt and |.Y|. .X and .Y must be modulated to prevent a stable inverted body.
610 if (verterr.Z < 0.0f)
611 {
612 verterr.X = 2.0f - verterr.X;
613 verterr.Y = 2.0f - verterr.Y;
614 }
615 // Error is 0 (no error) to +/- 2 (max error)
616 // scale it by VAservo
617 verterr = verterr * VAservo;
618//if(frcount == 0) Console.WriteLine("VAerr=" + verterr);
619
620 // As the body rotates around the X axis, then verterr.Y increases; Rotated around Y then .X increases, so
621 // Change Body angular velocity X based on Y, and Y based on X. Z is not changed.
622 vertattr.X = verterr.Y;
623 vertattr.Y = - verterr.X;
624 vertattr.Z = 0f;
625
626 // scaling appears better usingsquare-law
627 float bounce = 1.0f - (m_verticalAttractionEfficiency * m_verticalAttractionEfficiency);
628 vertattr.X += bounce * angularVelocity.X;
629 vertattr.Y += bounce * angularVelocity.Y;
630
631 } // else vertical attractor is off
632
633 // m_lastVertAttractor = vertattr;
634
635 // Bank section tba
636 // Deflection section tba
637
638 // Sum velocities
639 m_lastAngularVelocity = m_angularMotorVelocity + vertattr; // + bank + deflection
640
641 if (!m_lastAngularVelocity.ApproxEquals(Vector3.Zero, 0.01f))
642 { 589 {
643 if(!d.BodyIsEnabled (Body)) d.BodyEnable (Body); 590 float VAservo = 0.2f / (m_verticalAttractionTimescale * pTimestep);
644 } 591 // get present body rotation
645 else 592 d.Quaternion rot = d.BodyGetQuaternion(Body);
646 { 593 Quaternion rotq = new Quaternion(rot.X, rot.Y, rot.Z, rot.W);
647 m_lastAngularVelocity = Vector3.Zero; // Reduce small value to zero. 594 // make a vector pointing up
648 } 595 Vector3 verterr = Vector3.Zero;
649 596 verterr.Z = 1.0f;
650 // apply friction 597 // rotate it to Body Angle
598 verterr = verterr * rotq;
599 // verterr.X and .Y are the World error ammounts. They are 0 when there is no error (Vehicle Body is 'vertical'), and .Z will be 1.
600 // As the body leans to its side |.X| will increase to 1 and .Z fall to 0. As body inverts |.X| will fall and .Z will go
601 // negative. Similar for tilt and |.Y|. .X and .Y must be modulated to prevent a stable inverted body.
602 if (verterr.Z < 0.0f)
603 {
604 verterr.X = 2.0f - verterr.X;
605 verterr.Y = 2.0f - verterr.Y;
606 }
607 // Error is 0 (no error) to +/- 2 (max error)
608 // scale it by VAservo
609 verterr = verterr * VAservo;
610//if (frcount == 0) Console.WriteLine("VAerr=" + verterr);
611
612 // As the body rotates around the X axis, then verterr.Y increases; Rotated around Y then .X increases, so
613 // Change Body angular velocity X based on Y, and Y based on X. Z is not changed.
614 vertattr.X = verterr.Y;
615 vertattr.Y = - verterr.X;
616 vertattr.Z = 0f;
617
618 // scaling appears better usingsquare-law
619 float bounce = 1.0f - (m_verticalAttractionEfficiency * m_verticalAttractionEfficiency);
620 vertattr.X += bounce * angularVelocity.X;
621 vertattr.Y += bounce * angularVelocity.Y;
622
623 } // else vertical attractor is off
624
625 // m_lastVertAttractor = vertattr;
626
627 // Bank section tba
628 // Deflection section tba
629
630 // Sum velocities
631 m_lastAngularVelocity = m_angularMotorVelocity + vertattr; // + bank + deflection
632
633 if (!m_lastAngularVelocity.ApproxEquals(Vector3.Zero, 0.01f))
634 {
635 if (!d.BodyIsEnabled (Body)) d.BodyEnable (Body);
636 }
637 else
638 {
639 m_lastAngularVelocity = Vector3.Zero; // Reduce small value to zero.
640 }
641
642 // apply friction
651 Vector3 decayamount = Vector3.One / (m_angularFrictionTimescale / pTimestep); 643 Vector3 decayamount = Vector3.One / (m_angularFrictionTimescale / pTimestep);
652 m_lastAngularVelocity -= m_lastAngularVelocity * decayamount; 644 m_lastAngularVelocity -= m_lastAngularVelocity * decayamount;
653 645
654 // Apply to the body 646 // Apply to the body
655 d.BodySetAngularVel (Body, m_lastAngularVelocity.X, m_lastAngularVelocity.Y, m_lastAngularVelocity.Z); 647 d.BodySetAngularVel (Body, m_lastAngularVelocity.X, m_lastAngularVelocity.Y, m_lastAngularVelocity.Z);
656 648
657 } //end MoveAngular 649 } //end MoveAngular
658 } 650 }
659} 651}
diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
index 3eb3b28..973aa84 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
@@ -1,5 +1,7 @@
1/* Copyright (c) Contributors, http://opensimulator.org/ 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
2 * See CONTRIBUTORS.TXT for a full list of copyright holders. 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
3 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
4 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
5 * * Redistributions of source code must retain the above copyright 7 * * Redistributions of source code must retain the above copyright
@@ -93,7 +95,7 @@ namespace OpenSim.Region.Physics.OdePlugin
93 private float m_targetHoverHeight; 95 private float m_targetHoverHeight;
94 private float m_groundHeight; 96 private float m_groundHeight;
95 private float m_waterHeight; 97 private float m_waterHeight;
96 private float m_buoyancy; //KF: m_buoyancy should be set by llSetBuoyancy() for non-vehicle. 98 private float m_buoyancy; //KF: m_buoyancy should be set by llSetBuoyancy() for non-vehicle.
97 99
98 // private float m_tensor = 5f; 100 // private float m_tensor = 5f;
99 private int body_autodisable_frames = 20; 101 private int body_autodisable_frames = 20;
@@ -294,7 +296,7 @@ namespace OpenSim.Region.Physics.OdePlugin
294 m_taintselected = value; 296 m_taintselected = value;
295 m_isSelected = value; 297 m_isSelected = value;
296 } 298 }
297 if(m_isSelected) disableBodySoft(); 299 if (m_isSelected) disableBodySoft();
298 } 300 }
299 } 301 }
300 302
@@ -302,7 +304,7 @@ namespace OpenSim.Region.Physics.OdePlugin
302 { 304 {
303 prev_geom = prim_geom; 305 prev_geom = prim_geom;
304 prim_geom = geom; 306 prim_geom = geom;
305//Console.WriteLine("SetGeom to " + prim_geom + " for " + m_primName); 307//Console.WriteLine("SetGeom to " + prim_geom + " for " + m_primName);
306 if (prim_geom != IntPtr.Zero) 308 if (prim_geom != IntPtr.Zero)
307 { 309 {
308 d.GeomSetCategoryBits(prim_geom, (int)m_collisionCategories); 310 d.GeomSetCategoryBits(prim_geom, (int)m_collisionCategories);
@@ -314,7 +316,7 @@ namespace OpenSim.Region.Physics.OdePlugin
314 if (_parent != null && _parent is OdePrim) 316 if (_parent != null && _parent is OdePrim)
315 { 317 {
316 OdePrim parent = (OdePrim)_parent; 318 OdePrim parent = (OdePrim)_parent;
317//Console.WriteLine("SetGeom calls ChildSetGeom"); 319//Console.WriteLine("SetGeom calls ChildSetGeom");
318 parent.ChildSetGeom(this); 320 parent.ChildSetGeom(this);
319 } 321 }
320 } 322 }
@@ -331,7 +333,7 @@ namespace OpenSim.Region.Physics.OdePlugin
331 { 333 {
332 d.BodyEnable(Body); 334 d.BodyEnable(Body);
333 if (m_vehicle.Type != Vehicle.TYPE_NONE) 335 if (m_vehicle.Type != Vehicle.TYPE_NONE)
334 m_vehicle.Enable(Body, _parent_scene); 336 m_vehicle.Enable(Body, _parent_scene);
335 } 337 }
336 338
337 m_disabled = false; 339 m_disabled = false;
@@ -376,7 +378,7 @@ namespace OpenSim.Region.Physics.OdePlugin
376 d.BodySetAutoDisableSteps(Body, body_autodisable_frames); 378 d.BodySetAutoDisableSteps(Body, body_autodisable_frames);
377 379
378 // disconnect from world gravity so we can apply buoyancy 380 // disconnect from world gravity so we can apply buoyancy
379 d.BodySetGravityMode (Body, false); 381 d.BodySetGravityMode (Body, false);
380 382
381 m_interpenetrationcount = 0; 383 m_interpenetrationcount = 0;
382 m_collisionscore = 0; 384 m_collisionscore = 0;
@@ -872,7 +874,7 @@ namespace OpenSim.Region.Physics.OdePlugin
872 874
873 public void ProcessTaints(float timestep) 875 public void ProcessTaints(float timestep)
874 { 876 {
875//Console.WriteLine("ProcessTaints for " + m_primName ); 877//Console.WriteLine("ProcessTaints for " + m_primName);
876 if (m_taintadd) 878 if (m_taintadd)
877 { 879 {
878 changeadd(timestep); 880 changeadd(timestep);
@@ -880,24 +882,24 @@ namespace OpenSim.Region.Physics.OdePlugin
880 882
881 if (prim_geom != IntPtr.Zero) 883 if (prim_geom != IntPtr.Zero)
882 { 884 {
883 if (!_position.ApproxEquals(m_taintposition, 0f)) 885 if (!_position.ApproxEquals(m_taintposition, 0f))
884 changemove(timestep); 886 changemove(timestep);
885 887
886 if (m_taintrot != _orientation) 888 if (m_taintrot != _orientation)
887 { 889 {
888 if(childPrim && IsPhysical) // For physical child prim... 890 if (childPrim && IsPhysical) // For physical child prim...
889 { 891 {
890 rotate(timestep); 892 rotate(timestep);
891 // KF: ODE will also rotate the parent prim! 893 // KF: ODE will also rotate the parent prim!
892 // so rotate the root back to where it was 894 // so rotate the root back to where it was
893 OdePrim parent = (OdePrim)_parent; 895 OdePrim parent = (OdePrim)_parent;
894 parent.rotate(timestep); 896 parent.rotate(timestep);
895 } 897 }
896 else 898 else
897 { 899 {
898 //Just rotate the prim 900 //Just rotate the prim
899 rotate(timestep); 901 rotate(timestep);
900 } 902 }
901 } 903 }
902 // 904 //
903 905
@@ -1006,7 +1008,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1006 // destroy link 1008 // destroy link
1007 else if (_parent != null && m_taintparent == null) 1009 else if (_parent != null && m_taintparent == null)
1008 { 1010 {
1009//Console.WriteLine(" changelink B"); 1011//Console.WriteLine(" changelink B");
1010 1012
1011 if (_parent is OdePrim) 1013 if (_parent is OdePrim)
1012 { 1014 {
@@ -1033,7 +1035,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1033 // prim is the child 1035 // prim is the child
1034 public void ParentPrim(OdePrim prim) 1036 public void ParentPrim(OdePrim prim)
1035 { 1037 {
1036//Console.WriteLine("ParentPrim " + m_primName); 1038//Console.WriteLine("ParentPrim " + m_primName);
1037 if (this.m_localID != prim.m_localID) 1039 if (this.m_localID != prim.m_localID)
1038 { 1040 {
1039 if (Body == IntPtr.Zero) 1041 if (Body == IntPtr.Zero)
@@ -1047,7 +1049,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1047 { 1049 {
1048 if (!childrenPrim.Contains(prim)) 1050 if (!childrenPrim.Contains(prim))
1049 { 1051 {
1050//Console.WriteLine("childrenPrim.Add " + prim); 1052//Console.WriteLine("childrenPrim.Add " + prim);
1051 childrenPrim.Add(prim); 1053 childrenPrim.Add(prim);
1052 1054
1053 foreach (OdePrim prm in childrenPrim) 1055 foreach (OdePrim prm in childrenPrim)
@@ -1080,7 +1082,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1080 m_log.Warn("[PHYSICS]: Unable to link one of the linkset elements. No geom yet"); 1082 m_log.Warn("[PHYSICS]: Unable to link one of the linkset elements. No geom yet");
1081 continue; 1083 continue;
1082 } 1084 }
1083//Console.WriteLine(" GeomSetCategoryBits 1: " + prm.prim_geom + " - " + (int)prm.m_collisionCategories + " for " + m_primName); 1085//Console.WriteLine(" GeomSetCategoryBits 1: " + prm.prim_geom + " - " + (int)prm.m_collisionCategories + " for " + m_primName);
1084 d.GeomSetCategoryBits(prm.prim_geom, (int)prm.m_collisionCategories); 1086 d.GeomSetCategoryBits(prm.prim_geom, (int)prm.m_collisionCategories);
1085 d.GeomSetCollideBits(prm.prim_geom, (int)prm.m_collisionFlags); 1087 d.GeomSetCollideBits(prm.prim_geom, (int)prm.m_collisionFlags);
1086 1088
@@ -1128,7 +1130,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1128 m_collisionCategories |= CollisionCategories.Body; 1130 m_collisionCategories |= CollisionCategories.Body;
1129 m_collisionFlags |= (CollisionCategories.Land | CollisionCategories.Wind); 1131 m_collisionFlags |= (CollisionCategories.Land | CollisionCategories.Wind);
1130 1132
1131//Console.WriteLine("GeomSetCategoryBits 2: " + prim_geom + " - " + (int)m_collisionCategories + " for " + m_primName); 1133//Console.WriteLine("GeomSetCategoryBits 2: " + prim_geom + " - " + (int)m_collisionCategories + " for " + m_primName);
1132 d.GeomSetCategoryBits(prim_geom, (int)m_collisionCategories); 1134 d.GeomSetCategoryBits(prim_geom, (int)m_collisionCategories);
1133//Console.WriteLine(" Post GeomSetCategoryBits 2"); 1135//Console.WriteLine(" Post GeomSetCategoryBits 2");
1134 d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags); 1136 d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags);
@@ -1203,7 +1205,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1203 { 1205 {
1204 foreach (OdePrim prm in childrenPrim) 1206 foreach (OdePrim prm in childrenPrim)
1205 { 1207 {
1206//Console.WriteLine("ChildSetGeom calls ParentPrim"); 1208//Console.WriteLine("ChildSetGeom calls ParentPrim");
1207 ParentPrim(prm); 1209 ParentPrim(prm);
1208 } 1210 }
1209 } 1211 }
@@ -1230,7 +1232,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1230 1232
1231 lock (childrenPrim) 1233 lock (childrenPrim)
1232 { 1234 {
1233 //Console.WriteLine("childrenPrim.Remove " + odePrim); 1235 //Console.WriteLine("childrenPrim.Remove " + odePrim);
1234 childrenPrim.Remove(odePrim); 1236 childrenPrim.Remove(odePrim);
1235 } 1237 }
1236 1238
@@ -1248,7 +1250,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1248 { 1250 {
1249 foreach (OdePrim prm in childrenPrim) 1251 foreach (OdePrim prm in childrenPrim)
1250 { 1252 {
1251//Console.WriteLine("ChildDelink calls ParentPrim"); 1253//Console.WriteLine("ChildDelink calls ParentPrim");
1252 ParentPrim(prm); 1254 ParentPrim(prm);
1253 } 1255 }
1254 } 1256 }
@@ -1350,7 +1352,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1350 1352
1351 public void CreateGeom(IntPtr m_targetSpace, IMesh _mesh) 1353 public void CreateGeom(IntPtr m_targetSpace, IMesh _mesh)
1352 { 1354 {
1353//Console.WriteLine("CreateGeom:"); 1355//Console.WriteLine("CreateGeom:");
1354 if (_mesh != null) 1356 if (_mesh != null)
1355 { 1357 {
1356 setMesh(_parent_scene, _mesh); 1358 setMesh(_parent_scene, _mesh);
@@ -1381,7 +1383,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1381 _parent_scene.waitForSpaceUnlock(m_targetSpace); 1383 _parent_scene.waitForSpaceUnlock(m_targetSpace);
1382 try 1384 try
1383 { 1385 {
1384//Console.WriteLine(" CreateGeom 2"); 1386//Console.WriteLine(" CreateGeom 2");
1385 SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z)); 1387 SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z));
1386 } 1388 }
1387 catch (AccessViolationException) 1389 catch (AccessViolationException)
@@ -1397,7 +1399,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1397 _parent_scene.waitForSpaceUnlock(m_targetSpace); 1399 _parent_scene.waitForSpaceUnlock(m_targetSpace);
1398 try 1400 try
1399 { 1401 {
1400//Console.WriteLine(" CreateGeom 3"); 1402//Console.WriteLine(" CreateGeom 3");
1401 SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z)); 1403 SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z));
1402 } 1404 }
1403 catch (AccessViolationException) 1405 catch (AccessViolationException)
@@ -1414,7 +1416,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1414 _parent_scene.waitForSpaceUnlock(m_targetSpace); 1416 _parent_scene.waitForSpaceUnlock(m_targetSpace);
1415 try 1417 try
1416 { 1418 {
1417//Console.WriteLine(" CreateGeom 4"); 1419//Console.WriteLine(" CreateGeom 4");
1418 SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z)); 1420 SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z));
1419 } 1421 }
1420 catch (AccessViolationException) 1422 catch (AccessViolationException)
@@ -1451,7 +1453,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1451 1453
1452 lock (_parent_scene.OdeLock) 1454 lock (_parent_scene.OdeLock)
1453 { 1455 {
1454//Console.WriteLine("changeadd 1"); 1456//Console.WriteLine("changeadd 1");
1455 CreateGeom(m_targetSpace, _mesh); 1457 CreateGeom(m_targetSpace, _mesh);
1456 1458
1457 if (prim_geom != IntPtr.Zero) 1459 if (prim_geom != IntPtr.Zero)
@@ -1508,7 +1510,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1508 if (Body != (IntPtr)0 && odParent.Body != (IntPtr)0 && Body != odParent.Body) 1510 if (Body != (IntPtr)0 && odParent.Body != (IntPtr)0 && Body != odParent.Body)
1509 { 1511 {
1510// KF: Fixed Joints were removed? Anyway - this Console.WriteLine does not show up, so routine is not used?? 1512// KF: Fixed Joints were removed? Anyway - this Console.WriteLine does not show up, so routine is not used??
1511Console.WriteLine(" JointCreateFixed"); 1513Console.WriteLine(" JointCreateFixed");
1512 m_linkJoint = d.JointCreateFixed(_parent_scene.world, _linkJointGroup); 1514 m_linkJoint = d.JointCreateFixed(_parent_scene.world, _linkJointGroup);
1513 d.JointAttach(m_linkJoint, Body, odParent.Body); 1515 d.JointAttach(m_linkJoint, Body, odParent.Body);
1514 d.JointSetFixed(m_linkJoint); 1516 d.JointSetFixed(m_linkJoint);
@@ -1562,244 +1564,244 @@ Console.WriteLine(" JointCreateFixed");
1562 float fz = 0; 1564 float fz = 0;
1563 1565
1564 1566
1565 if (IsPhysical && (Body != IntPtr.Zero) && !m_isSelected && !childPrim) // KF: Only move root prims. 1567 if (IsPhysical && (Body != IntPtr.Zero) && !m_isSelected && !childPrim) // KF: Only move root prims.
1566 { 1568 {
1567 if (m_vehicle.Type != Vehicle.TYPE_NONE) 1569 if (m_vehicle.Type != Vehicle.TYPE_NONE)
1568 { 1570 {
1569 // 'VEHICLES' are dealt with in ODEDynamics.cs 1571 // 'VEHICLES' are dealt with in ODEDynamics.cs
1570 m_vehicle.Step(timestep, _parent_scene); 1572 m_vehicle.Step(timestep, _parent_scene);
1571 } 1573 }
1572 else 1574 else
1573 { 1575 {
1574//Console.WriteLine("Move " + m_primName); 1576//Console.WriteLine("Move " + m_primName);
1575 if(!d.BodyIsEnabled (Body)) d.BodyEnable (Body); // KF add 161009 1577 if (!d.BodyIsEnabled (Body)) d.BodyEnable (Body); // KF add 161009
1576 // NON-'VEHICLES' are dealt with here 1578 // NON-'VEHICLES' are dealt with here
1577 if (d.BodyIsEnabled(Body) && !m_angularlock.ApproxEquals(Vector3.Zero, 0.003f)) 1579 if (d.BodyIsEnabled(Body) && !m_angularlock.ApproxEquals(Vector3.Zero, 0.003f))
1578 { 1580 {
1579 d.Vector3 avel2 = d.BodyGetAngularVel(Body); 1581 d.Vector3 avel2 = d.BodyGetAngularVel(Body);
1580 if (m_angularlock.X == 1) 1582 if (m_angularlock.X == 1)
1581 avel2.X = 0; 1583 avel2.X = 0;
1582 if (m_angularlock.Y == 1) 1584 if (m_angularlock.Y == 1)
1583 avel2.Y = 0; 1585 avel2.Y = 0;
1584 if (m_angularlock.Z == 1) 1586 if (m_angularlock.Z == 1)
1585 avel2.Z = 0; 1587 avel2.Z = 0;
1586 d.BodySetAngularVel(Body, avel2.X, avel2.Y, avel2.Z); 1588 d.BodySetAngularVel(Body, avel2.X, avel2.Y, avel2.Z);
1587 } 1589 }
1588 //float PID_P = 900.0f; 1590 //float PID_P = 900.0f;
1589 1591
1590 float m_mass = CalculateMass(); 1592 float m_mass = CalculateMass();
1591 1593
1592// fz = 0f; 1594// fz = 0f;
1593 //m_log.Info(m_collisionFlags.ToString()); 1595 //m_log.Info(m_collisionFlags.ToString());
1594 1596
1595 1597
1596 //KF: m_buoyancy should be set by llSetBuoyancy() for non-vehicle. 1598 //KF: m_buoyancy should be set by llSetBuoyancy() for non-vehicle.
1597 // would come from SceneObjectPart.cs, public void SetBuoyancy(float fvalue) , PhysActor.Buoyancy = fvalue; ?? 1599 // would come from SceneObjectPart.cs, public void SetBuoyancy(float fvalue) , PhysActor.Buoyancy = fvalue; ??
1598 // m_buoyancy: (unlimited value) <0=Falls fast; 0=1g; 1=0g; >1 = floats up 1600 // m_buoyancy: (unlimited value) <0=Falls fast; 0=1g; 1=0g; >1 = floats up
1599 // gravityz multiplier = 1 - m_buoyancy 1601 // gravityz multiplier = 1 - m_buoyancy
1600 fz = _parent_scene.gravityz * (1.0f - m_buoyancy) * m_mass; 1602 fz = _parent_scene.gravityz * (1.0f - m_buoyancy) * m_mass;
1601 1603
1602 if (m_usePID) 1604 if (m_usePID)
1603 { 1605 {
1604//Console.WriteLine("PID " + m_primName); 1606//Console.WriteLine("PID " + m_primName);
1605 // KF - this is for object move? eg. llSetPos() ? 1607 // KF - this is for object move? eg. llSetPos() ?
1606 //if (!d.BodyIsEnabled(Body)) 1608 //if (!d.BodyIsEnabled(Body))
1607 //d.BodySetForce(Body, 0f, 0f, 0f); 1609 //d.BodySetForce(Body, 0f, 0f, 0f);
1608 // If we're using the PID controller, then we have no gravity 1610 // If we're using the PID controller, then we have no gravity
1609 //fz = (-1 * _parent_scene.gravityz) * m_mass; //KF: ?? Prims have no global gravity,so simply... 1611 //fz = (-1 * _parent_scene.gravityz) * m_mass; //KF: ?? Prims have no global gravity,so simply...
1610 fz = 0f; 1612 fz = 0f;
1611 1613
1612 // no lock; for now it's only called from within Simulate() 1614 // no lock; for now it's only called from within Simulate()
1613 1615
1614 // If the PID Controller isn't active then we set our force 1616 // If the PID Controller isn't active then we set our force
1615 // calculating base velocity to the current position 1617 // calculating base velocity to the current position
1616 1618
1617 if ((m_PIDTau < 1) && (m_PIDTau != 0)) 1619 if ((m_PIDTau < 1) && (m_PIDTau != 0))
1618 { 1620 {
1619 //PID_G = PID_G / m_PIDTau; 1621 //PID_G = PID_G / m_PIDTau;
1620 m_PIDTau = 1; 1622 m_PIDTau = 1;
1621 } 1623 }
1622 1624
1623 if ((PID_G - m_PIDTau) <= 0) 1625 if ((PID_G - m_PIDTau) <= 0)
1624 { 1626 {
1625 PID_G = m_PIDTau + 1; 1627 PID_G = m_PIDTau + 1;
1626 } 1628 }
1627 //PidStatus = true; 1629 //PidStatus = true;
1628 1630
1629 // PhysicsVector vec = new PhysicsVector(); 1631 // PhysicsVector vec = new PhysicsVector();
1630 d.Vector3 vel = d.BodyGetLinearVel(Body); 1632 d.Vector3 vel = d.BodyGetLinearVel(Body);
1631 1633
1632 d.Vector3 pos = d.BodyGetPosition(Body); 1634 d.Vector3 pos = d.BodyGetPosition(Body);
1633 _target_velocity = 1635 _target_velocity =
1634 new Vector3( 1636 new Vector3(
1635 (m_PIDTarget.X - pos.X) * ((PID_G - m_PIDTau) * timestep), 1637 (m_PIDTarget.X - pos.X) * ((PID_G - m_PIDTau) * timestep),
1636 (m_PIDTarget.Y - pos.Y) * ((PID_G - m_PIDTau) * timestep), 1638 (m_PIDTarget.Y - pos.Y) * ((PID_G - m_PIDTau) * timestep),
1637 (m_PIDTarget.Z - pos.Z) * ((PID_G - m_PIDTau) * timestep) 1639 (m_PIDTarget.Z - pos.Z) * ((PID_G - m_PIDTau) * timestep)
1638 ); 1640 );
1639 1641
1640 // if velocity is zero, use position control; otherwise, velocity control 1642 // if velocity is zero, use position control; otherwise, velocity control
1641 1643
1642 if (_target_velocity.ApproxEquals(Vector3.Zero,0.1f)) 1644 if (_target_velocity.ApproxEquals(Vector3.Zero,0.1f))
1643 { 1645 {
1644 // keep track of where we stopped. No more slippin' & slidin' 1646 // keep track of where we stopped. No more slippin' & slidin'
1645 1647
1646 // We only want to deactivate the PID Controller if we think we want to have our surrogate 1648 // We only want to deactivate the PID Controller if we think we want to have our surrogate
1647 // react to the physics scene by moving it's position. 1649 // react to the physics scene by moving it's position.
1648 // Avatar to Avatar collisions 1650 // Avatar to Avatar collisions
1649 // Prim to avatar collisions 1651 // Prim to avatar collisions
1650 1652
1651 //fx = (_target_velocity.X - vel.X) * (PID_D) + (_zeroPosition.X - pos.X) * (PID_P * 2); 1653 //fx = (_target_velocity.X - vel.X) * (PID_D) + (_zeroPosition.X - pos.X) * (PID_P * 2);
1652 //fy = (_target_velocity.Y - vel.Y) * (PID_D) + (_zeroPosition.Y - pos.Y) * (PID_P * 2); 1654 //fy = (_target_velocity.Y - vel.Y) * (PID_D) + (_zeroPosition.Y - pos.Y) * (PID_P * 2);
1653 //fz = fz + (_target_velocity.Z - vel.Z) * (PID_D) + (_zeroPosition.Z - pos.Z) * PID_P; 1655 //fz = fz + (_target_velocity.Z - vel.Z) * (PID_D) + (_zeroPosition.Z - pos.Z) * PID_P;
1654 d.BodySetPosition(Body, m_PIDTarget.X, m_PIDTarget.Y, m_PIDTarget.Z); 1656 d.BodySetPosition(Body, m_PIDTarget.X, m_PIDTarget.Y, m_PIDTarget.Z);
1655 d.BodySetLinearVel(Body, 0, 0, 0); 1657 d.BodySetLinearVel(Body, 0, 0, 0);
1656 d.BodyAddForce(Body, 0, 0, fz); 1658 d.BodyAddForce(Body, 0, 0, fz);
1657 return; 1659 return;
1658 } 1660 }
1659 else 1661 else
1660 { 1662 {
1661 _zeroFlag = false; 1663 _zeroFlag = false;
1662 1664
1663 // We're flying and colliding with something 1665 // We're flying and colliding with something
1664 fx = ((_target_velocity.X) - vel.X) * (PID_D); 1666 fx = ((_target_velocity.X) - vel.X) * (PID_D);
1665 fy = ((_target_velocity.Y) - vel.Y) * (PID_D); 1667 fy = ((_target_velocity.Y) - vel.Y) * (PID_D);
1666 1668
1667 // vec.Z = (_target_velocity.Z - vel.Z) * PID_D + (_zeroPosition.Z - pos.Z) * PID_P; 1669 // vec.Z = (_target_velocity.Z - vel.Z) * PID_D + (_zeroPosition.Z - pos.Z) * PID_P;
1668 1670
1669 fz = fz + ((_target_velocity.Z - vel.Z) * (PID_D) * m_mass); 1671 fz = fz + ((_target_velocity.Z - vel.Z) * (PID_D) * m_mass);
1670 } 1672 }
1671 } // end if (m_usePID) 1673 } // end if (m_usePID)
1672 1674
1673 // Hover PID Controller needs to be mutually exlusive to MoveTo PID controller 1675 // Hover PID Controller needs to be mutually exlusive to MoveTo PID controller
1674 if (m_useHoverPID && !m_usePID) 1676 if (m_useHoverPID && !m_usePID)
1675 { 1677 {
1676//Console.WriteLine("Hover " + m_primName); 1678//Console.WriteLine("Hover " + m_primName);
1677
1678 // If we're using the PID controller, then we have no gravity
1679 fz = (-1 * _parent_scene.gravityz) * m_mass;
1680
1681 // no lock; for now it's only called from within Simulate()
1682
1683 // If the PID Controller isn't active then we set our force
1684 // calculating base velocity to the current position
1685
1686 if ((m_PIDTau < 1))
1687 {
1688 PID_G = PID_G / m_PIDTau;
1689 }
1690
1691 if ((PID_G - m_PIDTau) <= 0)
1692 {
1693 PID_G = m_PIDTau + 1;
1694 }
1695 1679
1680 // If we're using the PID controller, then we have no gravity
1681 fz = (-1 * _parent_scene.gravityz) * m_mass;
1682
1683 // no lock; for now it's only called from within Simulate()
1696 1684
1697 // Where are we, and where are we headed? 1685 // If the PID Controller isn't active then we set our force
1698 d.Vector3 pos = d.BodyGetPosition(Body); 1686 // calculating base velocity to the current position
1699 d.Vector3 vel = d.BodyGetLinearVel(Body); 1687
1700 1688 if ((m_PIDTau < 1))
1701 1689 {
1702 // Non-Vehicles have a limited set of Hover options. 1690 PID_G = PID_G / m_PIDTau;
1703 // determine what our target height really is based on HoverType 1691 }
1704 switch (m_PIDHoverType) 1692
1705 { 1693 if ((PID_G - m_PIDTau) <= 0)
1706 case PIDHoverType.Ground: 1694 {
1707 m_groundHeight = _parent_scene.GetTerrainHeightAtXY(pos.X, pos.Y); 1695 PID_G = m_PIDTau + 1;
1708 m_targetHoverHeight = m_groundHeight + m_PIDHoverHeight; 1696 }
1709 break; 1697
1710 case PIDHoverType.GroundAndWater: 1698
1711 m_groundHeight = _parent_scene.GetTerrainHeightAtXY(pos.X, pos.Y); 1699 // Where are we, and where are we headed?
1712 m_waterHeight = _parent_scene.GetWaterLevel(); 1700 d.Vector3 pos = d.BodyGetPosition(Body);
1713 if (m_groundHeight > m_waterHeight) 1701 d.Vector3 vel = d.BodyGetLinearVel(Body);
1714 { 1702
1715 m_targetHoverHeight = m_groundHeight + m_PIDHoverHeight; 1703
1716 } 1704 // Non-Vehicles have a limited set of Hover options.
1717 else 1705 // determine what our target height really is based on HoverType
1718 { 1706 switch (m_PIDHoverType)
1719 m_targetHoverHeight = m_waterHeight + m_PIDHoverHeight; 1707 {
1720 } 1708 case PIDHoverType.Ground:
1721 break; 1709 m_groundHeight = _parent_scene.GetTerrainHeightAtXY(pos.X, pos.Y);
1722 1710 m_targetHoverHeight = m_groundHeight + m_PIDHoverHeight;
1723 } // end switch (m_PIDHoverType) 1711 break;
1724 1712 case PIDHoverType.GroundAndWater:
1725 1713 m_groundHeight = _parent_scene.GetTerrainHeightAtXY(pos.X, pos.Y);
1726 _target_velocity = 1714 m_waterHeight = _parent_scene.GetWaterLevel();
1715 if (m_groundHeight > m_waterHeight)
1716 {
1717 m_targetHoverHeight = m_groundHeight + m_PIDHoverHeight;
1718 }
1719 else
1720 {
1721 m_targetHoverHeight = m_waterHeight + m_PIDHoverHeight;
1722 }
1723 break;
1724
1725 } // end switch (m_PIDHoverType)
1726
1727
1728 _target_velocity =
1727 new Vector3(0.0f, 0.0f, 1729 new Vector3(0.0f, 0.0f,
1728 (m_targetHoverHeight - pos.Z) * ((PID_G - m_PIDHoverTau) * timestep) 1730 (m_targetHoverHeight - pos.Z) * ((PID_G - m_PIDHoverTau) * timestep)
1729 ); 1731 );
1730 1732
1731 // if velocity is zero, use position control; otherwise, velocity control 1733 // if velocity is zero, use position control; otherwise, velocity control
1732 1734
1733 if (_target_velocity.ApproxEquals(Vector3.Zero, 0.1f)) 1735 if (_target_velocity.ApproxEquals(Vector3.Zero, 0.1f))
1734 { 1736 {
1735 // keep track of where we stopped. No more slippin' & slidin' 1737 // keep track of where we stopped. No more slippin' & slidin'
1736 1738
1737 // We only want to deactivate the PID Controller if we think we want to have our surrogate 1739 // We only want to deactivate the PID Controller if we think we want to have our surrogate
1738 // react to the physics scene by moving it's position. 1740 // react to the physics scene by moving it's position.
1739 // Avatar to Avatar collisions 1741 // Avatar to Avatar collisions
1740 // Prim to avatar collisions 1742 // Prim to avatar collisions
1741 1743
1742 d.BodySetPosition(Body, pos.X, pos.Y, m_targetHoverHeight); 1744 d.BodySetPosition(Body, pos.X, pos.Y, m_targetHoverHeight);
1743 d.BodySetLinearVel(Body, vel.X, vel.Y, 0); 1745 d.BodySetLinearVel(Body, vel.X, vel.Y, 0);
1744 d.BodyAddForce(Body, 0, 0, fz); 1746 d.BodyAddForce(Body, 0, 0, fz);
1745 return; 1747 return;
1746 } 1748 }
1747 else 1749 else
1748 { 1750 {
1749 _zeroFlag = false; 1751 _zeroFlag = false;
1750 1752
1751 // We're flying and colliding with something 1753 // We're flying and colliding with something
1752 fz = fz + ((_target_velocity.Z - vel.Z) * (PID_D) * m_mass); 1754 fz = fz + ((_target_velocity.Z - vel.Z) * (PID_D) * m_mass);
1753 } 1755 }
1754 } 1756 }
1755 1757
1756 fx *= m_mass; 1758 fx *= m_mass;
1757 fy *= m_mass; 1759 fy *= m_mass;
1758 //fz *= m_mass; 1760 //fz *= m_mass;
1759 1761
1760 fx += m_force.X; 1762 fx += m_force.X;
1761 fy += m_force.Y; 1763 fy += m_force.Y;
1762 fz += m_force.Z; 1764 fz += m_force.Z;
1763 1765
1764 //m_log.Info("[OBJPID]: X:" + fx.ToString() + " Y:" + fy.ToString() + " Z:" + fz.ToString()); 1766 //m_log.Info("[OBJPID]: X:" + fx.ToString() + " Y:" + fy.ToString() + " Z:" + fz.ToString());
1765 if (fx != 0 || fy != 0 || fz != 0) 1767 if (fx != 0 || fy != 0 || fz != 0)
1766 { 1768 {
1767 //m_taintdisable = true; 1769 //m_taintdisable = true;
1768 //base.RaiseOutOfBounds(Position); 1770 //base.RaiseOutOfBounds(Position);
1769 //d.BodySetLinearVel(Body, fx, fy, 0f); 1771 //d.BodySetLinearVel(Body, fx, fy, 0f);
1770 if (!d.BodyIsEnabled(Body)) 1772 if (!d.BodyIsEnabled(Body))
1771 { 1773 {
1772 // A physical body at rest on a surface will auto-disable after a while, 1774 // A physical body at rest on a surface will auto-disable after a while,
1773 // this appears to re-enable it incase the surface it is upon vanishes, 1775 // this appears to re-enable it incase the surface it is upon vanishes,
1774 // and the body should fall again. 1776 // and the body should fall again.
1775 d.BodySetLinearVel(Body, 0f, 0f, 0f); 1777 d.BodySetLinearVel(Body, 0f, 0f, 0f);
1776 d.BodySetForce(Body, 0, 0, 0); 1778 d.BodySetForce(Body, 0, 0, 0);
1777 enableBodySoft(); 1779 enableBodySoft();
1778 } 1780 }
1779 1781
1780 // 35x10 = 350n times the mass per second applied maximum. 1782 // 35x10 = 350n times the mass per second applied maximum.
1781 float nmax = 35f * m_mass; 1783 float nmax = 35f * m_mass;
1782 float nmin = -35f * m_mass; 1784 float nmin = -35f * m_mass;
1783 1785
1784 1786
1785 if (fx > nmax) 1787 if (fx > nmax)
1786 fx = nmax; 1788 fx = nmax;
1787 if (fx < nmin) 1789 if (fx < nmin)
1788 fx = nmin; 1790 fx = nmin;
1789 if (fy > nmax) 1791 if (fy > nmax)
1790 fy = nmax; 1792 fy = nmax;
1791 if (fy < nmin) 1793 if (fy < nmin)
1792 fy = nmin; 1794 fy = nmin;
1793 d.BodyAddForce(Body, fx, fy, fz); 1795 d.BodyAddForce(Body, fx, fy, fz);
1794//Console.WriteLine("AddForce " + fx + "," + fy + "," + fz); 1796//Console.WriteLine("AddForce " + fx + "," + fy + "," + fz);
1795 } 1797 }
1796 } 1798 }
1797 } 1799 }
1798 else 1800 else
1799 { // is not physical, or is not a body or is selected 1801 { // is not physical, or is not a body or is selected
1800 // _zeroPosition = d.BodyGetPosition(Body); 1802 // _zeroPosition = d.BodyGetPosition(Body);
1801 return; 1803 return;
1802//Console.WriteLine("Nothing " + m_primName); 1804//Console.WriteLine("Nothing " + m_primName);
1803 1805
1804 } 1806 }
1805 } 1807 }
@@ -1815,18 +1817,18 @@ Console.WriteLine(" JointCreateFixed");
1815 myrot.W = _orientation.W; 1817 myrot.W = _orientation.W;
1816 if (Body != IntPtr.Zero) 1818 if (Body != IntPtr.Zero)
1817 { 1819 {
1818 // KF: If this is a root prim do BodySet 1820 // KF: If this is a root prim do BodySet
1819 d.BodySetQuaternion(Body, ref myrot); 1821 d.BodySetQuaternion(Body, ref myrot);
1820 if (m_isphysical) 1822 if (m_isphysical)
1821 { 1823 {
1822 if (!m_angularlock.ApproxEquals(Vector3.One, 0f)) 1824 if (!m_angularlock.ApproxEquals(Vector3.One, 0f))
1823 createAMotor(m_angularlock); 1825 createAMotor(m_angularlock);
1824 } 1826 }
1825 } 1827 }
1826 else 1828 else
1827 { 1829 {
1828 // daughter prim, do Geom set 1830 // daughter prim, do Geom set
1829 d.GeomSetQuaternion(prim_geom, ref myrot); 1831 d.GeomSetQuaternion(prim_geom, ref myrot);
1830 } 1832 }
1831 1833
1832 resetCollisionAccounting(); 1834 resetCollisionAccounting();
@@ -1890,7 +1892,7 @@ Console.WriteLine(" JointCreateFixed");
1890 m_log.Error("[PHYSICS]: PrimGeom dead"); 1892 m_log.Error("[PHYSICS]: PrimGeom dead");
1891 } 1893 }
1892 } 1894 }
1893//Console.WriteLine("changePhysicsStatus for " + m_primName ); 1895//Console.WriteLine("changePhysicsStatus for " + m_primName);
1894 changeadd(2f); 1896 changeadd(2f);
1895 } 1897 }
1896 if (childPrim) 1898 if (childPrim)
@@ -1976,7 +1978,7 @@ Console.WriteLine(" JointCreateFixed");
1976 else 1978 else
1977 { 1979 {
1978 _mesh = null; 1980 _mesh = null;
1979//Console.WriteLine("changesize 2"); 1981//Console.WriteLine("changesize 2");
1980 CreateGeom(m_targetSpace, _mesh); 1982 CreateGeom(m_targetSpace, _mesh);
1981 } 1983 }
1982 1984
@@ -2083,7 +2085,7 @@ Console.WriteLine(" JointCreateFixed");
2083 else 2085 else
2084 { 2086 {
2085 _mesh = null; 2087 _mesh = null;
2086//Console.WriteLine("changeshape"); 2088//Console.WriteLine("changeshape");
2087 CreateGeom(m_targetSpace, null); 2089 CreateGeom(m_targetSpace, null);
2088 } 2090 }
2089 2091
@@ -2454,7 +2456,7 @@ Console.WriteLine(" JointCreateFixed");
2454 if (QuaternionIsFinite(value)) 2456 if (QuaternionIsFinite(value))
2455 { 2457 {
2456 _orientation = value; 2458 _orientation = value;
2457 } 2459 }
2458 else 2460 else
2459 m_log.Warn("[PHYSICS]: Got NaN quaternion Orientation from Scene in Object"); 2461 m_log.Warn("[PHYSICS]: Got NaN quaternion Orientation from Scene in Object");
2460 2462
@@ -2675,8 +2677,8 @@ Console.WriteLine(" JointCreateFixed");
2675 //outofBounds = true; 2677 //outofBounds = true;
2676 } 2678 }
2677 2679
2678 //float Adiff = 1.0f - Math.Abs(Quaternion.Dot(m_lastorientation, l_orientation)); 2680 //float Adiff = 1.0f - Math.Abs(Quaternion.Dot(m_lastorientation, l_orientation));
2679//Console.WriteLine("Adiff " + m_primName + " = " + Adiff); 2681//Console.WriteLine("Adiff " + m_primName + " = " + Adiff);
2680 if ((Math.Abs(m_lastposition.X - l_position.X) < 0.02) 2682 if ((Math.Abs(m_lastposition.X - l_position.X) < 0.02)
2681 && (Math.Abs(m_lastposition.Y - l_position.Y) < 0.02) 2683 && (Math.Abs(m_lastposition.Y - l_position.Y) < 0.02)
2682 && (Math.Abs(m_lastposition.Z - l_position.Z) < 0.02) 2684 && (Math.Abs(m_lastposition.Z - l_position.Z) < 0.02)
@@ -2684,7 +2686,7 @@ Console.WriteLine(" JointCreateFixed");
2684 && (1.0 - Math.Abs(Quaternion.Dot(m_lastorientation, l_orientation)) < 0.0001)) // KF 0.01 is far to large 2686 && (1.0 - Math.Abs(Quaternion.Dot(m_lastorientation, l_orientation)) < 0.0001)) // KF 0.01 is far to large
2685 { 2687 {
2686 _zeroFlag = true; 2688 _zeroFlag = true;
2687//Console.WriteLine("ZFT 2"); 2689//Console.WriteLine("ZFT 2");
2688 m_throttleUpdates = false; 2690 m_throttleUpdates = false;
2689 } 2691 }
2690 else 2692 else
diff --git a/OpenSim/Region/Physics/OdePlugin/ODERayCastRequestManager.cs b/OpenSim/Region/Physics/OdePlugin/ODERayCastRequestManager.cs
index 7314107..ba77dae 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODERayCastRequestManager.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODERayCastRequestManager.cs
@@ -110,7 +110,7 @@ namespace OpenSim.Region.Physics.OdePlugin
110 for (int i = 0; i < reqs.Length; i++) 110 for (int i = 0; i < reqs.Length; i++)
111 { 111 {
112 if (reqs[i].callbackMethod != null) // quick optimization here, don't raycast 112 if (reqs[i].callbackMethod != null) // quick optimization here, don't raycast
113 RayCast(reqs[i]); // if there isn't anyone to send results 113 RayCast(reqs[i]); // if there isn't anyone to send results
114 } 114 }
115 /* 115 /*
116 foreach (ODERayCastRequest req in m_PendingRequests) 116 foreach (ODERayCastRequest req in m_PendingRequests)
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
index 0384d6e..7984bd9 100644
--- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
+++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
@@ -2152,7 +2152,7 @@ namespace OpenSim.Region.Physics.OdePlugin
2152 /// <param name="prim"></param> 2152 /// <param name="prim"></param>
2153 public void RemovePrimThreadLocked(OdePrim prim) 2153 public void RemovePrimThreadLocked(OdePrim prim)
2154 { 2154 {
2155//Console.WriteLine("RemovePrimThreadLocked " + prim.m_primName); 2155//Console.WriteLine("RemovePrimThreadLocked " + prim.m_primName);
2156 lock (prim) 2156 lock (prim)
2157 { 2157 {
2158 remCollisionEventReporting(prim); 2158 remCollisionEventReporting(prim);
@@ -2603,12 +2603,12 @@ namespace OpenSim.Region.Physics.OdePlugin
2603 lock (_taintedPrimLock) 2603 lock (_taintedPrimLock)
2604 { 2604 {
2605 if (!(_taintedPrimH.Contains(taintedprim))) 2605 if (!(_taintedPrimH.Contains(taintedprim)))
2606 { 2606 {
2607//Console.WriteLine("AddPhysicsActorTaint to " + taintedprim.m_primName); 2607//Console.WriteLine("AddPhysicsActorTaint to " + taintedprim.m_primName);
2608 _taintedPrimH.Add(taintedprim); // HashSet for searching 2608 _taintedPrimH.Add(taintedprim); // HashSet for searching
2609 _taintedPrimL.Add(taintedprim); // List for ordered readout 2609 _taintedPrimL.Add(taintedprim); // List for ordered readout
2610 } 2610 }
2611 } 2611 }
2612 return; 2612 return;
2613 } 2613 }
2614 else if (prim is OdeCharacter) 2614 else if (prim is OdeCharacter)
@@ -2736,12 +2736,12 @@ namespace OpenSim.Region.Physics.OdePlugin
2736 { 2736 {
2737 if (prim.m_taintremove) 2737 if (prim.m_taintremove)
2738 { 2738 {
2739 //Console.WriteLine("Simulate calls RemovePrimThreadLocked"); 2739 //Console.WriteLine("Simulate calls RemovePrimThreadLocked");
2740 RemovePrimThreadLocked(prim); 2740 RemovePrimThreadLocked(prim);
2741 } 2741 }
2742 else 2742 else
2743 { 2743 {
2744 //Console.WriteLine("Simulate calls ProcessTaints"); 2744 //Console.WriteLine("Simulate calls ProcessTaints");
2745 prim.ProcessTaints(timeStep); 2745 prim.ProcessTaints(timeStep);
2746 } 2746 }
2747 processedtaints = true; 2747 processedtaints = true;
@@ -2937,7 +2937,7 @@ namespace OpenSim.Region.Physics.OdePlugin
2937 } 2937 }
2938 2938
2939 if (processedtaints) 2939 if (processedtaints)
2940//Console.WriteLine("Simulate calls Clear of _taintedPrim list"); 2940//Console.WriteLine("Simulate calls Clear of _taintedPrim list");
2941 _taintedPrimH.Clear(); 2941 _taintedPrimH.Clear();
2942 _taintedPrimL.Clear(); 2942 _taintedPrimL.Clear();
2943 } 2943 }
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index d242506..39b597e 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -2753,7 +2753,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
2753 { 2753 {
2754 m_host.AddScriptLPS(1); 2754 m_host.AddScriptLPS(1);
2755 m_host.CollisionFilter.Clear(); 2755 m_host.CollisionFilter.Clear();
2756 if(id != null) 2756 if (id != null)
2757 { 2757 {
2758 m_host.CollisionFilter.Add(accept,id); 2758 m_host.CollisionFilter.Add(accept,id);
2759 } 2759 }
@@ -3818,6 +3818,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
3818 Util.Clip((float)color.z, 0.0f, 1.0f)); 3818 Util.Clip((float)color.z, 0.0f, 1.0f));
3819 m_host.SetText(text, av3, Util.Clip((float)alpha, 0.0f, 1.0f)); 3819 m_host.SetText(text, av3, Util.Clip((float)alpha, 0.0f, 1.0f));
3820 m_host.ParentGroup.HasGroupChanged = true; 3820 m_host.ParentGroup.HasGroupChanged = true;
3821 m_host.ParentGroup.ScheduleGroupForFullUpdate();
3821 } 3822 }
3822 3823
3823 public LSL_Float llWater(LSL_Vector offset) 3824 public LSL_Float llWater(LSL_Vector offset)
@@ -4240,7 +4241,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
4240 public void llPassCollisions(int pass) 4241 public void llPassCollisions(int pass)
4241 { 4242 {
4242 m_host.AddScriptLPS(1); 4243 m_host.AddScriptLPS(1);
4243 if(pass == 0) 4244 if (pass == 0)
4244 { 4245 {
4245 m_host.ParentGroup.PassCollision = false; 4246 m_host.ParentGroup.PassCollision = false;
4246 } 4247 }
@@ -7437,7 +7438,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7437 // makes it more difficult to determine a child prim's actual inworld position). 7438 // makes it more difficult to determine a child prim's actual inworld position).
7438 if (part.ParentID != 0) 7439 if (part.ParentID != 0)
7439 v = ((v - llGetRootPosition()) * llGetRootRotation()) + llGetRootPosition(); 7440 v = ((v - llGetRootPosition()) * llGetRootRotation()) + llGetRootPosition();
7440 res.Add( v ); 7441 res.Add(v);
7441 break; 7442 break;
7442 7443
7443 case (int)ScriptBaseClass.PRIM_SIZE: 7444 case (int)ScriptBaseClass.PRIM_SIZE:
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index 5abe4b1..d8b9159 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -1948,7 +1948,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
1948 1948
1949 return key.ToString(); 1949 return key.ToString();
1950 } 1950 }
1951 1951
1952 /// <summary> 1952 /// <summary>
1953 /// Return information regarding various simulator statistics (sim fps, physics fps, time 1953 /// Return information regarding various simulator statistics (sim fps, physics fps, time
1954 /// dilation, total number of prims, total number of active scripts, script lps, various 1954 /// dilation, total number of prims, total number of active scripts, script lps, various
@@ -1956,19 +1956,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
1956 /// client's Statistics Bar (Ctrl-Shift-1) 1956 /// client's Statistics Bar (Ctrl-Shift-1)
1957 /// </summary> 1957 /// </summary>
1958 /// <returns>List of floats</returns> 1958 /// <returns>List of floats</returns>
1959 public LSL_List osGetRegionStats() 1959 public LSL_List osGetRegionStats()
1960 { 1960 {
1961 CheckThreatLevel(ThreatLevel.Moderate, "osGetRegionStats"); 1961 CheckThreatLevel(ThreatLevel.Moderate, "osGetRegionStats");
1962 m_host.AddScriptLPS(1); 1962 m_host.AddScriptLPS(1);
1963 LSL_List ret = new LSL_List(); 1963 LSL_List ret = new LSL_List();
1964 float[] stats = World.SimulatorStats; 1964 float[] stats = World.SimulatorStats;
1965 1965
1966 for (int i = 0; i < 21; i++) 1966 for (int i = 0; i < 21; i++)
1967 { 1967 {
1968 ret.Add(new LSL_Float( stats[i] )); 1968 ret.Add(new LSL_Float(stats[i]));
1969 } 1969 }
1970 return ret; 1970 return ret;
1971 } 1971 }
1972 1972
1973 public int osGetSimulatorMemory() 1973 public int osGetSimulatorMemory()
1974 { 1974 {
@@ -1984,81 +1984,81 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
1984 return (int)pws; 1984 return (int)pws;
1985 } 1985 }
1986 public void osSetSpeed(string UUID, float SpeedModifier) 1986 public void osSetSpeed(string UUID, float SpeedModifier)
1987 { 1987 {
1988 CheckThreatLevel(ThreatLevel.Moderate, "osSetSpeed"); 1988 CheckThreatLevel(ThreatLevel.Moderate, "osSetSpeed");
1989 m_host.AddScriptLPS(1); 1989 m_host.AddScriptLPS(1);
1990 ScenePresence avatar = World.GetScenePresence(new UUID(UUID)); 1990 ScenePresence avatar = World.GetScenePresence(new UUID(UUID));
1991 avatar.SpeedModifier = SpeedModifier; 1991 avatar.SpeedModifier = SpeedModifier;
1992 } 1992 }
1993 public void osKickAvatar(string FirstName,string SurName,string alert) 1993 public void osKickAvatar(string FirstName,string SurName,string alert)
1994 { 1994 {
1995 CheckThreatLevel(ThreatLevel.Severe, "osKickAvatar"); 1995 CheckThreatLevel(ThreatLevel.Severe, "osKickAvatar");
1996 if (World.Permissions.CanRunConsoleCommand(m_host.OwnerID)) 1996 if (World.Permissions.CanRunConsoleCommand(m_host.OwnerID))
1997 { 1997 {
1998 foreach (ScenePresence presence in World.GetAvatars()) 1998 foreach (ScenePresence presence in World.GetAvatars())
1999 { 1999 {
2000 if ((presence.Firstname == FirstName) && 2000 if ((presence.Firstname == FirstName) &&
2001 presence.Lastname == SurName) 2001 presence.Lastname == SurName)
2002 { 2002 {
2003 // kick client... 2003 // kick client...
2004 if (alert != null) 2004 if (alert != null)
2005 presence.ControllingClient.Kick(alert); 2005 presence.ControllingClient.Kick(alert);
2006 2006
2007 // ...and close on our side 2007 // ...and close on our side
2008 presence.Scene.IncomingCloseAgent(presence.UUID); 2008 presence.Scene.IncomingCloseAgent(presence.UUID);
2009 } 2009 }
2010 } 2010 }
2011 } 2011 }
2012 } 2012 }
2013 public void osCauseDamage(string avatar, double damage) 2013 public void osCauseDamage(string avatar, double damage)
2014 { 2014 {
2015 CheckThreatLevel(ThreatLevel.High, "osCauseDamage"); 2015 CheckThreatLevel(ThreatLevel.High, "osCauseDamage");
2016 m_host.AddScriptLPS(1); 2016 m_host.AddScriptLPS(1);
2017 2017
2018 UUID avatarId = new UUID(avatar); 2018 UUID avatarId = new UUID(avatar);
2019 Vector3 pos = m_host.GetWorldPosition(); 2019 Vector3 pos = m_host.GetWorldPosition();
2020 2020
2021 ScenePresence presence = World.GetScenePresence(avatarId); 2021 ScenePresence presence = World.GetScenePresence(avatarId);
2022 if (presence != null) 2022 if (presence != null)
2023 { 2023 {
2024 LandData land = World.GetLandData((float)pos.X, (float)pos.Y); 2024 LandData land = World.GetLandData((float)pos.X, (float)pos.Y);
2025 if ((land.Flags & (uint)ParcelFlags.AllowDamage) == (uint)ParcelFlags.AllowDamage) 2025 if ((land.Flags & (uint)ParcelFlags.AllowDamage) == (uint)ParcelFlags.AllowDamage)
2026 { 2026 {
2027 float health = presence.Health; 2027 float health = presence.Health;
2028 health -= (float)damage; 2028 health -= (float)damage;
2029 presence.setHealthWithUpdate(health); 2029 presence.setHealthWithUpdate(health);
2030 if (health <= 0) 2030 if (health <= 0)
2031 { 2031 {
2032 float healthliveagain = 100; 2032 float healthliveagain = 100;
2033 presence.ControllingClient.SendAgentAlertMessage("You died!", true); 2033 presence.ControllingClient.SendAgentAlertMessage("You died!", true);
2034 presence.setHealthWithUpdate(healthliveagain); 2034 presence.setHealthWithUpdate(healthliveagain);
2035 presence.Scene.TeleportClientHome(presence.UUID, presence.ControllingClient); 2035 presence.Scene.TeleportClientHome(presence.UUID, presence.ControllingClient);
2036 } 2036 }
2037 } 2037 }
2038 } 2038 }
2039 } 2039 }
2040 public void osCauseHealing(string avatar, double healing) 2040 public void osCauseHealing(string avatar, double healing)
2041 { 2041 {
2042 CheckThreatLevel(ThreatLevel.High, "osCauseHealing"); 2042 CheckThreatLevel(ThreatLevel.High, "osCauseHealing");
2043 m_host.AddScriptLPS(1); 2043 m_host.AddScriptLPS(1);
2044 2044
2045 UUID avatarId = new UUID(avatar); 2045 UUID avatarId = new UUID(avatar);
2046 ScenePresence presence = World.GetScenePresence(avatarId); 2046 ScenePresence presence = World.GetScenePresence(avatarId);
2047 Vector3 pos = m_host.GetWorldPosition(); 2047 Vector3 pos = m_host.GetWorldPosition();
2048 bool result = World.ScriptDanger(m_host.LocalId, new Vector3((float)pos.X, (float)pos.Y, (float)pos.Z)); 2048 bool result = World.ScriptDanger(m_host.LocalId, new Vector3((float)pos.X, (float)pos.Y, (float)pos.Z));
2049 if (result) 2049 if (result)
2050 { 2050 {
2051 if (presence != null) 2051 if (presence != null)
2052 { 2052 {
2053 float health = presence.Health; 2053 float health = presence.Health;
2054 health += (float)healing; 2054 health += (float)healing;
2055 if (health >= 100) 2055 if (health >= 100)
2056 { 2056 {
2057 health = 100; 2057 health = 100;
2058 } 2058 }
2059 presence.setHealthWithUpdate(health); 2059 presence.setHealthWithUpdate(health);
2060 } 2060 }
2061 } 2061 }
2062 } 2062 }
2063 } 2063 }
2064} 2064}
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
index ac9405e..60b8050 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
@@ -162,7 +162,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
162 162
163 key osGetMapTexture(); 163 key osGetMapTexture();
164 key osGetRegionMapTexture(string regionName); 164 key osGetRegionMapTexture(string regionName);
165 LSL_List osGetRegionStats(); 165 LSL_List osGetRegionStats();
166 166
167 int osGetSimulatorMemory(); 167 int osGetSimulatorMemory();
168 void osKickAvatar(string FirstName,string SurName,string alert); 168 void osKickAvatar(string FirstName,string SurName,string alert);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
index acff8fb..13b855f 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
@@ -515,29 +515,29 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
515 public const string TEXTURE_PLYWOOD = "89556747-24cb-43ed-920b-47caed15465f"; 515 public const string TEXTURE_PLYWOOD = "89556747-24cb-43ed-920b-47caed15465f";
516 public const string TEXTURE_TRANSPARENT = "8dcd4a48-2d37-4909-9f78-f7a9eb4ef903"; 516 public const string TEXTURE_TRANSPARENT = "8dcd4a48-2d37-4909-9f78-f7a9eb4ef903";
517 public const string TEXTURE_MEDIA = "8b5fec65-8d8d-9dc5-cda8-8fdf2716e361"; 517 public const string TEXTURE_MEDIA = "8b5fec65-8d8d-9dc5-cda8-8fdf2716e361";
518 518
519 // Constants for osGetRegionStats 519 // Constants for osGetRegionStats
520 public const int STATS_TIME_DILATION = 0; 520 public const int STATS_TIME_DILATION = 0;
521 public const int STATS_SIM_FPS = 1; 521 public const int STATS_SIM_FPS = 1;
522 public const int STATS_PHYSICS_FPS = 2; 522 public const int STATS_PHYSICS_FPS = 2;
523 public const int STATS_AGENT_UPDATES = 3; 523 public const int STATS_AGENT_UPDATES = 3;
524 public const int STATS_ROOT_AGENTS = 4; 524 public const int STATS_ROOT_AGENTS = 4;
525 public const int STATS_CHILD_AGENTS = 5; 525 public const int STATS_CHILD_AGENTS = 5;
526 public const int STATS_TOTAL_PRIMS = 6; 526 public const int STATS_TOTAL_PRIMS = 6;
527 public const int STATS_ACTIVE_PRIMS = 7; 527 public const int STATS_ACTIVE_PRIMS = 7;
528 public const int STATS_FRAME_MS = 8; 528 public const int STATS_FRAME_MS = 8;
529 public const int STATS_NET_MS = 9; 529 public const int STATS_NET_MS = 9;
530 public const int STATS_PHYSICS_MS = 10; 530 public const int STATS_PHYSICS_MS = 10;
531 public const int STATS_IMAGE_MS = 11; 531 public const int STATS_IMAGE_MS = 11;
532 public const int STATS_OTHER_MS = 12; 532 public const int STATS_OTHER_MS = 12;
533 public const int STATS_IN_PACKETS_PER_SECOND = 13; 533 public const int STATS_IN_PACKETS_PER_SECOND = 13;
534 public const int STATS_OUT_PACKETS_PER_SECOND = 14; 534 public const int STATS_OUT_PACKETS_PER_SECOND = 14;
535 public const int STATS_UNACKED_BYTES = 15; 535 public const int STATS_UNACKED_BYTES = 15;
536 public const int STATS_AGENT_MS = 16; 536 public const int STATS_AGENT_MS = 16;
537 public const int STATS_PENDING_DOWNLOADS = 17; 537 public const int STATS_PENDING_DOWNLOADS = 17;
538 public const int STATS_PENDING_UPLOADS = 18; 538 public const int STATS_PENDING_UPLOADS = 18;
539 public const int STATS_ACTIVE_SCRIPTS = 19; 539 public const int STATS_ACTIVE_SCRIPTS = 19;
540 public const int STATS_SCRIPT_LPS = 20; 540 public const int STATS_SCRIPT_LPS = 20;
541 541
542 } 542 }
543} 543}
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
index 2ec6226..3870af3 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
@@ -632,11 +632,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
632 { 632 {
633 return m_OSSL_Functions.osGetRegionMapTexture(regionName); 633 return m_OSSL_Functions.osGetRegionMapTexture(regionName);
634 } 634 }
635 635
636 public LSL_List osGetRegionStats() 636 public LSL_List osGetRegionStats()
637 { 637 {
638 return m_OSSL_Functions.osGetRegionStats(); 638 return m_OSSL_Functions.osGetRegionStats();
639 } 639 }
640 640
641 /// <summary> 641 /// <summary>
642 /// Returns the amount of memory in use by the Simulator Daemon. 642 /// Returns the amount of memory in use by the Simulator Daemon.
@@ -649,7 +649,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
649 } 649 }
650 public void osKickAvatar(string FirstName,string SurName,string alert) 650 public void osKickAvatar(string FirstName,string SurName,string alert)
651 { 651 {
652 m_OSSL_Functions.osKickAvatar( FirstName, SurName, alert); 652 m_OSSL_Functions.osKickAvatar(FirstName, SurName, alert);
653 } 653 }
654 public void osSetSpeed(string UUID, float SpeedModifier) 654 public void osSetSpeed(string UUID, float SpeedModifier)
655 { 655 {
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/ScriptBase.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/ScriptBase.cs
index 121159c..edbbc2a 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/ScriptBase.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/ScriptBase.cs
@@ -126,6 +126,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
126 m_InitialValues = GetVars(); 126 m_InitialValues = GetVars();
127 } 127 }
128 128
129 public virtual void StateChange(string newState)
130 {
131 }
132
129 public void Close() 133 public void Close()
130 { 134 {
131// m_sponser.Close(); 135// m_sponser.Close();
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
index 95f7852..6dd94bb 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
@@ -591,7 +591,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
591 591
592 Dictionary<KeyValuePair<int, int>, KeyValuePair<int, int>> linemap; 592 Dictionary<KeyValuePair<int, int>, KeyValuePair<int, int>> linemap;
593 593
594 lock(m_ScriptErrors) 594 lock (m_ScriptErrors)
595 { 595 {
596 try 596 try
597 { 597 {
diff --git a/OpenSim/Services/Interfaces/IInventoryService.cs b/OpenSim/Services/Interfaces/IInventoryService.cs
index c775090..1b78fb3 100644
--- a/OpenSim/Services/Interfaces/IInventoryService.cs
+++ b/OpenSim/Services/Interfaces/IInventoryService.cs
@@ -59,6 +59,7 @@ namespace OpenSim.Services.Interfaces
59 /// </summary> 59 /// </summary>
60 /// <param name="userID"></param> 60 /// <param name="userID"></param>
61 /// <returns></returns> 61 /// <returns></returns>
62 [Obsolete]
62 InventoryCollection GetUserInventory(UUID userID); 63 InventoryCollection GetUserInventory(UUID userID);
63 64
64 /// <summary> 65 /// <summary>
@@ -67,6 +68,7 @@ namespace OpenSim.Services.Interfaces
67 /// </summary> 68 /// </summary>
68 /// <param name="userID"></param> 69 /// <param name="userID"></param>
69 /// <param name="callback"></param> 70 /// <param name="callback"></param>
71 [Obsolete]
70 void GetUserInventory(UUID userID, InventoryReceiptCallback callback); 72 void GetUserInventory(UUID userID, InventoryReceiptCallback callback);
71 73
72 /// <summary> 74 /// <summary>
diff --git a/OpenSim/Services/InventoryService/InventoryService.cs b/OpenSim/Services/InventoryService/InventoryService.cs
index d4da4d3..95007f1 100644
--- a/OpenSim/Services/InventoryService/InventoryService.cs
+++ b/OpenSim/Services/InventoryService/InventoryService.cs
@@ -25,6 +25,7 @@
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using System;
28using System.Collections.Generic; 29using System.Collections.Generic;
29using System.Reflection; 30using System.Reflection;
30using log4net; 31using log4net;
@@ -102,7 +103,17 @@ namespace OpenSim.Services.InventoryService
102 // See IInventoryServices 103 // See IInventoryServices
103 public bool CreateUserInventory(UUID user) 104 public bool CreateUserInventory(UUID user)
104 { 105 {
105 InventoryFolderBase existingRootFolder = GetRootFolder(user); 106 InventoryFolderBase existingRootFolder;
107 try
108 {
109 existingRootFolder = GetRootFolder(user);
110 }
111 catch (Exception e)
112 {
113 // Munch the exception, it has already been reported
114 //
115 return false;
116 }
106 117
107 if (null != existingRootFolder) 118 if (null != existingRootFolder)
108 { 119 {
diff --git a/OpenSim/Services/InventoryService/XInventoryService.cs b/OpenSim/Services/InventoryService/XInventoryService.cs
new file mode 100644
index 0000000..2c79c77
--- /dev/null
+++ b/OpenSim/Services/InventoryService/XInventoryService.cs
@@ -0,0 +1,508 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Collections.Generic;
30using OpenMetaverse;
31using log4net;
32using Nini.Config;
33using System.Reflection;
34using OpenSim.Services.Base;
35using OpenSim.Services.Interfaces;
36using OpenSim.Data;
37using OpenSim.Framework;
38
39namespace OpenSim.Services.InventoryService
40{
41 public class XInventoryService : ServiceBase, IInventoryService
42 {
43 private static readonly ILog m_log =
44 LogManager.GetLogger(
45 MethodBase.GetCurrentMethod().DeclaringType);
46
47 protected IXInventoryData m_Database;
48
49 public XInventoryService(IConfigSource config) : base(config)
50 {
51 string dllName = String.Empty;
52 string connString = String.Empty;
53 //string realm = "Inventory"; // OSG version doesn't use this
54
55 //
56 // Try reading the [InventoryService] section first, if it exists
57 //
58 IConfig authConfig = config.Configs["InventoryService"];
59 if (authConfig != null)
60 {
61 dllName = authConfig.GetString("StorageProvider", dllName);
62 connString = authConfig.GetString("ConnectionString", connString);
63 // realm = authConfig.GetString("Realm", realm);
64 }
65
66 //
67 // Try reading the [DatabaseService] section, if it exists
68 //
69 IConfig dbConfig = config.Configs["DatabaseService"];
70 if (dbConfig != null)
71 {
72 if (dllName == String.Empty)
73 dllName = dbConfig.GetString("StorageProvider", String.Empty);
74 if (connString == String.Empty)
75 connString = dbConfig.GetString("ConnectionString", String.Empty);
76 }
77
78 //
79 // We tried, but this doesn't exist. We can't proceed.
80 //
81 if (dllName == String.Empty)
82 throw new Exception("No StorageProvider configured");
83
84 m_Database = LoadPlugin<IXInventoryData>(dllName,
85 new Object[] {connString, String.Empty});
86 if (m_Database == null)
87 throw new Exception("Could not find a storage interface in the given module");
88 }
89
90 public bool CreateUserInventory(UUID principalID)
91 {
92 // This is braindeaad. We can't ever communicate that we fixed
93 // an existing inventory. Well, just return root folder status,
94 // but check sanity anyway.
95 //
96 bool result = false;
97
98 InventoryFolderBase rootFolder = GetRootFolder(principalID);
99
100 if (rootFolder == null)
101 {
102 rootFolder = ConvertToOpenSim(CreateFolder(principalID, UUID.Zero, (int)AssetType.Folder, "My Inventory"));
103 result = true;
104 }
105
106 XInventoryFolder[] sysFolders = GetSystemFolders(principalID);
107
108 if (!Array.Exists(sysFolders, delegate (XInventoryFolder f) { if (f.type == (int)AssetType.Animation) return true; return false; }))
109 CreateFolder(principalID, rootFolder.ID, (int)AssetType.Animation, "Animations");
110 if (!Array.Exists(sysFolders, delegate (XInventoryFolder f) { if (f.type == (int)AssetType.Bodypart) return true; return false; }))
111 CreateFolder(principalID, rootFolder.ID, (int)AssetType.Bodypart, "Body Parts");
112 if (!Array.Exists(sysFolders, delegate (XInventoryFolder f) { if (f.type == (int)AssetType.CallingCard) return true; return false; }))
113 CreateFolder(principalID, rootFolder.ID, (int)AssetType.CallingCard, "Calling Cards");
114 if (!Array.Exists(sysFolders, delegate (XInventoryFolder f) { if (f.type == (int)AssetType.Clothing) return true; return false; }))
115 CreateFolder(principalID, rootFolder.ID, (int)AssetType.Clothing, "Clothing");
116 if (!Array.Exists(sysFolders, delegate (XInventoryFolder f) { if (f.type == (int)AssetType.Gesture) return true; return false; }))
117 CreateFolder(principalID, rootFolder.ID, (int)AssetType.Gesture, "Gestures");
118 if (!Array.Exists(sysFolders, delegate (XInventoryFolder f) { if (f.type == (int)AssetType.Landmark) return true; return false; }))
119 CreateFolder(principalID, rootFolder.ID, (int)AssetType.Landmark, "Landmarks");
120 if (!Array.Exists(sysFolders, delegate (XInventoryFolder f) { if (f.type == (int)AssetType.LostAndFoundFolder) return true; return false; }))
121 CreateFolder(principalID, rootFolder.ID, (int)AssetType.LostAndFoundFolder, "Lost And Found");
122 if (!Array.Exists(sysFolders, delegate (XInventoryFolder f) { if (f.type == (int)AssetType.Notecard) return true; return false; }))
123 CreateFolder(principalID, rootFolder.ID, (int)AssetType.Notecard, "Notecards");
124 if (!Array.Exists(sysFolders, delegate (XInventoryFolder f) { if (f.type == (int)AssetType.Object) return true; return false; }))
125 CreateFolder(principalID, rootFolder.ID, (int)AssetType.Object, "Objects");
126 if (!Array.Exists(sysFolders, delegate (XInventoryFolder f) { if (f.type == (int)AssetType.SnapshotFolder) return true; return false; }))
127 CreateFolder(principalID, rootFolder.ID, (int)AssetType.SnapshotFolder, "Photo Album");
128 if (!Array.Exists(sysFolders, delegate (XInventoryFolder f) { if (f.type == (int)AssetType.LSLText) return true; return false; }))
129 CreateFolder(principalID, rootFolder.ID, (int)AssetType.LSLText, "Scripts");
130 if (!Array.Exists(sysFolders, delegate (XInventoryFolder f) { if (f.type == (int)AssetType.Sound) return true; return false; }))
131 CreateFolder(principalID, rootFolder.ID, (int)AssetType.Sound, "Sounds");
132 if (!Array.Exists(sysFolders, delegate (XInventoryFolder f) { if (f.type == (int)AssetType.Texture) return true; return false; }))
133 CreateFolder(principalID, rootFolder.ID, (int)AssetType.Texture, "Textures");
134 if (!Array.Exists(sysFolders, delegate (XInventoryFolder f) { if (f.type == (int)AssetType.TrashFolder) return true; return false; }))
135 CreateFolder(principalID, rootFolder.ID, (int)AssetType.TrashFolder, "Trash");
136
137 return result;
138 }
139
140 private XInventoryFolder CreateFolder(UUID principalID, UUID parentID, int type, string name)
141 {
142 XInventoryFolder newFolder = new XInventoryFolder();
143
144 newFolder.folderName = name;
145 newFolder.type = type;
146 newFolder.version = 1;
147 newFolder.folderID = UUID.Random();
148 newFolder.agentID = principalID;
149 newFolder.parentFolderID = parentID;
150
151 m_Database.StoreFolder(newFolder);
152
153 return newFolder;
154 }
155
156 private XInventoryFolder[] GetSystemFolders(UUID principalID)
157 {
158 XInventoryFolder[] allFolders = m_Database.GetFolders(
159 new string[] { "agentID" },
160 new string[] { principalID.ToString() });
161
162 XInventoryFolder[] sysFolders = Array.FindAll(
163 allFolders,
164 delegate (XInventoryFolder f)
165 {
166 if (f.type > 0)
167 return true;
168 return false;
169 });
170
171 return sysFolders;
172 }
173
174 public List<InventoryFolderBase> GetInventorySkeleton(UUID principalID)
175 {
176 XInventoryFolder[] allFolders = m_Database.GetFolders(
177 new string[] { "agentID" },
178 new string[] { principalID.ToString() });
179
180 if (allFolders.Length == 0)
181 return null;
182
183 List<InventoryFolderBase> folders = new List<InventoryFolderBase>();
184
185 foreach (XInventoryFolder x in allFolders)
186 {
187 m_log.DebugFormat("[INVENTORY]: Adding folder {0} to skeleton", x.folderName);
188 folders.Add(ConvertToOpenSim(x));
189 }
190
191 return folders;
192 }
193
194 public InventoryFolderBase GetRootFolder(UUID principalID)
195 {
196 XInventoryFolder[] folders = m_Database.GetFolders(
197 new string[] { "agentID", "parentFolderID"},
198 new string[] { principalID.ToString(), UUID.Zero.ToString() });
199
200 if (folders.Length == 0)
201 return null;
202
203 return ConvertToOpenSim(folders[0]);
204 }
205
206 public InventoryFolderBase GetFolderForType(UUID principalID, AssetType type)
207 {
208 XInventoryFolder[] folders = m_Database.GetFolders(
209 new string[] { "agentID", "type"},
210 new string[] { principalID.ToString(), ((int)type).ToString() });
211
212 if (folders.Length == 0)
213 return null;
214
215 return ConvertToOpenSim(folders[0]);
216 }
217
218 public InventoryCollection GetFolderContent(UUID principalID, UUID folderID)
219 {
220 // This method doesn't receive a valud principal id from the
221 // connector. So we disregard the principal and look
222 // by ID.
223 //
224 m_log.DebugFormat("[INVENTORY]: Fetch contents for folder {0}", folderID.ToString());
225 InventoryCollection inventory = new InventoryCollection();
226 inventory.UserID = principalID;
227 inventory.Folders = new List<InventoryFolderBase>();
228 inventory.Items = new List<InventoryItemBase>();
229
230 XInventoryFolder[] folders = m_Database.GetFolders(
231 new string[] { "parentFolderID"},
232 new string[] { folderID.ToString() });
233
234 foreach (XInventoryFolder x in folders)
235 {
236 m_log.DebugFormat("[INVENTORY]: Adding folder {0} to response", x.folderName);
237 inventory.Folders.Add(ConvertToOpenSim(x));
238 }
239
240 XInventoryItem[] items = m_Database.GetItems(
241 new string[] { "parentFolderID"},
242 new string[] { folderID.ToString() });
243
244 foreach (XInventoryItem i in items)
245 {
246 m_log.DebugFormat("[INVENTORY]: Adding item {0} to response", i.inventoryName);
247 inventory.Items.Add(ConvertToOpenSim(i));
248 }
249
250 return inventory;
251 }
252
253 public List<InventoryItemBase> GetFolderItems(UUID principalID, UUID folderID)
254 {
255 // Since we probably don't get a valid principal here, either ...
256 //
257 List<InventoryItemBase> invItems = new List<InventoryItemBase>();
258
259 XInventoryItem[] items = m_Database.GetItems(
260 new string[] { "parentFolderID"},
261 new string[] { UUID.Zero.ToString() });
262
263 foreach (XInventoryItem i in items)
264 invItems.Add(ConvertToOpenSim(i));
265
266 return invItems;
267 }
268
269 public bool AddFolder(InventoryFolderBase folder)
270 {
271 XInventoryFolder xFolder = ConvertFromOpenSim(folder);
272 return m_Database.StoreFolder(xFolder);
273 }
274
275 public bool UpdateFolder(InventoryFolderBase folder)
276 {
277 return AddFolder(folder);
278 }
279
280 public bool MoveFolder(InventoryFolderBase folder)
281 {
282 XInventoryFolder[] x = m_Database.GetFolders(
283 new string[] { "folderID" },
284 new string[] { folder.ID.ToString() });
285
286 if (x.Length == 0)
287 return false;
288
289 x[0].parentFolderID = folder.ParentID;
290
291 return m_Database.StoreFolder(x[0]);
292 }
293
294 // We don't check the principal's ID here
295 //
296 public bool DeleteFolders(UUID principalID, List<UUID> folderIDs)
297 {
298 // Ignore principal ID, it's bogus at connector level
299 //
300 foreach (UUID id in folderIDs)
301 {
302 InventoryFolderBase f = new InventoryFolderBase();
303 f.ID = id;
304 PurgeFolder(f);
305 m_Database.DeleteFolders("folderID", id.ToString());
306 }
307
308 return true;
309 }
310
311 public bool PurgeFolder(InventoryFolderBase folder)
312 {
313 XInventoryFolder[] subFolders = m_Database.GetFolders(
314 new string[] { "parentFolderID" },
315 new string[] { folder.ID.ToString() });
316
317 foreach (XInventoryFolder x in subFolders)
318 {
319 PurgeFolder(ConvertToOpenSim(x));
320 m_Database.DeleteFolders("folderID", x.folderID.ToString());
321 }
322
323 m_Database.DeleteItems("parentFolderID", folder.ID.ToString());
324
325 return true;
326 }
327
328 public bool AddItem(InventoryItemBase item)
329 {
330 return m_Database.StoreItem(ConvertFromOpenSim(item));
331 }
332
333 public bool UpdateItem(InventoryItemBase item)
334 {
335 return m_Database.StoreItem(ConvertFromOpenSim(item));
336 }
337
338 public bool MoveItems(UUID principalID, List<InventoryItemBase> items)
339 {
340 // Principal is b0rked. *sigh*
341 //
342 foreach (InventoryItemBase i in items)
343 {
344 m_Database.MoveItem(i.ID.ToString(), i.Folder.ToString());
345 }
346
347 return true;
348 }
349
350 public bool DeleteItems(UUID principalID, List<UUID> itemIDs)
351 {
352 // Just use the ID... *facepalms*
353 //
354 foreach (UUID id in itemIDs)
355 m_Database.DeleteItems("inventoryID", id.ToString());
356
357 return true;
358 }
359
360 public InventoryItemBase GetItem(InventoryItemBase item)
361 {
362 XInventoryItem[] items = m_Database.GetItems(
363 new string[] { "inventoryID" },
364 new string[] { item.ID.ToString() });
365
366 if (items.Length == 0)
367 return null;
368
369 return ConvertToOpenSim(items[0]);
370 }
371
372 public InventoryFolderBase GetFolder(InventoryFolderBase folder)
373 {
374 XInventoryFolder[] folders = m_Database.GetFolders(
375 new string[] { "folderID"},
376 new string[] { folder.ID.ToString() });
377
378 if (folders.Length == 0)
379 return null;
380
381 return ConvertToOpenSim(folders[0]);
382 }
383
384 public List<InventoryItemBase> GetActiveGestures(UUID principalID)
385 {
386 XInventoryItem[] items = m_Database.GetActiveGestures(principalID);
387
388 if (items.Length == 0)
389 return null;
390
391 List<InventoryItemBase> ret = new List<InventoryItemBase>();
392
393 foreach (XInventoryItem x in items)
394 ret.Add(ConvertToOpenSim(x));
395
396 return ret;
397 }
398
399 public int GetAssetPermissions(UUID principalID, UUID assetID)
400 {
401 return m_Database.GetAssetPermissions(principalID, assetID);
402 }
403
404 // CM never needed those. Left unimplemented.
405 // Obsolete in core
406 //
407 public InventoryCollection GetUserInventory(UUID userID)
408 {
409 return null;
410 }
411 public void GetUserInventory(UUID userID, InventoryReceiptCallback callback)
412 {
413 }
414
415 // Unused.
416 //
417 public bool HasInventoryForUser(UUID userID)
418 {
419 return false;
420 }
421
422 // CM Helpers
423 //
424 private InventoryFolderBase ConvertToOpenSim(XInventoryFolder folder)
425 {
426 InventoryFolderBase newFolder = new InventoryFolderBase();
427
428 newFolder.ParentID = folder.parentFolderID;
429 newFolder.Type = (short)folder.type;
430 newFolder.Version = (ushort)folder.version;
431 newFolder.Name = folder.folderName;
432 newFolder.Owner = folder.agentID;
433 newFolder.ID = folder.folderID;
434
435 return newFolder;
436 }
437
438 private XInventoryFolder ConvertFromOpenSim(InventoryFolderBase folder)
439 {
440 XInventoryFolder newFolder = new XInventoryFolder();
441
442 newFolder.parentFolderID = folder.ParentID;
443 newFolder.type = (int)folder.Type;
444 newFolder.version = (int)folder.Version;
445 newFolder.folderName = folder.Name;
446 newFolder.agentID = folder.Owner;
447 newFolder.folderID = folder.ID;
448
449 return newFolder;
450 }
451
452 private InventoryItemBase ConvertToOpenSim(XInventoryItem item)
453 {
454 InventoryItemBase newItem = new InventoryItemBase();
455
456 newItem.AssetID = item.assetID;
457 newItem.AssetType = item.assetType;
458 newItem.Name = item.inventoryName;
459 newItem.Owner = item.avatarID;
460 newItem.ID = item.inventoryID;
461 newItem.InvType = item.invType;
462 newItem.Folder = item.parentFolderID;
463 newItem.CreatorId = item.creatorID.ToString();
464 newItem.Description = item.inventoryDescription;
465 newItem.NextPermissions = (uint)item.inventoryNextPermissions;
466 newItem.CurrentPermissions = (uint)item.inventoryCurrentPermissions;
467 newItem.BasePermissions = (uint)item.inventoryBasePermissions;
468 newItem.EveryOnePermissions = (uint)item.inventoryEveryOnePermissions;
469 newItem.GroupPermissions = (uint)item.inventoryGroupPermissions;
470 newItem.GroupID = item.groupID;
471 newItem.GroupOwned = item.groupOwned;
472 newItem.SalePrice = item.salePrice;
473 newItem.SaleType = (byte)item.saleType;
474 newItem.Flags = (uint)item.flags;
475 newItem.CreationDate = item.creationDate;
476
477 return newItem;
478 }
479
480 private XInventoryItem ConvertFromOpenSim(InventoryItemBase item)
481 {
482 XInventoryItem newItem = new XInventoryItem();
483
484 newItem.assetID = item.AssetID;
485 newItem.assetType = item.AssetType;
486 newItem.inventoryName = item.Name;
487 newItem.avatarID = item.Owner;
488 newItem.inventoryID = item.ID;
489 newItem.invType = item.InvType;
490 newItem.parentFolderID = item.Folder;
491 newItem.creatorID = item.CreatorIdAsUuid;
492 newItem.inventoryDescription = item.Description;
493 newItem.inventoryNextPermissions = (int)item.NextPermissions;
494 newItem.inventoryCurrentPermissions = (int)item.CurrentPermissions;
495 newItem.inventoryBasePermissions = (int)item.BasePermissions;
496 newItem.inventoryEveryOnePermissions = (int)item.EveryOnePermissions;
497 newItem.inventoryGroupPermissions = (int)item.GroupPermissions;
498 newItem.groupID = item.GroupID;
499 newItem.groupOwned = item.GroupOwned;
500 newItem.salePrice = item.SalePrice;
501 newItem.saleType = (int)item.SaleType;
502 newItem.flags = (int)item.Flags;
503 newItem.creationDate = item.CreationDate;
504
505 return newItem;
506 }
507 }
508}
diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs
index 8da9209..1a22bdc 100644
--- a/OpenSim/Tests/Common/Mock/TestClient.cs
+++ b/OpenSim/Tests/Common/Mock/TestClient.cs
@@ -289,24 +289,24 @@ namespace OpenSim.Tests.Common.Mock
289 public event PlacesQuery OnPlacesQuery; 289 public event PlacesQuery OnPlacesQuery;
290 290
291 public event FindAgentUpdate OnFindAgentEvent; 291 public event FindAgentUpdate OnFindAgentEvent;
292 public event TrackAgentUpdate OnTrackAgentEvent; 292 public event TrackAgentUpdate OnTrackAgentEvent;
293 public event NewUserReport OnUserReportEvent; 293 public event NewUserReport OnUserReportEvent;
294 public event SaveStateHandler OnSaveStateEvent; 294 public event SaveStateHandler OnSaveStateEvent;
295 public event GroupAccountSummaryRequest OnGroupAccountSummaryRequest; 295 public event GroupAccountSummaryRequest OnGroupAccountSummaryRequest;
296 public event GroupAccountDetailsRequest OnGroupAccountDetailsRequest; 296 public event GroupAccountDetailsRequest OnGroupAccountDetailsRequest;
297 public event GroupAccountTransactionsRequest OnGroupAccountTransactionsRequest; 297 public event GroupAccountTransactionsRequest OnGroupAccountTransactionsRequest;
298 public event FreezeUserUpdate OnParcelFreezeUserEvent; 298 public event FreezeUserUpdate OnParcelFreezeUserEvent;
299 public event EjectUserUpdate OnParcelEjectUserEvent; 299 public event EjectUserUpdate OnParcelEjectUserEvent;
300 public event ParcelBuyPass OnParcelBuyPass; 300 public event ParcelBuyPass OnParcelBuyPass;
301 public event ParcelGodMark OnParcelGodMark; 301 public event ParcelGodMark OnParcelGodMark;
302 public event GroupActiveProposalsRequest OnGroupActiveProposalsRequest; 302 public event GroupActiveProposalsRequest OnGroupActiveProposalsRequest;
303 public event GroupVoteHistoryRequest OnGroupVoteHistoryRequest; 303 public event GroupVoteHistoryRequest OnGroupVoteHistoryRequest;
304 public event SimWideDeletesDelegate OnSimWideDeletes; 304 public event SimWideDeletesDelegate OnSimWideDeletes;
305 public event SendPostcard OnSendPostcard; 305 public event SendPostcard OnSendPostcard;
306 public event MuteListEntryUpdate OnUpdateMuteListEntryEvent; 306 public event MuteListEntryUpdate OnUpdateMuteListEntryEvent;
307 public event MuteListEntryRemove OnRemoveMuteListEntryEvent; 307 public event MuteListEntryRemove OnRemoveMuteListEntryEvent;
308 public event GodlikeMessage onGodlikeMessageEvent; 308 public event GodlikeMessage onGodlikeMessageEvent;
309 public event GodUpdateRegionInfoUpdate OnGodUpdateRegionInfoUpdateEvent; 309 public event GodUpdateRegionInfoUpdate OnGodUpdateRegionInfoUpdateEvent;
310 310
311#pragma warning restore 67 311#pragma warning restore 67
312 312