* Implemented DIE_AT_EDGE and Temporary objects don't save to the database.
parent
0e31eb8314
commit
7b446aba91
|
@ -152,7 +152,9 @@ namespace OpenSim.Data.MSSQL
|
||||||
{
|
{
|
||||||
foreach (SceneObjectPart prim in obj.Children.Values)
|
foreach (SceneObjectPart prim in obj.Children.Values)
|
||||||
{
|
{
|
||||||
if ((prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.Physics) == 0)
|
if ((prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.Physics) == 0
|
||||||
|
&& (prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.Temporary) == 0
|
||||||
|
&& (prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.TemporaryOnRez) == 0)
|
||||||
{
|
{
|
||||||
m_log.Info("[REGION DB]: Adding obj: " + obj.UUID + " to region: " + regionUUID);
|
m_log.Info("[REGION DB]: Adding obj: " + obj.UUID + " to region: " + regionUUID);
|
||||||
addPrim(prim, obj.UUID, regionUUID);
|
addPrim(prim, obj.UUID, regionUUID);
|
||||||
|
|
|
@ -254,7 +254,9 @@ namespace OpenSim.Data.MySQL
|
||||||
{
|
{
|
||||||
foreach (SceneObjectPart prim in obj.Children.Values)
|
foreach (SceneObjectPart prim in obj.Children.Values)
|
||||||
{
|
{
|
||||||
if ((prim.GetEffectiveObjectFlags() & (uint) LLObject.ObjectFlags.Physics) == 0)
|
if ((prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.Physics) == 0
|
||||||
|
&& (prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.Temporary) == 0
|
||||||
|
&& (prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.TemporaryOnRez) == 0)
|
||||||
{
|
{
|
||||||
m_log.Info("[REGION DB]: Adding obj: " + obj.UUID + " to region: " + regionUUID);
|
m_log.Info("[REGION DB]: Adding obj: " + obj.UUID + " to region: " + regionUUID);
|
||||||
addPrim(prim, obj.UUID, regionUUID);
|
addPrim(prim, obj.UUID, regionUUID);
|
||||||
|
|
|
@ -183,7 +183,9 @@ namespace OpenSim.Data.SQLite
|
||||||
{
|
{
|
||||||
foreach (SceneObjectPart prim in obj.Children.Values)
|
foreach (SceneObjectPart prim in obj.Children.Values)
|
||||||
{
|
{
|
||||||
if ((prim.GetEffectiveObjectFlags() & (uint) LLObject.ObjectFlags.Physics) == 0)
|
if ((prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.Physics) == 0
|
||||||
|
&& (prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.Temporary) == 0
|
||||||
|
&& (prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.TemporaryOnRez) == 0)
|
||||||
{
|
{
|
||||||
m_log.Info("[REGION DB]: Adding obj: " + obj.UUID + " to region: " + regionUUID);
|
m_log.Info("[REGION DB]: Adding obj: " + obj.UUID + " to region: " + regionUUID);
|
||||||
addPrim(prim, Util.ToRawUuidString(obj.UUID), Util.ToRawUuidString(regionUUID));
|
addPrim(prim, Util.ToRawUuidString(obj.UUID), Util.ToRawUuidString(regionUUID));
|
||||||
|
|
|
@ -1352,6 +1352,25 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
public void CrossPrimGroupIntoNewRegion(LLVector3 position, SceneObjectGroup grp)
|
public void CrossPrimGroupIntoNewRegion(LLVector3 position, SceneObjectGroup grp)
|
||||||
{
|
{
|
||||||
|
if (grp == null)
|
||||||
|
return;
|
||||||
|
if (grp.RootPart == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (grp.RootPart.DIE_AT_EDGE)
|
||||||
|
{
|
||||||
|
// We remove the object here
|
||||||
|
try
|
||||||
|
{
|
||||||
|
DeleteSceneObjectGroup(grp);
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
m_log.Warn("[DATABASE]: exception when trying to remove the prim that crossed the border.");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
m_log.Warn("Prim crossing: " + grp.UUID.ToString());
|
m_log.Warn("Prim crossing: " + grp.UUID.ToString());
|
||||||
int thisx = (int)RegionInfo.RegionLocX;
|
int thisx = (int)RegionInfo.RegionLocX;
|
||||||
int thisy = (int)RegionInfo.RegionLocY;
|
int thisy = (int)RegionInfo.RegionLocY;
|
||||||
|
|
|
@ -101,6 +101,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
[XmlIgnore] private Dictionary<LLUUID, scriptEvents> m_scriptEvents = new Dictionary<LLUUID, scriptEvents>();
|
[XmlIgnore] private Dictionary<LLUUID, scriptEvents> m_scriptEvents = new Dictionary<LLUUID, scriptEvents>();
|
||||||
[XmlIgnore] public scriptEvents m_aggregateScriptEvents=0;
|
[XmlIgnore] public scriptEvents m_aggregateScriptEvents=0;
|
||||||
[XmlIgnore] private LLObject.ObjectFlags LocalFlags = LLObject.ObjectFlags.None;
|
[XmlIgnore] private LLObject.ObjectFlags LocalFlags = LLObject.ObjectFlags.None;
|
||||||
|
[XmlIgnore] public bool DIE_AT_EDGE = false;
|
||||||
|
|
||||||
|
|
||||||
[XmlIgnore] public bool m_IsAttachment = false;
|
[XmlIgnore] public bool m_IsAttachment = false;
|
||||||
|
@ -2733,6 +2734,25 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
//}
|
//}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetDieAtEdge(bool p)
|
||||||
|
{
|
||||||
|
if (m_parentGroup == null)
|
||||||
|
return;
|
||||||
|
if (m_parentGroup.RootPart == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_parentGroup.RootPart.DIE_AT_EDGE = p;
|
||||||
|
}
|
||||||
|
public bool GetDieAtEdge()
|
||||||
|
{
|
||||||
|
if (m_parentGroup == null)
|
||||||
|
return false;
|
||||||
|
if (m_parentGroup.RootPart == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return m_parentGroup.RootPart.DIE_AT_EDGE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -844,7 +844,10 @@ namespace OpenSim.Region.ScriptEngine.Common
|
||||||
}
|
}
|
||||||
if ((status & BuiltIn_Commands_BaseClass.STATUS_DIE_AT_EDGE) == BuiltIn_Commands_BaseClass.STATUS_DIE_AT_EDGE)
|
if ((status & BuiltIn_Commands_BaseClass.STATUS_DIE_AT_EDGE) == BuiltIn_Commands_BaseClass.STATUS_DIE_AT_EDGE)
|
||||||
{
|
{
|
||||||
NotImplemented("llSetStatus - STATUS_DIE_AT_EDGE");
|
if (value == 1)
|
||||||
|
m_host.SetDieAtEdge(true);
|
||||||
|
else
|
||||||
|
m_host.SetDieAtEdge(false);
|
||||||
}
|
}
|
||||||
if ((status & BuiltIn_Commands_BaseClass.STATUS_RETURN_AT_EDGE) == BuiltIn_Commands_BaseClass.STATUS_RETURN_AT_EDGE)
|
if ((status & BuiltIn_Commands_BaseClass.STATUS_RETURN_AT_EDGE) == BuiltIn_Commands_BaseClass.STATUS_RETURN_AT_EDGE)
|
||||||
{
|
{
|
||||||
|
@ -890,8 +893,12 @@ namespace OpenSim.Region.ScriptEngine.Common
|
||||||
NotImplemented("llGetStatus - STATUS_BLOCK_GRAB");
|
NotImplemented("llGetStatus - STATUS_BLOCK_GRAB");
|
||||||
return 0;
|
return 0;
|
||||||
case BuiltIn_Commands_BaseClass.STATUS_DIE_AT_EDGE:
|
case BuiltIn_Commands_BaseClass.STATUS_DIE_AT_EDGE:
|
||||||
NotImplemented("llGetStatus - STATUS_DIE_AT_EDGE");
|
|
||||||
return 0;
|
if (m_host.GetDieAtEdge())
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
|
||||||
case BuiltIn_Commands_BaseClass.STATUS_RETURN_AT_EDGE:
|
case BuiltIn_Commands_BaseClass.STATUS_RETURN_AT_EDGE:
|
||||||
NotImplemented("llGetStatus - STATUS_RETURN_AT_EDGE");
|
NotImplemented("llGetStatus - STATUS_RETURN_AT_EDGE");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue