diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs | 306 | ||||
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | 7 |
2 files changed, 307 insertions, 6 deletions
diff --git a/OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs b/OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs index 0ede5c1..95efa79 100644 --- a/OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs | |||
@@ -495,8 +495,15 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
495 | rdata.RegionScene = scene; | 495 | rdata.RegionScene = scene; |
496 | regionConnections.RegionLandChannel = scene.LandChannel; | 496 | regionConnections.RegionLandChannel = scene.LandChannel; |
497 | 497 | ||
498 | LargeLandChannel lnd = new LargeLandChannel(rdata,scene.LandChannel,regionConnections.ConnectedRegions); | 498 | RegionCombinerLargeLandChannel lnd = new RegionCombinerLargeLandChannel(rdata,scene.LandChannel,regionConnections.ConnectedRegions); |
499 | scene.LandChannel = lnd; | 499 | scene.LandChannel = lnd; |
500 | lock (m_regions) | ||
501 | { | ||
502 | foreach (RegionData r in regionConnections.ConnectedRegions) | ||
503 | { | ||
504 | ForwardPermissionRequests(regionConnections, r.RegionScene); | ||
505 | } | ||
506 | } | ||
500 | 507 | ||
501 | m_regions.Add(scene.RegionInfo.originRegionID,regionConnections); | 508 | m_regions.Add(scene.RegionInfo.originRegionID,regionConnections); |
502 | } | 509 | } |
@@ -656,6 +663,64 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
656 | } | 663 | } |
657 | return new RegionData(); | 664 | return new RegionData(); |
658 | } | 665 | } |
666 | |||
667 | public void ForwardPermissionRequests(RegionConnections BigRegion, Scene VirtualRegion) | ||
668 | { | ||
669 | if (BigRegion.PermissionModule == null) | ||
670 | BigRegion.PermissionModule = new RegionCombinerPermissionModule(BigRegion.RegionScene); | ||
671 | |||
672 | |||
673 | |||
674 | BigRegion.RegionScene.Permissions.OnBypassPermissions += BigRegion.PermissionModule.BypassPermissions; | ||
675 | BigRegion.RegionScene.Permissions.OnSetBypassPermissions += BigRegion.PermissionModule.SetBypassPermissions; | ||
676 | BigRegion.RegionScene.Permissions.OnPropagatePermissions += BigRegion.PermissionModule.PropagatePermissions; | ||
677 | BigRegion.RegionScene.Permissions.OnGenerateClientFlags += BigRegion.PermissionModule.GenerateClientFlags; | ||
678 | BigRegion.RegionScene.Permissions.OnAbandonParcel += BigRegion.PermissionModule.CanAbandonParcel; | ||
679 | BigRegion.RegionScene.Permissions.OnReclaimParcel += BigRegion.PermissionModule.CanReclaimParcel; | ||
680 | BigRegion.RegionScene.Permissions.OnDeedParcel += BigRegion.PermissionModule.CanDeedParcel; | ||
681 | BigRegion.RegionScene.Permissions.OnDeedObject += BigRegion.PermissionModule.CanDeedObject; | ||
682 | BigRegion.RegionScene.Permissions.OnIsGod += BigRegion.PermissionModule.IsGod; | ||
683 | BigRegion.RegionScene.Permissions.OnDuplicateObject += BigRegion.PermissionModule.CanDuplicateObject; | ||
684 | BigRegion.RegionScene.Permissions.OnDeleteObject += BigRegion.PermissionModule.CanDeleteObject; //MAYBE FULLY IMPLEMENTED | ||
685 | BigRegion.RegionScene.Permissions.OnEditObject += BigRegion.PermissionModule.CanEditObject; //MAYBE FULLY IMPLEMENTED | ||
686 | BigRegion.RegionScene.Permissions.OnEditParcel += BigRegion.PermissionModule.CanEditParcel; //MAYBE FULLY IMPLEMENTED | ||
687 | BigRegion.RegionScene.Permissions.OnInstantMessage += BigRegion.PermissionModule.CanInstantMessage; | ||
688 | BigRegion.RegionScene.Permissions.OnInventoryTransfer += BigRegion.PermissionModule.CanInventoryTransfer; //NOT YET IMPLEMENTED | ||
689 | BigRegion.RegionScene.Permissions.OnIssueEstateCommand += BigRegion.PermissionModule.CanIssueEstateCommand; //FULLY IMPLEMENTED | ||
690 | BigRegion.RegionScene.Permissions.OnMoveObject += BigRegion.PermissionModule.CanMoveObject; //MAYBE FULLY IMPLEMENTED | ||
691 | BigRegion.RegionScene.Permissions.OnObjectEntry += BigRegion.PermissionModule.CanObjectEntry; | ||
692 | BigRegion.RegionScene.Permissions.OnReturnObject += BigRegion.PermissionModule.CanReturnObject; //NOT YET IMPLEMENTED | ||
693 | BigRegion.RegionScene.Permissions.OnRezObject += BigRegion.PermissionModule.CanRezObject; //MAYBE FULLY IMPLEMENTED | ||
694 | BigRegion.RegionScene.Permissions.OnRunConsoleCommand += BigRegion.PermissionModule.CanRunConsoleCommand; | ||
695 | BigRegion.RegionScene.Permissions.OnRunScript += BigRegion.PermissionModule.CanRunScript; //NOT YET IMPLEMENTED | ||
696 | BigRegion.RegionScene.Permissions.OnCompileScript += BigRegion.PermissionModule.CanCompileScript; | ||
697 | BigRegion.RegionScene.Permissions.OnSellParcel += BigRegion.PermissionModule.CanSellParcel; | ||
698 | BigRegion.RegionScene.Permissions.OnTakeObject += BigRegion.PermissionModule.CanTakeObject; | ||
699 | BigRegion.RegionScene.Permissions.OnTakeCopyObject += BigRegion.PermissionModule.CanTakeCopyObject; | ||
700 | BigRegion.RegionScene.Permissions.OnTerraformLand += BigRegion.PermissionModule.CanTerraformLand; | ||
701 | BigRegion.RegionScene.Permissions.OnLinkObject += BigRegion.PermissionModule.CanLinkObject; //NOT YET IMPLEMENTED | ||
702 | BigRegion.RegionScene.Permissions.OnDelinkObject += BigRegion.PermissionModule.CanDelinkObject; //NOT YET IMPLEMENTED | ||
703 | BigRegion.RegionScene.Permissions.OnBuyLand += BigRegion.PermissionModule.CanBuyLand; //NOT YET IMPLEMENTED | ||
704 | |||
705 | BigRegion.RegionScene.Permissions.OnViewNotecard += BigRegion.PermissionModule.CanViewNotecard; //NOT YET IMPLEMENTED | ||
706 | BigRegion.RegionScene.Permissions.OnViewScript += BigRegion.PermissionModule.CanViewScript; //NOT YET IMPLEMENTED | ||
707 | BigRegion.RegionScene.Permissions.OnEditNotecard += BigRegion.PermissionModule.CanEditNotecard; //NOT YET IMPLEMENTED | ||
708 | BigRegion.RegionScene.Permissions.OnEditScript += BigRegion.PermissionModule.CanEditScript; //NOT YET IMPLEMENTED | ||
709 | |||
710 | BigRegion.RegionScene.Permissions.OnCreateObjectInventory += BigRegion.PermissionModule.CanCreateObjectInventory; //NOT IMPLEMENTED HERE | ||
711 | BigRegion.RegionScene.Permissions.OnEditObjectInventory += BigRegion.PermissionModule.CanEditObjectInventory;//MAYBE FULLY IMPLEMENTED | ||
712 | BigRegion.RegionScene.Permissions.OnCopyObjectInventory += BigRegion.PermissionModule.CanCopyObjectInventory; //NOT YET IMPLEMENTED | ||
713 | BigRegion.RegionScene.Permissions.OnDeleteObjectInventory += BigRegion.PermissionModule.CanDeleteObjectInventory; //NOT YET IMPLEMENTED | ||
714 | BigRegion.RegionScene.Permissions.OnResetScript += BigRegion.PermissionModule.CanResetScript; | ||
715 | |||
716 | BigRegion.RegionScene.Permissions.OnCreateUserInventory += BigRegion.PermissionModule.CanCreateUserInventory; //NOT YET IMPLEMENTED | ||
717 | BigRegion.RegionScene.Permissions.OnCopyUserInventory += BigRegion.PermissionModule.CanCopyUserInventory; //NOT YET IMPLEMENTED | ||
718 | BigRegion.RegionScene.Permissions.OnEditUserInventory += BigRegion.PermissionModule.CanEditUserInventory; //NOT YET IMPLEMENTED | ||
719 | BigRegion.RegionScene.Permissions.OnDeleteUserInventory += BigRegion.PermissionModule.CanDeleteUserInventory; //NOT YET IMPLEMENTED | ||
720 | |||
721 | BigRegion.RegionScene.Permissions.OnTeleport += BigRegion.PermissionModule.CanTeleport; //NOT YET IMPLEMENTED | ||
722 | BigRegion.RegionScene.Permissions.OnUseObjectReturn += BigRegion.PermissionModule.CanUseObjectReturn; //NOT YET IMPLEMENTED | ||
723 | } | ||
659 | } | 724 | } |
660 | public class RegionConnections | 725 | public class RegionConnections |
661 | { | 726 | { |
@@ -667,6 +732,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
667 | public int XEnd; | 732 | public int XEnd; |
668 | public int YEnd; | 733 | public int YEnd; |
669 | public List<RegionData> ConnectedRegions; | 734 | public List<RegionData> ConnectedRegions; |
735 | public RegionCombinerPermissionModule PermissionModule; | ||
670 | public void UpdateExtents(Vector3 extents) | 736 | public void UpdateExtents(Vector3 extents) |
671 | { | 737 | { |
672 | XEnd = (int)extents.X; | 738 | XEnd = (int)extents.X; |
@@ -683,7 +749,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
683 | 749 | ||
684 | } | 750 | } |
685 | 751 | ||
686 | public class LargeLandChannel : ILandChannel | 752 | public class RegionCombinerLargeLandChannel : ILandChannel |
687 | { | 753 | { |
688 | // private static readonly ILog m_log = | 754 | // private static readonly ILog m_log = |
689 | // LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 755 | // LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
@@ -693,7 +759,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
693 | 759 | ||
694 | #region ILandChannel Members | 760 | #region ILandChannel Members |
695 | 761 | ||
696 | public LargeLandChannel(RegionData regData, ILandChannel rootRegionLandChannel,List<RegionData> regionConnections) | 762 | public RegionCombinerLargeLandChannel(RegionData regData, ILandChannel rootRegionLandChannel,List<RegionData> regionConnections) |
697 | { | 763 | { |
698 | RegData = regData; | 764 | RegData = regData; |
699 | RootRegionLandChannel = rootRegionLandChannel; | 765 | RootRegionLandChannel = rootRegionLandChannel; |
@@ -811,4 +877,238 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
811 | 877 | ||
812 | #endregion | 878 | #endregion |
813 | } | 879 | } |
880 | |||
881 | public class RegionCombinerPermissionModule | ||
882 | { | ||
883 | private Scene m_rootScene; | ||
884 | public RegionCombinerPermissionModule(Scene RootScene) | ||
885 | { | ||
886 | m_rootScene = RootScene; | ||
887 | } | ||
888 | |||
889 | public bool BypassPermissions() | ||
890 | { | ||
891 | return m_rootScene.Permissions.BypassPermissions(); | ||
892 | } | ||
893 | |||
894 | public void SetBypassPermissions(bool value) | ||
895 | { | ||
896 | m_rootScene.Permissions.SetBypassPermissions(value); | ||
897 | } | ||
898 | |||
899 | public bool PropagatePermissions() | ||
900 | { | ||
901 | return m_rootScene.Permissions.PropagatePermissions(); | ||
902 | } | ||
903 | |||
904 | public uint GenerateClientFlags(UUID userid, UUID objectidid) | ||
905 | { | ||
906 | return m_rootScene.Permissions.GenerateClientFlags(userid,objectidid); | ||
907 | } | ||
908 | |||
909 | public bool CanAbandonParcel(UUID user, ILandObject parcel, Scene scene) | ||
910 | { | ||
911 | return m_rootScene.Permissions.CanAbandonParcel(user,parcel); | ||
912 | } | ||
913 | |||
914 | public bool CanReclaimParcel(UUID user, ILandObject parcel, Scene scene) | ||
915 | { | ||
916 | return m_rootScene.Permissions.CanReclaimParcel(user, parcel); | ||
917 | } | ||
918 | |||
919 | public bool CanDeedParcel(UUID user, ILandObject parcel, Scene scene) | ||
920 | { | ||
921 | return m_rootScene.Permissions.CanDeedParcel(user, parcel); | ||
922 | } | ||
923 | |||
924 | public bool CanDeedObject(UUID user, UUID @group, Scene scene) | ||
925 | { | ||
926 | return m_rootScene.Permissions.CanDeedObject(user,@group); | ||
927 | } | ||
928 | |||
929 | public bool IsGod(UUID user, Scene requestfromscene) | ||
930 | { | ||
931 | return m_rootScene.Permissions.IsGod(user); | ||
932 | } | ||
933 | |||
934 | public bool CanDuplicateObject(int objectcount, UUID objectid, UUID owner, Scene scene, Vector3 objectposition) | ||
935 | { | ||
936 | return m_rootScene.Permissions.CanDuplicateObject(objectcount, objectid, owner, objectposition); | ||
937 | } | ||
938 | |||
939 | public bool CanDeleteObject(UUID objectid, UUID deleter, Scene scene) | ||
940 | { | ||
941 | return m_rootScene.Permissions.CanDeleteObject(objectid, deleter); | ||
942 | } | ||
943 | |||
944 | public bool CanEditObject(UUID objectid, UUID editorid, Scene scene) | ||
945 | { | ||
946 | return m_rootScene.Permissions.CanEditObject(objectid, editorid); | ||
947 | } | ||
948 | |||
949 | public bool CanEditParcel(UUID user, ILandObject parcel, Scene scene) | ||
950 | { | ||
951 | return m_rootScene.Permissions.CanEditParcel(user, parcel); | ||
952 | } | ||
953 | |||
954 | public bool CanInstantMessage(UUID user, UUID target, Scene startscene) | ||
955 | { | ||
956 | return m_rootScene.Permissions.CanInstantMessage(user, target); | ||
957 | } | ||
958 | |||
959 | public bool CanInventoryTransfer(UUID user, UUID target, Scene startscene) | ||
960 | { | ||
961 | return m_rootScene.Permissions.CanInventoryTransfer(user, target); | ||
962 | } | ||
963 | |||
964 | public bool CanIssueEstateCommand(UUID user, Scene requestfromscene, bool ownercommand) | ||
965 | { | ||
966 | return m_rootScene.Permissions.CanIssueEstateCommand(user, ownercommand); | ||
967 | } | ||
968 | |||
969 | public bool CanMoveObject(UUID objectid, UUID moverid, Scene scene) | ||
970 | { | ||
971 | return m_rootScene.Permissions.CanMoveObject(objectid, moverid); | ||
972 | } | ||
973 | |||
974 | public bool CanObjectEntry(UUID objectid, bool enteringregion, Vector3 newpoint, Scene scene) | ||
975 | { | ||
976 | return m_rootScene.Permissions.CanObjectEntry(objectid, enteringregion, newpoint); | ||
977 | } | ||
978 | |||
979 | public bool CanReturnObject(UUID objectid, UUID returnerid, Scene scene) | ||
980 | { | ||
981 | return m_rootScene.Permissions.CanReturnObject(objectid, returnerid); | ||
982 | } | ||
983 | |||
984 | public bool CanRezObject(int objectcount, UUID owner, Vector3 objectposition, Scene scene) | ||
985 | { | ||
986 | return m_rootScene.Permissions.CanRezObject(objectcount, owner, objectposition); | ||
987 | } | ||
988 | |||
989 | public bool CanRunConsoleCommand(UUID user, Scene requestfromscene) | ||
990 | { | ||
991 | return m_rootScene.Permissions.CanRunConsoleCommand(user); | ||
992 | } | ||
993 | |||
994 | public bool CanRunScript(UUID script, UUID objectid, UUID user, Scene scene) | ||
995 | { | ||
996 | return m_rootScene.Permissions.CanRunScript(script, objectid, user); | ||
997 | } | ||
998 | |||
999 | public bool CanCompileScript(UUID owneruuid, int scripttype, Scene scene) | ||
1000 | { | ||
1001 | return m_rootScene.Permissions.CanCompileScript(owneruuid, scripttype); | ||
1002 | } | ||
1003 | |||
1004 | public bool CanSellParcel(UUID user, ILandObject parcel, Scene scene) | ||
1005 | { | ||
1006 | return m_rootScene.Permissions.CanSellParcel(user, parcel); | ||
1007 | } | ||
1008 | |||
1009 | public bool CanTakeObject(UUID objectid, UUID stealer, Scene scene) | ||
1010 | { | ||
1011 | return m_rootScene.Permissions.CanTakeObject(objectid, stealer); | ||
1012 | } | ||
1013 | |||
1014 | public bool CanTakeCopyObject(UUID objectid, UUID userid, Scene inscene) | ||
1015 | { | ||
1016 | return m_rootScene.Permissions.CanTakeObject(objectid, userid); | ||
1017 | } | ||
1018 | |||
1019 | public bool CanTerraformLand(UUID user, Vector3 position, Scene requestfromscene) | ||
1020 | { | ||
1021 | return m_rootScene.Permissions.CanTerraformLand(user, position); | ||
1022 | } | ||
1023 | |||
1024 | public bool CanLinkObject(UUID user, UUID objectid) | ||
1025 | { | ||
1026 | return m_rootScene.Permissions.CanLinkObject(user, objectid); | ||
1027 | } | ||
1028 | |||
1029 | public bool CanDelinkObject(UUID user, UUID objectid) | ||
1030 | { | ||
1031 | return m_rootScene.Permissions.CanDelinkObject(user, objectid); | ||
1032 | } | ||
1033 | |||
1034 | public bool CanBuyLand(UUID user, ILandObject parcel, Scene scene) | ||
1035 | { | ||
1036 | return m_rootScene.Permissions.CanBuyLand(user, parcel); | ||
1037 | } | ||
1038 | |||
1039 | public bool CanViewNotecard(UUID script, UUID objectid, UUID user, Scene scene) | ||
1040 | { | ||
1041 | return m_rootScene.Permissions.CanViewNotecard(script, objectid, user); | ||
1042 | } | ||
1043 | |||
1044 | public bool CanViewScript(UUID script, UUID objectid, UUID user, Scene scene) | ||
1045 | { | ||
1046 | return m_rootScene.Permissions.CanViewScript(script, objectid, user); | ||
1047 | } | ||
1048 | |||
1049 | public bool CanEditNotecard(UUID notecard, UUID objectid, UUID user, Scene scene) | ||
1050 | { | ||
1051 | return m_rootScene.Permissions.CanEditNotecard(notecard, objectid, user); | ||
1052 | } | ||
1053 | |||
1054 | public bool CanEditScript(UUID script, UUID objectid, UUID user, Scene scene) | ||
1055 | { | ||
1056 | return m_rootScene.Permissions.CanEditScript(script, objectid, user); | ||
1057 | } | ||
1058 | |||
1059 | public bool CanCreateObjectInventory(int invtype, UUID objectid, UUID userid) | ||
1060 | { | ||
1061 | return m_rootScene.Permissions.CanCreateObjectInventory(invtype, objectid, userid); | ||
1062 | } | ||
1063 | |||
1064 | public bool CanEditObjectInventory(UUID objectid, UUID editorid, Scene scene) | ||
1065 | { | ||
1066 | return m_rootScene.Permissions.CanEditObjectInventory(objectid, editorid); | ||
1067 | } | ||
1068 | |||
1069 | public bool CanCopyObjectInventory(UUID itemid, UUID objectid, UUID userid) | ||
1070 | { | ||
1071 | return m_rootScene.Permissions.CanCopyObjectInventory(itemid, objectid, userid); | ||
1072 | } | ||
1073 | |||
1074 | public bool CanDeleteObjectInventory(UUID itemid, UUID objectid, UUID userid) | ||
1075 | { | ||
1076 | return m_rootScene.Permissions.CanDeleteObjectInventory(itemid, objectid, userid); | ||
1077 | } | ||
1078 | |||
1079 | public bool CanResetScript(UUID prim, UUID script, UUID user, Scene scene) | ||
1080 | { | ||
1081 | return m_rootScene.Permissions.CanResetScript(prim, script, user); | ||
1082 | } | ||
1083 | |||
1084 | public bool CanCreateUserInventory(int invtype, UUID userid) | ||
1085 | { | ||
1086 | return m_rootScene.Permissions.CanCreateUserInventory(invtype, userid); | ||
1087 | } | ||
1088 | |||
1089 | public bool CanCopyUserInventory(UUID itemid, UUID userid) | ||
1090 | { | ||
1091 | return m_rootScene.Permissions.CanCopyUserInventory(itemid, userid); | ||
1092 | } | ||
1093 | |||
1094 | public bool CanEditUserInventory(UUID itemid, UUID userid) | ||
1095 | { | ||
1096 | return m_rootScene.Permissions.CanEditUserInventory(itemid, userid); | ||
1097 | } | ||
1098 | |||
1099 | public bool CanDeleteUserInventory(UUID itemid, UUID userid) | ||
1100 | { | ||
1101 | return m_rootScene.Permissions.CanDeleteUserInventory(itemid, userid); | ||
1102 | } | ||
1103 | |||
1104 | public bool CanTeleport(UUID userid, Scene scene) | ||
1105 | { | ||
1106 | return m_rootScene.Permissions.CanTeleport(userid); | ||
1107 | } | ||
1108 | |||
1109 | public bool CanUseObjectReturn(ILandObject landdata, uint type, IClientAPI client, List<SceneObjectGroup> retlist, Scene scene) | ||
1110 | { | ||
1111 | return m_rootScene.Permissions.CanUseObjectReturn(landdata, type, client, retlist); | ||
1112 | } | ||
1113 | } | ||
814 | } | 1114 | } |
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs index 572412a..fea288e 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | |||
@@ -1564,12 +1564,13 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1564 | m_parentScene = pScene; | 1564 | m_parentScene = pScene; |
1565 | 1565 | ||
1566 | } | 1566 | } |
1567 | // Recovered for use by fly height. Kitto Flora | 1567 | |
1568 | // Recovered for use by fly height. Kitto Flora | ||
1568 | public float GetTerrainHeightAtXY(float x, float y) | 1569 | public float GetTerrainHeightAtXY(float x, float y) |
1569 | { | 1570 | { |
1570 | 1571 | ||
1571 | int offsetX = ((int) (x/256)) * 256; | 1572 | int offsetX = ((int)(x / (int)Constants.RegionSize)) * (int)Constants.RegionSize; |
1572 | int offsetY = ((int) (y/256)) * 256; | 1573 | int offsetY = ((int)(y / (int)Constants.RegionSize)) * (int)Constants.RegionSize; |
1573 | 1574 | ||
1574 | IntPtr heightFieldGeom = IntPtr.Zero; | 1575 | IntPtr heightFieldGeom = IntPtr.Zero; |
1575 | 1576 | ||