Implement temp-on-rez objecte really being temporary
parent
fbc813e658
commit
3902149e1b
|
@ -760,6 +760,10 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
if (m_frame % m_update_presences == 0)
|
if (m_frame % m_update_presences == 0)
|
||||||
m_innerScene.UpdatePresences();
|
m_innerScene.UpdatePresences();
|
||||||
|
|
||||||
|
// Delete temp-on-rez stuff
|
||||||
|
if (m_frame % m_update_backup == 0)
|
||||||
|
CleanTempObjects();
|
||||||
|
|
||||||
if (Region_Status != RegionStatus.SlaveScene)
|
if (Region_Status != RegionStatus.SlaveScene)
|
||||||
{
|
{
|
||||||
if (m_frame % m_update_events == 0)
|
if (m_frame % m_update_events == 0)
|
||||||
|
@ -2069,6 +2073,12 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// Remove, then add, to ensure the expire
|
||||||
|
// time is refreshed. Wouldn't do to
|
||||||
|
// have it poof before the avatar gets
|
||||||
|
// there.
|
||||||
|
//
|
||||||
|
RootPrim.RemFlag(PrimFlags.TemporaryOnRez);
|
||||||
RootPrim.AddFlag(PrimFlags.TemporaryOnRez);
|
RootPrim.AddFlag(PrimFlags.TemporaryOnRez);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4183,5 +4193,27 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void CleanTempObjects()
|
||||||
|
{
|
||||||
|
List<EntityBase> objs = GetEntities();
|
||||||
|
|
||||||
|
foreach (EntityBase obj in objs)
|
||||||
|
{
|
||||||
|
if (obj is SceneObjectGroup)
|
||||||
|
{
|
||||||
|
SceneObjectGroup grp = (SceneObjectGroup)obj;
|
||||||
|
|
||||||
|
if (grp.RootPart != null)
|
||||||
|
{
|
||||||
|
if ((grp.RootPart.Flags & PrimFlags.TemporaryOnRez) != 0)
|
||||||
|
{
|
||||||
|
if (grp.RootPart.Expires <= DateTime.Now)
|
||||||
|
DeleteSceneObject(grp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1809,7 +1809,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
linkPart.LinkNum = m_parts.Count;
|
linkPart.LinkNum = m_parts.Count;
|
||||||
|
|
||||||
linkPart.SetParent(this);
|
linkPart.SetParent(this);
|
||||||
linkPart.AddFlag(PrimFlags.CreateSelected);
|
linkPart.AddFlag(PrimFlags.CreateSelected);
|
||||||
|
|
||||||
//if (linkPart.PhysActor != null)
|
//if (linkPart.PhysActor != null)
|
||||||
//{
|
//{
|
||||||
|
@ -2081,6 +2081,9 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
SceneObjectPart selectionPart = GetChildPart(localID);
|
SceneObjectPart selectionPart = GetChildPart(localID);
|
||||||
|
|
||||||
|
if (data[47] != 0) // Temporary
|
||||||
|
DetachFromBackup();
|
||||||
|
|
||||||
if (selectionPart != null)
|
if (selectionPart != null)
|
||||||
{
|
{
|
||||||
lock (m_parts)
|
lock (m_parts)
|
||||||
|
@ -2089,7 +2092,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
if (part.Scale.X > 10.0 || part.Scale.Y > 10.0 || part.Scale.Z > 10.0)
|
if (part.Scale.X > 10.0 || part.Scale.Y > 10.0 || part.Scale.Z > 10.0)
|
||||||
{
|
{
|
||||||
data[47] = 0; // Reset physics
|
data[46] = 0; // Reset physics
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -361,6 +361,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
private uint _everyoneMask = (uint)PermissionMask.None;
|
private uint _everyoneMask = (uint)PermissionMask.None;
|
||||||
private uint _nextOwnerMask = (uint)PermissionMask.All;
|
private uint _nextOwnerMask = (uint)PermissionMask.All;
|
||||||
private PrimFlags _flags = 0;
|
private PrimFlags _flags = 0;
|
||||||
|
private DateTime m_expires;
|
||||||
|
|
||||||
public UUID CreatorID {
|
public UUID CreatorID {
|
||||||
get
|
get
|
||||||
|
@ -451,6 +452,13 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
set { m_particleSystem = value; }
|
set { m_particleSystem = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[XmlIgnore]
|
||||||
|
public DateTime Expires
|
||||||
|
{
|
||||||
|
get { return m_expires; }
|
||||||
|
set { m_expires = value; }
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The position of the entire group that this prim belongs to.
|
/// The position of the entire group that this prim belongs to.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1050,15 +1058,15 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
public void AddFlag(PrimFlags flag)
|
public void AddFlag(PrimFlags flag)
|
||||||
{
|
{
|
||||||
// PrimFlags prevflag = Flags;
|
// PrimFlags prevflag = Flags;
|
||||||
//uint objflags = Flags;
|
|
||||||
if ((ObjectFlags & (uint) flag) == 0)
|
if ((ObjectFlags & (uint) flag) == 0)
|
||||||
{
|
{
|
||||||
//Console.WriteLine("Adding flag: " + ((PrimFlags) flag).ToString());
|
//Console.WriteLine("Adding flag: " + ((PrimFlags) flag).ToString());
|
||||||
_flags |= flag;
|
_flags |= flag;
|
||||||
|
|
||||||
|
if (flag == PrimFlags.TemporaryOnRez)
|
||||||
|
Expires = DateTime.Now + new TimeSpan(600000000);
|
||||||
}
|
}
|
||||||
//uint currflag = (uint)Flags;
|
// System.Console.WriteLine("Aprev: " + prevflag.ToString() + " curr: " + Flags.ToString());
|
||||||
//System.Console.WriteLine("Aprev: " + prevflag.ToString() + " curr: " + Flags.ToString());
|
|
||||||
//ScheduleFullUpdate();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
Loading…
Reference in New Issue