diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Data/MSSQL/MSSQLDataStore.cs | 4 | ||||
-rw-r--r-- | OpenSim/Data/MySQL/MySQLDataStore.cs | 4 | ||||
-rw-r--r-- | OpenSim/Data/SQLite/SQLiteRegionData.cs | 4 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 19 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | 20 | ||||
-rw-r--r-- | OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs | 13 |
6 files changed, 58 insertions, 6 deletions
diff --git a/OpenSim/Data/MSSQL/MSSQLDataStore.cs b/OpenSim/Data/MSSQL/MSSQLDataStore.cs index 44bc660..125501b 100644 --- a/OpenSim/Data/MSSQL/MSSQLDataStore.cs +++ b/OpenSim/Data/MSSQL/MSSQLDataStore.cs | |||
@@ -152,7 +152,9 @@ namespace OpenSim.Data.MSSQL | |||
152 | { | 152 | { |
153 | foreach (SceneObjectPart prim in obj.Children.Values) | 153 | foreach (SceneObjectPart prim in obj.Children.Values) |
154 | { | 154 | { |
155 | if ((prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.Physics) == 0) | 155 | if ((prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.Physics) == 0 |
156 | && (prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.Temporary) == 0 | ||
157 | && (prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.TemporaryOnRez) == 0) | ||
156 | { | 158 | { |
157 | m_log.Info("[REGION DB]: Adding obj: " + obj.UUID + " to region: " + regionUUID); | 159 | m_log.Info("[REGION DB]: Adding obj: " + obj.UUID + " to region: " + regionUUID); |
158 | addPrim(prim, obj.UUID, regionUUID); | 160 | addPrim(prim, obj.UUID, regionUUID); |
diff --git a/OpenSim/Data/MySQL/MySQLDataStore.cs b/OpenSim/Data/MySQL/MySQLDataStore.cs index c3fe332..ac0d382 100644 --- a/OpenSim/Data/MySQL/MySQLDataStore.cs +++ b/OpenSim/Data/MySQL/MySQLDataStore.cs | |||
@@ -254,7 +254,9 @@ namespace OpenSim.Data.MySQL | |||
254 | { | 254 | { |
255 | foreach (SceneObjectPart prim in obj.Children.Values) | 255 | foreach (SceneObjectPart prim in obj.Children.Values) |
256 | { | 256 | { |
257 | if ((prim.GetEffectiveObjectFlags() & (uint) LLObject.ObjectFlags.Physics) == 0) | 257 | if ((prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.Physics) == 0 |
258 | && (prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.Temporary) == 0 | ||
259 | && (prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.TemporaryOnRez) == 0) | ||
258 | { | 260 | { |
259 | m_log.Info("[REGION DB]: Adding obj: " + obj.UUID + " to region: " + regionUUID); | 261 | m_log.Info("[REGION DB]: Adding obj: " + obj.UUID + " to region: " + regionUUID); |
260 | addPrim(prim, obj.UUID, regionUUID); | 262 | addPrim(prim, obj.UUID, regionUUID); |
diff --git a/OpenSim/Data/SQLite/SQLiteRegionData.cs b/OpenSim/Data/SQLite/SQLiteRegionData.cs index b648ee8..f1694ca 100644 --- a/OpenSim/Data/SQLite/SQLiteRegionData.cs +++ b/OpenSim/Data/SQLite/SQLiteRegionData.cs | |||
@@ -183,7 +183,9 @@ namespace OpenSim.Data.SQLite | |||
183 | { | 183 | { |
184 | foreach (SceneObjectPart prim in obj.Children.Values) | 184 | foreach (SceneObjectPart prim in obj.Children.Values) |
185 | { | 185 | { |
186 | if ((prim.GetEffectiveObjectFlags() & (uint) LLObject.ObjectFlags.Physics) == 0) | 186 | if ((prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.Physics) == 0 |
187 | && (prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.Temporary) == 0 | ||
188 | && (prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.TemporaryOnRez) == 0) | ||
187 | { | 189 | { |
188 | m_log.Info("[REGION DB]: Adding obj: " + obj.UUID + " to region: " + regionUUID); | 190 | m_log.Info("[REGION DB]: Adding obj: " + obj.UUID + " to region: " + regionUUID); |
189 | addPrim(prim, Util.ToRawUuidString(obj.UUID), Util.ToRawUuidString(regionUUID)); | 191 | addPrim(prim, Util.ToRawUuidString(obj.UUID), Util.ToRawUuidString(regionUUID)); |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 3cc2cbc..33a9102 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -1352,6 +1352,25 @@ namespace OpenSim.Region.Environment.Scenes | |||
1352 | 1352 | ||
1353 | public void CrossPrimGroupIntoNewRegion(LLVector3 position, SceneObjectGroup grp) | 1353 | public void CrossPrimGroupIntoNewRegion(LLVector3 position, SceneObjectGroup grp) |
1354 | { | 1354 | { |
1355 | if (grp == null) | ||
1356 | return; | ||
1357 | if (grp.RootPart == null) | ||
1358 | return; | ||
1359 | |||
1360 | if (grp.RootPart.DIE_AT_EDGE) | ||
1361 | { | ||
1362 | // We remove the object here | ||
1363 | try | ||
1364 | { | ||
1365 | DeleteSceneObjectGroup(grp); | ||
1366 | } | ||
1367 | catch (Exception) | ||
1368 | { | ||
1369 | m_log.Warn("[DATABASE]: exception when trying to remove the prim that crossed the border."); | ||
1370 | } | ||
1371 | return; | ||
1372 | } | ||
1373 | |||
1355 | m_log.Warn("Prim crossing: " + grp.UUID.ToString()); | 1374 | m_log.Warn("Prim crossing: " + grp.UUID.ToString()); |
1356 | int thisx = (int)RegionInfo.RegionLocX; | 1375 | int thisx = (int)RegionInfo.RegionLocX; |
1357 | int thisy = (int)RegionInfo.RegionLocY; | 1376 | int thisy = (int)RegionInfo.RegionLocY; |
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index 9b4f9af..9311904 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | |||
@@ -101,6 +101,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
101 | [XmlIgnore] private Dictionary<LLUUID, scriptEvents> m_scriptEvents = new Dictionary<LLUUID, scriptEvents>(); | 101 | [XmlIgnore] private Dictionary<LLUUID, scriptEvents> m_scriptEvents = new Dictionary<LLUUID, scriptEvents>(); |
102 | [XmlIgnore] public scriptEvents m_aggregateScriptEvents=0; | 102 | [XmlIgnore] public scriptEvents m_aggregateScriptEvents=0; |
103 | [XmlIgnore] private LLObject.ObjectFlags LocalFlags = LLObject.ObjectFlags.None; | 103 | [XmlIgnore] private LLObject.ObjectFlags LocalFlags = LLObject.ObjectFlags.None; |
104 | [XmlIgnore] public bool DIE_AT_EDGE = false; | ||
104 | 105 | ||
105 | 106 | ||
106 | [XmlIgnore] public bool m_IsAttachment = false; | 107 | [XmlIgnore] public bool m_IsAttachment = false; |
@@ -2733,6 +2734,25 @@ namespace OpenSim.Region.Environment.Scenes | |||
2733 | //} | 2734 | //} |
2734 | 2735 | ||
2735 | } | 2736 | } |
2737 | |||
2738 | public void SetDieAtEdge(bool p) | ||
2739 | { | ||
2740 | if (m_parentGroup == null) | ||
2741 | return; | ||
2742 | if (m_parentGroup.RootPart == null) | ||
2743 | return; | ||
2744 | |||
2745 | m_parentGroup.RootPart.DIE_AT_EDGE = p; | ||
2746 | } | ||
2747 | public bool GetDieAtEdge() | ||
2748 | { | ||
2749 | if (m_parentGroup == null) | ||
2750 | return false; | ||
2751 | if (m_parentGroup.RootPart == null) | ||
2752 | return false; | ||
2753 | |||
2754 | return m_parentGroup.RootPart.DIE_AT_EDGE; | ||
2755 | } | ||
2736 | } | 2756 | } |
2737 | 2757 | ||
2738 | } | 2758 | } |
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs index 7649ff3..f0108f8 100644 --- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs +++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs | |||
@@ -844,7 +844,10 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
844 | } | 844 | } |
845 | if ((status & BuiltIn_Commands_BaseClass.STATUS_DIE_AT_EDGE) == BuiltIn_Commands_BaseClass.STATUS_DIE_AT_EDGE) | 845 | if ((status & BuiltIn_Commands_BaseClass.STATUS_DIE_AT_EDGE) == BuiltIn_Commands_BaseClass.STATUS_DIE_AT_EDGE) |
846 | { | 846 | { |
847 | NotImplemented("llSetStatus - STATUS_DIE_AT_EDGE"); | 847 | if (value == 1) |
848 | m_host.SetDieAtEdge(true); | ||
849 | else | ||
850 | m_host.SetDieAtEdge(false); | ||
848 | } | 851 | } |
849 | if ((status & BuiltIn_Commands_BaseClass.STATUS_RETURN_AT_EDGE) == BuiltIn_Commands_BaseClass.STATUS_RETURN_AT_EDGE) | 852 | if ((status & BuiltIn_Commands_BaseClass.STATUS_RETURN_AT_EDGE) == BuiltIn_Commands_BaseClass.STATUS_RETURN_AT_EDGE) |
850 | { | 853 | { |
@@ -890,8 +893,12 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
890 | NotImplemented("llGetStatus - STATUS_BLOCK_GRAB"); | 893 | NotImplemented("llGetStatus - STATUS_BLOCK_GRAB"); |
891 | return 0; | 894 | return 0; |
892 | case BuiltIn_Commands_BaseClass.STATUS_DIE_AT_EDGE: | 895 | case BuiltIn_Commands_BaseClass.STATUS_DIE_AT_EDGE: |
893 | NotImplemented("llGetStatus - STATUS_DIE_AT_EDGE"); | 896 | |
894 | return 0; | 897 | if (m_host.GetDieAtEdge()) |
898 | return 1; | ||
899 | else | ||
900 | return 0; | ||
901 | |||
895 | case BuiltIn_Commands_BaseClass.STATUS_RETURN_AT_EDGE: | 902 | case BuiltIn_Commands_BaseClass.STATUS_RETURN_AT_EDGE: |
896 | NotImplemented("llGetStatus - STATUS_RETURN_AT_EDGE"); | 903 | NotImplemented("llGetStatus - STATUS_RETURN_AT_EDGE"); |
897 | return 0; | 904 | return 0; |