* 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)
|
||||
{
|
||||
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);
|
||||
addPrim(prim, obj.UUID, regionUUID);
|
||||
|
|
|
@ -254,7 +254,9 @@ namespace OpenSim.Data.MySQL
|
|||
{
|
||||
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);
|
||||
addPrim(prim, obj.UUID, regionUUID);
|
||||
|
|
|
@ -183,7 +183,9 @@ namespace OpenSim.Data.SQLite
|
|||
{
|
||||
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);
|
||||
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)
|
||||
{
|
||||
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());
|
||||
int thisx = (int)RegionInfo.RegionLocX;
|
||||
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] public scriptEvents m_aggregateScriptEvents=0;
|
||||
[XmlIgnore] private LLObject.ObjectFlags LocalFlags = LLObject.ObjectFlags.None;
|
||||
[XmlIgnore] public bool DIE_AT_EDGE = 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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
|
@ -890,8 +893,12 @@ namespace OpenSim.Region.ScriptEngine.Common
|
|||
NotImplemented("llGetStatus - STATUS_BLOCK_GRAB");
|
||||
return 0;
|
||||
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:
|
||||
NotImplemented("llGetStatus - STATUS_RETURN_AT_EDGE");
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue