* 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