* um, Prim crossings? Experimental.
* Backup your database just in case.ThreadPoolClientBranch
							parent
							
								
									44058f8ae6
								
							
						
					
					
						commit
						a56664cf59
					
				| 
						 | 
				
			
			@ -70,7 +70,7 @@ namespace OpenSim.Framework
 | 
			
		|||
 | 
			
		||||
        public virtual bool TriggerExpectPrim(ulong regionHandle, LLUUID primID, string objData)
 | 
			
		||||
        {
 | 
			
		||||
            if (OnExpectUser != null)
 | 
			
		||||
            if (OnExpectPrim != null)
 | 
			
		||||
            {
 | 
			
		||||
                OnExpectPrim(regionHandle, primID, objData);
 | 
			
		||||
                return true;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -865,40 +865,36 @@ namespace OpenSim.Region.Communications.OGS1
 | 
			
		|||
            catch (RemotingException e)
 | 
			
		||||
            {
 | 
			
		||||
                NoteDeadRegion(regionHandle);
 | 
			
		||||
                m_log.Warn("Remoting Error: Unable to connect to adjacent region: " + regInfo.RegionName +
 | 
			
		||||
                           " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
 | 
			
		||||
                m_log.Warn("Remoting Error: Unable to connect to adjacent region: " + regionHandle);
 | 
			
		||||
                m_log.Debug(e.ToString());
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            catch (SocketException e)
 | 
			
		||||
            {
 | 
			
		||||
                NoteDeadRegion(regionHandle);
 | 
			
		||||
                m_log.Warn("Socket Error: Unable to connect to adjacent region: " + regInfo.RegionName + " " +
 | 
			
		||||
                           regInfo.RegionLocX + "," + regInfo.RegionLocY);
 | 
			
		||||
                m_log.Warn("Remoting Error: Unable to connect to adjacent region: " + regionHandle);
 | 
			
		||||
                m_log.Debug(e.ToString());
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            catch (InvalidCredentialException e)
 | 
			
		||||
            {
 | 
			
		||||
                NoteDeadRegion(regionHandle);
 | 
			
		||||
                m_log.Warn("Invalid Credentials: Unable to connect to adjacent region: " + regInfo.RegionName +
 | 
			
		||||
                           " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
 | 
			
		||||
                m_log.Warn("Invalid Credential Exception: Invalid Credentials : " + regionHandle);
 | 
			
		||||
                m_log.Debug(e.ToString());
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            catch (AuthenticationException e)
 | 
			
		||||
            {
 | 
			
		||||
                NoteDeadRegion(regionHandle);
 | 
			
		||||
                m_log.Warn("Authentication exception: Unable to connect to adjacent region: " +
 | 
			
		||||
                           regInfo.RegionName + " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
 | 
			
		||||
                m_log.Warn("Authentication exception: Unable to connect to adjacent region: " + regionHandle);
 | 
			
		||||
 | 
			
		||||
                m_log.Debug(e.ToString());
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception e)
 | 
			
		||||
            {
 | 
			
		||||
                NoteDeadRegion(regionHandle);
 | 
			
		||||
                m_log.Warn("Unknown exception: Unable to connect to adjacent region: " + regInfo.RegionName +
 | 
			
		||||
                           " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
 | 
			
		||||
                m_log.Warn("Unknown exception: Unable to connect to adjacent region: " + regionHandle);
 | 
			
		||||
                m_log.Debug(e.ToString());
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			@ -1005,14 +1001,37 @@ namespace OpenSim.Region.Communications.OGS1
 | 
			
		|||
            catch (RemotingException e)
 | 
			
		||||
            {
 | 
			
		||||
                NoteDeadRegion(regionHandle);
 | 
			
		||||
                m_log.Warn("Remoting Error: Unable to connect to adjacent region: " + regInfo.RegionName +
 | 
			
		||||
                           " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
 | 
			
		||||
                m_log.Warn("Remoting Error: Unable to connect to adjacent region: " + regionHandle);
 | 
			
		||||
                m_log.Debug(e.ToString());
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            catch
 | 
			
		||||
            catch (SocketException e)
 | 
			
		||||
            {
 | 
			
		||||
                NoteDeadRegion(regionHandle);
 | 
			
		||||
                m_log.Warn("Remoting Error: Unable to connect to adjacent region: " + regionHandle);
 | 
			
		||||
                m_log.Debug(e.ToString());
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            catch (InvalidCredentialException e)
 | 
			
		||||
            {
 | 
			
		||||
                NoteDeadRegion(regionHandle);
 | 
			
		||||
                m_log.Warn("Invalid Credential Exception: Invalid Credentials : " + regionHandle);
 | 
			
		||||
                m_log.Debug(e.ToString());
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            catch (AuthenticationException e)
 | 
			
		||||
            {
 | 
			
		||||
                NoteDeadRegion(regionHandle);
 | 
			
		||||
                m_log.Warn("Authentication exception: Unable to connect to adjacent region: " + regionHandle);
 | 
			
		||||
                         
 | 
			
		||||
                m_log.Debug(e.ToString());
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception e)
 | 
			
		||||
            {
 | 
			
		||||
                NoteDeadRegion(regionHandle);
 | 
			
		||||
                m_log.Warn("Unknown exception: Unable to connect to adjacent region: " + regionHandle);
 | 
			
		||||
                m_log.Debug(e.ToString());
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -1205,15 +1224,17 @@ namespace OpenSim.Region.Communications.OGS1
 | 
			
		|||
            // Is this necessary?   
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                //return m_localBackend.TriggerExpectPrim(regionHandle,primID, objData);
 | 
			
		||||
                m_localBackend.TriggerExpectPrim(regionHandle, primID, objData);
 | 
			
		||||
                return true;
 | 
			
		||||
                //m_localBackend.
 | 
			
		||||
                return false;
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
            catch (RemotingException e)
 | 
			
		||||
            {
 | 
			
		||||
                m_log.Error("Remoting Error: Unable to connect to adjacent region.\n" + e.ToString());
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1089,50 +1089,7 @@ namespace OpenSim.Region.Environment.Scenes
 | 
			
		|||
                if (target != null)
 | 
			
		||||
                {
 | 
			
		||||
                    pos = target.AbsolutePosition;
 | 
			
		||||
 | 
			
		||||
                    //m_log.Info("[RAYTRACE]: " + pos.ToString());
 | 
			
		||||
                    //EntityIntersection rayTracing = null;
 | 
			
		||||
                    //ScenePresence presence = ((ScenePresence)GetScenePresence(ownerID));
 | 
			
		||||
                    //if (presence != null)
 | 
			
		||||
                    //{
 | 
			
		||||
                    //Vector3 CameraPosition = presence.CameraPosition;
 | 
			
		||||
                    //Vector3 rayEnd = new Vector3(pos.X, pos.Y, pos.Z);
 | 
			
		||||
 | 
			
		||||
                    //float rayMag = m_innerScene.Vector3Distance(CameraPosition, rayEnd);
 | 
			
		||||
                    //LLVector3 rayDirectionLL = Util.GetNormal(pos);
 | 
			
		||||
 | 
			
		||||
                    //Vector3 rayDirection = new Vector3(rayDirectionLL.X, rayDirectionLL.Y, rayDirectionLL.Z);
 | 
			
		||||
 | 
			
		||||
                    //Ray rezRay = new Ray(CameraPosition, rayDirection);
 | 
			
		||||
 | 
			
		||||
                    //Vector3 RezDirectionFromCamera = rezRay.Direction;
 | 
			
		||||
 | 
			
		||||
                    //rayTracing = m_innerScene.GetClosestIntersectingPrim(rezRay);
 | 
			
		||||
                    //}
 | 
			
		||||
 | 
			
		||||
                    //if ((rayTracing != null) && (rayTracing.HitTF))
 | 
			
		||||
                    //{
 | 
			
		||||
                    // We raytraced and found a prim in the way of the ground..  so 
 | 
			
		||||
                    // We will rez the object somewhere close to the prim.  Better math needed. This is a Stub
 | 
			
		||||
                    //Vector3 Newpos = new Vector3(rayTracing.obj.AbsolutePosition.X,rayTracing.obj.AbsolutePosition.Y,rayTracing.obj.AbsolutePosition.Z);
 | 
			
		||||
                    //Vector3 Newpos = rayTracing.ipoint;
 | 
			
		||||
                    //Vector3 NewScale =
 | 
			
		||||
                    //new Vector3(rayTracing.obj.Scale.X, rayTracing.obj.Scale.Y, rayTracing.obj.Scale.Z);
 | 
			
		||||
 | 
			
		||||
                    //Quaternion ParentRot = rayTracing.obj.ParentGroup.Rotation;
 | 
			
		||||
                    //Quaternion ParentRot = new Quaternion(primParentRot.W,primParentRot.X,primParentRot.Y,primParentRot.Z);
 | 
			
		||||
 | 
			
		||||
                    //LLQuaternion primLocalRot = rayTracing.obj.RotationOffset;
 | 
			
		||||
                    //Quaternion LocalRot = new Quaternion(primLocalRot.W, primLocalRot.X, primLocalRot.Y, primLocalRot.Z);
 | 
			
		||||
 | 
			
		||||
                    //Quaternion NewRot = LocalRot * ParentRot;
 | 
			
		||||
 | 
			
		||||
                    //Vector3 RezPoint = Newpos;
 | 
			
		||||
 | 
			
		||||
                    //m_log.Info("[REZINFO]: Possible Rez Point:" + RezPoint.ToString());
 | 
			
		||||
                    //pos = new LLVector3(RezPoint.x, RezPoint.y, RezPoint.z);
 | 
			
		||||
                    //}
 | 
			
		||||
 | 
			
		||||
                    // TODO: Raytrace here
 | 
			
		||||
                    return pos;
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
| 
						 | 
				
			
			@ -1253,6 +1210,73 @@ namespace OpenSim.Region.Environment.Scenes
 | 
			
		|||
            m_sceneXmlLoader.SavePrimsToXml2(fileName);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void CrossPrimGroupIntoNewRegion(LLVector3 position, SceneObjectGroup grp)
 | 
			
		||||
        {
 | 
			
		||||
            m_log.Warn("Prim crossing: " + grp.UUID.ToString());
 | 
			
		||||
            int thisx = (int)RegionInfo.RegionLocX;
 | 
			
		||||
            int thisy = (int)RegionInfo.RegionLocY;
 | 
			
		||||
            ulong newRegionHandle = 0;
 | 
			
		||||
            LLVector3 pos = grp.AbsolutePosition;
 | 
			
		||||
 | 
			
		||||
            if (position.X > 255.6f)
 | 
			
		||||
            {
 | 
			
		||||
                pos.X = ((pos.X - 256) + 10);
 | 
			
		||||
                
 | 
			
		||||
                newRegionHandle = Util.UIntsToLong((uint)((thisx + 1) * 256), (uint)(thisy * 256));
 | 
			
		||||
                
 | 
			
		||||
                // x + 1
 | 
			
		||||
            }
 | 
			
		||||
            else if (position.X < 0.4f)
 | 
			
		||||
            {
 | 
			
		||||
                pos.X = ((pos.X + 256) - 10);
 | 
			
		||||
                newRegionHandle = Util.UIntsToLong((uint)((thisx - 1) * 256), (uint)(thisy * 256));
 | 
			
		||||
                // x - 1
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (position.Y > 255.6f)
 | 
			
		||||
            {
 | 
			
		||||
                pos.Y = ((pos.Y - 256) + 10);
 | 
			
		||||
                newRegionHandle = Util.UIntsToLong((uint)(thisx * 256), (uint)((thisy + 1) * 256));
 | 
			
		||||
               // y + 1
 | 
			
		||||
            }
 | 
			
		||||
            else if (position.Y < 0.4f)
 | 
			
		||||
            {
 | 
			
		||||
                pos.Y = ((pos.Y + 256) - 10);
 | 
			
		||||
                newRegionHandle = Util.UIntsToLong((uint)(thisx * 256), (uint)((thisy - 1) * 256));
 | 
			
		||||
                // y - 1
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Offset the positions for the new region across the border
 | 
			
		||||
            grp.OffsetForNewRegion(pos);
 | 
			
		||||
            
 | 
			
		||||
            if (newRegionHandle != 0)
 | 
			
		||||
            {
 | 
			
		||||
                bool successYN = false;
 | 
			
		||||
                successYN = m_sceneGridService.PrimCrossToNeighboringRegion(newRegionHandle, grp.UUID, m_sceneXmlLoader.SavePrimGroupToXML2String(grp));
 | 
			
		||||
                if (successYN)
 | 
			
		||||
                {
 | 
			
		||||
                    // We remove the object here
 | 
			
		||||
                    try
 | 
			
		||||
                    {
 | 
			
		||||
                        DeleteSceneObjectGroup(grp);
 | 
			
		||||
                    }
 | 
			
		||||
                    catch (System.Exception)
 | 
			
		||||
                    {
 | 
			
		||||
                        m_log.Warn("[DATABASE]: exception when trying to remove the prim that crossed the border.");
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    m_log.Warn("[INTERREGION]: Prim Crossing Failed!");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        public void IncomingInterRegionPrimGroup(ulong regionHandle, LLUUID primID, string objXMLData)
 | 
			
		||||
        {
 | 
			
		||||
            m_log.Warn("{[INTERREGION]: OMG!  A new prim arrived from a neighbor!..  Kyill eeehht! before it corrupts my entire database!  AHHH!  I feel so dirty now!    yuck!   ack! arg!");
 | 
			
		||||
            m_sceneXmlLoader.LoadGroupFromXml2String(objXMLData);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Add/Remove Avatar Methods
 | 
			
		||||
| 
						 | 
				
			
			@ -1527,6 +1551,7 @@ namespace OpenSim.Region.Environment.Scenes
 | 
			
		|||
            m_sceneGridService.OnCloseAgentConnection += CloseConnection;
 | 
			
		||||
            m_sceneGridService.OnRegionUp += OtherRegionUp;
 | 
			
		||||
            m_sceneGridService.OnChildAgentUpdate += IncomingChildAgentDataUpdate;
 | 
			
		||||
            m_sceneGridService.OnExpectPrim += IncomingInterRegionPrimGroup;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1540,6 +1565,7 @@ namespace OpenSim.Region.Environment.Scenes
 | 
			
		|||
        /// </summary>
 | 
			
		||||
        public void UnRegisterReginWithComms()
 | 
			
		||||
        {
 | 
			
		||||
            m_sceneGridService.OnExpectPrim -= IncomingInterRegionPrimGroup;
 | 
			
		||||
            m_sceneGridService.OnChildAgentUpdate -= IncomingChildAgentDataUpdate;
 | 
			
		||||
            m_sceneGridService.OnRegionUp -= OtherRegionUp;
 | 
			
		||||
            m_sceneGridService.OnExpectUser -= NewUserConnection;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,6 +49,7 @@ namespace OpenSim.Region.Environment.Scenes
 | 
			
		|||
 | 
			
		||||
        public event AgentCrossing OnAvatarCrossingIntoRegion;
 | 
			
		||||
        public event ExpectUserDelegate OnExpectUser;
 | 
			
		||||
        public event ExpectPrimDelegate OnExpectPrim;
 | 
			
		||||
        public event CloseAgentConnection OnCloseAgentConnection;
 | 
			
		||||
        public event PrimCrossing OnPrimCrossingIntoRegion;
 | 
			
		||||
        public event RegionUp OnRegionUp;
 | 
			
		||||
| 
						 | 
				
			
			@ -82,10 +83,9 @@ namespace OpenSim.Region.Environment.Scenes
 | 
			
		|||
                //m_log.Info("[INTER]: " + debugRegionName + ": SceneCommunicationService: registered with gridservice and got" + regionCommsHost.ToString());
 | 
			
		||||
 | 
			
		||||
                regionCommsHost.debugRegionName = _debugRegionName;
 | 
			
		||||
 | 
			
		||||
                regionCommsHost.OnExpectPrim += IncomingPrimCrossing;
 | 
			
		||||
                regionCommsHost.OnExpectUser += NewUserConnection;
 | 
			
		||||
                regionCommsHost.OnAvatarCrossingIntoRegion += AgentCrossing;
 | 
			
		||||
                regionCommsHost.OnPrimCrossingIntoRegion += PrimCrossing;
 | 
			
		||||
                regionCommsHost.OnCloseAgentConnection += CloseConnection;
 | 
			
		||||
                regionCommsHost.OnRegionUp += newRegionUp;
 | 
			
		||||
                regionCommsHost.OnChildAgentUpdate += ChildAgentUpdate;
 | 
			
		||||
| 
						 | 
				
			
			@ -104,8 +104,8 @@ namespace OpenSim.Region.Environment.Scenes
 | 
			
		|||
                regionCommsHost.OnChildAgentUpdate -= ChildAgentUpdate;
 | 
			
		||||
                regionCommsHost.OnRegionUp -= newRegionUp;
 | 
			
		||||
                regionCommsHost.OnExpectUser -= NewUserConnection;
 | 
			
		||||
                regionCommsHost.OnExpectPrim -= IncomingPrimCrossing;
 | 
			
		||||
                regionCommsHost.OnAvatarCrossingIntoRegion -= AgentCrossing;
 | 
			
		||||
                regionCommsHost.OnPrimCrossingIntoRegion -= PrimCrossing;
 | 
			
		||||
                regionCommsHost.OnCloseAgentConnection -= CloseConnection;
 | 
			
		||||
                m_commsProvider.GridService.DeregisterRegion(m_regionInfo);
 | 
			
		||||
                regionCommsHost = null;
 | 
			
		||||
| 
						 | 
				
			
			@ -156,6 +156,15 @@ namespace OpenSim.Region.Environment.Scenes
 | 
			
		|||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void IncomingPrimCrossing(ulong regionHandle, LLUUID primID, String objXMLData)
 | 
			
		||||
        {
 | 
			
		||||
            if (OnExpectPrim != null)
 | 
			
		||||
            {
 | 
			
		||||
                OnExpectPrim(regionHandle, primID, objXMLData);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void PrimCrossing(ulong regionHandle, LLUUID primID, LLVector3 position, bool isPhysical)
 | 
			
		||||
        {
 | 
			
		||||
            if (OnPrimCrossingIntoRegion != null)
 | 
			
		||||
| 
						 | 
				
			
			@ -535,9 +544,9 @@ namespace OpenSim.Region.Environment.Scenes
 | 
			
		|||
            return m_commsProvider.InterRegion.ExpectAvatarCrossing(regionhandle, agentID, position, isFlying);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool PrimCrossToNeighboringRegion(ulong regionhandle, LLUUID primID, LLVector3 position, bool isPhysical)
 | 
			
		||||
        public bool PrimCrossToNeighboringRegion(ulong regionhandle, LLUUID primID, string objData)
 | 
			
		||||
        {
 | 
			
		||||
            return m_commsProvider.InterRegion.ExpectPrimCrossing(regionhandle, primID, position, isPhysical);
 | 
			
		||||
            return m_commsProvider.InterRegion.InformRegionOfPrimCrossing(regionhandle, primID, objData);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -126,23 +126,11 @@ namespace OpenSim.Region.Environment.Scenes
 | 
			
		|||
            set
 | 
			
		||||
            {
 | 
			
		||||
                LLVector3 val = value;
 | 
			
		||||
                if (val.X > 255.6f)
 | 
			
		||||
                if (val.X > 255.6f || val.X < 0.4f || val.Y > 255.6f || val.Y < 0.4f)
 | 
			
		||||
                {
 | 
			
		||||
                    val.X = 255.6f;
 | 
			
		||||
                }
 | 
			
		||||
                else if (val.X < 0.4f)
 | 
			
		||||
                {
 | 
			
		||||
                    val.X = 0.4f;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (val.Y > 255.6f)
 | 
			
		||||
                {
 | 
			
		||||
                    val.Y = 255.6f;
 | 
			
		||||
                }
 | 
			
		||||
                else if (val.Y < 0.4f)
 | 
			
		||||
                {
 | 
			
		||||
                    val.Y = 0.4f;
 | 
			
		||||
                    m_scene.CrossPrimGroupIntoNewRegion(val, this);
 | 
			
		||||
                }
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                lock (m_parts)
 | 
			
		||||
                {
 | 
			
		||||
| 
						 | 
				
			
			@ -1378,6 +1366,11 @@ namespace OpenSim.Region.Environment.Scenes
 | 
			
		|||
            ScheduleGroupForTerseUpdate();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void OffsetForNewRegion(LLVector3 offset)
 | 
			
		||||
        {
 | 
			
		||||
            m_rootPart.GroupPosition = offset;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Rotation
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -123,6 +123,33 @@ namespace OpenSim.Region.Environment.Scenes
 | 
			
		|||
            file.Close();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public string SavePrimGroupToXML2String(SceneObjectGroup grp)
 | 
			
		||||
        {
 | 
			
		||||
            string returnstring = "";
 | 
			
		||||
            returnstring += "<scene>\n";
 | 
			
		||||
            returnstring += grp.ToXmlString2();
 | 
			
		||||
            returnstring += "</scene>\n";
 | 
			
		||||
            return returnstring;
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void LoadGroupFromXml2String(string xmlString)
 | 
			
		||||
        {
 | 
			
		||||
            XmlDocument doc = new XmlDocument();
 | 
			
		||||
            XmlNode rootNode;
 | 
			
		||||
           
 | 
			
		||||
            XmlTextReader reader = new XmlTextReader(new StringReader(xmlString));
 | 
			
		||||
            reader.WhitespaceHandling = WhitespaceHandling.None;
 | 
			
		||||
            doc.Load(reader);
 | 
			
		||||
            reader.Close();
 | 
			
		||||
            rootNode = doc.FirstChild;
 | 
			
		||||
            foreach (XmlNode aPrimNode in rootNode.ChildNodes)
 | 
			
		||||
            {
 | 
			
		||||
                CreatePrimFromXml(aPrimNode.OuterXml);
 | 
			
		||||
            }
 | 
			
		||||
         
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void LoadPrimsFromXml2(string fileName)
 | 
			
		||||
        {
 | 
			
		||||
            XmlDocument doc = new XmlDocument();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -84,6 +84,7 @@ namespace OpenSim.Region.Physics.OdePlugin
 | 
			
		|||
        public OdePrim(String primName, OdeScene parent_scene, IntPtr targetSpace, PhysicsVector pos, PhysicsVector size,
 | 
			
		||||
                       Quaternion rotation, IMesh mesh, PrimitiveBaseShape pbs, bool pisPhysical)
 | 
			
		||||
        {
 | 
			
		||||
            System.Threading.Thread.Sleep(20);
 | 
			
		||||
            _velocity = new PhysicsVector();
 | 
			
		||||
            _position = pos;
 | 
			
		||||
            m_taintposition = pos;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue